diff --git a/swad_attendance.c b/swad_attendance.c index f5f1f2b56..cf2d4ca5d 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -2821,7 +2821,7 @@ static void Att_ListEventsToSelect (void) extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_Update_attendance_according_to_selected_events; extern const char *Txt_Update_attendance; - static unsigned UniqueId = 0; + unsigned UniqueId; unsigned NumAttEvent; /***** Start form to update the attendance @@ -2849,12 +2849,10 @@ static void Att_ListEventsToSelect (void) Txt_ROLES_PLURAL_Abc[Rol_STUDENT][Usr_SEX_UNKNOWN]); /***** List the events *****/ - for (NumAttEvent = 0, Gbl.RowEvenOdd = 0; + for (NumAttEvent = 0, UniqueId = 1, Gbl.RowEvenOdd = 0; NumAttEvent < Gbl.AttEvents.Num; - NumAttEvent++) + NumAttEvent++, UniqueId++, Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd) { - UniqueId++; - /* Get data of the attendance event from database */ Att_GetDataOfAttEventByCodAndCheckCrs (&Gbl.AttEvents.Lst[NumAttEvent]); Att_GetNumStdsTotalWhoAreInAttEvent (&Gbl.AttEvents.Lst[NumAttEvent]); @@ -2890,8 +2888,6 @@ static void Att_ListEventsToSelect (void) UniqueId,Gbl.AttEvents.Lst[NumAttEvent].TimeUTC[Att_START_TIME], Gbl.RowEvenOdd, Gbl.AttEvents.Lst[NumAttEvent].NumStdsTotal); - - Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; } /***** Put button to refresh *****/ @@ -3176,10 +3172,10 @@ static void Att_ListAttEventsForAStd (unsigned NumStd,struct UsrData *UsrDat) extern const char *Txt_Absent; extern const char *Txt_Student_comment; extern const char *Txt_Teachers_comment; - static unsigned UniqueId = 0; char PhotoURL[PATH_MAX+1]; bool ShowPhoto; unsigned NumAttEvent; + unsigned UniqueId; bool Present; char CommentStd[Cns_MAX_BYTES_TEXT+1]; char CommentTch[Cns_MAX_BYTES_TEXT+1]; @@ -3230,9 +3226,9 @@ static void Att_ListAttEventsForAStd (unsigned NumStd,struct UsrData *UsrDat) UsrDat->FirstName); /***** List the events with students *****/ - for (NumAttEvent = 0; + for (NumAttEvent = 0, UniqueId = 1; NumAttEvent < Gbl.AttEvents.Num; - NumAttEvent++) + NumAttEvent++, UniqueId++) if (Gbl.AttEvents.Lst[NumAttEvent].Selected) { /***** Get data of the attendance event from database *****/ @@ -3243,7 +3239,6 @@ static void Att_ListAttEventsForAStd (unsigned NumStd,struct UsrData *UsrDat) Present = Att_CheckIfUsrIsPresentInAttEventAndGetComments (Gbl.AttEvents.Lst[NumAttEvent].AttCod,UsrDat->UsrCod,CommentStd,CommentTch); /***** Write a row for this event *****/ - UniqueId++; fprintf (Gbl.F.Out,"" "" "" diff --git a/swad_changelog.h b/swad_changelog.h index 100f84ff5..cbc33c887 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -108,11 +108,12 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 15.20 (2015/10/24)" +#define Log_PLATFORM_VERSION "SWAD 15.20.1 (2015/10/24)" // 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.20.1: Oct 24, 2015 Detailed clics are displayed in client local date-time. (186333 lines) Version 15.20: Oct 24, 2015 Date-times in notifications, messages and forums are displayed in client local date-time. (186334 lines) 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. diff --git a/swad_forum.c b/swad_forum.c index 302f82a64..35e372f76 100644 --- a/swad_forum.c +++ b/swad_forum.c @@ -3227,9 +3227,9 @@ void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],struct Pagination *Pagi extern const char *Txt_There_are_new_posts; extern const char *Txt_No_new_posts; extern const char *Txt_Move_thread; - static unsigned UniqueId = 0; unsigned NumThr; unsigned NumThrInScreen; // From 0 to Pag_ITEMS_PER_PAGE-1 + unsigned UniqueId; struct ForumThread Thr; struct UsrData UsrDat; For_ForumOrderType_t Order; @@ -3248,7 +3248,7 @@ void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],struct Pagination *Pagi /***** Initialize structure with user's data *****/ Usr_UsrDataConstructor (&UsrDat); - for (NumThr = PaginationThrs->FirstItemVisible, NumThrInScreen = 0, Gbl.RowEvenOdd = 0; + for (NumThr = PaginationThrs->FirstItemVisible, NumThrInScreen = 0, UniqueId = 0, Gbl.RowEvenOdd = 0; NumThr <= PaginationThrs->LastItemVisible; NumThr++, NumThrInScreen++, Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd) { diff --git a/swad_statistic.c b/swad_statistic.c index f54068072..b1f20de71 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -1023,7 +1023,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) switch (Gbl.Stat.ClicksGroupedBy) { case Sta_CLICKS_CRS_DETAILED_LIST: - sprintf (Query,"SELECT SQL_NO_CACHE LogCod,UsrCod,Role,DATE_FORMAT(ClickTime,'%%Y%%m%%d%%H%%i%%S') AS F,ActCod FROM %s", + sprintf (Query,"SELECT SQL_NO_CACHE LogCod,UsrCod,Role," + "UNIX_TIMESTAMP(ClickTime) AS F,ActCod FROM %s", LogTable); break; case Sta_CLICKS_CRS_PER_USR: @@ -1476,6 +1477,7 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql MYSQL_ROW row; long LogCod; Rol_Role_t RoleFromLog; + unsigned UniqueId; long ActCod; char ActTxt[Act_MAX_LENGTH_ACTION_TXT+1]; @@ -1617,9 +1619,9 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql Txt_LOG_More_info); /***** Write rows back *****/ - for (NumRow = LastRow, Gbl.RowEvenOdd = 0; + for (NumRow = LastRow, UniqueId = 1, Gbl.RowEvenOdd = 0; NumRow >= FirstRow; - NumRow--, Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd) + NumRow--, UniqueId++, Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd) { mysql_data_seek (mysql_res, (my_ulonglong) (NumRow-1)); row = mysql_fetch_row (mysql_res); @@ -1662,14 +1664,13 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql RoleFromLog < Rol_NUM_ROLES ? Txt_ROLES_SINGUL_Abc[RoleFromLog][UsrDat.Sex] : "?"); - /* Write the date (in row[3] is the date in YYYYMMDDHHMMSS format) */ - fprintf (Gbl.F.Out,"", - Gbl.RowEvenOdd); - Dat_WriteDate (row[3]); - fprintf (Gbl.F.Out," "); - Dat_WriteHourMinute (&row[3][8]); - fprintf (Gbl.F.Out,":%c%c ", - row[3][12],row[3][13]); + /* Write the date-time (row[3]) */ + fprintf (Gbl.F.Out,"" + "", + UniqueId,Gbl.RowEvenOdd, + UniqueId,(long) Dat_GetUNIXTimeFromStr (row[3])); /* Write the action */ if (sscanf (row[4],"%ld",&ActCod) != 1)