mirror of
https://github.com/acanas/swad-core.git
synced 2024-09-20 00:02:42 +02:00
Version18.81.3
This commit is contained in:
parent
eec09b697d
commit
b850096759
67
sql/swad.sql
67
sql/swad.sql
|
@ -559,15 +559,13 @@ CREATE TABLE IF NOT EXISTS forum_post (
|
||||||
NumNotif INT NOT NULL DEFAULT 0,
|
NumNotif INT NOT NULL DEFAULT 0,
|
||||||
Subject TEXT NOT NULL,
|
Subject TEXT NOT NULL,
|
||||||
Content LONGTEXT NOT NULL,
|
Content LONGTEXT NOT NULL,
|
||||||
MediaName VARCHAR(43) NOT NULL DEFAULT '',
|
MedCod INT NOT NULL DEFAULT -1,
|
||||||
MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',
|
|
||||||
MediaTitle VARCHAR(2047) NOT NULL DEFAULT '',
|
|
||||||
MediaURL VARCHAR(255) NOT NULL DEFAULT '',
|
|
||||||
UNIQUE INDEX(PstCod),
|
UNIQUE INDEX(PstCod),
|
||||||
INDEX(ThrCod),
|
INDEX(ThrCod),
|
||||||
INDEX(UsrCod),
|
INDEX(UsrCod),
|
||||||
INDEX(CreatTime),
|
INDEX(CreatTime),
|
||||||
INDEX(ModifTime));
|
INDEX(ModifTime),
|
||||||
|
INDEX(MedCod));
|
||||||
--
|
--
|
||||||
-- Table forum_thr_clip: stores the clipboards used to move threads from one forum to another
|
-- Table forum_thr_clip: stores the clipboards used to move threads from one forum to another
|
||||||
--
|
--
|
||||||
|
@ -795,6 +793,17 @@ CREATE TABLE IF NOT EXISTS marks_properties (
|
||||||
Footer INT NOT NULL,
|
Footer INT NOT NULL,
|
||||||
UNIQUE INDEX(FilCod));
|
UNIQUE INDEX(FilCod));
|
||||||
--
|
--
|
||||||
|
-- Table media: stores information about media (images, videos, YouTube)
|
||||||
|
--
|
||||||
|
CREATE TABLE IF NOT EXISTS media (
|
||||||
|
MedCod INT NOT NULL AUTO_INCREMENT,
|
||||||
|
Type ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',
|
||||||
|
Name VARCHAR(43) NOT NULL DEFAULT '',
|
||||||
|
URL VARCHAR(255) NOT NULL DEFAULT '',
|
||||||
|
Title VARCHAR(2047) NOT NULL DEFAULT '',
|
||||||
|
UNIQUE INDEX(MedCod),
|
||||||
|
INDEX(Type));
|
||||||
|
--
|
||||||
-- Table msg_banned: stores the users whose messages are banned (FromUsrCod is a recipien banned from ToUsrCod)
|
-- Table msg_banned: stores the users whose messages are banned (FromUsrCod is a recipien banned from ToUsrCod)
|
||||||
--
|
--
|
||||||
CREATE TABLE IF NOT EXISTS msg_banned (
|
CREATE TABLE IF NOT EXISTS msg_banned (
|
||||||
|
@ -808,12 +817,10 @@ CREATE TABLE IF NOT EXISTS msg_content (
|
||||||
MsgCod INT NOT NULL AUTO_INCREMENT,
|
MsgCod INT NOT NULL AUTO_INCREMENT,
|
||||||
Subject TEXT NOT NULL,
|
Subject TEXT NOT NULL,
|
||||||
Content LONGTEXT NOT NULL,
|
Content LONGTEXT NOT NULL,
|
||||||
MediaName VARCHAR(43) NOT NULL DEFAULT '',
|
MedCod INT NOT NULL DEFAULT -1,
|
||||||
MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',
|
|
||||||
MediaTitle VARCHAR(2047) NOT NULL DEFAULT '',
|
|
||||||
MediaURL VARCHAR(255) NOT NULL DEFAULT '',
|
|
||||||
UNIQUE INDEX(MsgCod),
|
UNIQUE INDEX(MsgCod),
|
||||||
FULLTEXT(Subject,Content)) ENGINE = MYISAM;
|
FULLTEXT(Subject,Content),
|
||||||
|
INDEX(MedCod)) ENGINE = MYISAM;
|
||||||
--
|
--
|
||||||
-- Table msg_content_deleted: stores the content of the sent messages that have been deleted
|
-- Table msg_content_deleted: stores the content of the sent messages that have been deleted
|
||||||
--
|
--
|
||||||
|
@ -821,12 +828,10 @@ CREATE TABLE IF NOT EXISTS msg_content_deleted (
|
||||||
MsgCod INT NOT NULL,
|
MsgCod INT NOT NULL,
|
||||||
Subject TEXT NOT NULL,
|
Subject TEXT NOT NULL,
|
||||||
Content LONGTEXT NOT NULL,
|
Content LONGTEXT NOT NULL,
|
||||||
MediaName VARCHAR(43) NOT NULL DEFAULT '',
|
MedCod INT NOT NULL DEFAULT -1,
|
||||||
MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',
|
|
||||||
MediaTitle VARCHAR(2047) NOT NULL DEFAULT '',
|
|
||||||
MediaURL VARCHAR(255) NOT NULL DEFAULT '',
|
|
||||||
UNIQUE INDEX(MsgCod),
|
UNIQUE INDEX(MsgCod),
|
||||||
FULLTEXT(Subject,Content)) ENGINE = MYISAM;
|
FULLTEXT(Subject,Content),
|
||||||
|
INDEX(MedCod)) ENGINE = MYISAM;
|
||||||
--
|
--
|
||||||
-- Table msg_rcv: stores the received messages
|
-- Table msg_rcv: stores the received messages
|
||||||
--
|
--
|
||||||
|
@ -1025,12 +1030,10 @@ CREATE TABLE IF NOT EXISTS sessions (
|
||||||
CREATE TABLE IF NOT EXISTS social_comments (
|
CREATE TABLE IF NOT EXISTS social_comments (
|
||||||
PubCod BIGINT NOT NULL,
|
PubCod BIGINT NOT NULL,
|
||||||
Content LONGTEXT NOT NULL,
|
Content LONGTEXT NOT NULL,
|
||||||
MediaName VARCHAR(43) NOT NULL DEFAULT '',
|
MedCod INT NOT NULL DEFAULT -1,
|
||||||
MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',
|
|
||||||
MediaTitle VARCHAR(2047) NOT NULL DEFAULT '',
|
|
||||||
MediaURL VARCHAR(255) NOT NULL DEFAULT '',
|
|
||||||
UNIQUE INDEX(PubCod),
|
UNIQUE INDEX(PubCod),
|
||||||
FULLTEXT(Content)) ENGINE = MYISAM;
|
FULLTEXT(Content),
|
||||||
|
INDEX(MedCod)) ENGINE = MYISAM;
|
||||||
--
|
--
|
||||||
-- Table social_comments_fav: stores users who marked social comments as favourite
|
-- Table social_comments_fav: stores users who marked social comments as favourite
|
||||||
--
|
--
|
||||||
|
@ -1074,12 +1077,10 @@ CREATE TABLE IF NOT EXISTS social_notes_fav (
|
||||||
CREATE TABLE IF NOT EXISTS social_posts (
|
CREATE TABLE IF NOT EXISTS social_posts (
|
||||||
PstCod INT NOT NULL AUTO_INCREMENT,
|
PstCod INT NOT NULL AUTO_INCREMENT,
|
||||||
Content LONGTEXT NOT NULL,
|
Content LONGTEXT NOT NULL,
|
||||||
MediaName VARCHAR(43) NOT NULL DEFAULT '',
|
MedCod INT NOT NULL DEFAULT -1,
|
||||||
MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',
|
|
||||||
MediaTitle VARCHAR(2047) NOT NULL DEFAULT '',
|
|
||||||
MediaURL VARCHAR(255) NOT NULL DEFAULT '',
|
|
||||||
UNIQUE INDEX(PstCod),
|
UNIQUE INDEX(PstCod),
|
||||||
FULLTEXT(Content)) ENGINE = MYISAM;
|
FULLTEXT(Content),
|
||||||
|
INDEX(MedCod)) ENGINE = MYISAM;
|
||||||
--
|
--
|
||||||
-- Table social_pubs: stores social publishings (original notes, sharede notes or comments)
|
-- Table social_pubs: stores social publishings (original notes, sharede notes or comments)
|
||||||
--
|
--
|
||||||
|
@ -1203,12 +1204,10 @@ CREATE TABLE IF NOT EXISTS tst_answers (
|
||||||
AnsInd TINYINT NOT NULL,
|
AnsInd TINYINT NOT NULL,
|
||||||
Answer TEXT NOT NULL,
|
Answer TEXT NOT NULL,
|
||||||
Feedback TEXT NOT NULL,
|
Feedback TEXT NOT NULL,
|
||||||
MediaName VARCHAR(43) NOT NULL DEFAULT '',
|
MedCod INT NOT NULL DEFAULT -1,
|
||||||
MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',
|
|
||||||
MediaTitle VARCHAR(2047) NOT NULL DEFAULT '',
|
|
||||||
MediaURL VARCHAR(255) NOT NULL DEFAULT '',
|
|
||||||
Correct ENUM('N','Y') NOT NULL,
|
Correct ENUM('N','Y') NOT NULL,
|
||||||
INDEX(QstCod));
|
INDEX(QstCod),
|
||||||
|
INDEX(MedCod));
|
||||||
--
|
--
|
||||||
-- Table tst_config: stores the configuration of tests for each course
|
-- Table tst_config: stores the configuration of tests for each course
|
||||||
--
|
--
|
||||||
|
@ -1264,15 +1263,13 @@ CREATE TABLE IF NOT EXISTS tst_questions (
|
||||||
Shuffle ENUM('N','Y') NOT NULL,
|
Shuffle ENUM('N','Y') NOT NULL,
|
||||||
Stem TEXT NOT NULL,
|
Stem TEXT NOT NULL,
|
||||||
Feedback TEXT NOT NULL,
|
Feedback TEXT NOT NULL,
|
||||||
MediaName VARCHAR(43) NOT NULL DEFAULT '',
|
MedCod INT NOT NULL DEFAULT -1,
|
||||||
MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',
|
|
||||||
MediaTitle VARCHAR(2047) NOT NULL DEFAULT '',
|
|
||||||
MediaURL VARCHAR(255) NOT NULL DEFAULT '',
|
|
||||||
NumHits INT NOT NULL DEFAULT 0,
|
NumHits INT NOT NULL DEFAULT 0,
|
||||||
NumHitsNotBlank INT NOT NULL DEFAULT 0,
|
NumHitsNotBlank INT NOT NULL DEFAULT 0,
|
||||||
Score DOUBLE PRECISION NOT NULL DEFAULT 0,
|
Score DOUBLE PRECISION NOT NULL DEFAULT 0,
|
||||||
UNIQUE INDEX(QstCod),
|
UNIQUE INDEX(QstCod),
|
||||||
INDEX(CrsCod,EditTime));
|
INDEX(CrsCod,EditTime),
|
||||||
|
INDEX(MedCod));
|
||||||
--
|
--
|
||||||
-- Table tst_status: stores the status of tests for each session
|
-- Table tst_status: stores the status of tests for each session
|
||||||
--
|
--
|
||||||
|
|
|
@ -459,20 +459,22 @@ En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 18.81.1 (2019-03-18)"
|
#define Log_PLATFORM_VERSION "SWAD 18.81.3 (2019-03-19)"
|
||||||
#define CSS_FILE "swad18.80.css"
|
#define CSS_FILE "swad18.80.css"
|
||||||
#define JS_FILE "swad18.80.js"
|
#define JS_FILE "swad18.80.js"
|
||||||
/*
|
/*
|
||||||
TODO: Remove unused fields MediaName,MediaType,MediaTitle,MediaURL,Media from tables:
|
Version 18.81.3: Mar 19, 2019 Remove unused fields MediaName,MediaType,MediaTitle,MediaURL,Media from tables. (240657 lines)
|
||||||
// ALTER TABLE forum_post DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
8 changes necessary in database:
|
||||||
// ALTER TABLE msg_content DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
ALTER TABLE forum_post DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
||||||
// ALTER TABLE msg_content_deleted DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
ALTER TABLE msg_content DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
||||||
// ALTER TABLE social_comments DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
ALTER TABLE msg_content_deleted DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
||||||
// ALTER TABLE social_posts DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
ALTER TABLE social_comments DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
||||||
// ALTER TABLE tst_answers DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
ALTER TABLE social_posts DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
||||||
// ALTER TABLE tst_questions DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
ALTER TABLE tst_answers DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
||||||
// ALTER TABLE media DROP COLUMN T,DROP COLUMN Cod;
|
ALTER TABLE tst_questions DROP COLUMN MediaName,DROP COLUMN MediaType,DROP COLUMN MediaTitle,DROP COLUMN MediaURL;
|
||||||
|
ALTER TABLE media DROP COLUMN T,DROP COLUMN Cod;
|
||||||
|
|
||||||
|
Version 18.81.2: Mar 19, 2019 Fixed bugs in tests. (240715 lines)
|
||||||
Version 18.81.1: Mar 18, 2019 Code refactoring related to media. (240691 lines)
|
Version 18.81.1: Mar 18, 2019 Code refactoring related to media. (240691 lines)
|
||||||
Version 18.81: Mar 18, 2019 New database table media to store images and videos.
|
Version 18.81: Mar 18, 2019 New database table media to store images and videos.
|
||||||
Fixed bugs in removal of publications in timeline. (240704 lines)
|
Fixed bugs in removal of publications in timeline. (240704 lines)
|
||||||
|
|
178
swad_database.c
178
swad_database.c
|
@ -1207,24 +1207,20 @@ mysql> DESCRIBE forum_disabled_post;
|
||||||
/***** Table forum_post *****/
|
/***** Table forum_post *****/
|
||||||
/*
|
/*
|
||||||
mysql> DESCRIBE forum_post;
|
mysql> DESCRIBE forum_post;
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+----------------+
|
+-----------+----------+------+-----+---------+----------------+
|
||||||
| Field | Type | Null | Key | Default | Extra |
|
| Field | Type | Null | Key | Default | Extra |
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+----------------+
|
+-----------+----------+------+-----+---------+----------------+
|
||||||
| PstCod | int(11) | NO | PRI | NULL | auto_increment |
|
| PstCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||||
| ThrCod | int(11) | NO | MUL | NULL | |
|
| ThrCod | int(11) | NO | MUL | NULL | |
|
||||||
| UsrCod | int(11) | NO | MUL | NULL | |
|
| UsrCod | int(11) | NO | MUL | NULL | |
|
||||||
| CreatTime | datetime | NO | MUL | NULL | |
|
| CreatTime | datetime | NO | MUL | NULL | |
|
||||||
| ModifTime | datetime | NO | MUL | NULL | |
|
| ModifTime | datetime | NO | MUL | NULL | |
|
||||||
| NumNotif | int(11) | NO | | 0 | |
|
| NumNotif | int(11) | NO | | 0 | |
|
||||||
| Subject | text | NO | | NULL | |
|
| Subject | text | NO | | NULL | |
|
||||||
| Content | longtext | NO | | NULL | |
|
| Content | longtext | NO | | NULL | |
|
||||||
| MedCod | int(11) | NO | MUL | -1 | |
|
| MedCod | int(11) | NO | MUL | -1 | |
|
||||||
| MediaName | varchar(43) | NO | | | |
|
+-----------+----------+------+-----+---------+----------------+
|
||||||
| MediaType | enum('none','jpg','gif','mp4','webm','ogg','youtube') | NO | | none | |
|
9 rows in set (0.00 sec)
|
||||||
| MediaTitle | varchar(2047) | NO | | | |
|
|
||||||
| MediaURL | varchar(255) | NO | | | |
|
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+----------------+
|
|
||||||
13 rows in set (0.00 sec)
|
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS forum_post ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS forum_post ("
|
||||||
"PstCod INT NOT NULL AUTO_INCREMENT,"
|
"PstCod INT NOT NULL AUTO_INCREMENT,"
|
||||||
|
@ -1236,10 +1232,6 @@ mysql> DESCRIBE forum_post;
|
||||||
"Subject TEXT NOT NULL," // Cns_MAX_BYTES_SUBJECT
|
"Subject TEXT NOT NULL," // Cns_MAX_BYTES_SUBJECT
|
||||||
"Content LONGTEXT NOT NULL," // Cns_MAX_BYTES_LONG_TEXT
|
"Content LONGTEXT NOT NULL," // Cns_MAX_BYTES_LONG_TEXT
|
||||||
"MedCod INT NOT NULL DEFAULT -1,"
|
"MedCod INT NOT NULL DEFAULT -1,"
|
||||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
|
||||||
"MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',"
|
|
||||||
"MediaTitle VARCHAR(2047) NOT NULL DEFAULT ''," // Med_MAX_BYTES_TITLE
|
|
||||||
"MediaURL VARCHAR(255) NOT NULL DEFAULT ''," // Cns_MAX_BYTES_WWW
|
|
||||||
"UNIQUE INDEX(PstCod),"
|
"UNIQUE INDEX(PstCod),"
|
||||||
"INDEX(ThrCod),"
|
"INDEX(ThrCod),"
|
||||||
"INDEX(UsrCod),"
|
"INDEX(UsrCod),"
|
||||||
|
@ -1729,7 +1721,7 @@ mysql> DESCRIBE media;
|
||||||
| URL | varchar(255) | NO | | | |
|
| URL | varchar(255) | NO | | | |
|
||||||
| Title | varchar(2047) | NO | | | |
|
| Title | varchar(2047) | NO | | | |
|
||||||
+--------+-------------------------------------------------------+------+-----+---------+----------------+
|
+--------+-------------------------------------------------------+------+-----+---------+----------------+
|
||||||
5 rows in set (0.00 sec)
|
5 rows in set (0.01 sec)
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS media ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS media ("
|
||||||
"MedCod INT NOT NULL AUTO_INCREMENT,"
|
"MedCod INT NOT NULL AUTO_INCREMENT,"
|
||||||
|
@ -1759,29 +1751,21 @@ mysql> DESCRIBE msg_banned;
|
||||||
/***** Table msg_content *****/
|
/***** Table msg_content *****/
|
||||||
/*
|
/*
|
||||||
mysql> DESCRIBE msg_content;
|
mysql> DESCRIBE msg_content;
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+----------------+
|
+---------+----------+------+-----+---------+----------------+
|
||||||
| Field | Type | Null | Key | Default | Extra |
|
| Field | Type | Null | Key | Default | Extra |
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+----------------+
|
+---------+----------+------+-----+---------+----------------+
|
||||||
| MsgCod | int(11) | NO | PRI | NULL | auto_increment |
|
| MsgCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||||
| Subject | text | NO | MUL | NULL | |
|
| Subject | text | NO | MUL | NULL | |
|
||||||
| Content | longtext | NO | | NULL | |
|
| Content | longtext | NO | | NULL | |
|
||||||
| MedCod | int(11) | NO | MUL | -1 | |
|
| MedCod | int(11) | NO | MUL | -1 | |
|
||||||
| MediaName | varchar(43) | NO | | | |
|
+---------+----------+------+-----+---------+----------------+
|
||||||
| MediaType | enum('none','jpg','gif','mp4','webm','ogg','youtube') | NO | | none | |
|
4 rows in set (0.00 sec)
|
||||||
| MediaTitle | varchar(2047) | NO | | | |
|
|
||||||
| MediaURL | varchar(255) | NO | | | |
|
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+----------------+
|
|
||||||
8 rows in set (0.00 sec)
|
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS msg_content ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS msg_content ("
|
||||||
"MsgCod INT NOT NULL AUTO_INCREMENT,"
|
"MsgCod INT NOT NULL AUTO_INCREMENT,"
|
||||||
"Subject TEXT NOT NULL,"
|
"Subject TEXT NOT NULL,"
|
||||||
"Content LONGTEXT NOT NULL,"
|
"Content LONGTEXT NOT NULL,"
|
||||||
"MedCod INT NOT NULL DEFAULT -1,"
|
"MedCod INT NOT NULL DEFAULT -1,"
|
||||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
|
||||||
"MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',"
|
|
||||||
"MediaTitle VARCHAR(2047) NOT NULL DEFAULT ''," // Med_MAX_BYTES_TITLE
|
|
||||||
"MediaURL VARCHAR(255) NOT NULL DEFAULT ''," // Cns_MAX_BYTES_WWW
|
|
||||||
"UNIQUE INDEX(MsgCod),"
|
"UNIQUE INDEX(MsgCod),"
|
||||||
"FULLTEXT(Subject,Content),"
|
"FULLTEXT(Subject,Content),"
|
||||||
"INDEX(MedCod)) ENGINE = MYISAM;");
|
"INDEX(MedCod)) ENGINE = MYISAM;");
|
||||||
|
@ -1789,29 +1773,21 @@ mysql> DESCRIBE msg_content;
|
||||||
/***** Table msg_content_deleted *****/
|
/***** Table msg_content_deleted *****/
|
||||||
/*
|
/*
|
||||||
mysql> DESCRIBE msg_content_deleted;
|
mysql> DESCRIBE msg_content_deleted;
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+-------+
|
+---------+----------+------+-----+---------+-------+
|
||||||
| Field | Type | Null | Key | Default | Extra |
|
| Field | Type | Null | Key | Default | Extra |
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+-------+
|
+---------+----------+------+-----+---------+-------+
|
||||||
| MsgCod | int(11) | NO | PRI | NULL | |
|
| MsgCod | int(11) | NO | PRI | NULL | |
|
||||||
| Subject | text | NO | MUL | NULL | |
|
| Subject | text | NO | MUL | NULL | |
|
||||||
| Content | longtext | NO | | NULL | |
|
| Content | longtext | NO | | NULL | |
|
||||||
| MedCod | int(11) | NO | MUL | -1 | |
|
| MedCod | int(11) | NO | MUL | -1 | |
|
||||||
| MediaName | varchar(43) | NO | | | |
|
+---------+----------+------+-----+---------+-------+
|
||||||
| MediaType | enum('none','jpg','gif','mp4','webm','ogg','youtube') | NO | | none | |
|
4 rows in set (0.00 sec)
|
||||||
| MediaTitle | varchar(2047) | NO | | | |
|
|
||||||
| MediaURL | varchar(255) | NO | | | |
|
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+-------+
|
|
||||||
8 rows in set (0.00 sec)
|
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS msg_content_deleted ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS msg_content_deleted ("
|
||||||
"MsgCod INT NOT NULL,"
|
"MsgCod INT NOT NULL,"
|
||||||
"Subject TEXT NOT NULL,"
|
"Subject TEXT NOT NULL,"
|
||||||
"Content LONGTEXT NOT NULL,"
|
"Content LONGTEXT NOT NULL,"
|
||||||
"MedCod INT NOT NULL DEFAULT -1,"
|
"MedCod INT NOT NULL DEFAULT -1,"
|
||||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
|
||||||
"MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',"
|
|
||||||
"MediaTitle VARCHAR(2047) NOT NULL DEFAULT ''," // Med_MAX_BYTES_TITLE
|
|
||||||
"MediaURL VARCHAR(255) NOT NULL DEFAULT ''," // Cns_MAX_BYTES_WWW
|
|
||||||
"UNIQUE INDEX(MsgCod),"
|
"UNIQUE INDEX(MsgCod),"
|
||||||
"FULLTEXT(Subject,Content),"
|
"FULLTEXT(Subject,Content),"
|
||||||
"INDEX(MedCod)) ENGINE = MYISAM;");
|
"INDEX(MedCod)) ENGINE = MYISAM;");
|
||||||
|
@ -2208,27 +2184,19 @@ mysql> DESCRIBE sessions;
|
||||||
/***** Table social_comments *****/
|
/***** Table social_comments *****/
|
||||||
/*
|
/*
|
||||||
mysql> DESCRIBE social_comments;
|
mysql> DESCRIBE social_comments;
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+-------+
|
+---------+------------+------+-----+---------+-------+
|
||||||
| Field | Type | Null | Key | Default | Extra |
|
| Field | Type | Null | Key | Default | Extra |
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+-------+
|
+---------+------------+------+-----+---------+-------+
|
||||||
| PubCod | bigint(20) | NO | PRI | NULL | |
|
| PubCod | bigint(20) | NO | PRI | NULL | |
|
||||||
| Content | longtext | NO | MUL | NULL | |
|
| Content | longtext | NO | MUL | NULL | |
|
||||||
| MedCod | int(11) | NO | MUL | -1 | |
|
| MedCod | int(11) | NO | MUL | -1 | |
|
||||||
| MediaName | varchar(43) | NO | | | |
|
+---------+------------+------+-----+---------+-------+
|
||||||
| MediaType | enum('none','jpg','gif','mp4','webm','ogg','youtube') | NO | | none | |
|
3 rows in set (0.00 sec)
|
||||||
| MediaTitle | varchar(2047) | NO | | | |
|
|
||||||
| MediaURL | varchar(255) | NO | | | |
|
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+-------+
|
|
||||||
7 rows in set (0.01 sec)
|
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS social_comments ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS social_comments ("
|
||||||
"PubCod BIGINT NOT NULL,"
|
"PubCod BIGINT NOT NULL,"
|
||||||
"Content LONGTEXT NOT NULL,"
|
"Content LONGTEXT NOT NULL,"
|
||||||
"MedCod INT NOT NULL DEFAULT -1,"
|
"MedCod INT NOT NULL DEFAULT -1,"
|
||||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
|
||||||
"MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',"
|
|
||||||
"MediaTitle VARCHAR(2047) NOT NULL DEFAULT ''," // Med_MAX_BYTES_TITLE
|
|
||||||
"MediaURL VARCHAR(255) NOT NULL DEFAULT ''," // Cns_MAX_BYTES_WWW
|
|
||||||
"UNIQUE INDEX(PubCod),"
|
"UNIQUE INDEX(PubCod),"
|
||||||
"FULLTEXT(Content),"
|
"FULLTEXT(Content),"
|
||||||
"INDEX(MedCod)) ENGINE = MYISAM;");
|
"INDEX(MedCod)) ENGINE = MYISAM;");
|
||||||
|
@ -2309,27 +2277,19 @@ mysql> DESCRIBE social_notes_fav;
|
||||||
/***** Table social_posts *****/
|
/***** Table social_posts *****/
|
||||||
/*
|
/*
|
||||||
mysql> DESCRIBE social_posts;
|
mysql> DESCRIBE social_posts;
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+----------------+
|
+---------+----------+------+-----+---------+----------------+
|
||||||
| Field | Type | Null | Key | Default | Extra |
|
| Field | Type | Null | Key | Default | Extra |
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+----------------+
|
+---------+----------+------+-----+---------+----------------+
|
||||||
| PstCod | int(11) | NO | PRI | NULL | auto_increment |
|
| PstCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||||
| Content | longtext | NO | MUL | NULL | |
|
| Content | longtext | NO | MUL | NULL | |
|
||||||
| MedCod | int(11) | NO | MUL | -1 | |
|
| MedCod | int(11) | NO | MUL | -1 | |
|
||||||
| MediaName | varchar(43) | NO | | | |
|
+---------+----------+------+-----+---------+----------------+
|
||||||
| MediaType | enum('none','jpg','gif','mp4','webm','ogg','youtube') | NO | | none | |
|
3 rows in set (0.01 sec)
|
||||||
| MediaTitle | varchar(2047) | NO | | | |
|
|
||||||
| MediaURL | varchar(255) | NO | | | |
|
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+----------------+
|
|
||||||
7 rows in set (0.00 sec)
|
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS social_posts ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS social_posts ("
|
||||||
"PubCod INT NOT NULL AUTO_INCREMENT,"
|
"PubCod INT NOT NULL AUTO_INCREMENT,"
|
||||||
"Content LONGTEXT NOT NULL,"
|
"Content LONGTEXT NOT NULL,"
|
||||||
"MedCod INT NOT NULL DEFAULT -1,"
|
"MedCod INT NOT NULL DEFAULT -1,"
|
||||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
|
||||||
"MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',"
|
|
||||||
"MediaTitle VARCHAR(2047) NOT NULL DEFAULT ''," // Med_MAX_BYTES_TITLE
|
|
||||||
"MediaURL VARCHAR(255) NOT NULL DEFAULT ''," // Cns_MAX_BYTES_WWW
|
|
||||||
"UNIQUE INDEX(PubCod),"
|
"UNIQUE INDEX(PubCod),"
|
||||||
"FULLTEXT(Content),"
|
"FULLTEXT(Content),"
|
||||||
"INDEX(MedCod)) ENGINE = MYISAM;");
|
"INDEX(MedCod)) ENGINE = MYISAM;");
|
||||||
|
@ -2585,21 +2545,17 @@ mysql> DESCRIBE timetable_tut;
|
||||||
/***** Table tst_answers *****/
|
/***** Table tst_answers *****/
|
||||||
/*
|
/*
|
||||||
mysql> DESCRIBE tst_answers;
|
mysql> DESCRIBE tst_answers;
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+-------+
|
+----------+---------------+------+-----+---------+-------+
|
||||||
| Field | Type | Null | Key | Default | Extra |
|
| Field | Type | Null | Key | Default | Extra |
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+-------+
|
+----------+---------------+------+-----+---------+-------+
|
||||||
| QstCod | int(11) | NO | MUL | NULL | |
|
| QstCod | int(11) | NO | MUL | NULL | |
|
||||||
| AnsInd | tinyint(4) | NO | | NULL | |
|
| AnsInd | tinyint(4) | NO | | NULL | |
|
||||||
| Answer | text | NO | | NULL | |
|
| Answer | text | NO | | NULL | |
|
||||||
| Feedback | text | NO | | NULL | |
|
| Feedback | text | NO | | NULL | |
|
||||||
| MedCod | int(11) | NO | MUL | -1 | |
|
| MedCod | int(11) | NO | MUL | -1 | |
|
||||||
| MediaName | varchar(43) | NO | | | |
|
| Correct | enum('N','Y') | NO | | NULL | |
|
||||||
| MediaType | enum('none','jpg','gif','mp4','webm','ogg','youtube') | NO | | none | |
|
+----------+---------------+------+-----+---------+-------+
|
||||||
| MediaTitle | varchar(2047) | NO | | | |
|
6 rows in set (0.00 sec)
|
||||||
| MediaURL | varchar(255) | NO | | | |
|
|
||||||
| Correct | enum('N','Y') | NO | | NULL | |
|
|
||||||
+------------+-------------------------------------------------------+------+-----+---------+-------+
|
|
||||||
10 rows in set (0.00 sec)
|
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS tst_answers ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS tst_answers ("
|
||||||
"QstCod INT NOT NULL,"
|
"QstCod INT NOT NULL,"
|
||||||
|
@ -2607,10 +2563,6 @@ mysql> DESCRIBE tst_answers;
|
||||||
"Answer TEXT NOT NULL," // Tst_MAX_BYTES_ANSWER_OR_FEEDBACK
|
"Answer TEXT NOT NULL," // Tst_MAX_BYTES_ANSWER_OR_FEEDBACK
|
||||||
"Feedback TEXT NOT NULL," // Tst_MAX_BYTES_ANSWER_OR_FEEDBACK
|
"Feedback TEXT NOT NULL," // Tst_MAX_BYTES_ANSWER_OR_FEEDBACK
|
||||||
"MedCod INT NOT NULL DEFAULT -1,"
|
"MedCod INT NOT NULL DEFAULT -1,"
|
||||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
|
||||||
"MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',"
|
|
||||||
"MediaTitle VARCHAR(2047) NOT NULL DEFAULT ''," // Med_MAX_BYTES_TITLE
|
|
||||||
"MediaURL VARCHAR(255) NOT NULL DEFAULT ''," // Cns_MAX_BYTES_WWW
|
|
||||||
"Correct ENUM('N','Y') NOT NULL,"
|
"Correct ENUM('N','Y') NOT NULL,"
|
||||||
"INDEX(QstCod),"
|
"INDEX(QstCod),"
|
||||||
"INDEX(MedCod))");
|
"INDEX(MedCod))");
|
||||||
|
@ -2726,15 +2678,11 @@ mysql> DESCRIBE tst_questions;
|
||||||
| Stem | text | NO | | NULL | |
|
| Stem | text | NO | | NULL | |
|
||||||
| Feedback | text | NO | | NULL | |
|
| Feedback | text | NO | | NULL | |
|
||||||
| MedCod | int(11) | NO | MUL | -1 | |
|
| MedCod | int(11) | NO | MUL | -1 | |
|
||||||
| MediaName | varchar(43) | NO | | | |
|
|
||||||
| MediaType | enum('none','jpg','gif','mp4','webm','ogg','youtube') | NO | | none | |
|
|
||||||
| MediaTitle | varchar(2047) | NO | | | |
|
|
||||||
| MediaURL | varchar(255) | NO | | | |
|
|
||||||
| NumHits | int(11) | NO | | 0 | |
|
| NumHits | int(11) | NO | | 0 | |
|
||||||
| NumHitsNotBlank | int(11) | NO | | 0 | |
|
| NumHitsNotBlank | int(11) | NO | | 0 | |
|
||||||
| Score | double | NO | | 0 | |
|
| Score | double | NO | | 0 | |
|
||||||
+-----------------+---------------------------------------------------------------------------+------+-----+---------+----------------+
|
+-----------------+---------------------------------------------------------------------------+------+-----+---------+----------------+
|
||||||
15 rows in set (0.00 sec)
|
11 rows in set (0.00 sec)
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS tst_questions ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS tst_questions ("
|
||||||
"QstCod INT NOT NULL AUTO_INCREMENT,"
|
"QstCod INT NOT NULL AUTO_INCREMENT,"
|
||||||
|
@ -2745,10 +2693,6 @@ mysql> DESCRIBE tst_questions;
|
||||||
"Stem TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
|
"Stem TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
|
||||||
"Feedback TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
|
"Feedback TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
|
||||||
"MedCod INT NOT NULL DEFAULT -1,"
|
"MedCod INT NOT NULL DEFAULT -1,"
|
||||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
|
||||||
"MediaType ENUM('none','jpg','gif','mp4','webm','ogg','youtube') NOT NULL DEFAULT 'none',"
|
|
||||||
"MediaTitle VARCHAR(2047) NOT NULL DEFAULT ''," // Med_MAX_BYTES_TITLE
|
|
||||||
"MediaURL VARCHAR(255) NOT NULL DEFAULT ''," // Cns_MAX_BYTES_WWW
|
|
||||||
"NumHits INT NOT NULL DEFAULT 0,"
|
"NumHits INT NOT NULL DEFAULT 0,"
|
||||||
"NumHitsNotBlank INT NOT NULL DEFAULT 0,"
|
"NumHitsNotBlank INT NOT NULL DEFAULT 0,"
|
||||||
"Score DOUBLE PRECISION NOT NULL DEFAULT 0,"
|
"Score DOUBLE PRECISION NOT NULL DEFAULT 0,"
|
||||||
|
|
|
@ -952,7 +952,6 @@ static int Med_ResizeImage (struct Media *Media,
|
||||||
Lay_ShowErrorAndExit ("Error when running command to process media.");
|
Lay_ShowErrorAndExit ("Error when running command to process media.");
|
||||||
|
|
||||||
ReturnCode = WEXITSTATUS(ReturnCode);
|
ReturnCode = WEXITSTATUS(ReturnCode);
|
||||||
|
|
||||||
return ReturnCode;
|
return ReturnCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
110
swad_test.c
110
swad_test.c
|
@ -5185,7 +5185,8 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
||||||
|
|
||||||
AnswerHasContent = false;
|
AnswerHasContent = false;
|
||||||
if (Gbl.Test.Answer.Options[NumOpt].Text)
|
if (Gbl.Test.Answer.Options[NumOpt].Text)
|
||||||
if (Gbl.Test.Answer.Options[NumOpt].Text[0])
|
if (Gbl.Test.Answer.Options[NumOpt].Text[0] || // Text
|
||||||
|
Gbl.Test.Answer.Options[NumOpt].Media.Type != Med_TYPE_NONE) // or media
|
||||||
AnswerHasContent = true;
|
AnswerHasContent = true;
|
||||||
DisplayRightColumn = NumOpt < 2 || // Display at least the two first options
|
DisplayRightColumn = NumOpt < 2 || // Display at least the two first options
|
||||||
AnswerHasContent;
|
AnswerHasContent;
|
||||||
|
@ -5268,8 +5269,6 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
||||||
NumOpt);
|
NumOpt);
|
||||||
if (OptionsDisabled)
|
if (OptionsDisabled)
|
||||||
fprintf (Gbl.F.Out," disabled=\"disabled\"");
|
fprintf (Gbl.F.Out," disabled=\"disabled\"");
|
||||||
if (NumOpt == 0) // First textarea required
|
|
||||||
fprintf (Gbl.F.Out," required=\"required\"");
|
|
||||||
fprintf (Gbl.F.Out,">");
|
fprintf (Gbl.F.Out,">");
|
||||||
if (AnswerHasContent)
|
if (AnswerHasContent)
|
||||||
fprintf (Gbl.F.Out,"%s",Gbl.Test.Answer.Options[NumOpt].Text);
|
fprintf (Gbl.F.Out,"%s",Gbl.Test.Answer.Options[NumOpt].Text);
|
||||||
|
@ -5638,8 +5637,8 @@ static void Tst_GetQstDataFromDB (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***** Get possible media associated with a test question from database ******/
|
/***** Get possible media associated with a test question from database ******/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// NumOpt < 0 ==> image associated to stem
|
// NumOpt < 0 ==> media associated to stem
|
||||||
// NumOpt >= 0 ==> image associated to answer
|
// NumOpt >= 0 ==> media associated to answer
|
||||||
|
|
||||||
static void Tst_GetMediaFromDB (int NumOpt,struct Media *Media)
|
static void Tst_GetMediaFromDB (int NumOpt,struct Media *Media)
|
||||||
{
|
{
|
||||||
|
@ -5648,14 +5647,14 @@ static void Tst_GetMediaFromDB (int NumOpt,struct Media *Media)
|
||||||
|
|
||||||
/***** Query depending on NumOpt *****/
|
/***** Query depending on NumOpt *****/
|
||||||
if (NumOpt < 0)
|
if (NumOpt < 0)
|
||||||
// Get image associated to stem
|
// Get media associated to stem
|
||||||
DB_QuerySELECT (&mysql_res,"can not get media",
|
DB_QuerySELECT (&mysql_res,"can not get media",
|
||||||
"SELECT MedCod" // row[0]
|
"SELECT MedCod" // row[0]
|
||||||
" FROM tst_questions"
|
" FROM tst_questions"
|
||||||
" WHERE QstCod=%ld AND CrsCod=%ld",
|
" WHERE QstCod=%ld AND CrsCod=%ld",
|
||||||
Gbl.Test.QstCod,Gbl.CurrentCrs.Crs.CrsCod);
|
Gbl.Test.QstCod,Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
else
|
else
|
||||||
// Get image associated to answer
|
// Get media associated to answer
|
||||||
DB_QuerySELECT (&mysql_res,"can not get media",
|
DB_QuerySELECT (&mysql_res,"can not get media",
|
||||||
"SELECT MedCod" // row[0]
|
"SELECT MedCod" // row[0]
|
||||||
" FROM tst_answers"
|
" FROM tst_answers"
|
||||||
|
@ -5809,7 +5808,7 @@ static void Tst_GetQstFromForm (char *Stem,char *Feedback)
|
||||||
/***** Get question feedback *****/
|
/***** Get question feedback *****/
|
||||||
Par_GetParToHTML ("Feedback",Feedback,Cns_MAX_BYTES_TEXT);
|
Par_GetParToHTML ("Feedback",Feedback,Cns_MAX_BYTES_TEXT);
|
||||||
|
|
||||||
/***** Get image associated to the stem (action, file and title) *****/
|
/***** Get media associated to the stem (action, file and title) *****/
|
||||||
Gbl.Test.Media.Width = Tst_IMAGE_SAVED_MAX_WIDTH;
|
Gbl.Test.Media.Width = Tst_IMAGE_SAVED_MAX_WIDTH;
|
||||||
Gbl.Test.Media.Height = Tst_IMAGE_SAVED_MAX_HEIGHT;
|
Gbl.Test.Media.Height = Tst_IMAGE_SAVED_MAX_HEIGHT;
|
||||||
Gbl.Test.Media.Quality = Tst_IMAGE_SAVED_QUALITY;
|
Gbl.Test.Media.Quality = Tst_IMAGE_SAVED_QUALITY;
|
||||||
|
@ -5882,8 +5881,7 @@ static void Tst_GetQstFromForm (char *Stem,char *Feedback)
|
||||||
Par_GetParToHTML (FbStr,Gbl.Test.Answer.Options[NumOpt].Feedback,
|
Par_GetParToHTML (FbStr,Gbl.Test.Answer.Options[NumOpt].Feedback,
|
||||||
Tst_MAX_BYTES_ANSWER_OR_FEEDBACK);
|
Tst_MAX_BYTES_ANSWER_OR_FEEDBACK);
|
||||||
|
|
||||||
/* Get image associated to the answer (action, file and title) */
|
/* Get media associated to the answer (action, file and title) */
|
||||||
|
|
||||||
if (Gbl.Test.AnswerType == Tst_ANS_UNIQUE_CHOICE ||
|
if (Gbl.Test.AnswerType == Tst_ANS_UNIQUE_CHOICE ||
|
||||||
Gbl.Test.AnswerType == Tst_ANS_MULTIPLE_CHOICE)
|
Gbl.Test.AnswerType == Tst_ANS_MULTIPLE_CHOICE)
|
||||||
{
|
{
|
||||||
|
@ -6052,7 +6050,8 @@ bool Tst_CheckIfQstFormatIsCorrectAndCountNumOptions (void)
|
||||||
NumOpt++)
|
NumOpt++)
|
||||||
if (Gbl.Test.Answer.Options[NumOpt].Text)
|
if (Gbl.Test.Answer.Options[NumOpt].Text)
|
||||||
{
|
{
|
||||||
if (Gbl.Test.Answer.Options[NumOpt].Text[0])
|
if (Gbl.Test.Answer.Options[NumOpt].Text[0] || // Text
|
||||||
|
Gbl.Test.Answer.Options[NumOpt].Media.Type != Med_TYPE_NONE) // or media
|
||||||
{
|
{
|
||||||
if (ThereIsEndOfAnswers)
|
if (ThereIsEndOfAnswers)
|
||||||
{
|
{
|
||||||
|
@ -6136,50 +6135,72 @@ static void Tst_MoveMediaToDefinitiveDirectories (void)
|
||||||
{
|
{
|
||||||
unsigned NumOpt;
|
unsigned NumOpt;
|
||||||
|
|
||||||
/****** Move image associated to question stem *****/
|
/***** Media associated to question stem *****/
|
||||||
if (Gbl.Test.QstCod > 0 && // Question already exists
|
Gbl.Test.Media.MedCod = -1L; // By default, no media is associated to question stem
|
||||||
Gbl.Test.Media.Action != Med_ACTION_KEEP_MEDIA) // Don't keep the current image
|
switch (Gbl.Test.Media.Action)
|
||||||
/* Remove possible file with the old image
|
|
||||||
(the new image file is already processed
|
|
||||||
and moved to the definitive directory) */
|
|
||||||
Tst_RemoveMediaFromStemOfQst (Gbl.CurrentCrs.Crs.CrsCod,Gbl.Test.QstCod);
|
|
||||||
|
|
||||||
Gbl.Test.Media.MedCod = -1L;
|
|
||||||
if (Gbl.Test.Media.Action == Med_ACTION_NEW_MEDIA && // New media
|
|
||||||
Gbl.Test.Media.Status == Med_PROCESSED) // The new media received has been processed
|
|
||||||
{
|
{
|
||||||
/* Move processed image to definitive directory */
|
case Med_ACTION_NO_MEDIA:
|
||||||
Med_MoveMediaToDefinitiveDir (&Gbl.Test.Media);
|
/* Remove possible files with the old media */
|
||||||
|
if (Gbl.Test.QstCod > 0) // Question already exists
|
||||||
|
Tst_RemoveMediaFromStemOfQst (Gbl.CurrentCrs.Crs.CrsCod,Gbl.Test.QstCod);
|
||||||
|
break;
|
||||||
|
case Med_ACTION_KEEP_MEDIA:
|
||||||
|
/* Get current media associated to question */
|
||||||
|
Tst_GetMediaFromDB (-1,&Gbl.Test.Media);
|
||||||
|
break;
|
||||||
|
case Med_ACTION_NEW_MEDIA:
|
||||||
|
/* Remove possible files with the old media */
|
||||||
|
if (Gbl.Test.QstCod > 0) // Question already exists
|
||||||
|
Tst_RemoveMediaFromStemOfQst (Gbl.CurrentCrs.Crs.CrsCod,Gbl.Test.QstCod);
|
||||||
|
|
||||||
/* Store media in database */
|
/* New media received and processed sucessfully? */
|
||||||
if (Gbl.Test.Media.Status == Med_MOVED)
|
if (Gbl.Test.Media.Status == Med_PROCESSED) // The new media received has been processed
|
||||||
Med_StoreMediaInDB (&Gbl.Test.Media); // Set Gbl.Test.Media.MedCod
|
{
|
||||||
|
/* Move processed media to definitive directory */
|
||||||
|
Med_MoveMediaToDefinitiveDir (&Gbl.Test.Media);
|
||||||
|
|
||||||
|
/* Store media in database */
|
||||||
|
if (Gbl.Test.Media.Status == Med_MOVED)
|
||||||
|
Med_StoreMediaInDB (&Gbl.Test.Media); // Set Gbl.Test.Media.MedCod
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****** Move images associated to answers *****/
|
/****** Move media associated to answers *****/
|
||||||
if (Gbl.Test.AnswerType == Tst_ANS_UNIQUE_CHOICE ||
|
if (Gbl.Test.AnswerType == Tst_ANS_UNIQUE_CHOICE ||
|
||||||
Gbl.Test.AnswerType == Tst_ANS_MULTIPLE_CHOICE)
|
Gbl.Test.AnswerType == Tst_ANS_MULTIPLE_CHOICE)
|
||||||
for (NumOpt = 0;
|
for (NumOpt = 0;
|
||||||
NumOpt < Gbl.Test.Answer.NumOptions;
|
NumOpt < Gbl.Test.Answer.NumOptions;
|
||||||
NumOpt++)
|
NumOpt++)
|
||||||
{
|
{
|
||||||
if (Gbl.Test.QstCod > 0 && // Question already exists
|
Gbl.Test.Answer.Options[NumOpt].Media.MedCod = -1L; // By default, no media is associated to answer stem
|
||||||
Gbl.Test.Answer.Options[NumOpt].Media.Action != Med_ACTION_KEEP_MEDIA) // Don't keep the current image
|
switch (Gbl.Test.Answer.Options[NumOpt].Media.Action)
|
||||||
/* Remove possible file with the old image
|
|
||||||
(the new image file is already processed
|
|
||||||
and moved to the definitive directory) */
|
|
||||||
Tst_RemoveMediaFromAnsOfQst (Gbl.CurrentCrs.Crs.CrsCod,Gbl.Test.QstCod,NumOpt);
|
|
||||||
|
|
||||||
Gbl.Test.Answer.Options[NumOpt].Media.MedCod = -1L;
|
|
||||||
if (Gbl.Test.Answer.Options[NumOpt].Media.Action == Med_ACTION_NEW_MEDIA && // New media
|
|
||||||
Gbl.Test.Answer.Options[NumOpt].Media.Status == Med_PROCESSED) // The new media received has been processed
|
|
||||||
{
|
{
|
||||||
/* Move processed media to definitive directory */
|
case Med_ACTION_NO_MEDIA:
|
||||||
Med_MoveMediaToDefinitiveDir (&Gbl.Test.Answer.Options[NumOpt].Media);
|
/* Remove possible files with the old media */
|
||||||
|
if (Gbl.Test.QstCod > 0) // Question already exists
|
||||||
|
Tst_RemoveMediaFromAnsOfQst (Gbl.CurrentCrs.Crs.CrsCod,Gbl.Test.QstCod,NumOpt);
|
||||||
|
break;
|
||||||
|
case Med_ACTION_KEEP_MEDIA:
|
||||||
|
/* Get current media associated to question */
|
||||||
|
Tst_GetMediaFromDB (NumOpt,&Gbl.Test.Answer.Options[NumOpt].Media);
|
||||||
|
break;
|
||||||
|
case Med_ACTION_NEW_MEDIA:
|
||||||
|
/* Remove possible files with the old media */
|
||||||
|
if (Gbl.Test.QstCod > 0) // Question already exists
|
||||||
|
Tst_RemoveMediaFromAnsOfQst (Gbl.CurrentCrs.Crs.CrsCod,Gbl.Test.QstCod,NumOpt);
|
||||||
|
|
||||||
/* Store media in database */
|
/* New media received and processed sucessfully? */
|
||||||
if (Gbl.Test.Media.Status == Med_MOVED)
|
if (Gbl.Test.Answer.Options[NumOpt].Media.Status == Med_PROCESSED) // The new media received has been processed
|
||||||
Med_StoreMediaInDB (&Gbl.Test.Answer.Options[NumOpt].Media); // Set Gbl.Test.Answer.Options[NumOpt].Media.MedCod
|
{
|
||||||
|
/* Move processed media to definitive directory */
|
||||||
|
Med_MoveMediaToDefinitiveDir (&Gbl.Test.Answer.Options[NumOpt].Media);
|
||||||
|
|
||||||
|
/* Store media in database */
|
||||||
|
if (Gbl.Test.Answer.Options[NumOpt].Media.Status == Med_MOVED)
|
||||||
|
Med_StoreMediaInDB (&Gbl.Test.Answer.Options[NumOpt].Media); // Set Gbl.Test.Answer.Options[NumOpt].Media.MedCod
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6632,7 +6653,8 @@ static void Tst_InsertAnswersIntoDB (void)
|
||||||
for (NumOpt = 0;
|
for (NumOpt = 0;
|
||||||
NumOpt < Gbl.Test.Answer.NumOptions;
|
NumOpt < Gbl.Test.Answer.NumOptions;
|
||||||
NumOpt++)
|
NumOpt++)
|
||||||
if (Gbl.Test.Answer.Options[NumOpt].Text[0])
|
if (Gbl.Test.Answer.Options[NumOpt].Text[0] || // Text
|
||||||
|
Gbl.Test.Answer.Options[NumOpt].Media.Type != Med_TYPE_NONE) // or media
|
||||||
{
|
{
|
||||||
DB_QueryINSERT ("can not create answer",
|
DB_QueryINSERT ("can not create answer",
|
||||||
"INSERT INTO tst_answers"
|
"INSERT INTO tst_answers"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user