Version19.163

This commit is contained in:
acanas 2020-04-05 18:32:56 +02:00
parent a4e2997f75
commit f9881d367d
8 changed files with 212 additions and 86 deletions

View File

@ -13189,8 +13189,8 @@ CREATE TABLE IF NOT EXISTS log (
INDEX(UsrCod),
INDEX(ClickTime,Role)
) ENGINE=InnoDB
PARTITION BY RANGE (YEAR(ClickTime))
(
PARTITION BY RANGE (YEAR(ClickTime))
(
PARTITION p2004 VALUES LESS THAN (2005),
PARTITION p2005 VALUES LESS THAN (2006),
PARTITION p2006 VALUES LESS THAN (2007),
@ -13292,8 +13292,8 @@ INSERT INTO log SELECT * FROM log_full WHERE ClickTime>='20161201' AND ClickTime
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2017; Hecho
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2018; Hecho
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2019;
# hasta aquí ya hecho en openswad.org, aún no en swad.ugr.es
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2019; Hecho
# hasta aquí ya hecho
# Actualizar los últimos antes de dar el cambiazo:
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2020;

View File

@ -748,23 +748,9 @@ CREATE TABLE IF NOT EXISTS links (
WWW VARCHAR(255) NOT NULL,
UNIQUE INDEX(LnkCod));
--
-- Table log_banners: stores the log of clicked banners
--
CREATE TABLE IF NOT EXISTS log_banners (
LogCod INT NOT NULL,
BanCod INT NOT NULL,
UNIQUE INDEX(LogCod),INDEX(BanCod));
--
-- Table log_comments: stores the comments about errors associated to the log
--
CREATE TABLE IF NOT EXISTS log_comments (
LogCod INT NOT NULL,
Comments TEXT NOT NULL,
UNIQUE INDEX(LogCod));
--
-- Table log: stores the log of all clicks
--
CREATE TABLE IF NOT EXISTS log_full (
CREATE TABLE IF NOT EXISTS log (
LogCod INT NOT NULL AUTO_INCREMENT,
ActCod INT NOT NULL DEFAULT -1,
CtyCod INT NOT NULL DEFAULT -1,
@ -778,7 +764,7 @@ CREATE TABLE IF NOT EXISTS log_full (
TimeToGenerate INT NOT NULL,
TimeToSend INT NOT NULL,
IP CHAR(15) NOT NULL,
UNIQUE INDEX(LogCod),
PRIMARY KEY(LogCod,ClickTime),
INDEX(ActCod),
INDEX(CtyCod),
INDEX(InsCod),
@ -786,7 +772,72 @@ CREATE TABLE IF NOT EXISTS log_full (
INDEX(DegCod),
INDEX(CrsCod),
INDEX(UsrCod),
INDEX(ClickTime,Role));
INDEX(ClickTime,Role)
) ENGINE=InnoDB
PARTITION BY RANGE (YEAR(ClickTime))
(
PARTITION p2004 VALUES LESS THAN (2005),
PARTITION p2005 VALUES LESS THAN (2006),
PARTITION p2006 VALUES LESS THAN (2007),
PARTITION p2007 VALUES LESS THAN (2008),
PARTITION p2008 VALUES LESS THAN (2009),
PARTITION p2009 VALUES LESS THAN (2010),
PARTITION p2010 VALUES LESS THAN (2011),
PARTITION p2011 VALUES LESS THAN (2012),
PARTITION p2012 VALUES LESS THAN (2013),
PARTITION p2013 VALUES LESS THAN (2014),
PARTITION p2014 VALUES LESS THAN (2015),
PARTITION p2015 VALUES LESS THAN (2016),
PARTITION p2016 VALUES LESS THAN (2017),
PARTITION p2017 VALUES LESS THAN (2018),
PARTITION p2018 VALUES LESS THAN (2019),
PARTITION p2019 VALUES LESS THAN (2020),
PARTITION p2020 VALUES LESS THAN (2021),
PARTITION p2021 VALUES LESS THAN (2022),
PARTITION p2022 VALUES LESS THAN (2023),
PARTITION p2023 VALUES LESS THAN (2024),
PARTITION p2024 VALUES LESS THAN (2025),
PARTITION p2025 VALUES LESS THAN (2026),
PARTITION p2026 VALUES LESS THAN (2027),
PARTITION p2027 VALUES LESS THAN (2028),
PARTITION p2028 VALUES LESS THAN (2029),
PARTITION p2029 VALUES LESS THAN (2030),
PARTITION p2030 VALUES LESS THAN (2031),
PARTITION p2031 VALUES LESS THAN (2032),
PARTITION p2032 VALUES LESS THAN (2033),
PARTITION p2033 VALUES LESS THAN (2034),
PARTITION p2034 VALUES LESS THAN (2035),
PARTITION p2035 VALUES LESS THAN (2036),
PARTITION p2036 VALUES LESS THAN (2037),
PARTITION p2037 VALUES LESS THAN (2038),
PARTITION p2038 VALUES LESS THAN (2039),
PARTITION p2039 VALUES LESS THAN (2040),
PARTITION p2040 VALUES LESS THAN (2041),
PARTITION p2041 VALUES LESS THAN (2042),
PARTITION p2042 VALUES LESS THAN (2043),
PARTITION p2043 VALUES LESS THAN (2044),
PARTITION p2044 VALUES LESS THAN (2045),
PARTITION p2045 VALUES LESS THAN (2046),
PARTITION p2046 VALUES LESS THAN (2047),
PARTITION p2047 VALUES LESS THAN (2048),
PARTITION p2048 VALUES LESS THAN (2049),
PARTITION p2049 VALUES LESS THAN (2050),
PARTITION p2050 VALUES LESS THAN MAXVALUE
);
--
-- Table log_banners: stores the log of clicked banners
--
CREATE TABLE IF NOT EXISTS log_banners (
LogCod INT NOT NULL,
BanCod INT NOT NULL,
UNIQUE INDEX(LogCod),INDEX(BanCod));
--
-- Table log_comments: stores the comments about errors associated to the log
--
CREATE TABLE IF NOT EXISTS log_comments (
LogCod INT NOT NULL,
Comments TEXT NOT NULL,
UNIQUE INDEX(LogCod));
--
-- Table log_recent: stores the log of the most recent clicks, used to speed up queries related to log
--

View File

@ -497,7 +497,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 19.162 (2020-04-04)"
#define Log_PLATFORM_VERSION "SWAD 19.163 (2020-04-05)"
#define CSS_FILE "swad19.146.css"
#define JS_FILE "swad19.153.js"
/*
@ -528,6 +528,29 @@ Param
// TODO: Oresti Baños: cambiar ojos por candados en descriptores para prohibir/permitir y dejar los ojos para poder elegir descriptores
// TODO: Integrar pull requests con traducciones del alemán del usuario eruedin en GitHub
Version 19.163: Apr 05, 2020 Log table is now partitioned by years. (284617 lines)
20 changes necessary in database:
CREATE TABLE IF NOT EXISTS log (LogCod INT NOT NULL AUTO_INCREMENT,ActCod INT NOT NULL DEFAULT -1,CtyCod INT NOT NULL DEFAULT -1,InsCod INT NOT NULL DEFAULT -1,CtrCod INT NOT NULL DEFAULT -1,DegCod INT NOT NULL DEFAULT -1,CrsCod INT NOT NULL DEFAULT -1,UsrCod INT NOT NULL DEFAULT -1,Role TINYINT NOT NULL,ClickTime DATETIME NOT NULL,TimeToGenerate INT NOT NULL,TimeToSend INT NOT NULL,IP CHAR(15) NOT NULL,PRIMARY KEY(LogCod,ClickTime),INDEX(ActCod),INDEX(CtyCod),INDEX(InsCod),INDEX(CtrCod),INDEX(DegCod),INDEX(CrsCod),INDEX(UsrCod),INDEX(ClickTime,Role)) ENGINE=InnoDB PARTITION BY RANGE (YEAR(ClickTime)) (PARTITION p2004 VALUES LESS THAN (2005),PARTITION p2005 VALUES LESS THAN (2006),PARTITION p2006 VALUES LESS THAN (2007),PARTITION p2007 VALUES LESS THAN (2008),PARTITION p2008 VALUES LESS THAN (2009),PARTITION p2009 VALUES LESS THAN (2010),PARTITION p2010 VALUES LESS THAN (2011),PARTITION p2011 VALUES LESS THAN (2012),PARTITION p2012 VALUES LESS THAN (2013),PARTITION p2013 VALUES LESS THAN (2014),PARTITION p2014 VALUES LESS THAN (2015),PARTITION p2015 VALUES LESS THAN (2016),PARTITION p2016 VALUES LESS THAN (2017),PARTITION p2017 VALUES LESS THAN (2018),PARTITION p2018 VALUES LESS THAN (2019),PARTITION p2019 VALUES LESS THAN (2020),PARTITION p2020 VALUES LESS THAN (2021),PARTITION p2021 VALUES LESS THAN (2022),PARTITION p2022 VALUES LESS THAN (2023),PARTITION p2023 VALUES LESS THAN (2024),PARTITION p2024 VALUES LESS THAN (2025),PARTITION p2025 VALUES LESS THAN (2026),PARTITION p2026 VALUES LESS THAN (2027),PARTITION p2027 VALUES LESS THAN (2028),PARTITION p2028 VALUES LESS THAN (2029),PARTITION p2029 VALUES LESS THAN (2030),PARTITION p2030 VALUES LESS THAN (2031),PARTITION p2031 VALUES LESS THAN (2032),PARTITION p2032 VALUES LESS THAN (2033),PARTITION p2033 VALUES LESS THAN (2034),PARTITION p2034 VALUES LESS THAN (2035),PARTITION p2035 VALUES LESS THAN (2036),PARTITION p2036 VALUES LESS THAN (2037),PARTITION p2037 VALUES LESS THAN (2038),PARTITION p2038 VALUES LESS THAN (2039),PARTITION p2039 VALUES LESS THAN (2040),PARTITION p2040 VALUES LESS THAN (2041),PARTITION p2041 VALUES LESS THAN (2042),PARTITION p2042 VALUES LESS THAN (2043),PARTITION p2043 VALUES LESS THAN (2044),PARTITION p2044 VALUES LESS THAN (2045),PARTITION p2045 VALUES LESS THAN (2046),PARTITION p2046 VALUES LESS THAN (2047),PARTITION p2047 VALUES LESS THAN (2048),PARTITION p2048 VALUES LESS THAN (2049),PARTITION p2049 VALUES LESS THAN (2050),PARTITION p2050 VALUES LESS THAN MAXVALUE);
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) < 2005;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2005;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2006;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2007;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2008;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2009;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2010;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2011;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2012;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2013;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2014;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2015;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2016;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2017;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2018;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2019;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) = 2020;
INSERT INTO log SELECT * FROM log_full WHERE YEAR(ClickTime) > 2020;
RENAME TABLE log_full TO log_old;
Version 19.162: Apr 04, 2020 Code refactoring in tests. (284492 lines)
Version 19.161: Apr 04, 2020 Code refactoring in tests. (284529 lines)
Version 19.160.1: Apr 03, 2020 Score calculated is removed from each test question. (284817 lines)

View File

@ -1625,6 +1625,104 @@ mysql> DESCRIBE links;
"WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW
"UNIQUE INDEX(LnkCod))");
/***** Table log *****/
/*
mysql> DESCRIBE log;
+----------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------+------+-----+---------+----------------+
| LogCod | int(11) | NO | PRI | NULL | auto_increment |
| ActCod | int(11) | NO | MUL | -1 | |
| CtyCod | int(11) | NO | MUL | -1 | |
| InsCod | int(11) | NO | MUL | -1 | |
| CtrCod | int(11) | NO | MUL | -1 | |
| DegCod | int(11) | NO | MUL | -1 | |
| CrsCod | int(11) | NO | MUL | -1 | |
| UsrCod | int(11) | NO | MUL | -1 | |
| Role | tinyint(4) | NO | | NULL | |
| ClickTime | datetime | NO | PRI | NULL | |
| TimeToGenerate | int(11) | NO | | NULL | |
| TimeToSend | int(11) | NO | | NULL | |
| IP | char(15) | NO | | NULL | |
+----------------+------------+------+-----+---------+----------------+
13 rows in set (0.00 sec)
*/
// TODO: Change NtfCod and LogCod from INT to BIGINT in database tables.
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log ("
"LogCod INT NOT NULL AUTO_INCREMENT,"
"ActCod INT NOT NULL DEFAULT -1,"
"CtyCod INT NOT NULL DEFAULT -1,"
"InsCod INT NOT NULL DEFAULT -1,"
"CtrCod INT NOT NULL DEFAULT -1,"
"DegCod INT NOT NULL DEFAULT -1,"
"CrsCod INT NOT NULL DEFAULT -1,"
"UsrCod INT NOT NULL DEFAULT -1,"
"Role TINYINT NOT NULL,"
"ClickTime DATETIME NOT NULL,"
"TimeToGenerate INT NOT NULL,"
"TimeToSend INT NOT NULL,"
"IP CHAR(15) NOT NULL,"
"PRIMARY KEY(LogCod,ClickTime),"
"INDEX(ActCod),"
"INDEX(CtyCod),"
"INDEX(InsCod),"
"INDEX(CtrCod),"
"INDEX(DegCod),"
"INDEX(CrsCod),"
"INDEX(UsrCod),"
"INDEX(ClickTime,Role)"
") ENGINE=InnoDB"
" PARTITION BY RANGE (YEAR(ClickTime))"
" ("
"PARTITION p2004 VALUES LESS THAN (2005),"
"PARTITION p2005 VALUES LESS THAN (2006),"
"PARTITION p2006 VALUES LESS THAN (2007),"
"PARTITION p2007 VALUES LESS THAN (2008),"
"PARTITION p2008 VALUES LESS THAN (2009),"
"PARTITION p2009 VALUES LESS THAN (2010),"
"PARTITION p2010 VALUES LESS THAN (2011),"
"PARTITION p2011 VALUES LESS THAN (2012),"
"PARTITION p2012 VALUES LESS THAN (2013),"
"PARTITION p2013 VALUES LESS THAN (2014),"
"PARTITION p2014 VALUES LESS THAN (2015),"
"PARTITION p2015 VALUES LESS THAN (2016),"
"PARTITION p2016 VALUES LESS THAN (2017),"
"PARTITION p2017 VALUES LESS THAN (2018),"
"PARTITION p2018 VALUES LESS THAN (2019),"
"PARTITION p2019 VALUES LESS THAN (2020),"
"PARTITION p2020 VALUES LESS THAN (2021),"
"PARTITION p2021 VALUES LESS THAN (2022),"
"PARTITION p2022 VALUES LESS THAN (2023),"
"PARTITION p2023 VALUES LESS THAN (2024),"
"PARTITION p2024 VALUES LESS THAN (2025),"
"PARTITION p2025 VALUES LESS THAN (2026),"
"PARTITION p2026 VALUES LESS THAN (2027),"
"PARTITION p2027 VALUES LESS THAN (2028),"
"PARTITION p2028 VALUES LESS THAN (2029),"
"PARTITION p2029 VALUES LESS THAN (2030),"
"PARTITION p2030 VALUES LESS THAN (2031),"
"PARTITION p2031 VALUES LESS THAN (2032),"
"PARTITION p2032 VALUES LESS THAN (2033),"
"PARTITION p2033 VALUES LESS THAN (2034),"
"PARTITION p2034 VALUES LESS THAN (2035),"
"PARTITION p2035 VALUES LESS THAN (2036),"
"PARTITION p2036 VALUES LESS THAN (2037),"
"PARTITION p2037 VALUES LESS THAN (2038),"
"PARTITION p2038 VALUES LESS THAN (2039),"
"PARTITION p2039 VALUES LESS THAN (2040),"
"PARTITION p2040 VALUES LESS THAN (2041),"
"PARTITION p2041 VALUES LESS THAN (2042),"
"PARTITION p2042 VALUES LESS THAN (2043),"
"PARTITION p2043 VALUES LESS THAN (2044),"
"PARTITION p2044 VALUES LESS THAN (2045),"
"PARTITION p2045 VALUES LESS THAN (2046),"
"PARTITION p2046 VALUES LESS THAN (2047),"
"PARTITION p2047 VALUES LESS THAN (2048),"
"PARTITION p2048 VALUES LESS THAN (2049),"
"PARTITION p2049 VALUES LESS THAN (2050),"
"PARTITION p2050 VALUES LESS THAN MAXVALUE"
")");
/***** Table log_banners *****/
/*
mysql> DESCRIBE log_banners;
@ -1654,58 +1752,12 @@ mysql> DESCRIBE log_comments;
+----------+---------+------+-----+---------+-------+
2 rows in set (0,00 sec)
*/
// TODO: Change NtfCod and LogCod from INT to BIGINT in database tables.
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_comments ("
"LogCod INT NOT NULL,"
"Comments TEXT NOT NULL,"
"UNIQUE INDEX(LogCod))");
/***** Table log_full *****/
/*
mysql> DESCRIBE log_full;
+----------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------+------+-----+---------+----------------+
| LogCod | int(11) | NO | PRI | NULL | auto_increment |
| ActCod | int(11) | NO | MUL | -1 | |
| CtyCod | int(11) | NO | MUL | -1 | |
| InsCod | int(11) | NO | MUL | -1 | |
| CtrCod | int(11) | NO | MUL | -1 | |
| DegCod | int(11) | NO | MUL | -1 | |
| CrsCod | int(11) | NO | MUL | -1 | |
| UsrCod | int(11) | NO | MUL | -1 | |
| Role | tinyint(4) | NO | | NULL | |
| ClickTime | datetime | NO | MUL | NULL | |
| TimeToGenerate | int(11) | NO | | NULL | |
| TimeToSend | int(11) | NO | | NULL | |
| IP | char(15) | NO | | NULL | |
+----------------+------------+------+-----+---------+----------------+
13 rows in set (0.01 sec)
*/
// TODO: Change NtfCod and LogCod from INT to BIGINT in database tables.
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log ("
"LogCod INT NOT NULL AUTO_INCREMENT,"
"ActCod INT NOT NULL DEFAULT -1,"
"CtyCod INT NOT NULL DEFAULT -1,"
"InsCod INT NOT NULL DEFAULT -1,"
"CtrCod INT NOT NULL DEFAULT -1,"
"DegCod INT NOT NULL DEFAULT -1,"
"CrsCod INT NOT NULL DEFAULT -1,"
"UsrCod INT NOT NULL DEFAULT -1,"
"Role TINYINT NOT NULL,"
"ClickTime DATETIME NOT NULL,"
"TimeToGenerate INT NOT NULL,"
"TimeToSend INT NOT NULL,"
"IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP
"UNIQUE INDEX(LogCod),"
"INDEX(ActCod),"
"INDEX(CtyCod),"
"INDEX(InsCod),"
"INDEX(CtrCod),"
"INDEX(DegCod),"
"INDEX(CrsCod),"
"INDEX(UsrCod),"
"INDEX(ClickTime,Role))");
/***** Table log_recent *****/
/*
mysql> DESCRIBE log_recent;

View File

@ -80,10 +80,10 @@ void Log_LogAccess (const char *Comments)
Gbl.Usrs.Me.Role.Logged;
/***** Insert access into database *****/
/* Log access in historical log (log_full) */
/* Log access in historical log */
LogCod =
DB_QueryINSERTandReturnCode ("can not log access (full)",
"INSERT INTO log_full "
DB_QueryINSERTandReturnCode ("can not log access",
"INSERT INTO log "
"(ActCod,CtyCod,InsCod,CtrCod,DegCod,CrsCod,UsrCod,"
"Role,ClickTime,TimeToGenerate,TimeToSend,IP)"
" VALUES "

View File

@ -1048,7 +1048,7 @@ static void Prf_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod)
/***** Get first click from log table *****/
if (DB_QuerySELECT (&mysql_res,"can not get user's first click",
"SELECT UNIX_TIMESTAMP("
"(SELECT MIN(ClickTime) FROM log_full"
"(SELECT MIN(ClickTime) FROM log"
" WHERE UsrCod=%ld)"
")",
UsrCod))
@ -1091,7 +1091,7 @@ static void Prf_GetNumClicksAndStoreAsUsrFigure (long UsrCod)
/***** Get number of clicks from database *****/
UsrFigures.NumClicks =
(long) DB_QueryCOUNT ("can not get number of clicks",
"SELECT COUNT(*) FROM log_full"
"SELECT COUNT(*) FROM log"
" WHERE UsrCod=%ld",
UsrCod);

View File

@ -787,7 +787,7 @@ static void Rep_WriteSectionHitsPerAction (struct Rep_Report *Report)
/***** Make the query *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get clicks",
"SELECT SQL_NO_CACHE ActCod,COUNT(*) AS N"
" FROM log_full"
" FROM log"
" WHERE ClickTime>=FROM_UNIXTIME(%ld)"
" AND UsrCod=%ld"
" GROUP BY ActCod ORDER BY N DESC LIMIT %u",
@ -933,7 +933,7 @@ static void Rep_GetMaxHitsPerYear (struct Rep_Report *Report)
"YEAR(CONVERT_TZ(ClickTime,@@session.time_zone,'UTC')) AS Year,"
"%u AS Role,"
"COUNT(*) AS N"
" FROM log_full"
" FROM log"
" WHERE ClickTime>=FROM_UNIXTIME(%ld)"
" AND UsrCod=%ld"
" AND CrsCod<=0"
@ -946,7 +946,7 @@ static void Rep_GetMaxHitsPerYear (struct Rep_Report *Report)
"YEAR(CONVERT_TZ(ClickTime,@@session.time_zone,'UTC')) AS Year,"
"Role,"
"COUNT(*) AS N"
" FROM log_full"
" FROM log"
" WHERE ClickTime>=FROM_UNIXTIME(%ld)"
" AND UsrCod=%ld"
" AND Role>=%u" // Student
@ -1016,15 +1016,15 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role,
/***** Get courses of a user from database *****/
NumCrss =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get courses of a user",
"SELECT crs_usr.CrsCod,log_full.CrsCod,COUNT(*) AS N"
" FROM crs_usr LEFT JOIN log_full ON"
" (crs_usr.CrsCod=log_full.CrsCod"
" AND crs_usr.UsrCod=log_full.UsrCod"
" AND crs_usr.Role=log_full.Role)"
"SELECT crs_usr.CrsCod,log.CrsCod,COUNT(*) AS N"
" FROM crs_usr LEFT JOIN log ON"
" (crs_usr.CrsCod=log.CrsCod"
" AND crs_usr.UsrCod=log.UsrCod"
" AND crs_usr.Role=log.Role)"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" GROUP BY crs_usr.CrsCod"
" ORDER BY N DESC,log_full.CrsCod DESC",
" ORDER BY N DESC,log.CrsCod DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Role);
/***** List the courses (one row per course) *****/
@ -1103,7 +1103,7 @@ static void Rep_GetAndWriteMyHistoricCrss (Rol_Role_t Role,
NumCrss =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get courses of a user",
"SELECT CrsCod,COUNT(*) AS N"
" FROM log_full"
" FROM log"
" WHERE UsrCod=%ld AND Role=%u AND CrsCod>0"
" GROUP BY CrsCod"
" HAVING N>%u"
@ -1241,7 +1241,7 @@ static void Rep_ShowMyHitsPerYear (bool AnyCourse,long CrsCod,Rol_Role_t Role,
NumRows = DB_QuerySELECT (&mysql_res,"can not get clicks",
"SELECT SQL_NO_CACHE "
"YEAR(CONVERT_TZ(ClickTime,@@session.time_zone,'UTC')) AS Year,"
"COUNT(*) FROM log_full"
"COUNT(*) FROM log"
" WHERE ClickTime>=FROM_UNIXTIME(%ld)"
" AND UsrCod=%ld%s%s"
" GROUP BY Year DESC",

View File

@ -720,7 +720,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
then use recent log table, else use historic log table */
LogTable = (Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,&Gbl.Now.Date)
<= Cfg_DAYS_IN_RECENT_LOG) ? "log_recent" :
"log_full";
"log";
/***** Get the type of stat of clicks ******/
DetailedOrGrouped = (Sta_ClicksDetailedOrGrouped_t)