Version 15.13.1

This commit is contained in:
Antonio Cañas Vargas 2015-10-11 17:40:07 +02:00
parent 63ca430c01
commit 9ec27101b6
5 changed files with 85 additions and 60 deletions

View File

@ -10781,6 +10781,13 @@ INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1469','es','N','Camb
----- SWAD 15.12 (2015/10/10) ----- ----- 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_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); 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;

View File

@ -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" }, /* 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" }, /* 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" }, /* 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: // Actions not in menu:
/* ActSeeOneSvy */{ 982,-1,TabSta,ActSeeAllSvy ,0x1F8,0x1F8,0x1F8,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Svy_SeeOneSurvey ,NULL}, /* 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}, /* 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}, /* 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}, /* 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}, /* 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}, /* ActSeeAllStaCrs */{ 768,-1,TabSta,ActReqAccGbl ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Ind_ShowIndicatorsCourses ,NULL},

View File

@ -98,7 +98,7 @@
/****************************** Public constants *****************************/ /****************************** 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: // 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 // 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: Link to user's country in public profile
TODO: Show guests in connected users. 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. Version 15.13: Oct 11, 2015 Code refactoring in module swad_statistic.
New statistics distributed by country, institution and centre. (186282 lines) 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) Version 15.12: Oct 10, 2015 Country, institution and centre are now stored in log. (185817 lines)

View File

@ -102,7 +102,7 @@ static void Sta_PutFormToRequestAccessesCrs (void);
static void Sta_WriteSelectorCountType (void); static void Sta_WriteSelectorCountType (void);
static void Sta_WriteSelectorAction (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_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql_res);
static void Sta_WriteLogComments (long LogCod); static void Sta_WriteLogComments (long LogCod);
static void Sta_ShowNumHitsPerUsr (unsigned long NumRows, 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 ******************/ /******************** 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 *The_ClassForm[The_NUM_THEMES];
extern const char *Txt_Statistics_of_visits_to_the_course_X; 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 ***********/ /********** 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 *The_ClassForm[The_NUM_THEMES];
extern const char *Txt_Statistics_of_all_visits; extern const char *Txt_Statistics_of_all_visits;
@ -815,12 +815,12 @@ void Sta_SetIniEndDates (void)
void Sta_SeeGblAccesses (void) void Sta_SeeGblAccesses (void)
{ {
Sta_SeeAccesses (Sta_SHOW_GLOBAL_ACCESSES); Sta_ShowHits (Sta_SHOW_GLOBAL_ACCESSES);
} }
void Sta_SeeCrsAccesses (void) 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) #define MAX_LENGTH_QUERY_ACCESS (1024 + (10+ID_MAX_LENGTH_USR_ID)*5000)
// Returns false on error static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
static void Sta_SeeAccesses (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{ {
extern const char *Txt_You_must_select_one_ore_more_users; 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; 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 (); Sco_GetScope ();
/***** Show form again *****/ /***** Show form again *****/
Sta_AskSeeGblAccesses (); Sta_AskShowGblHits ();
/***** The following types of query will never give a valid result *****/ /***** The following types of query will never give a valid result *****/
if ((Gbl.Stat.Role == Sta_ALL_USRS || if ((Gbl.Stat.Role == Sta_ALL_USRS ||
@ -958,7 +956,7 @@ static void Sta_SeeAccesses (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
} }
/***** Show form again *****/ /***** Show form again *****/
Sta_AskSeeCrsAccesses (); Sta_AskShowCrsHits ();
/****** Get lists of selected users ******/ /****** Get lists of selected users ******/
Usr_GetListsSelectedUsrs (); Usr_GetListsSelectedUsrs ();
@ -1103,41 +1101,52 @@ static void Sta_SeeAccesses (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{ {
case Sta_SHOW_GLOBAL_ACCESSES: case Sta_SHOW_GLOBAL_ACCESSES:
/* Scope */ /* Scope */
if (Gbl.Scope.Current == Sco_SCOPE_INS && switch (Gbl.Scope.Current)
Gbl.CurrentIns.Ins.InsCod > 0) {
{ case Sco_SCOPE_UNK:
sprintf (QueryAux," AND %s.DegCod IN" case Sco_SCOPE_SYS:
" (SELECT degrees.DegCod" break;
" FROM centres,degrees" case Sco_SCOPE_CTY:
" WHERE centres.InsCod='%ld'" if (Gbl.CurrentCty.Cty.CtyCod > 0)
" AND centres.CtrCod=degrees.CtrCod)", {
LogTable,Gbl.CurrentIns.Ins.InsCod); sprintf (QueryAux," AND %s.CtyCod='%ld'",
strcat (Query,QueryAux); LogTable,Gbl.CurrentCty.Cty.CtyCod);
} strcat (Query,QueryAux);
else if (Gbl.Scope.Current == Sco_SCOPE_CTR && }
Gbl.CurrentCtr.Ctr.CtrCod > 0) break;
{ case Sco_SCOPE_INS:
sprintf (QueryAux," AND %s.DegCod" if (Gbl.CurrentIns.Ins.InsCod > 0)
" IN (SELECT DegCod" {
" FROM degrees" sprintf (QueryAux," AND %s.InsCod='%ld'",
" WHERE CtrCod='%ld')", LogTable,Gbl.CurrentIns.Ins.InsCod);
LogTable,Gbl.CurrentCtr.Ctr.CtrCod); strcat (Query,QueryAux);
strcat (Query,QueryAux); }
} break;
else if (Gbl.Scope.Current == Sco_SCOPE_DEG && case Sco_SCOPE_CTR:
Gbl.CurrentDeg.Deg.DegCod > 0) if (Gbl.CurrentCtr.Ctr.CtrCod > 0)
{ {
sprintf (QueryAux," AND %s.DegCod='%ld'", sprintf (QueryAux," AND %s.CtrCod='%ld'",
LogTable,Gbl.CurrentDeg.Deg.DegCod); LogTable,Gbl.CurrentCtr.Ctr.CtrCod);
strcat (Query,QueryAux); strcat (Query,QueryAux);
} }
else if (Gbl.Scope.Current == Sco_SCOPE_CRS && break;
Gbl.CurrentCrs.Crs.CrsCod > 0) case Sco_SCOPE_DEG:
{ if (Gbl.CurrentDeg.Deg.DegCod > 0)
sprintf (QueryAux," AND %s.CrsCod='%ld'", {
LogTable,Gbl.CurrentCrs.Crs.CrsCod); sprintf (QueryAux," AND %s.DegCod='%ld'",
strcat (Query,QueryAux); 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 */ /* Type of users */
switch (Gbl.Stat.Role) 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); sprintf (QueryAux," GROUP BY %s.UsrCod ORDER BY Num DESC",LogTable);
strcat (Query,QueryAux); strcat (Query,QueryAux);
break; break;
case Sta_CLICKS_CRS_PER_DAYS: case Sta_CLICKS_CRS_PER_DAYS:
case Sta_CLICKS_GBL_PER_DAYS: case Sta_CLICKS_GBL_PER_DAYS:
strcat (Query," GROUP BY Day DESC"); strcat (Query," GROUP BY Day DESC");
break; break;
case Sta_CLICKS_CRS_PER_DAYS_AND_HOUR: case Sta_CLICKS_CRS_PER_DAYS_AND_HOUR:
case Sta_CLICKS_GBL_PER_DAYS_AND_HOUR: case Sta_CLICKS_GBL_PER_DAYS_AND_HOUR:
strcat (Query," GROUP BY Day DESC,Hour"); strcat (Query," GROUP BY Day DESC,Hour");
break; break;
case Sta_CLICKS_CRS_PER_WEEKS: case Sta_CLICKS_CRS_PER_WEEKS:
case Sta_CLICKS_GBL_PER_WEEKS: case Sta_CLICKS_GBL_PER_WEEKS:
strcat (Query," GROUP BY Week DESC"); strcat (Query," GROUP BY Week DESC");
break; break;
case Sta_CLICKS_CRS_PER_MONTHS: case Sta_CLICKS_CRS_PER_MONTHS:
case Sta_CLICKS_GBL_PER_MONTHS: case Sta_CLICKS_GBL_PER_MONTHS:
strcat (Query," GROUP BY Month DESC"); strcat (Query," GROUP BY Month DESC");
break; break;
case Sta_CLICKS_CRS_PER_HOUR: case Sta_CLICKS_CRS_PER_HOUR:
@ -1323,10 +1332,10 @@ static void Sta_SeeAccesses (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
break; break;
} }
/***** Write query for debug *****/ /***** 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); Lay_ShowAlert (Lay_INFO,Query);
*/ */
/***** Make the query *****/ /***** Make the query *****/
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get clicks"); NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get clicks");

View File

@ -141,8 +141,8 @@ void Sta_GetRemoteAddr (void);
void Sta_ExitIfTooFast (void); void Sta_ExitIfTooFast (void);
void Sta_LogAccess (const char *Comments); void Sta_LogAccess (const char *Comments);
void Sta_RemoveOldEntriesRecentLog (void); void Sta_RemoveOldEntriesRecentLog (void);
void Sta_AskSeeCrsAccesses (void); void Sta_AskShowCrsHits (void);
void Sta_AskSeeGblAccesses (void); void Sta_AskShowGblHits (void);
void Sta_SetIniEndDates (void); void Sta_SetIniEndDates (void);
void Sta_SeeGblAccesses (void); void Sta_SeeGblAccesses (void);
void Sta_SeeCrsAccesses (void); void Sta_SeeCrsAccesses (void);