Version 16.17.15

This commit is contained in:
Antonio Cañas Vargas 2016-10-09 00:49:23 +02:00
parent c41857076f
commit 9070d50c97
2 changed files with 27 additions and 59 deletions

View File

@ -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)

View File

@ -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,"</body>\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,"</section>\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,"<ul>");
/********* Historic clicks of a user without course selected ***********/
Rep_GetAndWriteMyHistoricClicsWithoutCrs (UsrFigures->FirstClickTimeUTC,tm_FirstClickTime,
MaxHitsPerYear);
Rep_GetAndWriteMyHistoricClicsWithoutCrs (Report);
/***** Historic courses in which the user clicked as student/teacher *****/
for (Role = Rol_STUDENT;
Role <= Rol_TEACHER;
Role++)
/* List my courses with this role */
Rep_GetAndWriteMyHistoricCrss (Role,
UsrFigures->FirstClickTimeUTC,tm_FirstClickTime,
MaxHitsPerYear);
Rep_GetAndWriteMyHistoricCrss (Role,Report);
/***** End of section *****/
fprintf (Gbl.F.Rep,"</ul>"
@ -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,"<br />");
Rep_ShowMyHitsPerYear (false,CrsCod,Role,
FirstClickTimeUTC,tm_FirstClickTime,
MaxHitsPerYear);
Rep_ShowMyHitsPerYear (false,CrsCod,Role,Report);
fprintf (Gbl.F.Rep,"</li>");
}
@ -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 */