Version18.81.3

This commit is contained in:
Antonio Cañas Vargas 2019-03-19 01:41:27 +01:00
parent eec09b697d
commit b850096759
5 changed files with 171 additions and 207 deletions

View File

@ -559,15 +559,13 @@ CREATE TABLE IF NOT EXISTS forum_post (
NumNotif INT NOT NULL DEFAULT 0,
Subject TEXT NOT NULL,
Content LONGTEXT NOT NULL,
MediaName VARCHAR(43) NOT NULL DEFAULT '',
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 '',
MedCod INT NOT NULL DEFAULT -1,
UNIQUE INDEX(PstCod),
INDEX(ThrCod),
INDEX(UsrCod),
INDEX(CreatTime),
INDEX(ModifTime));
INDEX(ModifTime),
INDEX(MedCod));
--
-- 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,
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)
--
CREATE TABLE IF NOT EXISTS msg_banned (
@ -808,12 +817,10 @@ CREATE TABLE IF NOT EXISTS msg_content (
MsgCod INT NOT NULL AUTO_INCREMENT,
Subject TEXT NOT NULL,
Content LONGTEXT NOT NULL,
MediaName VARCHAR(43) NOT NULL DEFAULT '',
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 '',
MedCod INT NOT NULL DEFAULT -1,
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
--
@ -821,12 +828,10 @@ CREATE TABLE IF NOT EXISTS msg_content_deleted (
MsgCod INT NOT NULL,
Subject TEXT NOT NULL,
Content LONGTEXT NOT NULL,
MediaName VARCHAR(43) NOT NULL DEFAULT '',
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 '',
MedCod INT NOT NULL DEFAULT -1,
UNIQUE INDEX(MsgCod),
FULLTEXT(Subject,Content)) ENGINE = MYISAM;
FULLTEXT(Subject,Content),
INDEX(MedCod)) ENGINE = MYISAM;
--
-- Table msg_rcv: stores the received messages
--
@ -1025,12 +1030,10 @@ CREATE TABLE IF NOT EXISTS sessions (
CREATE TABLE IF NOT EXISTS social_comments (
PubCod BIGINT NOT NULL,
Content LONGTEXT NOT NULL,
MediaName VARCHAR(43) NOT NULL DEFAULT '',
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 '',
MedCod INT NOT NULL DEFAULT -1,
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
--
@ -1074,12 +1077,10 @@ CREATE TABLE IF NOT EXISTS social_notes_fav (
CREATE TABLE IF NOT EXISTS social_posts (
PstCod INT NOT NULL AUTO_INCREMENT,
Content LONGTEXT NOT NULL,
MediaName VARCHAR(43) NOT NULL DEFAULT '',
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 '',
MedCod INT NOT NULL DEFAULT -1,
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)
--
@ -1203,12 +1204,10 @@ CREATE TABLE IF NOT EXISTS tst_answers (
AnsInd TINYINT NOT NULL,
Answer TEXT NOT NULL,
Feedback TEXT NOT NULL,
MediaName VARCHAR(43) NOT NULL DEFAULT '',
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 '',
MedCod INT NOT NULL DEFAULT -1,
Correct ENUM('N','Y') NOT NULL,
INDEX(QstCod));
INDEX(QstCod),
INDEX(MedCod));
--
-- 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,
Stem TEXT NOT NULL,
Feedback TEXT NOT NULL,
MediaName VARCHAR(43) NOT NULL DEFAULT '',
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 '',
MedCod INT NOT NULL DEFAULT -1,
NumHits INT NOT NULL DEFAULT 0,
NumHitsNotBlank INT NOT NULL DEFAULT 0,
Score DOUBLE PRECISION NOT NULL DEFAULT 0,
UNIQUE INDEX(QstCod),
INDEX(CrsCod,EditTime));
INDEX(CrsCod,EditTime),
INDEX(MedCod));
--
-- Table tst_status: stores the status of tests for each session
--

View File

@ -459,20 +459,22 @@ En OpenSWAD:
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 JS_FILE "swad18.80.js"
/*
TODO: Remove unused fields MediaName,MediaType,MediaTitle,MediaURL,Media from tables:
// ALTER TABLE forum_post 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 msg_content_deleted 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 social_posts 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 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.3: Mar 19, 2019 Remove unused fields MediaName,MediaType,MediaTitle,MediaURL,Media from tables. (240657 lines)
8 changes necessary in database:
ALTER TABLE forum_post 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 msg_content_deleted 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 social_posts 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 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: Mar 18, 2019 New database table media to store images and videos.
Fixed bugs in removal of publications in timeline. (240704 lines)

View File

@ -1207,24 +1207,20 @@ mysql> DESCRIBE forum_disabled_post;
/***** Table forum_post *****/
/*
mysql> DESCRIBE forum_post;
+------------+-------------------------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------------------------------------------------+------+-----+---------+----------------+
| PstCod | int(11) | NO | PRI | NULL | auto_increment |
| ThrCod | int(11) | NO | MUL | NULL | |
| UsrCod | int(11) | NO | MUL | NULL | |
| CreatTime | datetime | NO | MUL | NULL | |
| ModifTime | datetime | NO | MUL | NULL | |
| NumNotif | int(11) | NO | | 0 | |
| Subject | text | NO | | NULL | |
| Content | longtext | NO | | NULL | |
| 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 | | | |
+------------+-------------------------------------------------------+------+-----+---------+----------------+
13 rows in set (0.00 sec)
+-----------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+----------------+
| PstCod | int(11) | NO | PRI | NULL | auto_increment |
| ThrCod | int(11) | NO | MUL | NULL | |
| UsrCod | int(11) | NO | MUL | NULL | |
| CreatTime | datetime | NO | MUL | NULL | |
| ModifTime | datetime | NO | MUL | NULL | |
| NumNotif | int(11) | NO | | 0 | |
| Subject | text | NO | | NULL | |
| Content | longtext | NO | | NULL | |
| MedCod | int(11) | NO | MUL | -1 | |
+-----------+----------+------+-----+---------+----------------+
9 rows in set (0.00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS forum_post ("
"PstCod INT NOT NULL AUTO_INCREMENT,"
@ -1236,10 +1232,6 @@ mysql> DESCRIBE forum_post;
"Subject TEXT NOT NULL," // Cns_MAX_BYTES_SUBJECT
"Content LONGTEXT NOT NULL," // Cns_MAX_BYTES_LONG_TEXT
"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),"
"INDEX(ThrCod),"
"INDEX(UsrCod),"
@ -1729,7 +1721,7 @@ mysql> DESCRIBE media;
| URL | varchar(255) | 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 ("
"MedCod INT NOT NULL AUTO_INCREMENT,"
@ -1759,29 +1751,21 @@ mysql> DESCRIBE msg_banned;
/***** Table msg_content *****/
/*
mysql> DESCRIBE msg_content;
+------------+-------------------------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------------------------------------------------+------+-----+---------+----------------+
| MsgCod | int(11) | NO | PRI | NULL | auto_increment |
| Subject | text | NO | MUL | NULL | |
| Content | longtext | NO | | NULL | |
| 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 | | | |
+------------+-------------------------------------------------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
+---------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+----------------+
| MsgCod | int(11) | NO | PRI | NULL | auto_increment |
| Subject | text | NO | MUL | NULL | |
| Content | longtext | NO | | NULL | |
| MedCod | int(11) | NO | MUL | -1 | |
+---------+----------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS msg_content ("
"MsgCod INT NOT NULL AUTO_INCREMENT,"
"Subject TEXT NOT NULL,"
"Content LONGTEXT NOT NULL,"
"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),"
"FULLTEXT(Subject,Content),"
"INDEX(MedCod)) ENGINE = MYISAM;");
@ -1789,29 +1773,21 @@ mysql> DESCRIBE msg_content;
/***** Table msg_content_deleted *****/
/*
mysql> DESCRIBE msg_content_deleted;
+------------+-------------------------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------------------------------------------------+------+-----+---------+-------+
| MsgCod | int(11) | NO | PRI | NULL | |
| Subject | text | NO | MUL | NULL | |
| Content | longtext | NO | | NULL | |
| 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 | | | |
+------------+-------------------------------------------------------+------+-----+---------+-------+
8 rows in set (0.00 sec)
+---------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| MsgCod | int(11) | NO | PRI | NULL | |
| Subject | text | NO | MUL | NULL | |
| Content | longtext | NO | | NULL | |
| MedCod | int(11) | NO | MUL | -1 | |
+---------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS msg_content_deleted ("
"MsgCod INT NOT NULL,"
"Subject TEXT NOT NULL,"
"Content LONGTEXT NOT NULL,"
"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),"
"FULLTEXT(Subject,Content),"
"INDEX(MedCod)) ENGINE = MYISAM;");
@ -2208,27 +2184,19 @@ mysql> DESCRIBE sessions;
/***** Table social_comments *****/
/*
mysql> DESCRIBE social_comments;
+------------+-------------------------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------------------------------------------------+------+-----+---------+-------+
| PubCod | bigint(20) | NO | PRI | NULL | |
| Content | longtext | NO | MUL | NULL | |
| 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 | | | |
+------------+-------------------------------------------------------+------+-----+---------+-------+
7 rows in set (0.01 sec)
+---------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------+------+-----+---------+-------+
| PubCod | bigint(20) | NO | PRI | NULL | |
| Content | longtext | NO | MUL | NULL | |
| MedCod | int(11) | NO | MUL | -1 | |
+---------+------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS social_comments ("
"PubCod BIGINT NOT NULL,"
"Content LONGTEXT NOT NULL,"
"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),"
"FULLTEXT(Content),"
"INDEX(MedCod)) ENGINE = MYISAM;");
@ -2309,27 +2277,19 @@ mysql> DESCRIBE social_notes_fav;
/***** Table social_posts *****/
/*
mysql> DESCRIBE social_posts;
+------------+-------------------------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------------------------------------------------+------+-----+---------+----------------+
| PstCod | int(11) | NO | PRI | NULL | auto_increment |
| Content | longtext | NO | MUL | NULL | |
| 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 | | | |
+------------+-------------------------------------------------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
+---------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+----------------+
| PstCod | int(11) | NO | PRI | NULL | auto_increment |
| Content | longtext | NO | MUL | NULL | |
| MedCod | int(11) | NO | MUL | -1 | |
+---------+----------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS social_posts ("
"PubCod INT NOT NULL AUTO_INCREMENT,"
"Content LONGTEXT NOT NULL,"
"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),"
"FULLTEXT(Content),"
"INDEX(MedCod)) ENGINE = MYISAM;");
@ -2585,21 +2545,17 @@ mysql> DESCRIBE timetable_tut;
/***** Table tst_answers *****/
/*
mysql> DESCRIBE tst_answers;
+------------+-------------------------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------------------------------------------------+------+-----+---------+-------+
| QstCod | int(11) | NO | MUL | NULL | |
| AnsInd | tinyint(4) | NO | | NULL | |
| Answer | text | NO | | NULL | |
| Feedback | text | NO | | NULL | |
| 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 | | | |
| Correct | enum('N','Y') | NO | | NULL | |
+------------+-------------------------------------------------------+------+-----+---------+-------+
10 rows in set (0.00 sec)
+----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| QstCod | int(11) | NO | MUL | NULL | |
| AnsInd | tinyint(4) | NO | | NULL | |
| Answer | text | NO | | NULL | |
| Feedback | text | NO | | NULL | |
| MedCod | int(11) | NO | MUL | -1 | |
| Correct | enum('N','Y') | NO | | NULL | |
+----------+---------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS tst_answers ("
"QstCod INT NOT NULL,"
@ -2607,10 +2563,6 @@ mysql> DESCRIBE tst_answers;
"Answer 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,"
"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,"
"INDEX(QstCod),"
"INDEX(MedCod))");
@ -2726,15 +2678,11 @@ mysql> DESCRIBE tst_questions;
| Stem | text | NO | | NULL | |
| Feedback | text | NO | | NULL | |
| 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 | |
| NumHitsNotBlank | int(11) | 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 ("
"QstCod INT NOT NULL AUTO_INCREMENT,"
@ -2745,10 +2693,6 @@ mysql> DESCRIBE tst_questions;
"Stem TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
"Feedback TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
"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,"
"NumHitsNotBlank INT NOT NULL DEFAULT 0,"
"Score DOUBLE PRECISION NOT NULL DEFAULT 0,"

View File

@ -952,7 +952,6 @@ static int Med_ResizeImage (struct Media *Media,
Lay_ShowErrorAndExit ("Error when running command to process media.");
ReturnCode = WEXITSTATUS(ReturnCode);
return ReturnCode;
}

View File

@ -5185,7 +5185,8 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
AnswerHasContent = false;
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;
DisplayRightColumn = NumOpt < 2 || // Display at least the two first options
AnswerHasContent;
@ -5268,8 +5269,6 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
NumOpt);
if (OptionsDisabled)
fprintf (Gbl.F.Out," disabled=\"disabled\"");
if (NumOpt == 0) // First textarea required
fprintf (Gbl.F.Out," required=\"required\"");
fprintf (Gbl.F.Out,">");
if (AnswerHasContent)
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 ******/
/*****************************************************************************/
// NumOpt < 0 ==> image associated to stem
// NumOpt >= 0 ==> image associated to answer
// NumOpt < 0 ==> media associated to stem
// NumOpt >= 0 ==> media associated to answer
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 *****/
if (NumOpt < 0)
// Get image associated to stem
// Get media associated to stem
DB_QuerySELECT (&mysql_res,"can not get media",
"SELECT MedCod" // row[0]
" FROM tst_questions"
" WHERE QstCod=%ld AND CrsCod=%ld",
Gbl.Test.QstCod,Gbl.CurrentCrs.Crs.CrsCod);
else
// Get image associated to answer
// Get media associated to answer
DB_QuerySELECT (&mysql_res,"can not get media",
"SELECT MedCod" // row[0]
" FROM tst_answers"
@ -5809,7 +5808,7 @@ static void Tst_GetQstFromForm (char *Stem,char *Feedback)
/***** Get question feedback *****/
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.Height = Tst_IMAGE_SAVED_MAX_HEIGHT;
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,
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 ||
Gbl.Test.AnswerType == Tst_ANS_MULTIPLE_CHOICE)
{
@ -6052,7 +6050,8 @@ bool Tst_CheckIfQstFormatIsCorrectAndCountNumOptions (void)
NumOpt++)
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)
{
@ -6136,50 +6135,72 @@ static void Tst_MoveMediaToDefinitiveDirectories (void)
{
unsigned NumOpt;
/****** Move image associated to question stem *****/
if (Gbl.Test.QstCod > 0 && // Question already exists
Gbl.Test.Media.Action != Med_ACTION_KEEP_MEDIA) // Don't keep the current image
/* 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
/***** Media associated to question stem *****/
Gbl.Test.Media.MedCod = -1L; // By default, no media is associated to question stem
switch (Gbl.Test.Media.Action)
{
/* Move processed image to definitive directory */
Med_MoveMediaToDefinitiveDir (&Gbl.Test.Media);
case Med_ACTION_NO_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 */
if (Gbl.Test.Media.Status == Med_MOVED)
Med_StoreMediaInDB (&Gbl.Test.Media); // Set Gbl.Test.Media.MedCod
/* New media received and processed sucessfully? */
if (Gbl.Test.Media.Status == Med_PROCESSED) // The new media received has been processed
{
/* 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 ||
Gbl.Test.AnswerType == Tst_ANS_MULTIPLE_CHOICE)
for (NumOpt = 0;
NumOpt < Gbl.Test.Answer.NumOptions;
NumOpt++)
{
if (Gbl.Test.QstCod > 0 && // Question already exists
Gbl.Test.Answer.Options[NumOpt].Media.Action != Med_ACTION_KEEP_MEDIA) // Don't keep the current image
/* 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
Gbl.Test.Answer.Options[NumOpt].Media.MedCod = -1L; // By default, no media is associated to answer stem
switch (Gbl.Test.Answer.Options[NumOpt].Media.Action)
{
/* Move processed media to definitive directory */
Med_MoveMediaToDefinitiveDir (&Gbl.Test.Answer.Options[NumOpt].Media);
case Med_ACTION_NO_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 */
if (Gbl.Test.Media.Status == Med_MOVED)
Med_StoreMediaInDB (&Gbl.Test.Answer.Options[NumOpt].Media); // Set Gbl.Test.Answer.Options[NumOpt].Media.MedCod
/* New media received and processed sucessfully? */
if (Gbl.Test.Answer.Options[NumOpt].Media.Status == Med_PROCESSED) // The new media received has been processed
{
/* 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;
NumOpt < Gbl.Test.Answer.NumOptions;
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",
"INSERT INTO tst_answers"