From b22ef280aedad2d7997034b1ca07eef6a80a58ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Fri, 14 Feb 2020 10:02:58 +0100 Subject: [PATCH] Version19.122.3 --- swad_action.c | 2 +- swad_changelog.h | 6 ++++-- swad_date.c | 32 ++++++++++++++++---------------- swad_department.c | 26 +++++++++++--------------- swad_game.c | 2 +- swad_global.h | 2 +- swad_statistic.c | 8 ++++---- swad_test.c | 8 ++++---- swad_user.c | 19 ++++++++++++------- 9 files changed, 54 insertions(+), 51 deletions(-) diff --git a/swad_action.c b/swad_action.c index 11a0c52c6..98d570b8b 100644 --- a/swad_action.c +++ b/swad_action.c @@ -679,7 +679,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = [ActRemGam ] = {1657,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RemoveGame ,NULL}, [ActHidGam ] = {1660,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_HideGame ,NULL}, [ActShoGam ] = {1661,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_UnhideGame ,NULL}, - [ActAddOneGamQst ] = {1662,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestNewQuestion ,NULL}, + [ActAddOneGamQst ] = {1662,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDates ,Gam_RequestNewQuestion ,NULL}, [ActGamLstTstQst ] = {1666,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ListTstQuestionsToSelect ,NULL}, [ActAddTstQstToGam ] = {1667,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_AddTstQuestionsToGame ,NULL}, [ActReqRemGamQst ] = {1664,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestRemoveQst ,NULL}, diff --git a/swad_changelog.h b/swad_changelog.h index 401023687..83e4a3d7d 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -497,7 +497,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 19.122.2 (2020-02-13)" +#define Log_PLATFORM_VERSION "SWAD 19.122.3 (2020-02-14)" #define CSS_FILE "swad19.118.css" #define JS_FILE "swad19.91.1.js" /* @@ -506,9 +506,11 @@ ps2pdf source.ps destination.pdf // TODO: No se puede entrar con DNI '1' suponiendo que no tenga password ¿por qué? // TODO: En la lista de conectados central, poner el logo de la institución a la que pertenece el usuario // TODO: En la lista de solicitudes de inscripción, alinear a la izquierda el nombre de la asignatura +// TODO: Urgente: Añadir nuevos niveles de realimentación tras sugerencia de Mancia y conversación con Javier. // TODO: Urgente: en swad.ugr.es sale error al refrescar una titulación en la orla de titulaciones. -// TODO: URGENTÍSIMO: NO SE PUEDEN AÑADIR PREGUNTAS EN LOS JUEGOS. FALLA LA SELECCIÓN DE FECHAS. + Version 19.122.3: Feb 14, 2020 Fixed bug in games, reported by Gustavo Romero López. + Fixed bug in listing of departments, reported by Daniel Haro Contreras. (278698 lines) Version 19.122.2: Feb 13, 2020 Increased quality in images. (278698 lines) Version 19.122.1: Feb 07, 2020 Fixed bug removing test tags, reported by Mancia Anguita López. (278692 lines) Version 19.122: Jan 30, 2020 Some options changed in system tab. (278690 lines) diff --git a/swad_date.c b/swad_date.c index 896288a5d..274788a66 100644 --- a/swad_date.c +++ b/swad_date.c @@ -438,7 +438,7 @@ void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (bool SetHMS00000 HTM_TD_Begin ("class=\"LM\""); Dat_WriteFormClientLocalDateTimeFromTimeUTC ("Start", "Start", - Gbl.DateRange.TimeUTC[0], + Gbl.DateRange.TimeUTC[Dat_START_TIME], Cfg_LOG_START_YEAR, Gbl.Now.Date.Year, Dat_FORM_SECONDS_ON, @@ -466,7 +466,7 @@ void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (bool SetHMS00000 HTM_TD_Begin ("class=\"LM\""); Dat_WriteFormClientLocalDateTimeFromTimeUTC ("End", "End", - Gbl.DateRange.TimeUTC[1], + Gbl.DateRange.TimeUTC[Dat_END_TIME], Cfg_LOG_START_YEAR, Gbl.Now.Date.Year, Dat_FORM_SECONDS_ON, @@ -956,8 +956,8 @@ void Dat_GetDateFromForm (const char *ParamNameDay,const char *ParamNameMonth,co void Dat_SetIniEndDates (void) { - Gbl.DateRange.TimeUTC[0] = (time_t) 0; - Gbl.DateRange.TimeUTC[1] = Gbl.StartExecutionTimeUTC; + Gbl.DateRange.TimeUTC[Dat_START_TIME] = (time_t) 0; + Gbl.DateRange.TimeUTC[Dat_END_TIME ] = Gbl.StartExecutionTimeUTC; } /*****************************************************************************/ @@ -966,8 +966,8 @@ void Dat_SetIniEndDates (void) void Dat_WriteParamsIniEndDates (void) { - Par_PutHiddenParamUnsigned (NULL,"StartTimeUTC",Gbl.DateRange.TimeUTC[0]); - Par_PutHiddenParamUnsigned (NULL,"EndTimeUTC" ,Gbl.DateRange.TimeUTC[1]); + Par_PutHiddenParamUnsigned (NULL,"StartTimeUTC",Gbl.DateRange.TimeUTC[Dat_START_TIME]); + Par_PutHiddenParamUnsigned (NULL,"EndTimeUTC" ,Gbl.DateRange.TimeUTC[Dat_END_TIME ]); } /*****************************************************************************/ @@ -980,11 +980,11 @@ void Dat_GetIniEndDatesFromForm (void) struct tm *tm_ptr; /***** Get initial date *****/ - Gbl.DateRange.TimeUTC[0] = Dat_GetTimeUTCFromForm ("StartTimeUTC"); - if (Gbl.DateRange.TimeUTC[0]) + Gbl.DateRange.TimeUTC[Dat_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC"); + if (Gbl.DateRange.TimeUTC[Dat_START_TIME]) /* Convert time UTC to a local date */ - tm_ptr = Dat_GetLocalTimeFromClock (&Gbl.DateRange.TimeUTC[0]); - else // Gbl.DateRange.TimeUTC[0] == 0 ==> initial date not specified + tm_ptr = Dat_GetLocalTimeFromClock (&Gbl.DateRange.TimeUTC[Dat_START_TIME]); + else // Gbl.DateRange.TimeUTC[Dat_START_TIME] == 0 ==> initial date not specified { tm.tm_year = Cfg_LOG_START_YEAR - 1900; tm.tm_mon = 0; // January @@ -996,8 +996,8 @@ void Dat_GetIniEndDatesFromForm (void) // (use timezone information and system databases to) // attempt to determine whether DST // is in effect at the specified time. - if ((Gbl.DateRange.TimeUTC[0] = mktime (&tm)) < 0) - Gbl.DateRange.TimeUTC[0] = (time_t) 0; + if ((Gbl.DateRange.TimeUTC[Dat_START_TIME] = mktime (&tm)) < 0) + Gbl.DateRange.TimeUTC[Dat_START_TIME] = (time_t) 0; tm_ptr = &tm; } @@ -1009,12 +1009,12 @@ void Dat_GetIniEndDatesFromForm (void) Gbl.DateRange.DateIni.Time.Second = tm_ptr->tm_sec; /***** Get end date *****/ - Gbl.DateRange.TimeUTC[1] = Dat_GetTimeUTCFromForm ("EndTimeUTC"); - if (Gbl.DateRange.TimeUTC[1] == 0) // Gbl.DateRange.TimeUTC[1] == 0 ==> end date not specified - Gbl.DateRange.TimeUTC[1] = Gbl.StartExecutionTimeUTC; + Gbl.DateRange.TimeUTC[Dat_END_TIME] = Dat_GetTimeUTCFromForm ("EndTimeUTC"); + if (Gbl.DateRange.TimeUTC[Dat_END_TIME] == 0) // Gbl.DateRange.TimeUTC[Dat_END_TIME] == 0 ==> end date not specified + Gbl.DateRange.TimeUTC[Dat_END_TIME] = Gbl.StartExecutionTimeUTC; /* Convert current time UTC to a local date */ - tm_ptr = Dat_GetLocalTimeFromClock (&Gbl.DateRange.TimeUTC[1]); + tm_ptr = Dat_GetLocalTimeFromClock (&Gbl.DateRange.TimeUTC[Dat_END_TIME]); Gbl.DateRange.DateEnd.Date.Year = tm_ptr->tm_year + 1900; Gbl.DateRange.DateEnd.Date.Month = tm_ptr->tm_mon + 1; diff --git a/swad_department.c b/swad_department.c index 8da835903..4cea1297f 100644 --- a/swad_department.c +++ b/swad_department.c @@ -97,8 +97,8 @@ void Dpt_SeeDepts (void) extern const char *Txt_Department_unspecified; Dpt_Order_t Order; unsigned NumDpt; - unsigned NumTchsInsWithDpt = 0; // Number of teachers from the current institution with department - unsigned NumTchsInOtherDpts; + unsigned NumTchsInsInOtherDpts; + unsigned NumTchsInsWithNoDpt; /***** Trivial check *****/ if (Gbl.Hierarchy.Ins.InsCod <= 0) // No institution selected @@ -124,7 +124,8 @@ void Dpt_SeeDepts (void) Order <= Dpt_ORDER_BY_NUM_TCHS; Order++) { - HTM_TH_Begin (1,1,"LM"); + HTM_TH_Begin (1,1,Order == Dpt_ORDER_BY_NUM_TCHS ? "RM" : + "LM"); Frm_StartForm (ActSeeDpt); Par_PutHiddenParamUnsigned (NULL,"Order",(unsigned) Order); @@ -161,10 +162,6 @@ void Dpt_SeeDepts (void) HTM_TD_End (); HTM_TR_End (); - - /* Update number of teachers from the current institution - with department */ - NumTchsInsWithDpt += Gbl.Dpts.Lst[NumDpt].NumTchs; } /***** Separation row *****/ @@ -174,8 +171,9 @@ void Dpt_SeeDepts (void) HTM_TD_End (); HTM_TR_End (); - /***** Write teachers with other department *****/ - NumTchsInOtherDpts = Usr_GetNumTchsCurrentInsInDepartment (0); + /***** Write teachers of this institution with other department *****/ + NumTchsInsInOtherDpts = Usr_GetNumTchsCurrentInsInDepartment (0); + HTM_TR_Begin (NULL); HTM_TD_Begin ("class=\"DAT LM\""); @@ -183,13 +181,14 @@ void Dpt_SeeDepts (void) HTM_TD_End (); HTM_TD_Begin ("class=\"DAT RM\""); - HTM_Unsigned (NumTchsInOtherDpts); + HTM_Unsigned (NumTchsInsInOtherDpts); HTM_TD_End (); HTM_TR_End (); - NumTchsInsWithDpt += NumTchsInOtherDpts; /***** Write teachers with no department *****/ + NumTchsInsWithNoDpt = Usr_GetNumTchsCurrentInsInDepartment (-1L); + HTM_TR_Begin (NULL); HTM_TD_Begin ("class=\"DAT LM\""); @@ -197,10 +196,7 @@ void Dpt_SeeDepts (void) HTM_TD_End (); HTM_TD_Begin ("class=\"DAT RM\""); - HTM_Unsigned (Usr_GetNumUsrsInCrss (Hie_INS,Gbl.Hierarchy.Ins.InsCod, - 1 << Rol_NET | // Non-editing teachers - 1 << Rol_TCH) - // Teachers - NumTchsInsWithDpt); + HTM_Unsigned (NumTchsInsWithNoDpt); HTM_TD_End (); HTM_TR_End (); diff --git a/swad_game.c b/swad_game.c index a3d8fdd72..d0309f663 100644 --- a/swad_game.c +++ b/swad_game.c @@ -1503,7 +1503,7 @@ unsigned Gam_GetNumQstsGame (long GamCod) } /*****************************************************************************/ -/*********** Put a form to edit/create a question in game *****************/ +/*************** Put a form to edit/create a question in game ****************/ /*****************************************************************************/ void Gam_RequestNewQuestion (void) diff --git a/swad_global.h b/swad_global.h index befec44b9..3854864ab 100644 --- a/swad_global.h +++ b/swad_global.h @@ -701,7 +701,7 @@ struct Globals { struct DateTime DateIni; // TODO: Remove in future versions struct DateTime DateEnd; // TODO: Remove in future versions - time_t TimeUTC[2]; + time_t TimeUTC[Dat_NUM_START_END_TIME]; } DateRange; struct { diff --git a/swad_statistic.c b/swad_statistic.c index b3171398c..4016d70d1 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -629,8 +629,8 @@ static void Sta_WriteSelectorAction (void) void Sta_SetIniEndDates (void) { - Gbl.DateRange.TimeUTC[0] = Gbl.StartExecutionTimeUTC - ((Cfg_DAYS_IN_RECENT_LOG - 1) * 24 * 60 * 60); - Gbl.DateRange.TimeUTC[1] = Gbl.StartExecutionTimeUTC; + Gbl.DateRange.TimeUTC[Dat_START_TIME] = Gbl.StartExecutionTimeUTC - ((Cfg_DAYS_IN_RECENT_LOG - 1) * 24 * 60 * 60); + Gbl.DateRange.TimeUTC[Dat_END_TIME ] = Gbl.StartExecutionTimeUTC; } /*****************************************************************************/ @@ -987,8 +987,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) sprintf (QueryAux," WHERE %s.ClickTime" " BETWEEN FROM_UNIXTIME(%ld) AND FROM_UNIXTIME(%ld)", LogTable, - (long) Gbl.DateRange.TimeUTC[0], - (long) Gbl.DateRange.TimeUTC[1]); + (long) Gbl.DateRange.TimeUTC[Dat_START_TIME], + (long) Gbl.DateRange.TimeUTC[Dat_END_TIME ]); Str_Concat (Query,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); diff --git a/swad_test.c b/swad_test.c index 9b0c3a639..a2fcc9d69 100644 --- a/swad_test.c +++ b/swad_test.c @@ -2489,14 +2489,14 @@ static unsigned long Tst_GetQuestions (MYSQL_RES **mysql_res) Tst_MAX_BYTES_QUERY_TEST); snprintf (LongStr,sizeof (LongStr), "%ld", - (long) Gbl.DateRange.TimeUTC[0]); + (long) Gbl.DateRange.TimeUTC[Dat_START_TIME]); Str_Concat (Query,LongStr, Tst_MAX_BYTES_QUERY_TEST); Str_Concat (Query,"') AND tst_questions.EditTime<=FROM_UNIXTIME('", Tst_MAX_BYTES_QUERY_TEST); snprintf (LongStr,sizeof (LongStr), "%ld", - (long) Gbl.DateRange.TimeUTC[1]); + (long) Gbl.DateRange.TimeUTC[Dat_END_TIME]); Str_Concat (Query,LongStr, Tst_MAX_BYTES_QUERY_TEST); Str_Concat (Query,"')", @@ -7748,8 +7748,8 @@ static void Tst_ShowTstResults (struct UsrData *UsrDat) " ORDER BY TstCod", Gbl.Hierarchy.Crs.CrsCod, UsrDat->UsrCod, - (long) Gbl.DateRange.TimeUTC[0], - (long) Gbl.DateRange.TimeUTC[1]); + (long) Gbl.DateRange.TimeUTC[Dat_START_TIME], + (long) Gbl.DateRange.TimeUTC[Dat_END_TIME ]); /***** Show user's data *****/ HTM_TR_Begin (NULL); diff --git a/swad_user.c b/swad_user.c index d28892961..1bcae0e34 100644 --- a/swad_user.c +++ b/swad_user.c @@ -4224,7 +4224,7 @@ long Usr_GetRamdomStdFromGrp (long GrpCod) } /*****************************************************************************/ -/**** Get number of teachers from the current institution in a department ****/ +/* Get number of teachers in courses of the current instit. in a department **/ /*****************************************************************************/ unsigned Usr_GetNumTchsCurrentInsInDepartment (long DptCod) @@ -4235,13 +4235,18 @@ unsigned Usr_GetNumTchsCurrentInsInDepartment (long DptCod) (unsigned) DB_QueryCOUNT ("can not get the number of teachers" " in a department", "SELECT COUNT(DISTINCT usr_data.UsrCod)" - " FROM usr_data,crs_usr" - " WHERE usr_data.InsCod=%ld" - " AND usr_data.DptCod=%ld" - " AND usr_data.UsrCod=crs_usr.UsrCod" - " AND crs_usr.Role IN (%u,%u)", + " FROM usr_data,crs_usr,courses,degrees,centres" + " WHERE usr_data.InsCod=%ld" // User in the current institution... + " AND usr_data.DptCod=%ld" // ...and the specified department... + " AND usr_data.UsrCod=crs_usr.UsrCod" // ...who is... + " AND crs_usr.Role IN (%u,%u)" // ...a teacher... + " AND crs_usr.CrsCod=courses.CrsCod" // ...in a course... + " AND courses.DegCod=degrees.DegCod" // ...of a degree... + " AND degrees.CtrCod=centres.InsCod" // ...of a centre... + " AND centres.InsCod=%ld", // ...of the current institution Gbl.Hierarchy.Ins.InsCod,DptCod, - (unsigned) Rol_NET,(unsigned) Rol_TCH); + (unsigned) Rol_NET,(unsigned) Rol_TCH, + Gbl.Hierarchy.Ins.InsCod); } /*****************************************************************************/