From 1221d128f845ad8caa2294603f7787645d888a9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Fri, 23 Oct 2015 13:51:33 +0200 Subject: [PATCH] Version 15.19 --- swad_assignment.c | 2 +- swad_attendance.c | 32 +++---- swad_changelog.h | 5 +- swad_survey.c | 209 ++++++++++++---------------------------------- swad_survey.h | 2 +- 5 files changed, 77 insertions(+), 173 deletions(-) diff --git a/swad_assignment.c b/swad_assignment.c index 802610057..c21e5d779 100644 --- a/swad_assignment.c +++ b/swad_assignment.c @@ -688,7 +688,7 @@ static void Asg_GetDataOfAssignment (struct Assignment *Asg,const char *Query) /* Get start date (row[3] holds the start UTC time) */ Asg->TimeUTC[Asg_START_TIME] = Dat_GetUNIXTimeFromStr (row[3]); - /* Get end date (row[4] holds the end UTC time) */ + /* Get end date (row[4] holds the end UTC time) */ Asg->TimeUTC[Asg_END_TIME ] = Dat_GetUNIXTimeFromStr (row[4]); /* Get whether the assignment is open or closed (row(5)) */ diff --git a/swad_attendance.c b/swad_attendance.c index e258db644..f5f1f2b56 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -673,7 +673,7 @@ bool Att_GetDataOfAttEventByCod (struct AttendanceEvent *Att) /* Get start date (row[4] holds the start UTC time) */ Att->TimeUTC[Att_START_TIME] = Dat_GetUNIXTimeFromStr (row[4]); - /* Get end date (row[5] holds the end UTC time) */ + /* Get end date (row[5] holds the end UTC time) */ Att->TimeUTC[Att_END_TIME ] = Dat_GetUNIXTimeFromStr (row[5]); /* Get whether the attendance event is open or closed (row(6)) */ @@ -1003,8 +1003,8 @@ void Att_RequestCreatOrEditAttEvent (void) { /* Initialize to empty attendance event */ Att.AttCod = -1L; - Att.TimeUTC[Asg_START_TIME] = Gbl.TimeStartExecution; - Att.TimeUTC[Asg_END_TIME ] = Gbl.TimeStartExecution + (2 * 60 * 60); // +2 hours + Att.TimeUTC[Att_START_TIME] = Gbl.TimeStartExecution; + Att.TimeUTC[Att_END_TIME ] = Gbl.TimeStartExecution + (2 * 60 * 60); // +2 hours Att.Open = true; Att.Title[0] = '\0'; } @@ -1209,8 +1209,8 @@ void Att_RecFormAttEvent (void) } /***** Get start/end date-times *****/ - NewAtt.TimeUTC[Asg_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC"); - NewAtt.TimeUTC[Asg_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" ); + NewAtt.TimeUTC[Att_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC"); + NewAtt.TimeUTC[Att_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" ); /***** Get boolean parameter that indicates if teacher's comments are visible by students *****/ Par_GetParToText ("CommentTchVisible",YN,1); @@ -1223,10 +1223,10 @@ void Att_RecFormAttEvent (void) Par_GetParToHTML ("Txt",Txt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous) /***** Adjust dates *****/ - if (NewAtt.TimeUTC[Asg_START_TIME] == 0) - NewAtt.TimeUTC[Asg_START_TIME] = Gbl.TimeStartExecution; - if (NewAtt.TimeUTC[Asg_END_TIME] == 0) - NewAtt.TimeUTC[Asg_END_TIME] = NewAtt.TimeUTC[Asg_START_TIME] + 2*60*60; // +2 hours + if (NewAtt.TimeUTC[Att_START_TIME] == 0) + NewAtt.TimeUTC[Att_START_TIME] = Gbl.TimeStartExecution; + if (NewAtt.TimeUTC[Att_END_TIME] == 0) + NewAtt.TimeUTC[Att_END_TIME] = NewAtt.TimeUTC[Att_START_TIME] + 2*60*60; // +2 hours /***** Check if title is correct *****/ if (NewAtt.Title[0]) // If there's an attendance event title @@ -1287,13 +1287,15 @@ void Att_CreateAttEvent (struct AttendanceEvent *Att,const char *Txt) char Query[1024+Cns_MAX_BYTES_TEXT]; /***** Create a new attendance event *****/ - sprintf (Query,"INSERT INTO att_events (CrsCod,UsrCod,StartTime,EndTime,CommentTchVisible,Title,Txt)" - " VALUES ('%ld','%ld',FROM_UNIXTIME('%ld'),FROM_UNIXTIME('%ld')," + sprintf (Query,"INSERT INTO att_events" + " (CrsCod,UsrCod,StartTime,EndTime,CommentTchVisible,Title,Txt)" + " VALUES ('%ld','%ld'," + "FROM_UNIXTIME('%ld'),FROM_UNIXTIME('%ld')," "'%c','%s','%s')", Gbl.CurrentCrs.Crs.CrsCod, Gbl.Usrs.Me.UsrDat.UsrCod, - Att->TimeUTC[Asg_START_TIME], - Att->TimeUTC[Asg_END_TIME ], + Att->TimeUTC[Att_START_TIME], + Att->TimeUTC[Att_END_TIME ], Att->CommentTchVisible ? 'Y' : 'N', Att->Title, @@ -1319,8 +1321,8 @@ void Att_UpdateAttEvent (struct AttendanceEvent *Att,const char *Txt) "EndTime=FROM_UNIXTIME('%ld')," "CommentTchVisible='%c',Title='%s',Txt='%s'" " WHERE AttCod='%ld' AND CrsCod='%ld'", - Att->TimeUTC[Asg_START_TIME], - Att->TimeUTC[Asg_END_TIME ], + Att->TimeUTC[Att_START_TIME], + Att->TimeUTC[Att_END_TIME ], Att->CommentTchVisible ? 'Y' : 'N', Att->Title, diff --git a/swad_changelog.h b/swad_changelog.h index 156bcf462..edf885cbc 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -102,17 +102,18 @@ // TODO: A teacher should may confirm a student ID? In what conditions? (Necessary in order to a student can view his/her marks) // TODO: Put headers Content-type and Content-disposition when redirecting with Location: // TODO: System admin should be able to remove/edit user's mail (when he/she detects a recipient does not exists, for example) -// TODO: When a new assignment is incorrect, the second time the form is shown, it should be filled with partial data, now is always empty +// TODO: When a new assignment/attendance/survey is incorrect, the second time the form is shown, it should be filled with partial data, now is always empty /*****************************************************************************/ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 15.18 (2015/10/23)" +#define Log_PLATFORM_VERSION "SWAD 15.19 (2015/10/23)" // Number of lines (includes comments but not blank lines) has been got with the following command: // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1 /* + Version 15.19: Oct 23, 2015 Surveys date-times are displayed in client local date-time. (186309 lines) Version 15.18: Oct 23, 2015 Attendance date-times are displayed in client local date-time. Changes in JavaScript functions related to date-time. (186403 lines) Version 15.17.3: Oct 23, 2015 Changes in JavaScript functions related to date-time. (186477 lines) diff --git a/swad_survey.c b/swad_survey.c index 4663b6c02..62abac5d6 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -330,6 +330,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,bool Sh extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_Answer_survey; extern const char *Txt_View_survey_results; + static unsigned UniqueId = 0; struct Survey Svy; Rol_Role_t Role; bool RolesSelected; @@ -344,8 +345,10 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,bool Sh Svy_GetDataOfSurveyByCod (&Svy); /***** Start date/time *****/ + UniqueId++; fprintf (Gbl.F.Out,"" - "" - "%02u/%02u/%02u
" - "%02u:%02u h" + "" "", - Svy.DateTimes[Svy_START_TIME].Date.Day, - Svy.DateTimes[Svy_START_TIME].Date.Month, - Svy.DateTimes[Svy_START_TIME].Date.Year % 100, - Svy.DateTimes[Svy_START_TIME].Time.Hour, - Svy.DateTimes[Svy_START_TIME].Time.Minute); + UniqueId,Svy.TimeUTC[Svy_START_TIME]); /***** End date/time *****/ - fprintf (Gbl.F.Out,"" - "%02u/%02u/%02u
" - "%02u:%02u h" + "" "", - Svy.DateTimes[Svy_END_TIME ].Date.Day, - Svy.DateTimes[Svy_END_TIME ].Date.Month, - Svy.DateTimes[Svy_END_TIME ].Date.Year % 100, - Svy.DateTimes[Svy_END_TIME ].Time.Hour, - Svy.DateTimes[Svy_END_TIME ].Time.Minute); + UniqueId,Svy.TimeUTC[Svy_END_TIME]); /***** Survey title *****/ fprintf (Gbl.F.Out,"UsrCod = Str_ConvertStrCodToLongCod (row[5]); - /* Get start date (row[6] holds the start date in YYYYMMDDHHMMSS format) */ - if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&(Svy->DateTimes[Svy_START_TIME]),row[6]))) - Lay_ShowErrorAndExit ("Error when reading start date of survey."); + /* Get start date (row[6] holds the start UTC time) */ + Svy->TimeUTC[Att_START_TIME] = Dat_GetUNIXTimeFromStr (row[6]); - /* Get end date (row[7] holds the end date in YYYYMMDDHHMMSS format) */ - if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&(Svy->DateTimes[Svy_END_TIME]),row[7]))) - Lay_ShowErrorAndExit ("Error when reading end date of survey."); + /* Get end date (row[7] holds the end UTC time) */ + Svy->TimeUTC[Att_END_TIME ] = Dat_GetUNIXTimeFromStr (row[7]); /* Get whether the survey is open or closed (row(8)) */ Svy->Status.Open = (row[8][0] == '1'); @@ -1045,12 +1041,8 @@ void Svy_GetDataOfSurveyByCod (struct Survey *Svy) /* Initialize to empty survey */ Svy->SvyCod = -1L; Svy->Roles = 0; - Svy->DateTimes[Svy_START_TIME].Date.Day = - Svy->DateTimes[Svy_START_TIME].Date.Month = - Svy->DateTimes[Svy_START_TIME].Date.Year = 0; - Svy->DateTimes[Svy_END_TIME].Date.Day = - Svy->DateTimes[Svy_END_TIME].Date.Month = - Svy->DateTimes[Svy_END_TIME].Date.Year = 0; + Svy->TimeUTC[Svy_START_TIME] = + Svy->TimeUTC[Svy_END_TIME ] = (time_t) 0; Svy->Title[0] = '\0'; Svy->NumQsts = 0; Svy->NumUsrs = 0; @@ -1122,22 +1114,14 @@ static void Svy_GetSurveyTxtFromDB (long SvyCod,char *Txt) void Svy_GetNotifSurvey (char *SummaryStr,char **ContentStr,long SvyCod,unsigned MaxChars,bool GetContent) { - extern const char *Txt_Start_date; - extern const char *Txt_End_date; char Query[512]; MYSQL_RES *mysql_res; MYSQL_ROW row; - struct DateTime DateTimes[Asg_NUM_DATES]; SummaryStr[0] = '\0'; // Return nothing on error /***** Build query *****/ - sprintf (Query,"SELECT Title," - "DATE_FORMAT(StartTime,'%%Y%%m%%d%%H%%i%%S')," - "DATE_FORMAT(EndTime,'%%Y%%m%%d%%H%%i%%S')," - "Txt" - " FROM surveys" - " WHERE SvyCod='%ld'", + sprintf (Query,"SELECT Title,Txt FROM surveys WHERE SvyCod='%ld'", SvyCod); if (!mysql_query (&Gbl.mysql,Query)) if ((mysql_res = mysql_store_result (&Gbl.mysql)) != NULL) @@ -1158,29 +1142,7 @@ void Svy_GetNotifSurvey (char *SummaryStr,char **ContentStr,long SvyCod,unsigned { if ((*ContentStr = (char *) malloc (512+Cns_MAX_BYTES_TEXT)) == NULL) Lay_ShowErrorAndExit ("Error allocating memory for notification content."); - - /* Get start date (row[1] holds the start date in YYYYMMDDHHMMSS format) */ - if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&DateTimes[Asg_START_TIME],row[1]))) - Lay_ShowErrorAndExit ("Error when reading start date of assignment."); - - /* Get end date (row[2] holds the end date in YYYYMMDDHHMMSS format) */ - if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&DateTimes[Asg_END_TIME ],row[2]))) - Lay_ShowErrorAndExit ("Error when reading end date of assignment."); - - sprintf (*ContentStr,"%s: %02u/%02u/%04u %02u:%02u
%s: %02u/%02u/%04u %02u:%02u
%s", - Txt_Start_date, - DateTimes[Asg_START_TIME].Date.Day, - DateTimes[Asg_START_TIME].Date.Month, - DateTimes[Asg_START_TIME].Date.Year, - DateTimes[Asg_START_TIME].Time.Hour, - DateTimes[Asg_START_TIME].Time.Minute, - Txt_End_date, - DateTimes[Asg_END_TIME].Date.Day, - DateTimes[Asg_END_TIME].Date.Month, - DateTimes[Asg_END_TIME].Date.Year, - DateTimes[Asg_END_TIME].Time.Hour, - DateTimes[Asg_END_TIME].Time.Minute, - row[3]); + strcpy (*ContentStr,row[1]); } } mysql_free_result (mysql_res); @@ -1497,9 +1459,7 @@ void Svy_RequestCreatOrEditSvy (void) struct SurveyQuestion SvyQst; bool ItsANewSurvey; Svy_StartOrEndTime_t StartOrEndTime; - const char *Id[Svy_NUM_DATES] = {"Start","End"}; - const char *NameSelectHour [Svy_NUM_DATES] = {"StartHour" ,"EndHour" }; - const char *NameSelectMinute[Svy_NUM_DATES] = {"StartMinute","EndMinute"}; + const char *Id[Att_NUM_DATES] = {"Start","End"}; const char *Dates[Svy_NUM_DATES] = {Txt_Start_date,Txt_End_date}; char Txt[Cns_MAX_BYTES_TEXT+1]; @@ -1520,18 +1480,8 @@ void Svy_RequestCreatOrEditSvy (void) /* Initialize to empty survey */ Svy.SvyCod = -1L; - Svy.DateTimes[Svy_START_TIME].Date.Year = Gbl.Now.Date.Year; - Svy.DateTimes[Svy_START_TIME].Date.Month = Gbl.Now.Date.Month; - Svy.DateTimes[Svy_START_TIME].Date.Day = Gbl.Now.Date.Day; - Svy.DateTimes[Svy_START_TIME].Time.Hour = Gbl.Now.Time.Hour; - Svy.DateTimes[Svy_START_TIME].Time.Minute = Gbl.Now.Time.Minute; - Svy.DateTimes[Svy_START_TIME].Time.Second = Gbl.Now.Time.Second; - Svy.DateTimes[Svy_END_TIME ].Date.Year = Gbl.Now.Date.Year; - Svy.DateTimes[Svy_END_TIME ].Date.Month = Gbl.Now.Date.Month; - Svy.DateTimes[Svy_END_TIME ].Date.Day = Gbl.Now.Date.Day; - Svy.DateTimes[Svy_END_TIME ].Time.Hour = 23; - Svy.DateTimes[Svy_END_TIME ].Time.Minute = 59; - Svy.DateTimes[Svy_END_TIME ].Time.Second = 59; + Svy.TimeUTC[Svy_START_TIME] = Gbl.TimeStartExecution; + Svy.TimeUTC[Svy_END_TIME ] = Gbl.TimeStartExecution + (24 * 60 * 60); // +24 hours Svy.Title[0] = '\0'; Svy.Roles = (1 << Rol_STUDENT); Svy.NumQsts = 0; @@ -1616,17 +1566,14 @@ void Svy_RequestCreatOrEditSvy (void) "", The_ClassForm[Gbl.Prefs.Theme], Dates[StartOrEndTime]); - Dat_WriteFormDate (Gbl.Now.Date.Year-1, - Gbl.Now.Date.Year+1, - Id[StartOrEndTime], - &(Svy.DateTimes[StartOrEndTime].Date), - false,false); - fprintf (Gbl.F.Out,"" - ""); - Dat_WriteFormHourMinute (NameSelectHour [StartOrEndTime], - NameSelectMinute[StartOrEndTime], - &(Svy.DateTimes[StartOrEndTime].Time), - false,false); + + /* Date-time */ + Dat_WriteFormClientLocalDateTime (Id[StartOrEndTime], + Svy.TimeUTC[StartOrEndTime], + Gbl.Now.Date.Year - 1, + Gbl.Now.Date.Year + 1, + false,false); + fprintf (Gbl.F.Out,"" "" "" @@ -1840,23 +1787,9 @@ void Svy_RecFormSurvey (void) break; } - /***** Get start date *****/ - Dat_GetDateFromForm ("StartDay","StartMonth","StartYear", - &(NewSvy.DateTimes[Svy_START_TIME].Date.Day), - &(NewSvy.DateTimes[Svy_START_TIME].Date.Month), - &(NewSvy.DateTimes[Svy_START_TIME].Date.Year)); - Dat_GetHourMinuteFromForm ("StartHour","StartMinute", - &(NewSvy.DateTimes[Svy_START_TIME].Time.Hour), - &(NewSvy.DateTimes[Svy_START_TIME].Time.Minute)); - - /***** Get end date *****/ - Dat_GetDateFromForm ("EndDay","EndMonth","EndYear", - &(NewSvy.DateTimes[Svy_END_TIME].Date.Day), - &(NewSvy.DateTimes[Svy_END_TIME].Date.Month), - &(NewSvy.DateTimes[Svy_END_TIME].Date.Year)); - Dat_GetHourMinuteFromForm ("EndHour","EndMinute", - &(NewSvy.DateTimes[Svy_END_TIME].Time.Hour), - &(NewSvy.DateTimes[Svy_END_TIME].Time.Minute)); + /***** Get start/end date-times *****/ + NewSvy.TimeUTC[Asg_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC"); + NewSvy.TimeUTC[Asg_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" ); /***** Get survey title *****/ Par_GetParToText ("Title",NewSvy.Title,Svy_MAX_LENGTH_SURVEY_TITLE); @@ -1865,28 +1798,10 @@ void Svy_RecFormSurvey (void) Par_GetParToHTML ("Txt",Txt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous) /***** Adjust dates *****/ - if (NewSvy.DateTimes[Svy_START_TIME].Date.Day == 0 || - NewSvy.DateTimes[Svy_START_TIME].Date.Month == 0 || - NewSvy.DateTimes[Svy_START_TIME].Date.Year == 0) - { - NewSvy.DateTimes[Svy_START_TIME].Date.Year = Gbl.Now.Date.Year; - NewSvy.DateTimes[Svy_START_TIME].Date.Month = Gbl.Now.Date.Month; - NewSvy.DateTimes[Svy_START_TIME].Date.Day = Gbl.Now.Date.Day; - NewSvy.DateTimes[Svy_START_TIME].Time.Hour = Gbl.Now.Time.Hour; - NewSvy.DateTimes[Svy_START_TIME].Time.Minute = Gbl.Now.Time.Minute; - NewSvy.DateTimes[Svy_START_TIME].Time.Second = Gbl.Now.Time.Second; - } - if (NewSvy.DateTimes[Svy_END_TIME].Date.Day == 0 || - NewSvy.DateTimes[Svy_END_TIME].Date.Month == 0 || - NewSvy.DateTimes[Svy_END_TIME].Date.Year == 0) - { - NewSvy.DateTimes[Svy_END_TIME].Date.Year = Gbl.Now.Date.Year; - NewSvy.DateTimes[Svy_END_TIME].Date.Month = Gbl.Now.Date.Month; - NewSvy.DateTimes[Svy_END_TIME].Date.Day = Gbl.Now.Date.Day; - NewSvy.DateTimes[Svy_END_TIME].Time.Hour = 23; - NewSvy.DateTimes[Svy_END_TIME].Time.Minute = 59; - } - NewSvy.DateTimes[Svy_END_TIME].Time.Second = 59; + if (NewSvy.TimeUTC[Svy_START_TIME] == 0) + NewSvy.TimeUTC[Svy_START_TIME] = Gbl.TimeStartExecution; + if (NewSvy.TimeUTC[Svy_END_TIME] == 0) + NewSvy.TimeUTC[Svy_END_TIME] = NewSvy.TimeUTC[Svy_START_TIME] + 24*60*60; // +24 hours /***** Get users who can answer this survey *****/ Rol_GetSelectedRoles (&(NewSvy.Roles)); @@ -1963,24 +1878,17 @@ static void Svy_CreateSurvey (struct Survey *Svy,const char *Txt) char Query[1024+Cns_MAX_BYTES_TEXT]; /***** Create a new survey *****/ - sprintf (Query,"INSERT INTO surveys (DegCod,CrsCod,Hidden,Roles,UsrCod,StartTime,EndTime,Title,Txt)" - " VALUES ('%ld','%ld','N','%u','%ld','%04u%02u%02u%02u%02u%02u','%04u%02u%02u%02u%02u%02u','%s','%s')", + sprintf (Query,"INSERT INTO surveys" + " (DegCod,CrsCod,Hidden,Roles,UsrCod,StartTime,EndTime,Title,Txt)" + " VALUES ('%ld','%ld','N','%u','%ld'," + "FROM_UNIXTIME('%ld'),FROM_UNIXTIME('%ld')," + "'%s','%s')", Svy->DegCod, Svy->CrsCod, Svy->Roles, Gbl.Usrs.Me.UsrDat.UsrCod, - Svy->DateTimes[Svy_START_TIME].Date.Year, - Svy->DateTimes[Svy_START_TIME].Date.Month, - Svy->DateTimes[Svy_START_TIME].Date.Day, - Svy->DateTimes[Svy_START_TIME].Time.Hour, - Svy->DateTimes[Svy_START_TIME].Time.Minute, - Svy->DateTimes[Svy_START_TIME].Time.Second, - Svy->DateTimes[Svy_END_TIME].Date.Year, - Svy->DateTimes[Svy_END_TIME].Date.Month, - Svy->DateTimes[Svy_END_TIME].Date.Day, - Svy->DateTimes[Svy_END_TIME].Time.Hour, - Svy->DateTimes[Svy_END_TIME].Time.Minute, - Svy->DateTimes[Svy_END_TIME].Time.Second, + Svy->TimeUTC[Svy_START_TIME], + Svy->TimeUTC[Svy_END_TIME ], Svy->Title, Txt); Svy->SvyCod = DB_QueryINSERTandReturnCode (Query,"can not create new survey"); @@ -2005,22 +1913,15 @@ static void Svy_UpdateSurvey (struct Survey *Svy,const char *Txt) char Query[1024+Cns_MAX_BYTES_TEXT]; /***** Update the data of the survey *****/ - sprintf (Query,"UPDATE surveys SET DegCod='%ld',CrsCod='%ld',Roles='%u',StartTime='%04u%02u%02u%02u%02u%02u',EndTime='%04u%02u%02u%02u%02u%02u',Title='%s',Txt='%s'" + sprintf (Query,"UPDATE surveys SET DegCod='%ld',CrsCod='%ld',Roles='%u'," + "StartTime=FROM_UNIXTIME('%ld')," + "EndTime=FROM_UNIXTIME('%ld')," + "Title='%s',Txt='%s'" " WHERE SvyCod='%ld'", Svy->DegCod,Svy->CrsCod, Svy->Roles, - Svy->DateTimes[Svy_START_TIME].Date.Year, - Svy->DateTimes[Svy_START_TIME].Date.Month, - Svy->DateTimes[Svy_START_TIME].Date.Day, - Svy->DateTimes[Svy_START_TIME].Time.Hour, - Svy->DateTimes[Svy_START_TIME].Time.Minute, - Svy->DateTimes[Svy_START_TIME].Time.Second, - Svy->DateTimes[Svy_END_TIME ].Date.Year, - Svy->DateTimes[Svy_END_TIME ].Date.Month, - Svy->DateTimes[Svy_END_TIME ].Date.Day, - Svy->DateTimes[Svy_END_TIME ].Time.Hour, - Svy->DateTimes[Svy_END_TIME ].Time.Minute, - Svy->DateTimes[Svy_END_TIME ].Time.Second, + Svy->TimeUTC[Svy_START_TIME], + Svy->TimeUTC[Svy_END_TIME ], Svy->Title, Txt, Svy->SvyCod); diff --git a/swad_survey.h b/swad_survey.h index 0325c838a..0e65026b4 100644 --- a/swad_survey.h +++ b/swad_survey.h @@ -49,7 +49,7 @@ struct Survey long CrsCod; unsigned Roles; // Example: if survey can be made by students and teachers, Roles == (1 << Rol_ROLE_STUDENT) | (1 << Rol_ROLE_TEACHER) long UsrCod; - struct DateTime DateTimes[Svy_NUM_DATES]; + time_t TimeUTC[Svy_NUM_DATES]; char Title[Svy_MAX_LENGTH_SURVEY_TITLE+1]; unsigned NumQsts; // Number of questions in the survey unsigned NumUsrs; // Number of distinct users who have already answered the survey