mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-03 23:35:23 +02:00
Version 18.64.3
This commit is contained in:
parent
36f6647379
commit
1bdc46a541
|
@ -2707,12 +2707,7 @@ a:hover img.CENTRE_PHOTO_SHOW
|
|||
{
|
||||
position:relative;
|
||||
}
|
||||
/*
|
||||
.MED_PLAY:hover .MED_PLAY_ICO
|
||||
{
|
||||
opacity:0;
|
||||
}
|
||||
*/
|
||||
|
||||
/* The icon inside the overlay is positioned in the middle vertically and horizontally */
|
||||
.MED_PLAY_ICO
|
||||
{
|
||||
|
@ -2720,7 +2715,7 @@ a:hover img.CENTRE_PHOTO_SHOW
|
|||
left:50%;
|
||||
top:50%;
|
||||
transform:translate(-50%,-50%);
|
||||
font-size:24pt;
|
||||
font-size:20pt;
|
||||
font-weight:bold;
|
||||
color:white;
|
||||
text-shadow: 0 0 8px black;
|
||||
|
|
|
@ -12616,3 +12616,27 @@ SELECT CAST(~0 AS UNSIGNED);
|
|||
SELECT last_logs.LogCod,last_logs.ActCod,last_logs.Dif,last_logs.Role,last_logs.CtyCod,last_logs.InsCod,last_logs.CtrCod,last_logs.DegCod,actions.Txt FROM (SELECT LogCod,ActCod,UNIX_TIMESTAMP()-UNIX_TIMESTAMP(ClickTime) AS Dif,Role,CtyCod,InsCod,CtrCod,DegCod FROM log_recent ORDER BY LogCod DESC LIMIT 20) AS last_logs LEFT JOIN actions ON last_logs.ActCod=actions.ActCod WHERE actions.Language='es';
|
||||
|
||||
|
||||
ALTER TABLE forum_post CHANGE COLUMN MediaType MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none';
|
||||
ALTER TABLE msg_content CHANGE COLUMN MediaType MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none';
|
||||
ALTER TABLE msg_content_deleted CHANGE COLUMN MediaType MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none';
|
||||
ALTER TABLE social_comments CHANGE COLUMN MediaType MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none';
|
||||
ALTER TABLE social_posts CHANGE COLUMN MediaType MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none';
|
||||
ALTER TABLE tst_answers CHANGE COLUMN MediaType MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none';
|
||||
ALTER TABLE tst_questions CHANGE COLUMN MediaType MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none';
|
||||
|
||||
UPDATE forum_post SET MediaType='none' WHERE MediaName='';
|
||||
UPDATE msg_content SET MediaType='none' WHERE MediaName='';
|
||||
UPDATE msg_content_deleted SET MediaType='none' WHERE MediaName='';
|
||||
UPDATE social_comments SET MediaType='none' WHERE MediaName='';
|
||||
UPDATE social_posts SET MediaType='none' WHERE MediaName='';
|
||||
UPDATE tst_answers SET MediaType='none' WHERE MediaName='';
|
||||
UPDATE tst_questions SET MediaType='none' WHERE MediaName='';
|
||||
|
||||
UPDATE forum_post SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
UPDATE msg_content SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
UPDATE msg_content_deleted SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
UPDATE social_comments SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
UPDATE social_posts SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
UPDATE tst_answers SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
UPDATE tst_questions SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
|
||||
|
|
|
@ -411,8 +411,6 @@ Antonio
|
|||
|
||||
// TODO: Chequear "Imagen no encontrada" en timeline. Mensaje de Víctor González Argudo
|
||||
|
||||
// TODO: Comprobar "Error when getting publishing code from session." tras horas de inactividad.
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -432,10 +430,12 @@ En OpenSWAD:
|
|||
ps2pdf source.ps destination.pdf
|
||||
*/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 18.64.1 (2019-03-04)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 18.64.3 (2019-03-04)"
|
||||
#define CSS_FILE "swad18.64.css"
|
||||
#define JS_FILE "swad18.64.js"
|
||||
/*
|
||||
Version 18.64.3: Mar 04, 2019 Fixed bugs in media. (238467 lines)
|
||||
Version 18.64.2: Mar 04, 2019 Detect if a GIF image is animated. (238451 lines)
|
||||
Version 18.64.1: Mar 04, 2019 Code refactoring in media. (238408 lines)
|
||||
Version 18.64: Mar 04, 2019 Allowing animated GIFs. Not finished. (238378 lines)
|
||||
Version 18.63.1: Mar 02, 2019 Allowing animated GIFs. Not finished. (238162 lines)
|
||||
|
@ -443,7 +443,7 @@ ps2pdf source.ps destination.pdf
|
|||
Rename the following directory:
|
||||
sudo mv /var/www/swad/img /var/www/swad/med
|
||||
|
||||
28 changes necessary in database:
|
||||
42 changes necessary in database:
|
||||
ALTER TABLE forum_post CHANGE COLUMN ImageName MediaName VARCHAR(43) NOT NULL DEFAULT '';
|
||||
ALTER TABLE games CHANGE COLUMN ImageName MediaName VARCHAR(43) NOT NULL DEFAULT '';
|
||||
ALTER TABLE msg_content CHANGE COLUMN ImageName MediaName VARCHAR(43) NOT NULL DEFAULT '';
|
||||
|
@ -453,13 +453,13 @@ ALTER TABLE social_posts CHANGE COLUMN ImageName MediaName VARCHAR(43) NOT NULL
|
|||
ALTER TABLE tst_answers CHANGE COLUMN ImageName MediaName VARCHAR(43) NOT NULL DEFAULT '';
|
||||
ALTER TABLE tst_questions CHANGE COLUMN ImageName MediaName VARCHAR(43) NOT NULL DEFAULT '';
|
||||
|
||||
ALTER TABLE forum_post ADD COLUMN MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg' AFTER MediaName;
|
||||
ALTER TABLE msg_content ADD COLUMN MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg' AFTER MediaName;
|
||||
ALTER TABLE msg_content_deleted ADD COLUMN MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg' AFTER MediaName;
|
||||
ALTER TABLE social_comments ADD COLUMN MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg' AFTER MediaName;
|
||||
ALTER TABLE social_posts ADD COLUMN MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg' AFTER MediaName;
|
||||
ALTER TABLE tst_answers ADD COLUMN MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg' AFTER MediaName;
|
||||
ALTER TABLE tst_questions ADD COLUMN MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg' AFTER MediaName;
|
||||
ALTER TABLE forum_post ADD COLUMN MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none' AFTER MediaName;
|
||||
ALTER TABLE msg_content ADD COLUMN MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none' AFTER MediaName;
|
||||
ALTER TABLE msg_content_deleted ADD COLUMN MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none' AFTER MediaName;
|
||||
ALTER TABLE social_comments ADD COLUMN MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none' AFTER MediaName;
|
||||
ALTER TABLE social_posts ADD COLUMN MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none' AFTER MediaName;
|
||||
ALTER TABLE tst_answers ADD COLUMN MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none' AFTER MediaName;
|
||||
ALTER TABLE tst_questions ADD COLUMN MediaType ENUM('none','jpg','gif') NOT NULL DEFAULT 'none' AFTER MediaName;
|
||||
|
||||
ALTER TABLE forum_post CHANGE COLUMN ImageTitle MediaTitle VARCHAR(2047) NOT NULL DEFAULT '';
|
||||
ALTER TABLE msg_content CHANGE COLUMN ImageTitle MediaTitle VARCHAR(2047) NOT NULL DEFAULT '';
|
||||
|
@ -477,6 +477,22 @@ ALTER TABLE social_posts CHANGE COLUMN ImageURL MediaURL VARCHAR(255) NOT NULL D
|
|||
ALTER TABLE tst_answers CHANGE COLUMN ImageURL MediaURL VARCHAR(255) NOT NULL DEFAULT '';
|
||||
ALTER TABLE tst_questions CHANGE COLUMN ImageURL MediaURL VARCHAR(255) NOT NULL DEFAULT '';
|
||||
|
||||
UPDATE forum_post SET MediaType='none' WHERE MediaName='';
|
||||
UPDATE msg_content SET MediaType='none' WHERE MediaName='';
|
||||
UPDATE msg_content_deleted SET MediaType='none' WHERE MediaName='';
|
||||
UPDATE social_comments SET MediaType='none' WHERE MediaName='';
|
||||
UPDATE social_posts SET MediaType='none' WHERE MediaName='';
|
||||
UPDATE tst_answers SET MediaType='none' WHERE MediaName='';
|
||||
UPDATE tst_questions SET MediaType='none' WHERE MediaName='';
|
||||
|
||||
UPDATE forum_post SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
UPDATE msg_content SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
UPDATE msg_content_deleted SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
UPDATE social_comments SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
UPDATE social_posts SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
UPDATE tst_answers SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
UPDATE tst_questions SET MediaType='jpg' WHERE MediaType<>'gif' AND MediaName<>'';
|
||||
|
||||
Version 18.62: Feb 27, 2019 By default show only the last comments in a social publishing. (237901 lines)
|
||||
Version 18.61: Feb 27, 2019 Hide/show comments in a social publishing. (237855 lines)
|
||||
Version 18.60.5: Feb 26, 2019 Changes in CSS for responsive design in timeline. (237788 lines)
|
||||
|
|
|
@ -1207,9 +1207,9 @@ 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 | |
|
||||
|
@ -1219,11 +1219,11 @@ mysql> DESCRIBE forum_post;
|
|||
| Subject | text | NO | | NULL | |
|
||||
| Content | longtext | NO | | NULL | |
|
||||
| MediaName | varchar(43) | NO | | | |
|
||||
| MediaType | enum('jpg','gif') | NO | | jpg | |
|
||||
| MediaType | enum('none','jpg','gif') | NO | | none | |
|
||||
| MediaTitle | varchar(2047) | NO | | | |
|
||||
| MediaURL | varchar(255) | NO | | | |
|
||||
+------------+-------------------+------+-----+---------+----------------+
|
||||
12 rows in set (0.00 sec)
|
||||
+------------+--------------------------+------+-----+---------+----------------+
|
||||
12 rows in set (0.01 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS forum_post ("
|
||||
"PstCod INT NOT NULL AUTO_INCREMENT,"
|
||||
|
@ -1235,7 +1235,7 @@ mysql> DESCRIBE forum_post;
|
|||
"Subject TEXT NOT NULL," // Cns_MAX_BYTES_SUBJECT
|
||||
"Content LONGTEXT NOT NULL," // Cns_MAX_BYTES_LONG_TEXT
|
||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
||||
"MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg',"
|
||||
"MediaType ENUM('none','jpg','gif') 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),"
|
||||
|
@ -1733,17 +1733,17 @@ 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 | |
|
||||
| MediaName | varchar(43) | NO | | | |
|
||||
| MediaType | enum('jpg','gif') | NO | | jpg | |
|
||||
| MediaType | enum('none','jpg','gif') | NO | | none | |
|
||||
| MediaTitle | varchar(2047) | NO | | | |
|
||||
| MediaURL | varchar(255) | NO | | | |
|
||||
+------------+-------------------+------+-----+---------+----------------+
|
||||
+------------+--------------------------+------+-----+---------+----------------+
|
||||
7 rows in set (0.00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS msg_content ("
|
||||
|
@ -1751,7 +1751,7 @@ mysql> DESCRIBE msg_content;
|
|||
"Subject TEXT NOT NULL,"
|
||||
"Content LONGTEXT NOT NULL,"
|
||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
||||
"MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg',"
|
||||
"MediaType ENUM('none','jpg','gif') 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),"
|
||||
|
@ -1760,17 +1760,17 @@ 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 | |
|
||||
| MediaName | varchar(43) | NO | | | |
|
||||
| MediaType | enum('jpg','gif') | NO | | jpg | |
|
||||
| MediaType | enum('none','jpg','gif') | NO | | none | |
|
||||
| MediaTitle | varchar(2047) | NO | | | |
|
||||
| MediaURL | varchar(255) | NO | | | |
|
||||
+------------+-------------------+------+-----+---------+-------+
|
||||
+------------+--------------------------+------+-----+---------+-------+
|
||||
7 rows in set (0.00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS msg_content_deleted ("
|
||||
|
@ -1778,7 +1778,7 @@ mysql> DESCRIBE msg_content_deleted;
|
|||
"Subject TEXT NOT NULL,"
|
||||
"Content LONGTEXT NOT NULL,"
|
||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
||||
"MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg',"
|
||||
"MediaType ENUM('none','jpg','gif') 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),"
|
||||
|
@ -2176,23 +2176,23 @@ 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 | |
|
||||
| MediaName | varchar(43) | NO | | | |
|
||||
| MediaType | enum('jpg','gif') | NO | | jpg | |
|
||||
| MediaType | enum('none','jpg','gif') | NO | | none | |
|
||||
| MediaTitle | varchar(2047) | NO | | | |
|
||||
| MediaURL | varchar(255) | NO | | | |
|
||||
+------------+-------------------+------+-----+---------+-------+
|
||||
+------------+--------------------------+------+-----+---------+-------+
|
||||
6 rows in set (0.00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS social_comments ("
|
||||
"PubCod BIGINT NOT NULL,"
|
||||
"Content LONGTEXT NOT NULL,"
|
||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
||||
"MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg',"
|
||||
"MediaType ENUM('none','jpg','gif') 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),"
|
||||
|
@ -2274,23 +2274,23 @@ 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 | |
|
||||
| MediaName | varchar(43) | NO | | | |
|
||||
| MediaType | enum('jpg','gif') | NO | | jpg | |
|
||||
| MediaType | enum('none','jpg','gif') | NO | | none | |
|
||||
| MediaTitle | varchar(2047) | NO | | | |
|
||||
| MediaURL | varchar(255) | NO | | | |
|
||||
+------------+-------------------+------+-----+---------+----------------+
|
||||
6 rows in set (0.00 sec)
|
||||
+------------+--------------------------+------+-----+---------+----------------+
|
||||
6 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,"
|
||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
||||
"MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg',"
|
||||
"MediaType ENUM('none','jpg','gif') 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),"
|
||||
|
@ -2547,19 +2547,19 @@ 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 | |
|
||||
| MediaName | varchar(43) | NO | | | |
|
||||
| MediaType | enum('jpg','gif') | NO | | jpg | |
|
||||
| MediaType | enum('none','jpg','gif') | NO | | none | |
|
||||
| MediaTitle | varchar(2047) | NO | | | |
|
||||
| MediaURL | varchar(255) | NO | | | |
|
||||
| Correct | enum('N','Y') | NO | | NULL | |
|
||||
+------------+-------------------+------+-----+---------+-------+
|
||||
+------------+--------------------------+------+-----+---------+-------+
|
||||
9 rows in set (0.00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS tst_answers ("
|
||||
|
@ -2568,7 +2568,7 @@ mysql> DESCRIBE tst_answers;
|
|||
"Answer TEXT NOT NULL," // Tst_MAX_BYTES_ANSWER_OR_FEEDBACK
|
||||
"Feedback TEXT NOT NULL," // Tst_MAX_BYTES_ANSWER_OR_FEEDBACK
|
||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
||||
"MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg',"
|
||||
"MediaType ENUM('none','jpg','gif') 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,"
|
||||
|
@ -2685,7 +2685,7 @@ mysql> DESCRIBE tst_questions;
|
|||
| Stem | text | NO | | NULL | |
|
||||
| Feedback | text | NO | | NULL | |
|
||||
| MediaName | varchar(43) | NO | | | |
|
||||
| MediaType | enum('jpg','gif') | NO | | jpg | |
|
||||
| MediaType | enum('none','jpg','gif') | NO | | none | |
|
||||
| MediaTitle | varchar(2047) | NO | | | |
|
||||
| MediaURL | varchar(255) | NO | | | |
|
||||
| NumHits | int(11) | NO | | 0 | |
|
||||
|
@ -2703,7 +2703,7 @@ mysql> DESCRIBE tst_questions;
|
|||
"Stem TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
|
||||
"Feedback TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
|
||||
"MediaName VARCHAR(43) NOT NULL DEFAULT ''," // Med_BYTES_NAME
|
||||
"MediaType ENUM('jpg','gif') NOT NULL DEFAULT 'jpg',"
|
||||
"MediaType ENUM('none','jpg','gif') 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,"
|
||||
|
|
|
@ -538,7 +538,7 @@ static bool For_RemoveForumPst (long PstCod,struct Media *Media)
|
|||
bool ThreadDeleted = false;
|
||||
|
||||
/***** Remove media file attached to forum post *****/
|
||||
Med_RemoveMediaFile (Media->Name,Media->Type);
|
||||
Med_RemoveMediaFiles (Media->Name,Media->Type);
|
||||
|
||||
/***** If the post is the only one in its thread, delete that thread *****/
|
||||
if (For_NumPstsInThrWithPstCod (PstCod,&ThrCod) < 2)
|
||||
|
|
|
@ -3737,7 +3737,7 @@ static void Gam_IncreaseAnswerInDB (long QstCod,unsigned AnsInd)
|
|||
{
|
||||
/***** Increase number of users who have selected
|
||||
the answer AnsInd in the question QstCod *****/
|
||||
DB_QueryINSERT ("can not register your answer to the game",
|
||||
DB_QueryUPDATE ("can not register your answer to the game",
|
||||
"UPDATE gam_answers SET NumUsrs=NumUsrs+1"
|
||||
" WHERE QstCod=%ld AND AnsInd=%u",
|
||||
QstCod,AnsInd);
|
||||
|
|
111
swad_media.c
111
swad_media.c
|
@ -51,7 +51,7 @@
|
|||
|
||||
const char *Med_StringsTypeDB[Med_NUM_TYPES] =
|
||||
{
|
||||
"", // Med_UNKNOWN
|
||||
"none", // Med_NONE
|
||||
"jpg", // Med_JPG
|
||||
"gif", // Med_GIF
|
||||
};
|
||||
|
@ -79,6 +79,9 @@ extern struct Globals Gbl;
|
|||
static Med_Action_t Med_GetMediaActionFromForm (const char *ParamAction);
|
||||
static void Med_GetAndProcessFileFromForm (struct Media *Media,
|
||||
const char *ParamFile);
|
||||
static bool Med_DetectIfAnimated (struct Media *Media,
|
||||
const char PathMedPrivTmp[PATH_MAX + 1],
|
||||
const char PathFileOrg[PATH_MAX + 1]);
|
||||
|
||||
static void Med_ProcessJPG (struct Media *Media,
|
||||
const char PathMedPrivTmp[PATH_MAX + 1],
|
||||
|
@ -129,7 +132,7 @@ void Med_ResetMediaExceptTitleAndURL (struct Media *Media)
|
|||
Media->Action = Med_ACTION_NO_MEDIA;
|
||||
Media->Status = Med_FILE_NONE;
|
||||
Media->Name[0] = '\0';
|
||||
Media->Type = Med_UNKNOWN;
|
||||
Media->Type = Med_NONE;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -190,8 +193,9 @@ void Med_GetMediaDataFromRow (const char *Name,
|
|||
/***** Convert type string to type *****/
|
||||
Media->Type = Med_GetTypeFromStrInDB (TypeStr);
|
||||
|
||||
/***** Set status of image file *****/
|
||||
Media->Status = Media->Name[0] ? Med_NAME_STORED_IN_DB :
|
||||
/***** Set status of media file *****/
|
||||
Media->Status = (Media->Name[0] &&
|
||||
Media->Type != Med_NONE) ? Med_NAME_STORED_IN_DB :
|
||||
Med_FILE_NONE;
|
||||
|
||||
/***** Copy image title to struct *****/
|
||||
|
@ -314,7 +318,7 @@ void Med_GetMediaFromForm (int NumMediaInForm,struct Media *Media,
|
|||
Media->Action = Med_GetMediaActionFromForm (ParamUploadMedia.Action);
|
||||
Media->Status = Med_FILE_NONE;
|
||||
Media->Name[0] = '\0';
|
||||
Media->Type = Med_UNKNOWN;
|
||||
Media->Type = Med_NONE;
|
||||
|
||||
/***** Secondly, get the media (image/video) name and the file *****/
|
||||
switch (Media->Action)
|
||||
|
@ -327,12 +331,12 @@ void Med_GetMediaFromForm (int NumMediaInForm,struct Media *Media,
|
|||
case Med_FILE_NONE: // No new image/video received
|
||||
Media->Action = Med_ACTION_NO_MEDIA;
|
||||
Media->Name[0] = '\0';
|
||||
Media->Type = Med_UNKNOWN;
|
||||
Media->Type = Med_NONE;
|
||||
break;
|
||||
case Med_FILE_RECEIVED: // New image/video received, but not processed
|
||||
Media->Status = Med_FILE_NONE;
|
||||
Media->Name[0] = '\0';
|
||||
Media->Type = Med_UNKNOWN;
|
||||
Media->Type = Med_NONE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -476,7 +480,7 @@ static void Med_GetAndProcessFileFromForm (struct Media *Media,
|
|||
|
||||
/* Check extension */
|
||||
Media->Type = Med_GetTypeFromExtension (PtrExtension);
|
||||
if (Media->Type == Med_UNKNOWN)
|
||||
if (Media->Type == Med_NONE)
|
||||
return;
|
||||
|
||||
/* Check if the file type is image/ or application/octet-stream */
|
||||
|
@ -518,6 +522,11 @@ static void Med_GetAndProcessFileFromForm (struct Media *Media,
|
|||
{
|
||||
Media->Status = Med_FILE_RECEIVED;
|
||||
|
||||
/***** Detect if amnimated gif *****/
|
||||
if (Media->Type == Med_GIF)
|
||||
if (!Med_DetectIfAnimated (Media,PathMedPrivTmp,PathFileOrg))
|
||||
Media->Type = Med_JPG;
|
||||
|
||||
/***** Process media depending on the media file extension *****/
|
||||
switch (Media->Type)
|
||||
{
|
||||
|
@ -537,6 +546,51 @@ static void Med_GetAndProcessFileFromForm (struct Media *Media,
|
|||
unlink (PathFileOrg);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************* Detect if a GIF image is animated *********************/
|
||||
/*****************************************************************************/
|
||||
// Return true if animated
|
||||
// Return false if static or error
|
||||
|
||||
static bool Med_DetectIfAnimated (struct Media *Media,
|
||||
const char PathMedPrivTmp[PATH_MAX + 1],
|
||||
const char PathFileOrg[PATH_MAX + 1])
|
||||
{
|
||||
char PathFileTxtTmp[PATH_MAX + 1];
|
||||
char Command[128 + PATH_MAX * 2];
|
||||
int ReturnCode;
|
||||
FILE *FileTxtTmp; // Temporary file with the output of the command
|
||||
int NumFrames = 0;
|
||||
|
||||
/***** Build path to temporary text file *****/
|
||||
snprintf (PathFileTxtTmp,sizeof (PathFileTxtTmp),
|
||||
"%s/%s.txt",
|
||||
PathMedPrivTmp,Media->Name);
|
||||
|
||||
/***** Execute system command to get number of frames in GIF *****/
|
||||
snprintf (Command,sizeof (Command),
|
||||
"identify -format '%%n\n' %s | head -1 > %s",
|
||||
PathFileOrg,PathFileTxtTmp);
|
||||
ReturnCode = system (Command);
|
||||
if (ReturnCode == -1)
|
||||
return false; // Error
|
||||
ReturnCode = WEXITSTATUS(ReturnCode);
|
||||
if (ReturnCode != 0)
|
||||
return false; // Error
|
||||
|
||||
/***** Read temporary file *****/
|
||||
if ((FileTxtTmp = fopen (PathFileTxtTmp,"rb")) == NULL)
|
||||
return false; // Error
|
||||
if (fscanf (FileTxtTmp,"%d",&NumFrames) != 1)
|
||||
return false; // Error
|
||||
fclose (FileTxtTmp);
|
||||
|
||||
/***** Remove temporary file *****/
|
||||
unlink (PathFileTxtTmp);
|
||||
|
||||
return (NumFrames > 1); // NumFrames > 1 ==> Animated
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************* Process original image generating processed JPG ***************/
|
||||
/*****************************************************************************/
|
||||
|
@ -576,7 +630,7 @@ static void Med_ProcessGIF (struct Media *Media,
|
|||
const char PathFileOrg[PATH_MAX + 1])
|
||||
{
|
||||
extern const char *Txt_The_image_could_not_be_processed_successfully;
|
||||
extern const char *Txt_The_size_of_the_gif_file_exceeds_the_maximum_allowed_X;
|
||||
extern const char *Txt_The_size_of_the_GIF_file_exceeds_the_maximum_allowed_X;
|
||||
struct stat FileStatus;
|
||||
char PathFilePNGTmp[PATH_MAX + 1]; // Full name of temporary processed file
|
||||
char PathFileGIFTmp[PATH_MAX + 1]; // Full name of temporary processed file
|
||||
|
@ -627,7 +681,7 @@ static void Med_ProcessGIF (struct Media *Media,
|
|||
{
|
||||
/* Show warning alert */
|
||||
Fil_WriteFileSizeBrief ((double) Med_MAX_SIZE_GIF,FileSizeStr);
|
||||
Ale_ShowAlert (Ale_WARNING,Txt_The_size_of_the_gif_file_exceeds_the_maximum_allowed_X,
|
||||
Ale_ShowAlert (Ale_WARNING,Txt_The_size_of_the_GIF_file_exceeds_the_maximum_allowed_X,
|
||||
FileSizeStr);
|
||||
}
|
||||
}
|
||||
|
@ -785,7 +839,7 @@ void Med_ShowMedia (struct Media *Media,
|
|||
return;
|
||||
if (!Media->Name[0])
|
||||
return;
|
||||
if (Media->Type == Med_UNKNOWN)
|
||||
if (Media->Type == Med_NONE)
|
||||
return;
|
||||
if (Media->Status != Med_NAME_STORED_IN_DB)
|
||||
return;
|
||||
|
@ -976,7 +1030,7 @@ static void Med_ShowGIF (struct Media *Media,
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**** Remove private file with an image/video, given the image/video name ****/
|
||||
/*** Remove private files with an image/video, given the image/video name ****/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Med_RemoveMediaFilesFromAllRows (unsigned NumMedia,MYSQL_RES *mysql_res)
|
||||
|
@ -987,10 +1041,10 @@ void Med_RemoveMediaFilesFromAllRows (unsigned NumMedia,MYSQL_RES *mysql_res)
|
|||
for (NumMed = 0;
|
||||
NumMed < NumMedia;
|
||||
NumMed++)
|
||||
Med_RemoveMediaFileFromRow (mysql_res);
|
||||
Med_RemoveMediaFilesFromRow (mysql_res);
|
||||
}
|
||||
|
||||
void Med_RemoveMediaFileFromRow (MYSQL_RES *mysql_res)
|
||||
void Med_RemoveMediaFilesFromRow (MYSQL_RES *mysql_res)
|
||||
{
|
||||
MYSQL_ROW row;
|
||||
|
||||
|
@ -998,10 +1052,10 @@ void Med_RemoveMediaFileFromRow (MYSQL_RES *mysql_res)
|
|||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
/***** Remove image file *****/
|
||||
Med_RemoveMediaFile (row[0],Med_GetTypeFromStrInDB (row[1]));
|
||||
Med_RemoveMediaFiles (row[0],Med_GetTypeFromStrInDB (row[1]));
|
||||
}
|
||||
|
||||
void Med_RemoveMediaFile (const char *Name,Med_Type_t Type)
|
||||
void Med_RemoveMediaFiles (const char *Name,Med_Type_t Type)
|
||||
{
|
||||
char PathMedPriv[PATH_MAX + 1];
|
||||
char FullPathMediaPriv[PATH_MAX + 1];
|
||||
|
@ -1018,34 +1072,28 @@ void Med_RemoveMediaFile (const char *Name,Med_Type_t Type)
|
|||
switch (Type)
|
||||
{
|
||||
case Med_JPG:
|
||||
/***** Build path to private file *****/
|
||||
/***** Remove private JPG file *****/
|
||||
snprintf (FullPathMediaPriv,sizeof (FullPathMediaPriv),
|
||||
"%s/%s.jpg",
|
||||
PathMedPriv,Name);
|
||||
|
||||
/***** Remove private file *****/
|
||||
unlink (FullPathMediaPriv);
|
||||
|
||||
break;
|
||||
case Med_GIF:
|
||||
/***** Build path to private GIF file *****/
|
||||
/***** Remove private GIF file *****/
|
||||
snprintf (FullPathMediaPriv,sizeof (FullPathMediaPriv),
|
||||
"%s/%s.gif",
|
||||
PathMedPriv,Name);
|
||||
|
||||
/***** Remove private file *****/
|
||||
unlink (FullPathMediaPriv);
|
||||
|
||||
/***** Build path to private PNG file *****/
|
||||
/***** Remove private PNG file *****/
|
||||
snprintf (FullPathMediaPriv,sizeof (FullPathMediaPriv),
|
||||
"%s//%s.png",
|
||||
PathMedPriv,Name);
|
||||
|
||||
/***** Remove private file *****/
|
||||
unlink (FullPathMediaPriv);
|
||||
|
||||
break;
|
||||
case Med_UNKNOWN:
|
||||
case Med_NONE:
|
||||
Lay_ShowErrorAndExit ("Wrong media type.");
|
||||
break;
|
||||
}
|
||||
|
@ -1062,13 +1110,13 @@ Med_Type_t Med_GetTypeFromStrInDB (const char *Str)
|
|||
{
|
||||
Med_Type_t Type;
|
||||
|
||||
for (Type = (Med_Type_t) 1; // Skip unknown type
|
||||
for (Type = (Med_Type_t) 0;
|
||||
Type < Med_NUM_TYPES;
|
||||
Type++)
|
||||
if (!strcasecmp (Str,Med_StringsTypeDB[Type]))
|
||||
return Type;
|
||||
|
||||
return Med_UNKNOWN;
|
||||
return Med_NONE;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1089,7 +1137,7 @@ static Med_Type_t Med_GetTypeFromExtension (const char *Extension)
|
|||
if (!strcasecmp (Extension,"gif"))
|
||||
return Med_GIF;
|
||||
|
||||
return Med_UNKNOWN;
|
||||
return Med_NONE;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1099,9 +1147,8 @@ static Med_Type_t Med_GetTypeFromExtension (const char *Extension)
|
|||
const char *Med_GetStringTypeForDB (Med_Type_t Type)
|
||||
{
|
||||
/***** Check if type is out of valid range *****/
|
||||
if (Type < (Med_Type_t) 1 ||
|
||||
Type > (Med_Type_t) (Med_NUM_TYPES - 1))
|
||||
return Med_StringsTypeDB[Med_UNKNOWN];
|
||||
if (Type > (Med_Type_t) (Med_NUM_TYPES - 1))
|
||||
return Med_StringsTypeDB[Med_NONE];
|
||||
|
||||
/***** Get string from type *****/
|
||||
return Med_StringsTypeDB[Type];
|
||||
|
|
|
@ -91,7 +91,7 @@ typedef enum
|
|||
#define Med_NUM_TYPES 3
|
||||
typedef enum
|
||||
{
|
||||
Med_UNKNOWN,
|
||||
Med_NONE,
|
||||
Med_JPG,
|
||||
Med_GIF,
|
||||
} Med_Type_t;
|
||||
|
@ -149,8 +149,8 @@ void Med_ShowMedia (struct Media *Media,
|
|||
const char *ClassContainer,const char *ClassMedia);
|
||||
|
||||
void Med_RemoveMediaFilesFromAllRows (unsigned NumMedia,MYSQL_RES *mysql_res);
|
||||
void Med_RemoveMediaFileFromRow (MYSQL_RES *mysql_res);
|
||||
void Med_RemoveMediaFile (const char *Name,Med_Type_t Type);
|
||||
void Med_RemoveMediaFilesFromRow (MYSQL_RES *mysql_res);
|
||||
void Med_RemoveMediaFiles (const char *Name,Med_Type_t Type);
|
||||
|
||||
Med_Type_t Med_GetTypeFromStrInDB (const char *Str);
|
||||
const char *Med_GetStringTypeForDB (Med_Type_t Type);
|
||||
|
|
|
@ -862,6 +862,7 @@ static void Soc_BuildQueryToGetTimeline (char **Query,
|
|||
|
||||
static long Soc_GetPubCodFromSession (const char *FieldName)
|
||||
{
|
||||
extern const char *Txt_The_session_has_expired;
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
long PubCod;
|
||||
|
@ -870,7 +871,7 @@ static long Soc_GetPubCodFromSession (const char *FieldName)
|
|||
if (DB_QuerySELECT (&mysql_res,"can not get publishing code from session",
|
||||
"SELECT %s FROM sessions WHERE SessionId='%s'",
|
||||
FieldName,Gbl.Session.Id) != 1)
|
||||
Lay_ShowErrorAndExit ("Error when getting publishing code from session.");
|
||||
Lay_ShowErrorAndExit (Txt_The_session_has_expired);
|
||||
|
||||
/***** Get last publishing code *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
@ -2457,7 +2458,7 @@ static long Soc_ReceiveSocialPost (void)
|
|||
Med_GetMediaFromForm (-1,&Media,NULL);
|
||||
|
||||
if (Content[0] || // Text not empty
|
||||
Media.Name[0]) // An image is attached
|
||||
(Media.Name[0] && Media.Type != Med_NONE)) // A media is attached
|
||||
{
|
||||
/***** Check if image is received and processed *****/
|
||||
if (Media.Action == Med_ACTION_NEW_MEDIA && // Upload new image
|
||||
|
@ -3185,7 +3186,7 @@ static long Soc_ReceiveComment (void)
|
|||
Med_GetMediaFromForm (-1,&Media,NULL);
|
||||
|
||||
if (Content[0] || // Text not empty
|
||||
Media.Name[0]) // An image is attached
|
||||
(Media.Name[0] && Media.Type != Med_NONE)) // A media is attached
|
||||
{
|
||||
/***** Check if image is received and processed *****/
|
||||
if (Media.Action == Med_ACTION_NEW_MEDIA && // Upload new image
|
||||
|
@ -3878,7 +3879,7 @@ static void Soc_RemoveImgFileFromSocialPost (long PstCod)
|
|||
" WHERE PstCod=%ld",
|
||||
PstCod))
|
||||
/***** Remove media file *****/
|
||||
Med_RemoveMediaFileFromRow (mysql_res);
|
||||
Med_RemoveMediaFilesFromRow (mysql_res);
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
@ -4217,7 +4218,7 @@ static void Soc_RemoveImgFileFromSocialComment (long PubCod)
|
|||
" WHERE PubCod=%ld",
|
||||
PubCod))
|
||||
/***** Remove media file *****/
|
||||
Med_RemoveMediaFileFromRow (mysql_res);
|
||||
Med_RemoveMediaFilesFromRow (mysql_res);
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
|
28
swad_test.c
28
swad_test.c
|
@ -6559,7 +6559,8 @@ static void Tst_InsertOrUpdateQstIntoDB (void)
|
|||
Gbl.Test.Media.URL ? Gbl.Test.Media.URL : "");
|
||||
|
||||
/* Update image status */
|
||||
if (Gbl.Test.Media.Name[0])
|
||||
if (Gbl.Test.Media.Name[0] &&
|
||||
Gbl.Test.Media.Type != Med_NONE)
|
||||
Gbl.Test.Media.Status = Med_NAME_STORED_IN_DB;
|
||||
}
|
||||
else // It's an existing question
|
||||
|
@ -6584,7 +6585,8 @@ static void Tst_InsertOrUpdateQstIntoDB (void)
|
|||
Gbl.Test.QstCod,Gbl.CurrentCrs.Crs.CrsCod);
|
||||
|
||||
/* Update image status */
|
||||
if (Gbl.Test.Media.Name[0])
|
||||
if (Gbl.Test.Media.Name[0] &&
|
||||
Gbl.Test.Media.Type != Med_NONE)
|
||||
Gbl.Test.Media.Status = Med_NAME_STORED_IN_DB;
|
||||
|
||||
/* Remove answers and tags from this test question */
|
||||
|
@ -6654,9 +6656,10 @@ static void Tst_InsertAnswersIntoDB (void)
|
|||
"MediaName,MediaType,MediaTitle,MediaURL,Correct)"
|
||||
" VALUES"
|
||||
" (%ld,0,%ld,'',"
|
||||
"'','','','','Y')",
|
||||
"'','%s','','','Y')",
|
||||
Gbl.Test.QstCod,
|
||||
Gbl.Test.Answer.Integer);
|
||||
Gbl.Test.Answer.Integer,
|
||||
Med_GetStringTypeForDB (Med_NONE));
|
||||
break;
|
||||
case Tst_ANS_FLOAT:
|
||||
Str_SetDecimalPointToUS (); // To print the floating point as a dot
|
||||
|
@ -6669,9 +6672,10 @@ static void Tst_InsertAnswersIntoDB (void)
|
|||
"MediaName,MediaType,MediaTitle,MediaURL,Correct)"
|
||||
" VALUES"
|
||||
" (%ld,%u,'%lg','',"
|
||||
"'','','','','Y')",
|
||||
"'','%s','','','Y')",
|
||||
Gbl.Test.QstCod,i,
|
||||
Gbl.Test.Answer.FloatingPoint[i]);
|
||||
Gbl.Test.Answer.FloatingPoint[i],
|
||||
Med_GetStringTypeForDB (Med_NONE));
|
||||
Str_SetDecimalPointToLocal (); // Return to local system
|
||||
break;
|
||||
case Tst_ANS_TRUE_FALSE:
|
||||
|
@ -6681,9 +6685,10 @@ static void Tst_InsertAnswersIntoDB (void)
|
|||
"MediaName,Mediatype,MediaTitle,MediaURL,Correct)"
|
||||
" VALUES"
|
||||
" (%ld,0,'%c','',"
|
||||
"'','','','','Y')",
|
||||
"'','%s','','','Y')",
|
||||
Gbl.Test.QstCod,
|
||||
Gbl.Test.Answer.TF);
|
||||
Gbl.Test.Answer.TF,
|
||||
Med_GetStringTypeForDB (Med_NONE));
|
||||
break;
|
||||
case Tst_ANS_UNIQUE_CHOICE:
|
||||
case Tst_ANS_MULTIPLE_CHOICE:
|
||||
|
@ -6711,7 +6716,8 @@ static void Tst_InsertAnswersIntoDB (void)
|
|||
'N');
|
||||
|
||||
/* Update image status */
|
||||
if (Gbl.Test.Answer.Options[NumOpt].Media.Name[0])
|
||||
if (Gbl.Test.Answer.Options[NumOpt].Media.Name[0] &&
|
||||
Gbl.Test.Answer.Options[NumOpt].Media.Type != Med_NONE)
|
||||
Gbl.Test.Answer.Options[NumOpt].Media.Status = Med_NAME_STORED_IN_DB;
|
||||
}
|
||||
break;
|
||||
|
@ -6781,7 +6787,7 @@ static void Tst_RemoveImgFileFromStemOfQst (long CrsCod,long QstCod)
|
|||
" WHERE QstCod=%ld AND CrsCod=%ld",
|
||||
QstCod,CrsCod))
|
||||
/***** Remove media file *****/
|
||||
Med_RemoveMediaFileFromRow (mysql_res);
|
||||
Med_RemoveMediaFilesFromRow (mysql_res);
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
@ -6833,7 +6839,7 @@ static void Tst_RemoveImgFileFromAnsOfQst (long CrsCod,long QstCod,unsigned AnsI
|
|||
" AND tst_answers.AnsInd=%u",
|
||||
CrsCod,QstCod,QstCod,AnsInd))
|
||||
/***** Remove media file *****/
|
||||
Med_RemoveMediaFileFromRow (mysql_res);
|
||||
Med_RemoveMediaFilesFromRow (mysql_res);
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
|
|
@ -46871,7 +46871,7 @@ const char *Txt_The_session_has_expired =
|
|||
"A sessão expirou.";
|
||||
#endif
|
||||
|
||||
const char *Txt_The_size_of_the_gif_file_exceeds_the_maximum_allowed_X = // Warning: it is very important to include %s in the following sentences
|
||||
const char *Txt_The_size_of_the_GIF_file_exceeds_the_maximum_allowed_X = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1 // ca
|
||||
"La mida del fitxer <em>GIF</em>"
|
||||
" supera el màxim permès (%s).";
|
||||
|
|
|
@ -3450,8 +3450,9 @@ static int Svc_SendMessageToUsr (long OriginalMsgCod,
|
|||
"MediaName,MediaType,MediaTitle,MediaURL)"
|
||||
" VALUES"
|
||||
" ('%s','%s',"
|
||||
"'','','','')",
|
||||
Subject,Content);
|
||||
"'','%s','','')",
|
||||
Subject,Content,
|
||||
Med_GetStringTypeForDB (Med_NONE));
|
||||
|
||||
/* Insert message in sent messages */
|
||||
DB_QueryINSERT ("can not create message",
|
||||
|
|
Loading…
Reference in New Issue
Block a user