diff --git a/swad_changelog.h b/swad_changelog.h index f3c5d06f2..e1789df23 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -148,13 +148,14 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.17.5 (2016-10-08)" +#define Log_PLATFORM_VERSION "SWAD 16.17.6 (2016-10-08)" #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.6: Oct 08, 2016 Code refactoring in user's usage report. (206291 lines) Version 16.17.5: Oct 08, 2016 Code refactoring in user's usage report. (206301 lines) Version 16.17.4: Oct 08, 2016 Code refactoring in user's usage report. (206292 lines) Version 16.17.3: Oct 08, 2016 Message translated in user's usage report. (206255 lines) diff --git a/swad_report.c b/swad_report.c index 79e8e164a..54d03ec95 100644 --- a/swad_report.c +++ b/swad_report.c @@ -84,8 +84,8 @@ struct Rep_Report struct Rep_CurrentTimeUTC CurrentTimeUTC; struct Rep_Hits Hits; unsigned long MaxHitsPerYear; - char *FilenameReport; - char *Permalink; + char FilenameReport[NAME_MAX+1]; + char Permalink[PATH_MAX+1]; }; /*****************************************************************************/ @@ -102,12 +102,8 @@ extern struct Globals Gbl; /***************************** Private prototypes ****************************/ /*****************************************************************************/ -static void Rep_CreateMyUsageReport (struct Rep_CurrentTimeUTC *CurrentTimeUTC, - char *FilenameReport, - char *Permalink); -static void Rep_PutLinkToMyUsageReport (struct Rep_CurrentTimeUTC *CurrentTimeUTC, - const char *FilenameReport, - const char *Permalink); +static void Rep_CreateMyUsageReport (struct Rep_Report *Report); +static void Rep_PutLinkToMyUsageReport (struct Rep_Report *Report); static void Req_TitleReport (struct Rep_CurrentTimeUTC *CurrentTimeUTC); static void Rep_GetCurrentDateTimeUTC (struct tm *tm_CurrentTime, @@ -199,46 +195,41 @@ void Rep_ReqMyUsageReport (void) void Rep_ShowMyUsageReport (void) { - struct Rep_CurrentTimeUTC CurrentTimeUTC; - char FilenameReport[NAME_MAX+1]; - char Permalink[PATH_MAX+1]; + struct Rep_Report Report; /***** Create my usage report *****/ - Rep_CreateMyUsageReport (&CurrentTimeUTC,FilenameReport,Permalink); + Rep_CreateMyUsageReport (&Report); /***** Put link to my usage report *****/ - Rep_PutLinkToMyUsageReport (&CurrentTimeUTC,FilenameReport,Permalink); + Rep_PutLinkToMyUsageReport (&Report); } /*****************************************************************************/ /******** Create my usage report (report on my use of the platform) **********/ /*****************************************************************************/ -static void Rep_CreateMyUsageReport (struct Rep_CurrentTimeUTC *CurrentTimeUTC, - char *FilenameReport, - char *Permalink) +static void Rep_CreateMyUsageReport (struct Rep_Report *Report) { extern const char *Txt_Report_of_use_of_PLATFORM; - struct Rep_Report Report; bool GetUsrFiguresAgain; /***** Get current date-time *****/ - Rep_GetCurrentDateTimeUTC (&Report.tm_CurrentTime,CurrentTimeUTC); + Rep_GetCurrentDateTimeUTC (&Report->tm_CurrentTime,&Report->CurrentTimeUTC); /***** Create a new report file *****/ - Rep_CreateNewReportFile (CurrentTimeUTC,FilenameReport,Permalink); + Rep_CreateNewReportFile (&Report->CurrentTimeUTC,Report->FilenameReport,Report->Permalink); /***** Store report entry into database *****/ - Rep_CreateNewReportEntryIntoDB (&Report.tm_CurrentTime,FilenameReport,Permalink); + Rep_CreateNewReportEntryIntoDB (&Report->tm_CurrentTime,Report->FilenameReport,Report->Permalink); /***** Start file *****/ - Lay_StartHTMLFile (Gbl.F.Rep,FilenameReport); + Lay_StartHTMLFile (Gbl.F.Rep,Report->FilenameReport); fprintf (Gbl.F.Rep,"\n"); /***** Header *****/ - Rep_WriteHeader (CurrentTimeUTC,Permalink); + Rep_WriteHeader (&Report->CurrentTimeUTC,Report->Permalink); /***** Platform *****/ Rep_WriteSectionPlatform (); @@ -247,28 +238,28 @@ static void Rep_CreateMyUsageReport (struct Rep_CurrentTimeUTC *CurrentTimeUTC, Rep_WriteSectionUsrInfo (); /***** Figures *****/ - Prf_GetUsrFigures (Gbl.Usrs.Me.UsrDat.UsrCod,&Report.UsrFigures); - GetUsrFiguresAgain = Prf_GetAndStoreAllUsrFigures (Gbl.Usrs.Me.UsrDat.UsrCod,&Report.UsrFigures); + Prf_GetUsrFigures (Gbl.Usrs.Me.UsrDat.UsrCod,&Report->UsrFigures); + GetUsrFiguresAgain = Prf_GetAndStoreAllUsrFigures (Gbl.Usrs.Me.UsrDat.UsrCod,&Report->UsrFigures); if (GetUsrFiguresAgain) - Prf_GetUsrFigures (Gbl.Usrs.Me.UsrDat.UsrCod,&Report.UsrFigures); - if (Report.UsrFigures.FirstClickTimeUTC) - gmtime_r (&Report.UsrFigures.FirstClickTimeUTC,&Report.tm_FirstClickTime); - Rep_WriteSectionUsrFigures (&Report.UsrFigures,&Report.tm_FirstClickTime,CurrentTimeUTC); + Prf_GetUsrFigures (Gbl.Usrs.Me.UsrDat.UsrCod,&Report->UsrFigures); + if (Report->UsrFigures.FirstClickTimeUTC) + gmtime_r (&Report->UsrFigures.FirstClickTimeUTC,&Report->tm_FirstClickTime); + Rep_WriteSectionUsrFigures (&Report->UsrFigures,&Report->tm_FirstClickTime,&Report->CurrentTimeUTC); /***** Global count of hits *****/ - Rep_WriteSectionGlobalHits (&Report.UsrFigures,&Report.tm_FirstClickTime); + Rep_WriteSectionGlobalHits (&Report->UsrFigures,&Report->tm_FirstClickTime); /***** Global hits distributed by action *****/ - Rep_WriteSectionHitsPerAction (&Report.UsrFigures); + Rep_WriteSectionHitsPerAction (&Report->UsrFigures); /***** Current courses *****/ - Report.MaxHitsPerYear = Rep_GetMaxHitsPerYear (Report.UsrFigures.FirstClickTimeUTC); - Rep_WriteSectionCurrentCourses (&Report.UsrFigures,&Report.tm_FirstClickTime, - CurrentTimeUTC,Report.MaxHitsPerYear); + Report->MaxHitsPerYear = Rep_GetMaxHitsPerYear (Report->UsrFigures.FirstClickTimeUTC); + Rep_WriteSectionCurrentCourses (&Report->UsrFigures,&Report->tm_FirstClickTime, + &Report->CurrentTimeUTC,Report->MaxHitsPerYear); /***** Historic courses *****/ - Rep_WriteSectionHistoricCourses (&Report.UsrFigures,&Report.tm_FirstClickTime, - Report.MaxHitsPerYear); + Rep_WriteSectionHistoricCourses (&Report->UsrFigures,&Report->tm_FirstClickTime, + Report->MaxHitsPerYear); /***** End file *****/ fprintf (Gbl.F.Rep,"\n" @@ -282,9 +273,7 @@ static void Rep_CreateMyUsageReport (struct Rep_CurrentTimeUTC *CurrentTimeUTC, /******* Put link to my usage report (report on my use of the platform) ******/ /*****************************************************************************/ -static void Rep_PutLinkToMyUsageReport (struct Rep_CurrentTimeUTC *CurrentTimeUTC, - const char *FilenameReport, - const char *Permalink) +static void Rep_PutLinkToMyUsageReport (struct Rep_Report *Report) { extern const char *Txt_Report_of_use_of_PLATFORM; extern const char *Txt_Report; @@ -295,7 +284,7 @@ static void Rep_PutLinkToMyUsageReport (struct Rep_CurrentTimeUTC *CurrentTimeUT Lay_StartRoundFrame (NULL,Gbl.Title,NULL); /***** Header *****/ - Req_TitleReport (CurrentTimeUTC); + Req_TitleReport (&Report->CurrentTimeUTC); /***** Put anchor and report filename *****/ fprintf (Gbl.F.Out,"
" @@ -306,11 +295,11 @@ static void Rep_PutLinkToMyUsageReport (struct Rep_CurrentTimeUTC *CurrentTimeUT "%s" "" "
", - Permalink, + Report->Permalink, Txt_Report, Gbl.Prefs.IconsURL, Txt_Report, - FilenameReport); + Report->FilenameReport); fprintf (Gbl.F.Out,"
%s
", Txt_This_link_will_remain_active_as_long_as_your_user_s_account_exists);