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, 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
-- --

View File

@ -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)

View File

@ -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,"

View File

@ -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;
} }

View File

@ -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"