mirror of https://github.com/acanas/swad-core.git
Version 22.118: May 22, 2023 Survey comments are stored in database.
This commit is contained in:
parent
1a1d0196b5
commit
e6c745e487
|
@ -1413,6 +1413,15 @@ CREATE TABLE IF NOT EXISTS svy_answers (
|
||||||
NumUsrs INT NOT NULL DEFAULT 0,
|
NumUsrs INT NOT NULL DEFAULT 0,
|
||||||
Answer TEXT NOT NULL,
|
Answer TEXT NOT NULL,
|
||||||
UNIQUE INDEX(QstCod,AnsInd));
|
UNIQUE INDEX(QstCod,AnsInd));
|
||||||
|
--
|
||||||
|
-- Table svy_comments: stores the comments to the surveys
|
||||||
|
--
|
||||||
|
CREATE TABLE IF NOT EXISTS svy_comments ("
|
||||||
|
ComCod INT NOT NULL AUTO_INCREMENT,
|
||||||
|
QstCod INT NOT NULL,
|
||||||
|
Comments TEXT NOT NULL,
|
||||||
|
UNIQUE INDEX(ComCod),
|
||||||
|
INDEX(QstCod,ComCod));
|
||||||
--
|
--
|
||||||
-- Table svy_groups: stores the groups associated to each survey
|
-- Table svy_groups: stores the groups associated to each survey
|
||||||
--
|
--
|
||||||
|
|
|
@ -629,10 +629,16 @@ TODO: Emilce Barrera Mesa: Podr
|
||||||
TODO: Emilce Barrera Mesa: Mis estudiantes presentan muchas dificultades a la hora de poner la foto porque la plataforma es muy exigente respecto al fondo de la imagen.
|
TODO: Emilce Barrera Mesa: Mis estudiantes presentan muchas dificultades a la hora de poner la foto porque la plataforma es muy exigente respecto al fondo de la imagen.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 22.117 (2023-05-22)"
|
#define Log_PLATFORM_VERSION "SWAD 22.118 (2023-05-22)"
|
||||||
#define CSS_FILE "swad22.107.36.css"
|
#define CSS_FILE "swad22.107.36.css"
|
||||||
#define JS_FILE "swad22.49.js"
|
#define JS_FILE "swad22.49.js"
|
||||||
/*
|
/*
|
||||||
|
Version 22.118: May 22, 2023 Survey comments are stored in database. (337285 lines)
|
||||||
|
1 change necessary in database:
|
||||||
|
CREATE TABLE IF NOT EXISTS svy_comments (ComCod INT NOT NULL AUTO_INCREMENT,QstCod INT NOT NULL,Comments TEXT NOT NULL,UNIQUE INDEX(ComCod),INDEX(QstCod,ComCod));
|
||||||
|
If you want to use MyISAM:
|
||||||
|
ALTER TABLE svy_comments ENGINE=MyISAM;
|
||||||
|
|
||||||
Version 22.117: May 22, 2023 Teachers can allow comments in a survey question. (337196 lines)
|
Version 22.117: May 22, 2023 Teachers can allow comments in a survey question. (337196 lines)
|
||||||
1 change necessary in database:
|
1 change necessary in database:
|
||||||
ALTER TABLE svy_questions ADD COLUMN CommentsAllowed ENUM('N','Y') NOT NULL DEFAULT 'N' AFTER AnsType;
|
ALTER TABLE svy_questions ADD COLUMN CommentsAllowed ENUM('N','Y') NOT NULL DEFAULT 'N' AFTER AnsType;
|
||||||
|
|
|
@ -3039,6 +3039,25 @@ mysql> DESCRIBE svy_answers;
|
||||||
"Answer TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
|
"Answer TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
|
||||||
"UNIQUE INDEX(QstCod,AnsInd))");
|
"UNIQUE INDEX(QstCod,AnsInd))");
|
||||||
|
|
||||||
|
/***** Table svy_comments *****/
|
||||||
|
/*
|
||||||
|
mysql> DESCRIBE svy_comments;
|
||||||
|
+----------+------+------+-----+---------+----------------+
|
||||||
|
| Field | Type | Null | Key | Default | Extra |
|
||||||
|
+----------+------+------+-----+---------+----------------+
|
||||||
|
| ComCod | int | NO | PRI | NULL | auto_increment |
|
||||||
|
| QstCod | int | NO | MUL | NULL | |
|
||||||
|
| Comments | text | NO | | NULL | |
|
||||||
|
+----------+------+------+-----+---------+----------------+
|
||||||
|
3 rows in set (0,00 sec)
|
||||||
|
*/
|
||||||
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS svy_comments ("
|
||||||
|
"ComCod INT NOT NULL AUTO_INCREMENT,"
|
||||||
|
"QstCod INT NOT NULL,"
|
||||||
|
"Comments TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
|
||||||
|
"UNIQUE INDEX(ComCod),"
|
||||||
|
"INDEX(QstCod,ComCod)");
|
||||||
|
|
||||||
/***** Table svy_groups *****/
|
/***** Table svy_groups *****/
|
||||||
/*
|
/*
|
||||||
mysql> DESCRIBE svy_groups;
|
mysql> DESCRIBE svy_groups;
|
||||||
|
|
|
@ -3007,17 +3007,47 @@ static void Svy_WriteCommentsOfAQst (struct Svy_Survey *Svy,
|
||||||
struct Svy_Question *SvyQst,
|
struct Svy_Question *SvyQst,
|
||||||
bool PutFormAnswerSurvey)
|
bool PutFormAnswerSurvey)
|
||||||
{
|
{
|
||||||
|
unsigned NumComments;
|
||||||
|
unsigned NumCom;
|
||||||
|
MYSQL_RES *mysql_res;
|
||||||
|
MYSQL_ROW row;
|
||||||
|
|
||||||
if (PutFormAnswerSurvey)
|
if (PutFormAnswerSurvey)
|
||||||
{
|
{
|
||||||
HTM_TEXTAREA_Begin ("name=\"Comments\""
|
HTM_TEXTAREA_Begin ("name=\"Com%010u\""
|
||||||
" cols=\"60\" rows=\"4\""
|
" cols=\"60\" rows=\"4\""
|
||||||
" class=\"INPUT_%s\"",
|
" class=\"INPUT_%s\"",
|
||||||
|
(unsigned) SvyQst->QstCod,
|
||||||
The_GetSuffix ());
|
The_GetSuffix ());
|
||||||
HTM_TEXTAREA_End ();
|
HTM_TEXTAREA_End ();
|
||||||
}
|
}
|
||||||
else if (Svy->Status.ICanViewComments)
|
else if (Svy->Status.ICanViewComments)
|
||||||
{
|
{
|
||||||
HTM_Txt ("Comentarios..."); // TODO
|
/***** Get comments of this question *****/
|
||||||
|
NumComments = Svy_DB_GetCommentsQst (&mysql_res,SvyQst->QstCod);
|
||||||
|
|
||||||
|
/***** Write the answers *****/
|
||||||
|
if (NumComments)
|
||||||
|
{
|
||||||
|
HTM_OL_Begin ();
|
||||||
|
|
||||||
|
/* Write one row for each user who has commented */
|
||||||
|
for (NumCom = 0;
|
||||||
|
NumCom < NumComments;
|
||||||
|
NumCom++)
|
||||||
|
{
|
||||||
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
|
HTM_LI_Begin (NULL);
|
||||||
|
HTM_Txt (row[0]);
|
||||||
|
HTM_LI_End ();
|
||||||
|
}
|
||||||
|
|
||||||
|
HTM_OL_End ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/***** Free structure that stores the query result *****/
|
||||||
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3223,6 +3253,7 @@ static void Svy_ReceiveAndStoreUserAnswersToASurvey (long SvyCod)
|
||||||
const char *Ptr;
|
const char *Ptr;
|
||||||
char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
||||||
unsigned AnsInd;
|
unsigned AnsInd;
|
||||||
|
char Comments[Cns_MAX_BYTES_TEXT + 1];
|
||||||
|
|
||||||
/***** Get questions of this survey from database *****/
|
/***** Get questions of this survey from database *****/
|
||||||
if ((NumQsts = Svy_DB_GetSurveyQstsCodes (&mysql_res,SvyCod)))
|
if ((NumQsts = Svy_DB_GetSurveyQstsCodes (&mysql_res,SvyCod)))
|
||||||
|
@ -3239,7 +3270,6 @@ static void Svy_ReceiveAndStoreUserAnswersToASurvey (long SvyCod)
|
||||||
|
|
||||||
/* Get possible parameter with the user's answer */
|
/* Get possible parameter with the user's answer */
|
||||||
snprintf (ParName,sizeof (ParName),"Ans%010u",(unsigned) QstCod);
|
snprintf (ParName,sizeof (ParName),"Ans%010u",(unsigned) QstCod);
|
||||||
// Lay_ShowAlert (Lay_INFO,ParName);
|
|
||||||
Par_GetParMultiToText (ParName,StrAnswersIndexes,
|
Par_GetParMultiToText (ParName,StrAnswersIndexes,
|
||||||
Svy_MAX_ANSWERS_PER_QUESTION * (Cns_MAX_DECIMAL_DIGITS_UINT + 1));
|
Svy_MAX_ANSWERS_PER_QUESTION * (Cns_MAX_DECIMAL_DIGITS_UINT + 1));
|
||||||
Ptr = StrAnswersIndexes;
|
Ptr = StrAnswersIndexes;
|
||||||
|
@ -3251,10 +3281,15 @@ static void Svy_ReceiveAndStoreUserAnswersToASurvey (long SvyCod)
|
||||||
// ==> store it in database
|
// ==> store it in database
|
||||||
Svy_DB_IncreaseAnswer (QstCod,AnsInd);
|
Svy_DB_IncreaseAnswer (QstCod,AnsInd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get possible parameter with the user's comment */
|
||||||
|
snprintf (ParName,sizeof (ParName),"Com%010u",(unsigned) QstCod);
|
||||||
|
Par_GetParAndChangeFormat (ParName,Comments,Cns_MAX_BYTES_TEXT,
|
||||||
|
Str_TO_RIGOROUS_HTML,true);
|
||||||
|
if (Comments[0])
|
||||||
|
Svy_DB_CreateComments (QstCod,Comments);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // This survey has no questions
|
|
||||||
Err_ShowErrorAndExit ("Error: this survey has no questions.");
|
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
|
|
@ -1207,6 +1207,37 @@ void Svy_DB_RemoveAnswersSvysIn (HieLvl_Level_t Scope,long Cod)
|
||||||
Cod);
|
Cod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************** Create new comments for a given survey question **************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Svy_DB_CreateComments (long QstCod,const char *Comments)
|
||||||
|
{
|
||||||
|
DB_QueryINSERT ("can not create comments",
|
||||||
|
"INSERT INTO svy_comments"
|
||||||
|
" (QstCod,Comments)"
|
||||||
|
" VALUES"
|
||||||
|
" (%ld,'%s')",
|
||||||
|
QstCod,
|
||||||
|
Comments);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************* Get comments to a survey question from database ***************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
unsigned Svy_DB_GetCommentsQst (MYSQL_RES **mysql_res,long QstCod)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get comments of a question",
|
||||||
|
"SELECT Comments" // row[0]
|
||||||
|
" FROM svy_comments"
|
||||||
|
" WHERE QstCod=%ld"
|
||||||
|
" ORDER BY ComCod",
|
||||||
|
QstCod);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************** Register that I have answered this survey *****************/
|
/***************** Register that I have answered this survey *****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -107,6 +107,10 @@ void Svy_DB_RemoveAnswersQst (long QstCod);
|
||||||
void Svy_DB_RemoveAnswersSvy (long SvyCod);
|
void Svy_DB_RemoveAnswersSvy (long SvyCod);
|
||||||
void Svy_DB_RemoveAnswersSvysIn (HieLvl_Level_t Scope,long Cod);
|
void Svy_DB_RemoveAnswersSvysIn (HieLvl_Level_t Scope,long Cod);
|
||||||
|
|
||||||
|
//---------------------------- Surveys comments -------------------------------
|
||||||
|
void Svy_DB_CreateComments (long QstCod,const char *Comments);
|
||||||
|
unsigned Svy_DB_GetCommentsQst (MYSQL_RES **mysql_res,long QstCod);
|
||||||
|
|
||||||
//--------------------- Users who have answered surveys -----------------------
|
//--------------------- Users who have answered surveys -----------------------
|
||||||
void Svy_DB_RegisterIHaveAnsweredSvy (long SvyCod);
|
void Svy_DB_RegisterIHaveAnsweredSvy (long SvyCod);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue