diff --git a/swad_changelog.h b/swad_changelog.h index 803c4377b..655a259f1 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -148,13 +148,14 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.17.14 (2016-10-09)" +#define Log_PLATFORM_VERSION "SWAD 16.17.15 (2016-10-09)" #define CSS_FILE "swad15.229.css" #define JS_FILE "swad15.238.1.js" // 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 16.17.15: Oct 09, 2016 Code refactoring in user's usage report. (206236 lines) Version 16.17.14: Oct 09, 2016 Code refactoring in user's usage report. (206268 lines) Version 16.17.13: Oct 09, 2016 Code refactoring in user's usage report. (206273 lines) Version 16.17.12: Oct 09, 2016 Code refactoring in user's usage report. (206278 lines) diff --git a/swad_report.c b/swad_report.c index 471c2c731..a355ef8e0 100644 --- a/swad_report.c +++ b/swad_report.c @@ -115,32 +115,22 @@ static void Rep_WriteSectionPlatform (void); static void Rep_WriteSectionUsrInfo (void); static void Rep_WriteSectionUsrFigures (const struct Rep_Report *Report); static void Rep_WriteSectionHitsPerAction (const struct UsrFigures *UsrFigures); -static void Rep_WriteSectionGlobalHits (const struct Rep_Report *Report); +static void Rep_WriteSectionGlobalHits (struct Rep_Report *Report); static void Rep_WriteSectionCurrentCourses (const struct Rep_Report *Report); -static void Rep_WriteSectionHistoricCourses (const struct UsrFigures *UsrFigures, - const struct tm *tm_FirstClickTime, - unsigned long MaxHitsPerYear); +static void Rep_WriteSectionHistoricCourses (const struct Rep_Report *Report); static unsigned long Rep_GetMaxHitsPerYear (time_t FirstClickTimeUTC); static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role, const struct Rep_Report *Report); -static void Rep_GetAndWriteMyHistoricClicsWithoutCrs (time_t FirstClickTimeUTC, - const struct tm *tm_FirstClickTime, - unsigned long MaxHitsPerYear); +static void Rep_GetAndWriteMyHistoricClicsWithoutCrs (const struct Rep_Report *Report); static void Rep_GetAndWriteMyHistoricCrss (Rol_Role_t Role, - time_t FirstClickTimeUTC, - const struct tm *tm_FirstClickTime, - unsigned long MaxHitsPerYear); + const struct Rep_Report *Report); static void Rep_WriteRowCrsData (long CrsCod,Rol_Role_t Role, - time_t FirstClickTimeUTC, - const struct tm *tm_FirstClickTime, - unsigned long MaxHitsPerYear, + const struct Rep_Report *Report, bool WriteNumUsrs); static void Rep_ShowMyHitsPerYear (bool AnyCourse,long CrsCod,Rol_Role_t Role, - time_t FirstClickTimeUTC, - const struct tm *tm_FirstClickTime, - unsigned long MaxHitsPerYear); + const struct Rep_Report *Report); static void Rep_ComputeMaxAndTotalHits (struct Rep_Hits *Hits, unsigned long NumRows, MYSQL_RES *mysql_res,unsigned Field); @@ -244,8 +234,7 @@ static void Rep_CreateMyUsageReport (struct Rep_Report *Report) Rep_WriteSectionCurrentCourses (Report); /***** Historic courses *****/ - Rep_WriteSectionHistoricCourses (&Report->UsrFigures,&Report->tm_FirstClickTime, - Report->MaxHitsPerYear); + Rep_WriteSectionHistoricCourses (Report); /***** End file *****/ fprintf (Gbl.F.Rep,"\n" @@ -735,7 +724,7 @@ static void Rep_WriteSectionUsrFigures (const struct Rep_Report *Report) /******** Write section for user's global hits in user's usage report ********/ /*****************************************************************************/ -static void Rep_WriteSectionGlobalHits (const struct Rep_Report *Report) +static void Rep_WriteSectionGlobalHits (struct Rep_Report *Report) { extern const char *Txt_Hits_per_year; @@ -745,11 +734,10 @@ static void Rep_WriteSectionGlobalHits (const struct Rep_Report *Report) Txt_Hits_per_year); /***** Global (in any course) hits per year *****/ + Report->MaxHitsPerYear = 0; // MaxHitsPerYear not passed as an argument but computed inside the function Rep_ShowMyHitsPerYear (true,-1L, // Any course Rol_UNKNOWN, // Any role - Report->UsrFigures.FirstClickTimeUTC, - &Report->tm_FirstClickTime, - 0); // MaxHitsPerYear not passed as an argument but computed inside the function + Report); /***** End of section *****/ fprintf (Gbl.F.Rep,"\n"); @@ -872,9 +860,7 @@ static void Rep_WriteSectionCurrentCourses (const struct Rep_Report *Report) /***** Write section for user's historic courses in user's usage report ******/ /*****************************************************************************/ -static void Rep_WriteSectionHistoricCourses (const struct UsrFigures *UsrFigures, - const struct tm *tm_FirstClickTime, - unsigned long MaxHitsPerYear) +static void Rep_WriteSectionHistoricCourses (const struct Rep_Report *Report) { extern const char *Txt_Courses; extern const char *Txt_historical_log; @@ -890,17 +876,14 @@ static void Rep_WriteSectionHistoricCourses (const struct UsrFigures *UsrFigures fprintf (Gbl.F.Rep,"" @@ -1034,10 +1017,7 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role, CrsCod = Str_ConvertStrCodToLongCod (row[0]); /* Write data of this course */ - Rep_WriteRowCrsData (CrsCod,Role, - Report->UsrFigures.FirstClickTimeUTC, - &Report->tm_FirstClickTime, - Report->MaxHitsPerYear, + Rep_WriteRowCrsData (CrsCod,Role,Report, true); // Write number of users in course } @@ -1056,9 +1036,7 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role, /************* Write my historic clicks without course selected **************/ /*****************************************************************************/ -static void Rep_GetAndWriteMyHistoricClicsWithoutCrs (time_t FirstClickTimeUTC, - const struct tm *tm_FirstClickTime, - unsigned long MaxHitsPerYear) +static void Rep_GetAndWriteMyHistoricClicsWithoutCrs (const struct Rep_Report *Report) { extern const char *Txt_Hits_without_course_selected; @@ -1070,8 +1048,7 @@ static void Rep_GetAndWriteMyHistoricClicsWithoutCrs (time_t FirstClickTimeUTC, /***** Historic clicks *****/ Rep_WriteRowCrsData (-1L, Rol_UNKNOWN, // Role does not matter - FirstClickTimeUTC,tm_FirstClickTime, - MaxHitsPerYear, + Report, false); // Do not write number of users in course /***** End of list *****/ @@ -1084,9 +1061,7 @@ static void Rep_GetAndWriteMyHistoricClicsWithoutCrs (time_t FirstClickTimeUTC, /*****************************************************************************/ static void Rep_GetAndWriteMyHistoricCrss (Rol_Role_t Role, - time_t FirstClickTimeUTC, - const struct tm *tm_FirstClickTime, - unsigned long MaxHitsPerYear) + const struct Rep_Report *Report) { extern const char *Txt_Hits_as_a_USER; extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; @@ -1129,9 +1104,7 @@ static void Rep_GetAndWriteMyHistoricCrss (Rol_Role_t Role, CrsCod = Str_ConvertStrCodToLongCod (row[0]); /* Write data of this course */ - Rep_WriteRowCrsData (CrsCod,Role, - FirstClickTimeUTC,tm_FirstClickTime, - MaxHitsPerYear, + Rep_WriteRowCrsData (CrsCod,Role,Report, false); // Do not write number of users in course } @@ -1149,9 +1122,7 @@ static void Rep_GetAndWriteMyHistoricCrss (Rol_Role_t Role, /*****************************************************************************/ static void Rep_WriteRowCrsData (long CrsCod,Rol_Role_t Role, - time_t FirstClickTimeUTC, - const struct tm *tm_FirstClickTime, - unsigned long MaxHitsPerYear, + const struct Rep_Report *Report, bool WriteNumUsrs) { extern const char *Txt_YEAR_OF_DEGREE[1+Deg_MAX_YEARS_PER_DEGREE]; @@ -1201,9 +1172,7 @@ static void Rep_WriteRowCrsData (long CrsCod,Rol_Role_t Role, /***** Write hits per year for this course *****/ fprintf (Gbl.F.Rep,"
"); - Rep_ShowMyHitsPerYear (false,CrsCod,Role, - FirstClickTimeUTC,tm_FirstClickTime, - MaxHitsPerYear); + Rep_ShowMyHitsPerYear (false,CrsCod,Role,Report); fprintf (Gbl.F.Rep,""); } @@ -1213,9 +1182,7 @@ static void Rep_WriteRowCrsData (long CrsCod,Rol_Role_t Role, /*****************************************************************************/ static void Rep_ShowMyHitsPerYear (bool AnyCourse,long CrsCod,Rol_Role_t Role, - time_t FirstClickTimeUTC, - const struct tm *tm_FirstClickTime, - unsigned long MaxHitsPerYear) + const struct Rep_Report *Report) { char Query[512]; char SubQueryCrs[128]; @@ -1246,22 +1213,22 @@ static void Rep_ShowMyHitsPerYear (bool AnyCourse,long CrsCod,Rol_Role_t Role, " WHERE ClickTime>=FROM_UNIXTIME('%ld')" " AND UsrCod='%ld'%s%s" " GROUP BY Year DESC", - (long) FirstClickTimeUTC, + (long) Report->UsrFigures.FirstClickTimeUTC, Gbl.Usrs.Me.UsrDat.UsrCod, SubQueryCrs, SubQueryRol); NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get clicks"); /***** Initialize first year *****/ - Gbl.DateRange.DateIni.Date.Year = 1900 + tm_FirstClickTime->tm_year; + Gbl.DateRange.DateIni.Date.Year = 1900 + Report->tm_FirstClickTime.tm_year; /***** Initialize LastYear *****/ LastYear = Gbl.Now.Date.Year; /***** Set maximum number of hits per year *****/ - if (MaxHitsPerYear) + if (Report->MaxHitsPerYear) /* Set maximum number of hits per year from parameter */ - Hits.Max = MaxHitsPerYear; + Hits.Max = Report->MaxHitsPerYear; else { /* Compute maximum number of hits per year */