From 2614cfd359b1c76cfdeeba76f79cd8027bfa7c48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Thu, 30 Nov 2017 12:07:19 +0100 Subject: [PATCH] Version 17.26.7 --- swad_changelog.h | 5 ++-- swad_survey.c | 73 ++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 64 insertions(+), 14 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index 6581d89d9..be1a3d7cd 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -268,7 +268,7 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 17.26.6 (2017-11-30)" +#define Log_PLATFORM_VERSION "SWAD 17.26.7 (2017-11-30)" #define CSS_FILE "swad17.25.4.css" #define JS_FILE "swad17.17.1.js" @@ -281,9 +281,10 @@ enscript -1 --color --file-align=2 --highlight --line-numbers -o - * > swad17.26 enscript -2 --landscape --file-align=2 --highlight --line-numbers -o - * > swad17.26.5_bn_2_columnas.ps enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * > swad17.26.5_color_2_columnas.ps En OpenSWAD: -ps2pdf fuente.ps destino.pdf +ps2pdf source.ps destination.pdf */ /* + Version 17.26.7: Nov 30, 2017 Fixed bug in surveys. (234438 lines) Version 17.26.6: Nov 30, 2017 Fixed bug in surveys. (234400 lines) Version 17.26.5: Nov 26, 2017 Maximum number of columns in class photo changed from 50 to 100. (234391 lines) Version 17.26.4: Nov 13, 2017 Session expires in 8 hours. (234388 lines) diff --git a/swad_survey.c b/swad_survey.c index 0879ee5af..179465de3 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -64,7 +64,7 @@ const char *Svy_StrAnswerTypesDB[Svy_NUM_ANS_TYPES] = #define Svy_MAX_ANSWERS_PER_QUESTION 10 -struct SurveyQuestion +struct SurveyQuestion // Must be initialized to 0 before using it { long QstCod; unsigned QstInd; @@ -144,12 +144,15 @@ static void Svy_FreeTextChoiceAnswer (struct SurveyQuestion *SvyQst,unsigned Num static unsigned Svy_GetQstIndFromQstCod (long QstCod); static unsigned Svy_GetNextQuestionIndexInSvy (long SvyCod); -static void Svy_ListSvyQuestions (struct Survey *Svy,struct SurveyQuestion *SvyQst); +static void Svy_ListSvyQuestions (struct Survey *Svy, + struct SurveyQuestion *SvyQst); static void Svy_PutParamsToEditQuestion (void); static void Svy_PutIconToAddNewQuestion (void); static void Svy_PutButtonToCreateNewQuestion (void); static void Svy_WriteQstStem (const char *Stem); -static void Svy_WriteAnswersOfAQst (struct Survey *Svy,struct SurveyQuestion *SvyQst,bool PutFormAnswerSurvey); +static void Svy_WriteAnswersOfAQst (struct Survey *Svy, + struct SurveyQuestion *SvyQst, + bool PutFormAnswerSurvey); static void Svy_DrawBarNumUsrs (unsigned NumUsrs,unsigned MaxUsrs); static void Svy_PutIconToRemoveOneQst (void); @@ -169,6 +172,9 @@ void Svy_SeeAllSurveys (void) { struct SurveyQuestion SvyQst; + /***** Initialize question to zero *****/ + Svy_InitQst (&SvyQst); + /***** Get parameters *****/ Svy_GetParamSvyOrder (); Grp_GetParamWhichGrps (); @@ -1483,6 +1489,9 @@ void Svy_AskRemSurvey (void) struct Survey Svy; struct SurveyQuestion SvyQst; + /***** Initialize question to zero *****/ + Svy_InitQst (&SvyQst); + /***** Get parameters *****/ Svy_GetParamSvyOrder (); Grp_GetParamWhichGrps (); @@ -1520,6 +1529,9 @@ void Svy_RemoveSurvey (void) struct Survey Svy; struct SurveyQuestion SvyQst; + /***** Initialize question to zero *****/ + Svy_InitQst (&SvyQst); + /***** Get survey code *****/ if ((Svy.SvyCod = Svy_GetParamSvyCod ()) == -1L) Lay_ShowErrorAndExit ("Code of survey is missing."); @@ -1577,6 +1589,9 @@ void Svy_AskResetSurvey (void) struct Survey Svy; struct SurveyQuestion SvyQst; + /***** Initialize question to zero *****/ + Svy_InitQst (&SvyQst); + /***** Get parameters *****/ Svy_GetParamSvyOrder (); Grp_GetParamWhichGrps (); @@ -1629,6 +1644,9 @@ void Svy_ResetSurvey (void) struct Survey Svy; struct SurveyQuestion SvyQst; + /***** Initialize question to zero *****/ + Svy_InitQst (&SvyQst); + /***** Get survey code *****/ if ((Svy.SvyCod = Svy_GetParamSvyCod ()) == -1L) Lay_ShowErrorAndExit ("Code of survey is missing."); @@ -1670,6 +1688,9 @@ void Svy_HideSurvey (void) struct Survey Svy; struct SurveyQuestion SvyQst; + /***** Initialize question to zero *****/ + Svy_InitQst (&SvyQst); + /***** Get survey code *****/ if ((Svy.SvyCod = Svy_GetParamSvyCod ()) == -1L) Lay_ShowErrorAndExit ("Code of survey is missing."); @@ -1704,6 +1725,9 @@ void Svy_UnhideSurvey (void) struct Survey Svy; struct SurveyQuestion SvyQst; + /***** Initialize question to zero *****/ + Svy_InitQst (&SvyQst); + /***** Get survey code *****/ if ((Svy.SvyCod = Svy_GetParamSvyCod ()) == -1L) Lay_ShowErrorAndExit ("Code of survey is missing."); @@ -1767,6 +1791,9 @@ void Svy_RequestCreatOrEditSvy (void) bool ItsANewSurvey; char Txt[Cns_MAX_BYTES_TEXT + 1]; + /***** Initialize question to zero *****/ + Svy_InitQst (&SvyQst); + /***** Get parameters *****/ Svy_GetParamSvyOrder (); Grp_GetParamWhichGrps (); @@ -2074,6 +2101,9 @@ void Svy_RecFormSurvey (void) unsigned NumUsrsToBeNotifiedByEMail; char Txt[Cns_MAX_BYTES_TEXT + 1]; + /***** Initialize question to zero *****/ + Svy_InitQst (&SvyQst); + /***** Get the code of the survey *****/ ItsANewSurvey = ((NewSvy.SvyCod = Svy_GetParamSvyCod ()) == -1L); @@ -2559,6 +2589,8 @@ void Svy_RequestEditQuestion (void) /***** Initialize question to zero *****/ Svy_InitQst (&SvyQst); + + /***** Initialize text to empty string *****/ Txt[0] = '\0'; /***** Get survey code *****/ @@ -2877,7 +2909,8 @@ static unsigned Svy_GetAnswersQst (long QstCod,MYSQL_RES **mysql_res) /******************* Allocate memory for a choice answer *********************/ /*****************************************************************************/ -static bool Svy_AllocateTextChoiceAnswer (struct SurveyQuestion *SvyQst,unsigned NumAns) +static bool Svy_AllocateTextChoiceAnswer (struct SurveyQuestion *SvyQst, + unsigned NumAns) { Svy_FreeTextChoiceAnswer (SvyQst,NumAns); if ((SvyQst->AnsChoice[NumAns].Text = malloc (Svy_MAX_BYTES_ANSWER + 1)) == NULL) @@ -2936,7 +2969,7 @@ void Svy_ReceiveQst (void) bool ThereIsEndOfAnswers; bool Error = false; - /***** Initialize new question to zero *****/ + /***** Initialize question to zero *****/ Svy_InitQst (&SvyQst); /***** Get parameters from form *****/ @@ -3152,7 +3185,8 @@ static unsigned Svy_GetNextQuestionIndexInSvy (long SvyCod) /************************ List the questions of a survey *********************/ /*****************************************************************************/ -static void Svy_ListSvyQuestions (struct Survey *Svy,struct SurveyQuestion *SvyQst) +static void Svy_ListSvyQuestions (struct Survey *Svy, + struct SurveyQuestion *SvyQst) { extern const char *Hlp_ASSESSMENT_Surveys_questions; extern const char *Txt_Questions; @@ -3174,7 +3208,8 @@ static void Svy_ListSvyQuestions (struct Survey *Svy,struct SurveyQuestion *SvyQ /***** Get data of questions from database *****/ sprintf (Query,"SELECT QstCod,QstInd,AnsType,Stem" - " FROM svy_questions WHERE SvyCod=%ld ORDER BY QstInd", + " FROM svy_questions" + " WHERE SvyCod=%ld ORDER BY QstInd", Svy->SvyCod); NumQsts = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get data of a question"); @@ -3366,7 +3401,9 @@ static void Svy_WriteQstStem (const char *Stem) /************** Get and write the answers of a survey question ***************/ /*****************************************************************************/ -static void Svy_WriteAnswersOfAQst (struct Survey *Svy,struct SurveyQuestion *SvyQst,bool PutFormAnswerSurvey) +static void Svy_WriteAnswersOfAQst (struct Survey *Svy, + struct SurveyQuestion *SvyQst, + bool PutFormAnswerSurvey) { unsigned NumAnswers; unsigned NumAns; @@ -3531,6 +3568,9 @@ void Svy_RequestRemoveQst (void) long SvyCod; struct SurveyQuestion SvyQst; + /***** Initialize question to zero *****/ + Svy_InitQst (&SvyQst); + /***** Get parameters from form *****/ /* Get survey code */ if ((SvyCod = Svy_GetParamSvyCod ()) == -1L) @@ -3567,6 +3607,9 @@ void Svy_RemoveQst (void) long SvyCod; struct SurveyQuestion SvyQst; + /***** Initialize question to zero *****/ + Svy_InitQst (&SvyQst); + /***** Get parameters from form *****/ /* Get survey code */ if ((SvyCod = Svy_GetParamSvyCod ()) == -1L) @@ -3615,6 +3658,9 @@ void Svy_ReceiveSurveyAnswers (void) struct Survey Svy; struct SurveyQuestion SvyQst; + /***** Initialize question to zero *****/ + Svy_InitQst (&SvyQst); + /***** Get survey code *****/ if ((Svy.SvyCod = Svy_GetParamSvyCod ()) == -1L) Lay_ShowErrorAndExit ("Code of survey is missing."); @@ -3660,8 +3706,10 @@ static void Svy_ReceiveAndStoreUserAnswersToASurvey (long SvyCod) SvyCod); DB_QuerySELECT (Query,&mysql_res,"can not get questions of a survey"); - if ((NumQsts = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get surveys"))) // The survey has questions + if ((NumQsts = (unsigned) DB_QuerySELECT (Query,&mysql_res, + "can not get surveys"))) { + // This survey has questions /***** Get questions *****/ for (NumQst = 0; NumQst < NumQsts; @@ -3684,12 +3732,13 @@ static void Svy_ReceiveAndStoreUserAnswersToASurvey (long SvyCod) { Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,10); if (sscanf (UnsignedStr,"%u",&AnsInd) == 1) - // Parameter exists, so user has marked this answer, so store it in database + // Parameter exists ==> user has checked this answer + // ==> store it in database Svy_IncreaseAnswerInDB (QstCod,AnsInd); } } } - else // The survey has no questions and answers + else // This survey has no questions Lay_ShowErrorAndExit ("Error: this survey has no questions."); /***** Free structure that stores the query result *****/ @@ -3711,7 +3760,7 @@ static void Svy_IncreaseAnswerInDB (long QstCod,unsigned AnsInd) sprintf (Query,"UPDATE svy_answers SET NumUsrs=NumUsrs+1" " WHERE QstCod=%ld AND AnsInd=%u", QstCod,AnsInd); - DB_QueryINSERT (Query,"can not register your answer to the survey"); + DB_QueryUPDATE (Query,"can not register your answer to the survey"); } /*****************************************************************************/