From 9ec27101b61d26ad3c57fe29b91cbb7a7fd4535a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Sun, 11 Oct 2015 17:40:07 +0200 Subject: [PATCH] Version 15.13.1 --- sql/cambios.sql | 9 +++- swad_action.c | 4 +- swad_changelog.h | 11 ++++- swad_statistic.c | 117 +++++++++++++++++++++++++---------------------- swad_statistic.h | 4 +- 5 files changed, 85 insertions(+), 60 deletions(-) diff --git a/sql/cambios.sql b/sql/cambios.sql index 0e32a72cf..eb1f7f8ad 100644 --- a/sql/cambios.sql +++ b/sql/cambios.sql @@ -10781,6 +10781,13 @@ INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1469','es','N','Camb ----- SWAD 15.12 (2015/10/10) ----- ALTER TABLE log_recent ADD COLUMN CtyCod INT NOT NULL DEFAULT -1 AFTER ActCod,ADD INDEX (CtyCod),ADD COLUMN InsCod INT NOT NULL DEFAULT -1 AFTER CtyCod,ADD INDEX (InsCod),ADD COLUMN CtrCod INT NOT NULL DEFAULT -1 AFTER InsCod,ADD INDEX (CtrCod); - ALTER TABLE log ADD COLUMN CtyCod INT NOT NULL DEFAULT -1 AFTER ActCod,ADD INDEX (CtyCod),ADD COLUMN InsCod INT NOT NULL DEFAULT -1 AFTER CtyCod,ADD INDEX (InsCod),ADD COLUMN CtrCod INT NOT NULL DEFAULT -1 AFTER InsCod,ADD INDEX (CtrCod); +----- SWAD 15.12 (2015/10/11) ----- + +UPDATE log,degrees SET log.CtrCod=degrees.CtrCod WHERE log.DegCod=degrees.DegCod; +UPDATE log,centres SET log.InsCod=centres.InsCod WHERE log.CtrCod=centres.CtrCod; +UPDATE log,institutions SET log.CtyCod=institutions.CtyCod WHERE log.InsCod=institutions.InsCod; + + + diff --git a/swad_action.c b/swad_action.c index 817b41c48..c748ed648 100644 --- a/swad_action.c +++ b/swad_action.c @@ -2630,7 +2630,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActReqUseGbl */{ 761, 1,TabSta,ActReqUseGbl ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Sta_ReqUseOfPlatform ,"pie" }, /* ActSeePhoDeg */{ 447, 2,TabSta,ActSeePhoDeg ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pho_ShowPhotoDegree ,"classphoto" }, /* ActReqStaCrs */{ 767, 3,TabSta,ActReqStaCrs ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ind_ReqIndicatorsCourses ,"tablestats" }, - /* ActReqAccGbl */{ 591, 4,TabSta,ActReqAccGbl ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Sta_SetIniEndDates ,Sta_AskSeeGblAccesses ,"stats" }, + /* ActReqAccGbl */{ 591, 4,TabSta,ActReqAccGbl ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Sta_SetIniEndDates ,Sta_AskShowGblHits ,"stats" }, // Actions not in menu: /* ActSeeOneSvy */{ 982,-1,TabSta,ActSeeAllSvy ,0x1F8,0x1F8,0x1F8,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Svy_SeeOneSurvey ,NULL}, @@ -2655,7 +2655,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActPrnPhoDeg */{ 448,-1,TabSta,ActSeePhoDeg ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Pho_PrintPhotoDegree ,NULL}, /* ActCalPhoDeg */{ 444,-1,TabSta,ActSeePhoDeg ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pho_CalcPhotoDegree ,NULL}, /* ActSeeAccGbl */{ 79,-1,TabSta,ActReqAccGbl ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Sta_SeeGblAccesses ,NULL}, - /* ActReqAccCrs */{ 594,-1,TabSta,ActReqAccGbl ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Sta_SetIniEndDates ,Sta_AskSeeCrsAccesses ,NULL}, + /* ActReqAccCrs */{ 594,-1,TabSta,ActReqAccGbl ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Sta_SetIniEndDates ,Sta_AskShowCrsHits ,NULL}, /* ActSeeAccCrs */{ 119,-1,TabSta,ActReqAccGbl ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Sta_SeeCrsAccesses ,NULL}, /* ActSeeAllStaCrs */{ 768,-1,TabSta,ActReqAccGbl ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Ind_ShowIndicatorsCourses ,NULL}, diff --git a/swad_changelog.h b/swad_changelog.h index 3036d1630..0f44b79e8 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -98,7 +98,7 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 15.13 (2015/10/11)" +#define Log_PLATFORM_VERSION "SWAD 15.13.1 (2015/10/11)" // 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 @@ -108,6 +108,15 @@ TODO: Change link to Degree in Statistics > Visits > By degree to internal Degre TODO: Link to user's country in public profile TODO: Show guests in connected users. + Version 15.13.1: Oct 11, 2015 Refactoring and bug fixing in statistics related to scopes. (186300 lines) + 6 optional slow changes in database (may spend many minutes or even hours depending on the size of log tables): +UPDATE log_recent,degrees SET log_recent.CtrCod=degrees.CtrCod WHERE log_recent.DegCod=degrees.DegCod; +UPDATE log_recent,centres SET log_recent.InsCod=centres.InsCod WHERE log_recent.CtrCod=centres.CtrCod; +UPDATE log_recent,institutions SET log_recent.CtyCod=institutions.CtyCod WHERE log_recent.InsCod=institutions.InsCod; +UPDATE log,degrees SET log.CtrCod=degrees.CtrCod WHERE log.DegCod=degrees.DegCod; +UPDATE log,centres SET log.InsCod=centres.InsCod WHERE log.CtrCod=centres.CtrCod; +UPDATE log,institutions SET log.CtyCod=institutions.CtyCod WHERE log.InsCod=institutions.InsCod; + Version 15.13: Oct 11, 2015 Code refactoring in module swad_statistic. New statistics distributed by country, institution and centre. (186282 lines) Version 15.12: Oct 10, 2015 Country, institution and centre are now stored in log. (185817 lines) diff --git a/swad_statistic.c b/swad_statistic.c index a984c1f4b..2f6147c3d 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -102,7 +102,7 @@ static void Sta_PutFormToRequestAccessesCrs (void); static void Sta_WriteSelectorCountType (void); static void Sta_WriteSelectorAction (void); -static void Sta_SeeAccesses (Sta_GlobalOrCourseAccesses_t GlobalOrCourse); +static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse); static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql_res); static void Sta_WriteLogComments (long LogCod); static void Sta_ShowNumHitsPerUsr (unsigned long NumRows, @@ -423,7 +423,7 @@ static void Sta_PutFormToRequestAccessesCrs (void) /******************** Show a form to make a query of clicks ******************/ /*****************************************************************************/ -void Sta_AskSeeCrsAccesses (void) +void Sta_AskShowCrsHits (void) { extern const char *The_ClassForm[The_NUM_THEMES]; extern const char *Txt_Statistics_of_visits_to_the_course_X; @@ -591,7 +591,7 @@ void Sta_AskSeeCrsAccesses (void) /********** Show a form to select the type of global stat of clics ***********/ /*****************************************************************************/ -void Sta_AskSeeGblAccesses (void) +void Sta_AskShowGblHits (void) { extern const char *The_ClassForm[The_NUM_THEMES]; extern const char *Txt_Statistics_of_all_visits; @@ -815,12 +815,12 @@ void Sta_SetIniEndDates (void) void Sta_SeeGblAccesses (void) { - Sta_SeeAccesses (Sta_SHOW_GLOBAL_ACCESSES); + Sta_ShowHits (Sta_SHOW_GLOBAL_ACCESSES); } void Sta_SeeCrsAccesses (void) { - Sta_SeeAccesses (Sta_SHOW_COURSE_ACCESSES); + Sta_ShowHits (Sta_SHOW_COURSE_ACCESSES); } /*****************************************************************************/ @@ -829,9 +829,7 @@ void Sta_SeeCrsAccesses (void) #define MAX_LENGTH_QUERY_ACCESS (1024 + (10+ID_MAX_LENGTH_USR_ID)*5000) -// Returns false on error - -static void Sta_SeeAccesses (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) +static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) { extern const char *Txt_You_must_select_one_ore_more_users; extern const char *Txt_There_is_no_knowing_how_many_users_not_logged_have_accessed; @@ -925,7 +923,7 @@ static void Sta_SeeAccesses (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) Sco_GetScope (); /***** Show form again *****/ - Sta_AskSeeGblAccesses (); + Sta_AskShowGblHits (); /***** The following types of query will never give a valid result *****/ if ((Gbl.Stat.Role == Sta_ALL_USRS || @@ -958,7 +956,7 @@ static void Sta_SeeAccesses (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) } /***** Show form again *****/ - Sta_AskSeeCrsAccesses (); + Sta_AskShowCrsHits (); /****** Get lists of selected users ******/ Usr_GetListsSelectedUsrs (); @@ -1103,41 +1101,52 @@ static void Sta_SeeAccesses (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) { case Sta_SHOW_GLOBAL_ACCESSES: /* Scope */ - if (Gbl.Scope.Current == Sco_SCOPE_INS && - Gbl.CurrentIns.Ins.InsCod > 0) - { - sprintf (QueryAux," AND %s.DegCod IN" - " (SELECT degrees.DegCod" - " FROM centres,degrees" - " WHERE centres.InsCod='%ld'" - " AND centres.CtrCod=degrees.CtrCod)", - LogTable,Gbl.CurrentIns.Ins.InsCod); - strcat (Query,QueryAux); - } - else if (Gbl.Scope.Current == Sco_SCOPE_CTR && - Gbl.CurrentCtr.Ctr.CtrCod > 0) - { - sprintf (QueryAux," AND %s.DegCod" - " IN (SELECT DegCod" - " FROM degrees" - " WHERE CtrCod='%ld')", - LogTable,Gbl.CurrentCtr.Ctr.CtrCod); - strcat (Query,QueryAux); - } - else if (Gbl.Scope.Current == Sco_SCOPE_DEG && - Gbl.CurrentDeg.Deg.DegCod > 0) - { - sprintf (QueryAux," AND %s.DegCod='%ld'", - LogTable,Gbl.CurrentDeg.Deg.DegCod); - strcat (Query,QueryAux); - } - else if (Gbl.Scope.Current == Sco_SCOPE_CRS && - Gbl.CurrentCrs.Crs.CrsCod > 0) - { - sprintf (QueryAux," AND %s.CrsCod='%ld'", - LogTable,Gbl.CurrentCrs.Crs.CrsCod); - strcat (Query,QueryAux); - } + switch (Gbl.Scope.Current) + { + case Sco_SCOPE_UNK: + case Sco_SCOPE_SYS: + break; + case Sco_SCOPE_CTY: + if (Gbl.CurrentCty.Cty.CtyCod > 0) + { + sprintf (QueryAux," AND %s.CtyCod='%ld'", + LogTable,Gbl.CurrentCty.Cty.CtyCod); + strcat (Query,QueryAux); + } + break; + case Sco_SCOPE_INS: + if (Gbl.CurrentIns.Ins.InsCod > 0) + { + sprintf (QueryAux," AND %s.InsCod='%ld'", + LogTable,Gbl.CurrentIns.Ins.InsCod); + strcat (Query,QueryAux); + } + break; + case Sco_SCOPE_CTR: + if (Gbl.CurrentCtr.Ctr.CtrCod > 0) + { + sprintf (QueryAux," AND %s.CtrCod='%ld'", + LogTable,Gbl.CurrentCtr.Ctr.CtrCod); + strcat (Query,QueryAux); + } + break; + case Sco_SCOPE_DEG: + if (Gbl.CurrentDeg.Deg.DegCod > 0) + { + sprintf (QueryAux," AND %s.DegCod='%ld'", + LogTable,Gbl.CurrentDeg.Deg.DegCod); + strcat (Query,QueryAux); + } + break; + case Sco_SCOPE_CRS: + if (Gbl.CurrentCrs.Crs.CrsCod > 0) + { + sprintf (QueryAux," AND %s.CrsCod='%ld'", + LogTable,Gbl.CurrentCrs.Crs.CrsCod); + strcat (Query,QueryAux); + } + break; + } /* Type of users */ switch (Gbl.Stat.Role) @@ -1263,20 +1272,20 @@ static void Sta_SeeAccesses (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) sprintf (QueryAux," GROUP BY %s.UsrCod ORDER BY Num DESC",LogTable); strcat (Query,QueryAux); break; - case Sta_CLICKS_CRS_PER_DAYS: - case Sta_CLICKS_GBL_PER_DAYS: + case Sta_CLICKS_CRS_PER_DAYS: + case Sta_CLICKS_GBL_PER_DAYS: strcat (Query," GROUP BY Day DESC"); break; case Sta_CLICKS_CRS_PER_DAYS_AND_HOUR: case Sta_CLICKS_GBL_PER_DAYS_AND_HOUR: strcat (Query," GROUP BY Day DESC,Hour"); break; - case Sta_CLICKS_CRS_PER_WEEKS: - case Sta_CLICKS_GBL_PER_WEEKS: + case Sta_CLICKS_CRS_PER_WEEKS: + case Sta_CLICKS_GBL_PER_WEEKS: strcat (Query," GROUP BY Week DESC"); break; - case Sta_CLICKS_CRS_PER_MONTHS: - case Sta_CLICKS_GBL_PER_MONTHS: + case Sta_CLICKS_CRS_PER_MONTHS: + case Sta_CLICKS_GBL_PER_MONTHS: strcat (Query," GROUP BY Month DESC"); break; case Sta_CLICKS_CRS_PER_HOUR: @@ -1323,10 +1332,10 @@ static void Sta_SeeAccesses (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) break; } /***** Write query for debug *****/ -/* - if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SYS_ADM) + /* + if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM) Lay_ShowAlert (Lay_INFO,Query); -*/ + */ /***** Make the query *****/ NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get clicks"); diff --git a/swad_statistic.h b/swad_statistic.h index 43e2e35a4..ef362002a 100644 --- a/swad_statistic.h +++ b/swad_statistic.h @@ -141,8 +141,8 @@ void Sta_GetRemoteAddr (void); void Sta_ExitIfTooFast (void); void Sta_LogAccess (const char *Comments); void Sta_RemoveOldEntriesRecentLog (void); -void Sta_AskSeeCrsAccesses (void); -void Sta_AskSeeGblAccesses (void); +void Sta_AskShowCrsHits (void); +void Sta_AskShowGblHits (void); void Sta_SetIniEndDates (void); void Sta_SeeGblAccesses (void); void Sta_SeeCrsAccesses (void);