Version 20.51.32: Mar 23, 2021 Course users database table renamed.

This commit is contained in:
acanas 2021-03-23 16:47:29 +01:00
parent 9ca0572f66
commit 1f2bd46bc2
29 changed files with 2197 additions and 1996 deletions

View File

@ -368,9 +368,9 @@ CREATE TABLE IF NOT EXISTS crs_records (
Txt TEXT NOT NULL, Txt TEXT NOT NULL,
UNIQUE INDEX(FieldCod,UsrCod)); UNIQUE INDEX(FieldCod,UsrCod));
-- --
-- Table crs_usr: stores who users belong to what courses -- Table crs_users: stores who users belong to what courses
-- --
CREATE TABLE IF NOT EXISTS crs_usr ( CREATE TABLE IF NOT EXISTS crs_users (
CrsCod INT NOT NULL, CrsCod INT NOT NULL,
UsrCod INT NOT NULL, UsrCod INT NOT NULL,
Role TINYINT NOT NULL DEFAULT 0, Role TINYINT NOT NULL DEFAULT 0,

View File

@ -661,9 +661,12 @@ static bool API_GetSomeUsrDataFromUsrCod (struct UsrData *UsrDat,long CrsCod)
{ {
/* Get the role in the given course */ /* Get the role in the given course */
if (DB_QuerySELECT (&mysql_res,"can not get user's role", if (DB_QuerySELECT (&mysql_res,"can not get user's role",
"SELECT Role FROM crs_usr" "SELECT Role"
" WHERE CrsCod=%ld AND UsrCod=%ld", " FROM crs_users"
CrsCod,UsrDat->UsrCod)) // User belongs to course " WHERE CrsCod=%ld"
" AND UsrCod=%ld",
CrsCod,
UsrDat->UsrCod)) // User belongs to course
{ {
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (row[0]) if (row[0])
@ -693,7 +696,8 @@ static bool API_GetSomeUsrDataFromUsrCod (struct UsrData *UsrDat,long CrsCod)
/* Get the maximum role in any course */ /* Get the maximum role in any course */
if (DB_QuerySELECT (&mysql_res,"can not get user's role", if (DB_QuerySELECT (&mysql_res,"can not get user's role",
"SELECT MAX(Role)" "SELECT MAX(Role)"
" FROM crs_usr WHERE UsrCod=%ld", " FROM crs_users"
" WHERE UsrCod=%ld",
UsrDat->UsrCod) == 1) UsrDat->UsrCod) == 1)
{ {
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -1375,11 +1379,11 @@ int swad__getCourses (struct soap *soap,
"SELECT crs_courses.CrsCod," "SELECT crs_courses.CrsCod,"
"crs_courses.ShortName," "crs_courses.ShortName,"
"crs_courses.FullName," "crs_courses.FullName,"
"crs_usr.Role" "crs_users.Role"
" FROM crs_usr," " FROM crs_users,"
"crs_courses" "crs_courses"
" WHERE crs_usr.UsrCod=%ld" " WHERE crs_users.UsrCod=%ld"
" AND crs_usr.CrsCod=crs_courses.CrsCod" " AND crs_users.CrsCod=crs_courses.CrsCod"
" ORDER BY crs_courses.FullName", " ORDER BY crs_courses.FullName",
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod);
@ -3013,18 +3017,18 @@ int swad__getAttendanceUsers (struct soap *soap,
// Subquery: list of users in groups of this attendance event... // Subquery: list of users in groups of this attendance event...
// ...who have no entry in attendance list of users // ...who have no entry in attendance list of users
sprintf (SubQuery,"SELECT DISTINCT crs_grp_usr.UsrCod AS UsrCod," sprintf (SubQuery,"SELECT DISTINCT crs_grp_usr.UsrCod AS UsrCod,"
"'N' AS Present" "'N' AS Present"
" FROM att_groups," " FROM att_groups,"
"crs_grp," "crs_grp,"
"crs_grp_types," "crs_grp_types,"
"crs_usr," "crs_users,"
"crs_grp_usr" "crs_grp_usr"
" WHERE att_groups.AttCod=%ld" " WHERE att_groups.AttCod=%ld"
" AND att_groups.GrpCod=crs_grp.GrpCod" " AND att_groups.GrpCod=crs_grp.GrpCod"
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod" " AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=crs_usr.CrsCod" " AND crs_grp_types.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=crs_grp_usr.UsrCod" " AND crs_users.UsrCod=crs_grp_usr.UsrCod"
" AND crs_grp_usr.GrpCod=att_groups.GrpCod" " AND crs_grp_usr.GrpCod=att_groups.GrpCod"
" AND crs_grp_usr.UsrCod NOT IN" " AND crs_grp_usr.UsrCod NOT IN"
" (SELECT UsrCod" " (SELECT UsrCod"
@ -3037,14 +3041,14 @@ int swad__getAttendanceUsers (struct soap *soap,
// Event for the whole course // Event for the whole course
// Subquery: list of users in the course of this attendance event... // Subquery: list of users in the course of this attendance event...
// ...who have no entry in attendance list of users // ...who have no entry in attendance list of users
sprintf (SubQuery,"SELECT crs_usr.UsrCod AS UsrCod," // row[0] sprintf (SubQuery,"SELECT crs_users.UsrCod AS UsrCod," // row[0]
"'N' AS Present" // row[1] "'N' AS Present" // row[1]
" FROM att_events," " FROM att_events,"
"crs_usr" "crs_users"
" WHERE att_events.AttCod=%ld" " WHERE att_events.AttCod=%ld"
" AND att_events.CrsCod=crs_usr.CrsCod" " AND att_events.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod NOT IN" " AND crs_users.UsrCod NOT IN"
" (SELECT UsrCod" " (SELECT UsrCod"
" FROM att_users" " FROM att_users"
" WHERE AttCod=%ld)", " WHERE AttCod=%ld)",
@ -6143,19 +6147,19 @@ int swad__getLastLocation (struct soap *soap,
if (DB_QueryCOUNT ("can not get session data", if (DB_QueryCOUNT ("can not get session data",
"SELECT COUNT(*) FROM " "SELECT COUNT(*) FROM "
"(SELECT DISTINCT deg_degrees.CtrCod" "(SELECT DISTINCT deg_degrees.CtrCod"
" FROM crs_usr," " FROM crs_users,"
"crs_courses," "crs_courses,"
"deg_degrees" "deg_degrees"
" WHERE crs_usr.UsrCod=%ld" " WHERE crs_users.UsrCod=%ld"
" AND crs_usr.CrsCod=crs_courses.CrsCod" " AND crs_users.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod) AS C1," // centers of my courses " AND crs_courses.DegCod=deg_degrees.DegCod) AS C1," // centers of my courses
"(SELECT DISTINCT deg_degrees.CtrCod" "(SELECT DISTINCT deg_degrees.CtrCod"
" FROM crs_usr," " FROM crs_users,"
"crs_courses," "crs_courses,"
"deg_degrees" "deg_degrees"
" WHERE crs_usr.UsrCod=%d" " WHERE crs_users.UsrCod=%d"
" AND crs_usr.CrsCod=crs_courses.CrsCod" " AND crs_users.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod) AS C2" // centers of user's courses " AND crs_courses.DegCod=deg_degrees.DegCod) AS C2" // centers of user's courses
" WHERE C1.CtrCod=C2.CtrCod", " WHERE C1.CtrCod=C2.CtrCod",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
userCode)) userCode))

View File

@ -1048,10 +1048,12 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
/***** Remove user from the tables of courses and users *****/ /***** Remove user from the tables of courses and users *****/
DB_QueryDELETE ("can not remove a user from all courses", DB_QueryDELETE ("can not remove a user from all courses",
"DELETE FROM crs_usr_last WHERE UsrCod=%ld", "DELETE FROM crs_usr_last"
" WHERE UsrCod=%ld",
UsrDat->UsrCod); UsrDat->UsrCod);
DB_QueryDELETE ("can not remove a user from all courses", DB_QueryDELETE ("can not remove a user from all courses",
"DELETE FROM crs_usr WHERE UsrCod=%ld", "DELETE FROM crs_users"
" WHERE UsrCod=%ld",
UsrDat->UsrCod); UsrDat->UsrCod);
if (QuietOrVerbose == Cns_VERBOSE) if (QuietOrVerbose == Cns_VERBOSE)

View File

@ -1893,70 +1893,70 @@ unsigned Agd_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
case Hie_Lvl_CTY: case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of users with events", DB_QuerySELECT (&mysql_res,"can not get number of users with events",
"SELECT COUNT(DISTINCT agd_agendas.UsrCod)" "SELECT COUNT(DISTINCT agd_agendas.UsrCod)"
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"agd_agendas" "agd_agendas"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0" " AND crs_courses.Status=0"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=agd_agendas.UsrCod", " AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Cty.CtyCod); Gbl.Hierarchy.Cty.CtyCod);
break; break;
case Hie_Lvl_INS: case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of users with events", DB_QuerySELECT (&mysql_res,"can not get number of users with events",
"SELECT COUNT(DISTINCT agd_agendas.UsrCod)" "SELECT COUNT(DISTINCT agd_agendas.UsrCod)"
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"agd_agendas" "agd_agendas"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0" " AND crs_courses.Status=0"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=agd_agendas.UsrCod", " AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Ins.InsCod); Gbl.Hierarchy.Ins.InsCod);
break; break;
case Hie_Lvl_CTR: case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of users with events", DB_QuerySELECT (&mysql_res,"can not get number of users with events",
"SELECT COUNT(DISTINCT agd_agendas.UsrCod)" "SELECT COUNT(DISTINCT agd_agendas.UsrCod)"
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"agd_agendas" "agd_agendas"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0" " AND crs_courses.Status=0"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=agd_agendas.UsrCod", " AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod); Gbl.Hierarchy.Ctr.CtrCod);
break; break;
case Hie_Lvl_DEG: case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of users with events", DB_QuerySELECT (&mysql_res,"can not get number of users with events",
"SELECT COUNT(DISTINCT agd_agendas.UsrCod)" "SELECT COUNT(DISTINCT agd_agendas.UsrCod)"
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"agd_agendas" "agd_agendas"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.Status=0" " AND crs_courses.Status=0"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=agd_agendas.UsrCod", " AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Deg.DegCod); Gbl.Hierarchy.Deg.DegCod);
break; break;
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of users with events", DB_QuerySELECT (&mysql_res,"can not get number of users with events",
"SELECT COUNT(DISTINCT agd_agendas.UsrCod)" "SELECT COUNT(DISTINCT agd_agendas.UsrCod)"
" FROM crs_usr," " FROM crs_users,"
"agd_agendas" "agd_agendas"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=agd_agendas.UsrCod", " AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:
@ -1998,66 +1998,66 @@ unsigned Agd_GetNumEvents (Hie_Lvl_Level_t Scope)
case Hie_Lvl_CTY: case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of events", DB_QuerySELECT (&mysql_res,"can not get number of events",
"SELECT COUNT(*)" "SELECT COUNT(*)"
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"agd_agendas" "agd_agendas"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=agd_agendas.UsrCod", " AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Cty.CtyCod); Gbl.Hierarchy.Cty.CtyCod);
break; break;
case Hie_Lvl_INS: case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of events", DB_QuerySELECT (&mysql_res,"can not get number of events",
"SELECT COUNT(*)" "SELECT COUNT(*)"
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"agd_agendas" "agd_agendas"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=agd_agendas.UsrCod", " AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Ins.InsCod); Gbl.Hierarchy.Ins.InsCod);
break; break;
case Hie_Lvl_CTR: case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of events", DB_QuerySELECT (&mysql_res,"can not get number of events",
"SELECT COUNT(*)" "SELECT COUNT(*)"
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"agd_agendas" "agd_agendas"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=agd_agendas.UsrCod", " AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod); Gbl.Hierarchy.Ctr.CtrCod);
break; break;
case Hie_Lvl_DEG: case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of events", DB_QuerySELECT (&mysql_res,"can not get number of events",
"SELECT COUNT(*)" "SELECT COUNT(*)"
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"agd_agendas" "agd_agendas"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=agd_agendas.UsrCod", " AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Deg.DegCod); Gbl.Hierarchy.Deg.DegCod);
break; break;
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of events", DB_QuerySELECT (&mysql_res,"can not get number of events",
"SELECT COUNT(*)" "SELECT COUNT(*)"
" FROM crs_usr," " FROM crs_users,"
"agd_agendas" "agd_agendas"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=agd_agendas.UsrCod", " AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:

View File

@ -2202,16 +2202,17 @@ unsigned Ctr_GetCachedNumCtrsWithUsrs (Rol_Role_t Role,const char *SubQuery,
NumCtrsWithUsrs = (unsigned) NumCtrsWithUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of centers with users", DB_QueryCOUNT ("can not get number of centers with users",
"SELECT COUNT(DISTINCT ctr_centers.CtrCod)" "SELECT COUNT(DISTINCT ctr_centers.CtrCod)"
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr" "crs_users"
" WHERE %sinstitutions.InsCod=ctr_centers.InsCod" " WHERE %s"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" "institutions.InsCod=ctr_centers.InsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_usr.Role=%u", " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.Role=%u",
SubQuery,(unsigned) Role); SubQuery,(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureCtrs[Role],Scope,Cod, FigCch_UpdateFigureIntoCache (FigureCtrs[Role],Scope,Cod,
FigCch_UNSIGNED,&NumCtrsWithUsrs); FigCch_UNSIGNED,&NumCtrsWithUsrs);

View File

@ -600,13 +600,18 @@ TODO: Salvador Romero Cort
TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria. TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria.
*/ */
#define Log_PLATFORM_VERSION "SWAD 20.51.31 (2021-03-23)" #define Log_PLATFORM_VERSION "SWAD 20.51.32 (2021-03-23)"
#define CSS_FILE "swad20.45.css" #define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.6.2.js" #define JS_FILE "swad20.6.2.js"
/* /*
TODO: Rename CENTRE to CENTER in help wiki. TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 20.51.32: Mar 23, 2021 Course users database table renamed. (308512 lines)
1 change necessary in database:
RENAME TABLE crs_usr TO crs_users;
DROP TABLE IF EXISTS crs_usr_copy;
Version 20.51.31: Mar 23, 2021 Attendance users database table renamed. (308312 lines) Version 20.51.31: Mar 23, 2021 Attendance users database table renamed. (308312 lines)
1 change necessary in database: 1 change necessary in database:
RENAME TABLE att_usr TO att_users; RENAME TABLE att_usr TO att_users;

View File

@ -512,15 +512,15 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_connected," "usr_connected,"
"usr_data" "usr_data"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod", " AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Cty.CtyCod); Gbl.Hierarchy.Cty.CtyCod);
break; break;
@ -534,14 +534,14 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_connected," "usr_connected,"
"usr_data" "usr_data"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod", " AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Ins.InsCod); Gbl.Hierarchy.Ins.InsCod);
break; break;
@ -554,13 +554,13 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
"MIN(usr_data.Sex)" // row[2] "MIN(usr_data.Sex)" // row[2]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_connected," "usr_connected,"
"usr_data" "usr_data"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod", " AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod); Gbl.Hierarchy.Ctr.CtrCod);
break; break;
@ -572,12 +572,12 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
"COUNT(DISTINCT usr_data.Sex)," // row[1] "COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2] "MIN(usr_data.Sex)" // row[2]
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"usr_connected," "usr_connected,"
"usr_data" "usr_data"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod", " AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Deg.DegCod); Gbl.Hierarchy.Deg.DegCod);
break; break;
@ -588,11 +588,11 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
"SELECT COUNT(DISTINCT usr_connected.UsrCod)," // row[0] "SELECT COUNT(DISTINCT usr_connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1] "COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2] "MIN(usr_data.Sex)" // row[2]
" FROM crs_usr," " FROM crs_users,"
"usr_connected," "usr_connected,"
"usr_data" "usr_data"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod", " AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
@ -610,7 +610,9 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
"MIN(usr_data.Sex)" // row[2] "MIN(usr_data.Sex)" // row[2]
" FROM usr_connected," " FROM usr_connected,"
"usr_data" "usr_data"
" WHERE usr_connected.UsrCod NOT IN (SELECT UsrCod FROM crs_usr)" " WHERE usr_connected.UsrCod NOT IN"
" (SELECT UsrCod"
" FROM crs_users)"
" AND usr_connected.UsrCod=usr_data.UsrCod"); " AND usr_connected.UsrCod=usr_data.UsrCod");
break; break;
case Rol_STD: case Rol_STD:
@ -626,10 +628,10 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
"COUNT(DISTINCT usr_data.Sex)," // row[1] "COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2] "MIN(usr_data.Sex)" // row[2]
" FROM usr_connected," " FROM usr_connected,"
"crs_usr," "crs_users,"
"usr_data" "usr_data"
" WHERE usr_connected.UsrCod=crs_usr.UsrCod" " WHERE usr_connected.UsrCod=crs_users.UsrCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND usr_connected.UsrCod=usr_data.UsrCod", " AND usr_connected.UsrCod=usr_data.UsrCod",
(unsigned) Role); (unsigned) Role);
break; break;
@ -644,16 +646,16 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_connected," "usr_connected,"
"usr_data" "usr_data"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod", " AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Cty.CtyCod, Gbl.Hierarchy.Cty.CtyCod,
(unsigned) Role); (unsigned) Role);
@ -668,15 +670,15 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_connected," "usr_connected,"
"usr_data" "usr_data"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod", " AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Ins.InsCod, Gbl.Hierarchy.Ins.InsCod,
(unsigned) Role); (unsigned) Role);
@ -690,14 +692,14 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
"MIN(usr_data.Sex)" // row[2] "MIN(usr_data.Sex)" // row[2]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_connected," "usr_connected,"
"usr_data" "usr_data"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod", " AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod, Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) Role); (unsigned) Role);
@ -710,13 +712,13 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
"COUNT(DISTINCT usr_data.Sex)," // row[1] "COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2] "MIN(usr_data.Sex)" // row[2]
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"usr_connected," "usr_connected,"
"usr_data" "usr_data"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod", " AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Deg.DegCod, Gbl.Hierarchy.Deg.DegCod,
(unsigned) Role); (unsigned) Role);
@ -728,12 +730,12 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
"SELECT COUNT(DISTINCT usr_connected.UsrCod)," // row[0] "SELECT COUNT(DISTINCT usr_connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1] "COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2] "MIN(usr_data.Sex)" // row[2]
" FROM crs_usr," " FROM crs_users,"
"usr_connected," "usr_connected,"
"usr_data" "usr_data"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod", " AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Role); (unsigned) Role);
@ -788,14 +790,14 @@ static void Con_ComputeConnectedUsrsWithARoleCurrentCrsOneByOne (Rol_Role_t Role
/***** Get connected users who belong to current course from database *****/ /***** Get connected users who belong to current course from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get list of connected users" NumRows = DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this course", " who belong to this course",
"SELECT usr_connected.UsrCod," "SELECT usr_connected.UsrCod," // row[0]
"usr_connected.LastCrsCod," "usr_connected.LastCrsCod," // row[1]
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(usr_connected.LastTime) AS Dif" "UNIX_TIMESTAMP()-UNIX_TIMESTAMP(usr_connected.LastTime) AS Dif" // row[2]
" FROM crs_usr," " FROM crs_users,"
"usr_connected" "usr_connected"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" ORDER BY Dif", " ORDER BY Dif",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Role); (unsigned) Role);
@ -969,8 +971,10 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
"LastCrsCod," // row[1] "LastCrsCod," // row[1]
"UNIX_TIMESTAMP()-" "UNIX_TIMESTAMP()-"
"UNIX_TIMESTAMP(LastTime) AS Dif" // row[2] "UNIX_TIMESTAMP(LastTime) AS Dif" // row[2]
" FROM usr_connected" " FROM usr_connected"
" WHERE UsrCod NOT IN (SELECT UsrCod FROM crs_usr)" " WHERE UsrCod NOT IN"
" (SELECT UsrCod"
" FROM crs_users)"
" ORDER BY Dif"); " ORDER BY Dif");
break; break;
case Rol_STD: case Rol_STD:
@ -988,9 +992,9 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
"UNIX_TIMESTAMP()-" "UNIX_TIMESTAMP()-"
"UNIX_TIMESTAMP(usr_connected.LastTime) AS Dif" // row[2] "UNIX_TIMESTAMP(usr_connected.LastTime) AS Dif" // row[2]
" FROM usr_connected," " FROM usr_connected,"
"crs_usr" "crs_users"
" WHERE usr_connected.UsrCod=crs_usr.UsrCod" " WHERE usr_connected.UsrCod=crs_users.UsrCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" ORDER BY Dif", " ORDER BY Dif",
(unsigned) Role); (unsigned) Role);
break; break;
@ -1007,15 +1011,15 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_connected" "usr_connected"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" ORDER BY Dif", " ORDER BY Dif",
Gbl.Hierarchy.Cty.CtyCod, Gbl.Hierarchy.Cty.CtyCod,
(unsigned) Role); (unsigned) Role);
@ -1032,14 +1036,14 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_connected" "usr_connected"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" ORDER BY Dif", " ORDER BY Dif",
Gbl.Hierarchy.Ins.InsCod, Gbl.Hierarchy.Ins.InsCod,
(unsigned) Role); (unsigned) Role);
@ -1055,13 +1059,13 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
"UNIX_TIMESTAMP(usr_connected.LastTime) AS Dif" // row[2] "UNIX_TIMESTAMP(usr_connected.LastTime) AS Dif" // row[2]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_connected" "usr_connected"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" ORDER BY Dif", " ORDER BY Dif",
Gbl.Hierarchy.Ctr.CtrCod, Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) Role); (unsigned) Role);
@ -1076,12 +1080,12 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
"UNIX_TIMESTAMP()-" "UNIX_TIMESTAMP()-"
"UNIX_TIMESTAMP(usr_connected.LastTime) AS Dif" // row[2] "UNIX_TIMESTAMP(usr_connected.LastTime) AS Dif" // row[2]
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"usr_connected" "usr_connected"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" ORDER BY Dif", " ORDER BY Dif",
Gbl.Hierarchy.Deg.DegCod, Gbl.Hierarchy.Deg.DegCod,
(unsigned) Role); (unsigned) Role);
@ -1094,11 +1098,11 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
"usr_connected.LastCrsCod," // row[1] "usr_connected.LastCrsCod," // row[1]
"UNIX_TIMESTAMP()-" "UNIX_TIMESTAMP()-"
"UNIX_TIMESTAMP(usr_connected.LastTime) AS Dif" // row[2] "UNIX_TIMESTAMP(usr_connected.LastTime) AS Dif" // row[2]
" FROM crs_usr," " FROM crs_users,"
"usr_connected" "usr_connected"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_connected.UsrCod" " AND crs_users.UsrCod=usr_connected.UsrCod"
" ORDER BY Dif", " ORDER BY Dif",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Role); (unsigned) Role);

View File

@ -2065,13 +2065,13 @@ unsigned Cty_GetCachedNumCtysWithUsrs (Rol_Role_t Role,const char *SubQuery,
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr" "crs_users"
" WHERE %scty_countrs.CtyCod=ins_instits.CtyCod" " WHERE %scty_countrs.CtyCod=ins_instits.CtyCod"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u", " AND crs_users.Role=%u",
SubQuery,(unsigned) Role); SubQuery,(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureCtys[Role],Scope,Cod, FigCch_UpdateFigureIntoCache (FigureCtys[Role],Scope,Cod,
FigCch_UNSIGNED,&NumCtysWithUsrs); FigCch_UNSIGNED,&NumCtysWithUsrs);

View File

@ -642,17 +642,19 @@ unsigned Crs_GetCachedNumCrssWithUsrs (Rol_Role_t Role,const char *SubQuery,
NumCrssWithUsrs = (unsigned) NumCrssWithUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of courses with users", DB_QueryCOUNT ("can not get number of courses with users",
"SELECT COUNT(DISTINCT crs_courses.CrsCod)" "SELECT COUNT(DISTINCT crs_courses.CrsCod)"
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr" "crs_users"
" WHERE %sinstitutions.InsCod=ctr_centers.InsCod" " WHERE %s"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" "institutions.InsCod=ctr_centers.InsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_usr.Role=%u", " AND crs_courses.CrsCod=crs_users.CrsCod"
SubQuery,(unsigned) Role); " AND crs_users.Role=%u",
SubQuery,
(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureCrss[Role],Scope,Cod, FigCch_UpdateFigureIntoCache (FigureCrss[Role],Scope,Cod,
FigCch_UNSIGNED,&NumCrssWithUsrs); FigCch_UNSIGNED,&NumCrssWithUsrs);
} }
@ -2025,36 +2027,43 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
/* Remove all the users in groups in the course */ /* Remove all the users in groups in the course */
DB_QueryDELETE ("can not remove users from groups of a course", DB_QueryDELETE ("can not remove users from groups of a course",
"DELETE FROM crs_grp_usr" "DELETE FROM crs_grp_usr"
" USING crs_grp_types,crs_grp,crs_grp_usr" " USING crs_grp_types,"
"crs_grp,"
"crs_grp_usr"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE crs_grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod", " AND crs_grp.GrpCod=crs_grp_usr.GrpCod",
CrsCod); CrsCod);
/* Remove all the groups in the course */ /* Remove all the groups in the course */
DB_QueryDELETE ("can not remove groups of a course", DB_QueryDELETE ("can not remove groups of a course",
"DELETE FROM crs_grp" "DELETE FROM crs_grp"
" USING crs_grp_types,crs_grp" " USING crs_grp_types,"
"crs_grp"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE crs_grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod", " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod",
CrsCod); CrsCod);
/* Remove all the group types in the course */ /* Remove all the group types in the course */
DB_QueryDELETE ("can not remove types of group of a course", DB_QueryDELETE ("can not remove types of group of a course",
"DELETE FROM crs_grp_types WHERE CrsCod=%ld", "DELETE FROM crs_grp_types"
" WHERE CrsCod=%ld",
CrsCod); CrsCod);
/***** Remove users' requests for inscription in the course *****/ /***** Remove users' requests for inscription in the course *****/
DB_QueryDELETE ("can not remove requests for inscription to a course", DB_QueryDELETE ("can not remove requests for inscription to a course",
"DELETE FROM crs_usr_requests WHERE CrsCod=%ld", "DELETE FROM crs_usr_requests"
" WHERE CrsCod=%ld",
CrsCod); CrsCod);
/***** Remove possible users remaining in the course (teachers) *****/ /***** Remove possible users remaining in the course (teachers) *****/
DB_QueryDELETE ("can not remove users from a course", DB_QueryDELETE ("can not remove users from a course",
"DELETE FROM crs_usr_last WHERE CrsCod=%ld", "DELETE FROM crs_usr_last"
" WHERE CrsCod=%ld",
CrsCod); CrsCod);
DB_QueryDELETE ("can not remove users from a course", DB_QueryDELETE ("can not remove users from a course",
"DELETE FROM crs_usr WHERE CrsCod=%ld", "DELETE FROM crs_users"
" WHERE CrsCod=%ld",
CrsCod); CrsCod);
/***** Remove directories of the course *****/ /***** Remove directories of the course *****/
@ -2611,7 +2620,7 @@ void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role)
} }
else else
{ {
if (asprintf (&SubQuery," AND crs_usr.Role=%u",(unsigned) Role) < 0) if (asprintf (&SubQuery," AND crs_users.Role=%u",(unsigned) Role) < 0)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
} }
NumCrss = (unsigned) NumCrss = (unsigned)
@ -2623,15 +2632,15 @@ void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role)
"crs_courses.Year," // row[4] "crs_courses.Year," // row[4]
"crs_courses.FullName," // row[5] "crs_courses.FullName," // row[5]
"ctr_centers.ShortName," // row[6] "ctr_centers.ShortName," // row[6]
"crs_usr.Accepted" // row[7] "crs_users.Accepted" // row[7]
" FROM crs_usr," " FROM crs_users,"
"crs_courses," "crs_courses,"
"deg_degrees," "deg_degrees,"
"ctr_centers" "ctr_centers"
" WHERE crs_usr.UsrCod=%ld%s" " WHERE crs_users.UsrCod=%ld%s"
" AND crs_usr.CrsCod=crs_courses.CrsCod" " AND crs_users.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod" " AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod" " AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.Year," "crs_courses.Year,"
"crs_courses.FullName", "crs_courses.FullName",
@ -2781,7 +2790,7 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
crs_courses.Year row[4] crs_courses.Year row[4]
crs_courses.FullName row[5] crs_courses.FullName row[5]
ctr_centers.ShortName row[6] ctr_centers.ShortName row[6]
crs_usr.Accepted row[7] (only if WriteColumnAccepted == true) crs_users.Accepted row[7] (only if WriteColumnAccepted == true)
*/ */
/***** Get degree code (row[0]) *****/ /***** Get degree code (row[0]) *****/
@ -2989,9 +2998,11 @@ void Crs_RemoveOldCrss (void)
/***** Get old courses from database *****/ /***** Get old courses from database *****/
NumCrss = DB_QuerySELECT (&mysql_res,"can not get old courses", NumCrss = DB_QuerySELECT (&mysql_res,"can not get old courses",
"SELECT CrsCod" "SELECT CrsCod"
" FROM crs_last" " FROM crs_last"
" WHERE LastTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)" " WHERE LastTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)"
" AND CrsCod NOT IN (SELECT DISTINCT CrsCod FROM crs_usr)", " AND CrsCod NOT IN"
" (SELECT DISTINCT CrsCod"
" FROM crs_users)",
SecondsWithoutAccess); SecondsWithoutAccess);
if (NumCrss) if (NumCrss)
{ {

View File

@ -839,9 +839,9 @@ mysql> DESCRIBE crs_records;
"Txt TEXT NOT NULL," // Cns_MAX_BYTES_TEXT "Txt TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
"UNIQUE INDEX(FieldCod,UsrCod))"); "UNIQUE INDEX(FieldCod,UsrCod))");
/***** Table crs_usr *****/ /***** Table crs_users *****/
/* /*
mysql> DESCRIBE crs_usr; mysql> DESCRIBE crs_users;
+----------+---------------+------+-----+---------+-------+ +----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra | | Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+ +----------+---------------+------+-----+---------+-------+
@ -852,7 +852,7 @@ mysql> DESCRIBE crs_usr;
+----------+---------------+------+-----+---------+-------+ +----------+---------------+------+-----+---------+-------+
4 rows in set (0.00 sec) 4 rows in set (0.00 sec)
*/ */
DB_CreateTable ("CREATE TABLE IF NOT EXISTS crs_usr (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS crs_users ("
"CrsCod INT NOT NULL," "CrsCod INT NOT NULL,"
"UsrCod INT NOT NULL," "UsrCod INT NOT NULL,"
"Role TINYINT NOT NULL DEFAULT 0," "Role TINYINT NOT NULL DEFAULT 0,"

View File

@ -1084,12 +1084,12 @@ void Deg_GetListAllDegsWithStds (struct ListDegrees *Degs)
"deg_degrees.ShortName," // row[5] "deg_degrees.ShortName," // row[5]
"deg_degrees.FullName," // row[6] "deg_degrees.FullName," // row[6]
"deg_degrees.WWW" // row[7] "deg_degrees.WWW" // row[7]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr" "crs_users"
" WHERE deg_degrees.DegCod=crs_courses.DegCod" " WHERE deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" ORDER BY deg_degrees.ShortName", " ORDER BY deg_degrees.ShortName",
(unsigned) Rol_STD); (unsigned) Rol_STD);
@ -2128,16 +2128,16 @@ unsigned Deg_GetCachedNumDegsWithUsrs (Rol_Role_t Role,const char *SubQuery,
NumDegsWithUsrs = (unsigned) NumDegsWithUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of degrees with users", DB_QueryCOUNT ("can not get number of degrees with users",
"SELECT COUNT(DISTINCT deg_degrees.DegCod)" "SELECT COUNT(DISTINCT deg_degrees.DegCod)"
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr" "crs_users"
" WHERE %sinstitutions.InsCod=ctr_centers.InsCod" " WHERE %sinstitutions.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u", " AND crs_users.Role=%u",
SubQuery,(unsigned) Role); SubQuery,(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureDegs[Role],Scope,Cod, FigCch_UpdateFigureIntoCache (FigureDegs[Role],Scope,Cod,
FigCch_UNSIGNED,&NumDegsWithUsrs); FigCch_UNSIGNED,&NumDegsWithUsrs);

View File

@ -348,11 +348,11 @@ static void Dpt_GetListDepartments (struct Dpt_Departments *Departments,long Ins
"COUNT(DISTINCT usr_data.UsrCod) AS NumTchs" // row[5] "COUNT(DISTINCT usr_data.UsrCod) AS NumTchs" // row[5]
" FROM dpt_departments," " FROM dpt_departments,"
"usr_data," "usr_data,"
"crs_usr" "crs_users"
" WHERE dpt_departments.InsCod=%ld" " WHERE dpt_departments.InsCod=%ld"
" AND dpt_departments.DptCod=usr_data.DptCod" " AND dpt_departments.DptCod=usr_data.DptCod"
" AND usr_data.UsrCod=crs_usr.UsrCod" " AND usr_data.UsrCod=crs_users.UsrCod"
" AND crs_usr.Role IN (%u,%u)" " AND crs_users.Role IN (%u,%u)"
" GROUP BY dpt_departments.DptCod)" " GROUP BY dpt_departments.DptCod)"
" UNION " " UNION "
"(SELECT DptCod," // row[0] "(SELECT DptCod," // row[0]
@ -365,9 +365,9 @@ static void Dpt_GetListDepartments (struct Dpt_Departments *Departments,long Ins
" WHERE InsCod=%ld" " WHERE InsCod=%ld"
" AND DptCod NOT IN" " AND DptCod NOT IN"
" (SELECT DISTINCT usr_data.DptCod" " (SELECT DISTINCT usr_data.DptCod"
" FROM usr_data,crs_usr" " FROM usr_data,crs_users"
" WHERE crs_usr.Role IN (%u,%u)" " WHERE crs_users.Role IN (%u,%u)"
" AND crs_usr.UsrCod=usr_data.UsrCod))" " AND crs_users.UsrCod=usr_data.UsrCod))"
" ORDER BY %s", " ORDER BY %s",
InsCod,(unsigned) Rol_NET,(unsigned) Rol_TCH, InsCod,(unsigned) Rol_NET,(unsigned) Rol_TCH,
InsCod,(unsigned) Rol_NET,(unsigned) Rol_TCH, InsCod,(unsigned) Rol_NET,(unsigned) Rol_TCH,
@ -448,11 +448,11 @@ void Dpt_GetDataOfDepartmentByCod (struct Dpt_Department *Dpt)
"COUNT(DISTINCT usr_data.UsrCod) AS NumTchs" // row[4] "COUNT(DISTINCT usr_data.UsrCod) AS NumTchs" // row[4]
" FROM dpt_departments," " FROM dpt_departments,"
"usr_data," "usr_data,"
"crs_usr" "crs_users"
" WHERE dpt_departments.DptCod=%ld" " WHERE dpt_departments.DptCod=%ld"
" AND dpt_departments.DptCod=usr_data.DptCod" " AND dpt_departments.DptCod=usr_data.DptCod"
" AND usr_data.UsrCod=crs_usr.UsrCod" " AND usr_data.UsrCod=crs_users.UsrCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" GROUP BY dpt_departments.DptCod)" " GROUP BY dpt_departments.DptCod)"
" UNION " " UNION "
"(SELECT InsCod," // row[0] "(SELECT InsCod," // row[0]
@ -465,9 +465,9 @@ void Dpt_GetDataOfDepartmentByCod (struct Dpt_Department *Dpt)
" AND DptCod NOT IN" " AND DptCod NOT IN"
" (SELECT DISTINCT usr_data.DptCod" " (SELECT DISTINCT usr_data.DptCod"
" FROM usr_data," " FROM usr_data,"
"crs_usr" "crs_users"
" WHERE crs_usr.Role=%u" " WHERE crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod))", " AND crs_users.UsrCod=usr_data.UsrCod))",
Dpt->DptCod,(unsigned) Rol_TCH, Dpt->DptCod,(unsigned) Rol_TCH,
Dpt->DptCod,(unsigned) Rol_TCH); Dpt->DptCod,(unsigned) Rol_TCH);
if (NumRows) // Department found... if (NumRows) // Department found...

View File

@ -248,9 +248,13 @@ void Enr_ModifyRoleInCurrentCrs (struct UsrData *UsrDat,Rol_Role_t NewRole)
/***** Update the role of a user in a course *****/ /***** Update the role of a user in a course *****/
DB_QueryUPDATE ("can not modify user's role in course", DB_QueryUPDATE ("can not modify user's role in course",
"UPDATE crs_usr SET Role=%u" "UPDATE crs_users"
" WHERE CrsCod=%ld AND UsrCod=%ld", " SET Role=%u"
(unsigned) NewRole,Gbl.Hierarchy.Crs.CrsCod,UsrDat->UsrCod); " WHERE CrsCod=%ld"
" AND UsrCod=%ld",
(unsigned) NewRole,
Gbl.Hierarchy.Crs.CrsCod,
UsrDat->UsrCod);
/***** Flush caches *****/ /***** Flush caches *****/
Usr_FlushCachesUsr (); Usr_FlushCachesUsr ();
@ -291,7 +295,7 @@ void Enr_RegisterUsrInCurrentCrs (struct UsrData *UsrDat,Rol_Role_t NewRole,
/***** Register user in current course in database *****/ /***** Register user in current course in database *****/
DB_QueryINSERT ("can not register user in course", DB_QueryINSERT ("can not register user in course",
"INSERT INTO crs_usr" "INSERT INTO crs_users"
" (CrsCod,UsrCod,Role,Accepted)" " (CrsCod,UsrCod,Role,Accepted)"
" VALUES" " VALUES"
" (%ld,%ld,%u,'%c')", " (%ld,%ld,%u,'%c')",
@ -514,8 +518,9 @@ void Enr_GetNotifEnrolment (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
if (DB_QuerySELECT (&mysql_res,"can not get user's role" if (DB_QuerySELECT (&mysql_res,"can not get user's role"
" in course", " in course",
"SELECT Role" "SELECT Role"
" FROM crs_usr" " FROM crs_users"
" WHERE CrsCod=%ld AND UsrCod=%ld", " WHERE CrsCod=%ld"
" AND UsrCod=%ld",
CrsCod,UsrCod) == 1) // Result should have a unique row CrsCod,UsrCod) == 1) // Result should have a unique row
{ {
/***** Get user's role in course *****/ /***** Get user's role in course *****/
@ -880,14 +885,16 @@ void Enr_RemoveOldUsrs (void)
/***** Get old users from database *****/ /***** Get old users from database *****/
NumUsrs = DB_QuerySELECT (&mysql_res,"can not get old users", NumUsrs = DB_QuerySELECT (&mysql_res,"can not get old users",
"SELECT UsrCod FROM" "SELECT UsrCod FROM"
"(" "("
"SELECT UsrCod FROM usr_last WHERE" "SELECT UsrCod FROM usr_last WHERE"
" LastTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)" " LastTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)"
" UNION " " UNION "
"SELECT UsrCod FROM usr_data WHERE" "SELECT UsrCod FROM usr_data WHERE"
" UsrCod NOT IN (SELECT UsrCod FROM usr_last)" " UsrCod NOT IN (SELECT UsrCod FROM usr_last)"
") AS candidate_usrs" ") AS candidate_usrs"
" WHERE UsrCod NOT IN (SELECT DISTINCT UsrCod FROM crs_usr)", " WHERE UsrCod NOT IN"
" (SELECT DISTINCT UsrCod"
" FROM crs_users)",
(unsigned long) SecondsWithoutAccess); (unsigned long) SecondsWithoutAccess);
if (NumUsrs) if (NumUsrs)
{ {
@ -2331,17 +2338,17 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in all courses in which I am teacher // Requests in all courses in which I am teacher
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM crs_usr," " FROM crs_users,"
"crs_usr_requests" "crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld" " WHERE crs_users.UsrCod=%ld"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.CrsCod=crs_usr_requests.CrsCod" " AND crs_users.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH, (unsigned) Rol_TCH,
@ -2351,11 +2358,11 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in all degrees administrated by me // Requests in all degrees administrated by me
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins," " FROM usr_admins,"
"crs_courses," "crs_courses,"
"crs_usr_requests" "crs_usr_requests"
@ -2372,11 +2379,11 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in all centers administrated by me // Requests in all centers administrated by me
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins," " FROM usr_admins,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
@ -2395,11 +2402,11 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in all institutions administrated by me // Requests in all institutions administrated by me
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins," " FROM usr_admins,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
@ -2420,11 +2427,11 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// All requests // All requests
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT ReqCod," "SELECT ReqCod," // row[0]
"CrsCod," "CrsCod," // row[1]
"UsrCod," "UsrCod," // row[2]
"Role," "Role," // row[3]
"UNIX_TIMESTAMP(RequestTime)" "UNIX_TIMESTAMP(RequestTime)" // row[4]
" FROM crs_usr_requests" " FROM crs_usr_requests"
" WHERE ((1<<Role)&%u)<>0" " WHERE ((1<<Role)&%u)<>0"
" ORDER BY RequestTime DESC", " ORDER BY RequestTime DESC",
@ -2442,26 +2449,26 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in courses of this country in which I am teacher // Requests in courses of this country in which I am teacher
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // roe[4]
" FROM crs_usr," " FROM crs_users,"
"ins_instits," "ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr_requests" "crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld" " WHERE crs_users.UsrCod=%ld"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.CrsCod=crs_courses.CrsCod" " AND crs_users.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod" " AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod" " AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=ins_instits.InsCod" " AND ctr_centers.InsCod=ins_instits.InsCod"
" AND ins_instits.CtyCod=%ld" " AND ins_instits.CtyCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH, (unsigned) Rol_TCH,
@ -2472,26 +2479,26 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in degrees of this country administrated by me // Requests in degrees of this country administrated by me
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins," " FROM usr_admins,"
"ins_instits," "ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr_requests" "crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld" " WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'" " AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=deg_degrees.DegCod" " AND usr_admins.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod" " AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=ins_instits.InsCod" " AND ctr_centers.InsCod=ins_instits.InsCod"
" AND ins_instits.CtyCod=%ld" " AND ins_instits.CtyCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG), Sco_GetDBStrFromScope (Hie_Lvl_DEG),
@ -2502,26 +2509,26 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in centers of this country administrated by me // Requests in centers of this country administrated by me
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins," " FROM usr_admins,"
"ins_instits," "ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr_requests" "crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld" " WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'" " AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=ctr_centers.CtrCod" " AND usr_admins.Cod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=ins_instits.InsCod" " AND ctr_centers.InsCod=ins_instits.InsCod"
" AND ins_instits.CtyCod=%ld" " AND ins_instits.CtyCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_CTR), Sco_GetDBStrFromScope (Hie_Lvl_CTR),
@ -2531,28 +2538,27 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
case Rol_INS_ADM: case Rol_INS_ADM:
// Requests in institutions of this country administrated by me // Requests in institutions of this country administrated by me
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests" DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
" for enrolment", "SELECT crs_usr_requests.ReqCod," // row[0]
"SELECT crs_usr_requests.ReqCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.CrsCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.UsrCod," "crs_usr_requests.Role," // row[3]
"crs_usr_requests.Role," "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" " FROM usr_admins,"
" FROM usr_admins," "ins_instits,"
"ins_instits," "ctr_centers,"
"ctr_centers," "deg_degrees,"
"deg_degrees," "crs_courses,"
"crs_courses," "crs_usr_requests"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld" " WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'" " AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=ins_instits.InsCod" " AND usr_admins.Cod=ins_instits.InsCod"
" AND ins_instits.CtyCod=%ld" " AND ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_INS), Sco_GetDBStrFromScope (Hie_Lvl_INS),
@ -2563,22 +2569,22 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in any course of this country // Requests in any course of this country
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr_requests" "crs_usr_requests"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Cty.CtyCod, Gbl.Hierarchy.Cty.CtyCod,
RolesSelected); RolesSelected);
@ -2595,24 +2601,24 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in courses of this institution in which I am teacher // Requests in courses of this institution in which I am teacher
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM crs_usr," " FROM crs_users,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr_requests" "crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld" " WHERE crs_users.UsrCod=%ld"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.CrsCod=crs_courses.CrsCod" " AND crs_users.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod" " AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod" " AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=%ld" " AND ctr_centers.InsCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH, (unsigned) Rol_TCH,
@ -2623,24 +2629,24 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in degrees of this institution administrated by me // Requests in degrees of this institution administrated by me
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins," " FROM usr_admins,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr_requests" "crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld" " WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'" " AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=deg_degrees.DegCod" " AND usr_admins.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod" " AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=%ld" " AND ctr_centers.InsCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG), Sco_GetDBStrFromScope (Hie_Lvl_DEG),
@ -2651,24 +2657,24 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in centers of this institution administrated by me // Requests in centers of this institution administrated by me
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins," " FROM usr_admins,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr_requests" "crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld" " WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'" " AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=ctr_centers.CtrCod" " AND usr_admins.Cod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=%ld" " AND ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR), Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
Gbl.Hierarchy.Ins.InsCod, Gbl.Hierarchy.Ins.InsCod,
@ -2679,20 +2685,20 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in any course of this institution // Requests in any course of this institution
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr_requests" "crs_usr_requests"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Ins.InsCod, Gbl.Hierarchy.Ins.InsCod,
RolesSelected); RolesSelected);
@ -2709,22 +2715,22 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in courses of this center in which I am teacher // Requests in courses of this center in which I am teacher
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM crs_usr," " FROM crs_users,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr_requests" "crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld" " WHERE crs_users.UsrCod=%ld"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.CrsCod=crs_courses.CrsCod" " AND crs_users.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod" " AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld" " AND deg_degrees.CtrCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH, (unsigned) Rol_TCH,
@ -2735,22 +2741,22 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in degrees of this center administrated by me // Requests in degrees of this center administrated by me
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins," " FROM usr_admins,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr_requests" "crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld" " WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'" " AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=deg_degrees.DegCod" " AND usr_admins.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld" " AND deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG), Sco_GetDBStrFromScope (Hie_Lvl_DEG),
@ -2763,18 +2769,18 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Request in any course of this center // Request in any course of this center
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr_requests" "crs_usr_requests"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Ctr.CtrCod, Gbl.Hierarchy.Ctr.CtrCod,
RolesSelected); RolesSelected);
@ -2791,20 +2797,20 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in courses of this degree in which I am teacher // Requests in courses of this degree in which I am teacher
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM crs_usr," " FROM crs_users,"
"crs_courses," "crs_courses,"
"crs_usr_requests" "crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld" " WHERE crs_users.UsrCod=%ld"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.CrsCod=crs_courses.CrsCod" " AND crs_users.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=%ld" " AND crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH, (unsigned) Rol_TCH,
@ -2818,16 +2824,16 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in any course of this degree // Requests in any course of this degree
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," "SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," "crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," "crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," "crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" "UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM crs_courses," " FROM crs_courses,"
"crs_usr_requests" "crs_usr_requests"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod" " AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Deg.DegCod, Gbl.Hierarchy.Deg.DegCod,
RolesSelected); RolesSelected);
@ -2848,14 +2854,14 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in this course // Requests in this course
NumReqs = NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment", DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT ReqCod," "SELECT ReqCod," // row[0]
"CrsCod," "CrsCod," // row[1]
"UsrCod," "UsrCod," // row[2]
"Role," "Role," // row[3]
"UNIX_TIMESTAMP(RequestTime)" "UNIX_TIMESTAMP(RequestTime)" // row[4]
" FROM crs_usr_requests" " FROM crs_usr_requests"
" WHERE CrsCod=%ld" " WHERE CrsCod=%ld"
" AND ((1<<Role)&%u)<>0" " AND ((1<<Role)&%u)<>0"
" ORDER BY RequestTime DESC", " ORDER BY RequestTime DESC",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
RolesSelected); RolesSelected);
@ -4100,8 +4106,10 @@ void Enr_AcceptUsrInCrs (long UsrCod)
{ {
/***** Set enrolment of a user to "accepted" in the current course *****/ /***** Set enrolment of a user to "accepted" in the current course *****/
DB_QueryUPDATE ("can not confirm user's enrolment", DB_QueryUPDATE ("can not confirm user's enrolment",
"UPDATE crs_usr SET Accepted='Y'" "UPDATE crs_users"
" WHERE CrsCod=%ld AND UsrCod=%ld", " SET Accepted='Y'"
" WHERE CrsCod=%ld"
" AND UsrCod=%ld",
Gbl.Hierarchy.Crs.CrsCod,UsrCod); Gbl.Hierarchy.Crs.CrsCod,UsrCod);
} }
@ -4212,11 +4220,13 @@ static void Enr_EffectivelyRemUsrFromCrs (struct UsrData *UsrDat,
/***** Remove user from the tables of courses-users *****/ /***** Remove user from the tables of courses-users *****/
DB_QueryDELETE ("can not remove a user from a course", DB_QueryDELETE ("can not remove a user from a course",
"DELETE FROM crs_usr_last" "DELETE FROM crs_usr_last"
" WHERE UsrCod=%ld AND CrsCod=%ld", " WHERE UsrCod=%ld"
" AND CrsCod=%ld",
UsrDat->UsrCod,Crs->CrsCod); UsrDat->UsrCod,Crs->CrsCod);
DB_QueryDELETE ("can not remove a user from a course", DB_QueryDELETE ("can not remove a user from a course",
"DELETE FROM crs_usr" "DELETE FROM crs_users"
" WHERE CrsCod=%ld AND UsrCod=%ld", " WHERE CrsCod=%ld"
" AND UsrCod=%ld",
Crs->CrsCod,UsrDat->UsrCod); Crs->CrsCod,UsrDat->UsrCod);
/***** Flush caches *****/ /***** Flush caches *****/

View File

@ -890,7 +890,7 @@ static void Fig_GetAndShowHierarchyWithUsrs (Rol_Role_t Role)
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod); NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod);
break; break;
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
sprintf (SubQuery,"crs_usr.CrsCod=%ld AND ",Gbl.Hierarchy.Crs.CrsCod); sprintf (SubQuery,"crs_users.CrsCod=%ld AND ",Gbl.Hierarchy.Crs.CrsCod);
NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,SubQuery,Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod); NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,SubQuery,Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,SubQuery,Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod); NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,SubQuery,Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,SubQuery,Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod); NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,SubQuery,Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
@ -1304,14 +1304,14 @@ static void Fig_GetAndShowInssOrderedByNumUsrsInCrss (void)
NumInss = (unsigned) NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions", DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod," "SELECT ctr_centers.InsCod,"
"COUNT(DISTINCT crs_usr.UsrCod) AS N" "COUNT(DISTINCT crs_users.UsrCod) AS N"
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr" "crs_users"
" WHERE ctr_centers.CtrCod=deg_degrees.CtrCod" " WHERE ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" GROUP BY InsCod" " GROUP BY InsCod"
" ORDER BY N DESC"); " ORDER BY N DESC");
break; break;
@ -1319,17 +1319,17 @@ static void Fig_GetAndShowInssOrderedByNumUsrsInCrss (void)
NumInss = (unsigned) NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions", DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod," "SELECT ctr_centers.InsCod,"
"COUNT(DISTINCT crs_usr.UsrCod) AS N" "COUNT(DISTINCT crs_users.UsrCod) AS N"
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr" "crs_users"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" GROUP BY ctr_centers.InsCod" " GROUP BY ctr_centers.InsCod"
" ORDER BY N DESC", " ORDER BY N DESC",
Gbl.Hierarchy.Cty.CtyCod); Gbl.Hierarchy.Cty.CtyCod);
@ -1341,15 +1341,15 @@ static void Fig_GetAndShowInssOrderedByNumUsrsInCrss (void)
NumInss = (unsigned) NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions", DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod," "SELECT ctr_centers.InsCod,"
"COUNT(DISTINCT crs_usr.UsrCod) AS N" "COUNT(DISTINCT crs_users.UsrCod) AS N"
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr" "crs_users"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" GROUP BY ctr_centers.InsCod" " GROUP BY ctr_centers.InsCod"
" ORDER BY N DESC", " ORDER BY N DESC",
Gbl.Hierarchy.Ins.InsCod); Gbl.Hierarchy.Ins.InsCod);
@ -1956,14 +1956,14 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"brw_sizes" "brw_sizes"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=brw_sizes.ZoneUsrCod" " AND crs_users.UsrCod=brw_sizes.ZoneUsrCod"
" AND brw_sizes.FileBrowser=%u", " AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Cty.CtyCod, Gbl.Hierarchy.Cty.CtyCod,
(unsigned) FileBrowser); (unsigned) FileBrowser);
@ -2123,13 +2123,13 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"brw_sizes" "brw_sizes"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=brw_sizes.ZoneUsrCod" " AND crs_users.UsrCod=brw_sizes.ZoneUsrCod"
" AND brw_sizes.FileBrowser=%u", " AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Ins.InsCod, Gbl.Hierarchy.Ins.InsCod,
(unsigned) FileBrowser); (unsigned) FileBrowser);
@ -2278,12 +2278,12 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
"SUM(brw_sizes.TotalSize)" // row[6] "SUM(brw_sizes.TotalSize)" // row[6]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"brw_sizes" "brw_sizes"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=brw_sizes.ZoneUsrCod" " AND crs_users.UsrCod=brw_sizes.ZoneUsrCod"
" AND brw_sizes.FileBrowser=%u", " AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Ctr.CtrCod, Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) FileBrowser); (unsigned) FileBrowser);
@ -2421,11 +2421,11 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
"SUM(brw_sizes.NumFiles)," // row[5] "SUM(brw_sizes.NumFiles)," // row[5]
"SUM(brw_sizes.TotalSize)" // row[6] "SUM(brw_sizes.TotalSize)" // row[6]
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"brw_sizes" "brw_sizes"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=brw_sizes.ZoneUsrCod" " AND crs_users.UsrCod=brw_sizes.ZoneUsrCod"
" AND brw_sizes.FileBrowser=%u", " AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Deg.DegCod, Gbl.Hierarchy.Deg.DegCod,
(unsigned) FileBrowser); (unsigned) FileBrowser);
@ -2552,10 +2552,10 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
"SUM(brw_sizes.NumFolders)," // row[4] "SUM(brw_sizes.NumFolders)," // row[4]
"SUM(brw_sizes.NumFiles)," // row[5] "SUM(brw_sizes.NumFiles)," // row[5]
"SUM(brw_sizes.TotalSize)" // row[6] "SUM(brw_sizes.TotalSize)" // row[6]
" FROM crs_usr," " FROM crs_users,"
"brw_sizes" "brw_sizes"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=brw_sizes.ZoneUsrCod" " AND crs_users.UsrCod=brw_sizes.ZoneUsrCod"
" AND brw_sizes.FileBrowser=%u", " AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
(unsigned) FileBrowser); (unsigned) FileBrowser);
@ -3598,85 +3598,85 @@ static void Fig_GetAndShowTimelineActivityStats (void)
case Hie_Lvl_CTY: case Hie_Lvl_CTY:
NumRows = NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes", DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," "SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" "COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"tml_notes" "tml_notes"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod" " AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u", " AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Cty.CtyCod, Gbl.Hierarchy.Cty.CtyCod,
(unsigned) NoteType); (unsigned) NoteType);
break; break;
case Hie_Lvl_INS: case Hie_Lvl_INS:
NumRows = NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes", DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," "SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" "COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"tml_notes" "tml_notes"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod" " AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u", " AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Ins.InsCod, Gbl.Hierarchy.Ins.InsCod,
(unsigned) NoteType); (unsigned) NoteType);
break; break;
case Hie_Lvl_CTR: case Hie_Lvl_CTR:
NumRows = NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes", DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," "SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" "COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"tml_notes" "tml_notes"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod" " AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u", " AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Ctr.CtrCod, Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) NoteType); (unsigned) NoteType);
break; break;
case Hie_Lvl_DEG: case Hie_Lvl_DEG:
NumRows = NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes", DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," "SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" "COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"tml_notes" "tml_notes"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod" " AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u", " AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Deg.DegCod, Gbl.Hierarchy.Deg.DegCod,
(unsigned) NoteType); (unsigned) NoteType);
break; break;
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
NumRows = NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes", DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," "SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" "COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_usr," " FROM crs_users,"
"tml_notes" "tml_notes"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=tml_notes.UsrCod" " AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u", " AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
(unsigned) NoteType); (unsigned) NoteType);
break; break;
@ -3749,76 +3749,76 @@ static void Fig_GetAndShowTimelineActivityStats (void)
case Hie_Lvl_CTY: case Hie_Lvl_CTY:
NumRows = NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes", DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," "SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" "COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"tml_notes" "tml_notes"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod", " AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Cty.CtyCod); Gbl.Hierarchy.Cty.CtyCod);
break; break;
case Hie_Lvl_INS: case Hie_Lvl_INS:
NumRows = NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes", DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," "SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" "COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"tml_notes" "tml_notes"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod", " AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Ins.InsCod); Gbl.Hierarchy.Ins.InsCod);
break; break;
case Hie_Lvl_CTR: case Hie_Lvl_CTR:
NumRows = NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes", DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," "SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" "COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"tml_notes" "tml_notes"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod", " AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod); Gbl.Hierarchy.Ctr.CtrCod);
break; break;
case Hie_Lvl_DEG: case Hie_Lvl_DEG:
NumRows = NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes", DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," "SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" "COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"tml_notes" "tml_notes"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod", " AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Deg.DegCod); Gbl.Hierarchy.Deg.DegCod);
break; break;
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
NumRows = NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes", DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," "SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" "COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_usr," " FROM crs_users,"
"tml_notes" "tml_notes"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=tml_notes.UsrCod", " AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:
@ -3952,18 +3952,18 @@ static void Fig_GetAndShowFollowStats (void)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers", DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT usr_follow.%s)" "SELECT COUNT(DISTINCT usr_follow.%s)"
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_follow" "usr_follow"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s", " AND crs_users.UsrCod=usr_follow.%s",
FieldDB[Fol], FieldDB[Fol],
Gbl.Hierarchy.Cty.CtyCod, Gbl.Hierarchy.Cty.CtyCod,
FieldDB[Fol]); FieldDB[Fol]);
@ -3972,16 +3972,16 @@ static void Fig_GetAndShowFollowStats (void)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers", DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT usr_follow.%s)" "SELECT COUNT(DISTINCT usr_follow.%s)"
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_follow" "usr_follow"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s", " AND crs_users.UsrCod=usr_follow.%s",
FieldDB[Fol], FieldDB[Fol],
Gbl.Hierarchy.Ins.InsCod, Gbl.Hierarchy.Ins.InsCod,
FieldDB[Fol]); FieldDB[Fol]);
@ -3992,12 +3992,12 @@ static void Fig_GetAndShowFollowStats (void)
"SELECT COUNT(DISTINCT usr_follow.%s)" "SELECT COUNT(DISTINCT usr_follow.%s)"
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_follow" "usr_follow"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s", " AND crs_users.UsrCod=usr_follow.%s",
FieldDB[Fol], FieldDB[Fol],
Gbl.Hierarchy.Ctr.CtrCod, Gbl.Hierarchy.Ctr.CtrCod,
FieldDB[Fol]); FieldDB[Fol]);
@ -4006,12 +4006,12 @@ static void Fig_GetAndShowFollowStats (void)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers", DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT usr_follow.%s)" "SELECT COUNT(DISTINCT usr_follow.%s)"
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"usr_follow" "usr_follow"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s", " AND crs_users.UsrCod=usr_follow.%s",
FieldDB[Fol], FieldDB[Fol],
Gbl.Hierarchy.Deg.DegCod, Gbl.Hierarchy.Deg.DegCod,
FieldDB[Fol]); FieldDB[Fol]);
@ -4020,10 +4020,10 @@ static void Fig_GetAndShowFollowStats (void)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers", DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT usr_follow.%s)" "SELECT COUNT(DISTINCT usr_follow.%s)"
" FROM crs_usr," " FROM crs_users,"
"usr_follow" "usr_follow"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_follow.%s", " AND crs_users.UsrCod=usr_follow.%s",
FieldDB[Fol], FieldDB[Fol],
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
FieldDB[Fol]); FieldDB[Fol]);
@ -4065,31 +4065,31 @@ static void Fig_GetAndShowFollowStats (void)
case Hie_Lvl_SYS: case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of questions" DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey", " per survey",
"SELECT AVG(N) FROM " "SELECT AVG(N) FROM " // row[0]
"(SELECT COUNT(%s) AS N" "(SELECT COUNT(%s) AS N"
" FROM usr_follow" " FROM usr_follow"
" GROUP BY %s) AS F", " GROUP BY %s) AS F",
FieldDB[Fol], FieldDB[Fol],
FieldDB[1 - Fol]); FieldDB[1 - Fol]);
break; break;
case Hie_Lvl_CTY: case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of questions" DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey", " per survey",
"SELECT AVG(N) FROM " "SELECT AVG(N) FROM " // row[0]
"(SELECT COUNT(DISTINCT usr_follow.%s) AS N" "(SELECT COUNT(DISTINCT usr_follow.%s) AS N"
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_follow" "usr_follow"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s" " AND crs_users.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F", " GROUP BY %s) AS F",
FieldDB[Fol], FieldDB[Fol],
Gbl.Hierarchy.Cty.CtyCod, Gbl.Hierarchy.Cty.CtyCod,
FieldDB[Fol], FieldDB[Fol],
@ -4098,19 +4098,19 @@ static void Fig_GetAndShowFollowStats (void)
case Hie_Lvl_INS: case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of questions" DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey", " per survey",
"SELECT AVG(N) FROM " "SELECT AVG(N) FROM " // row[0]
"(SELECT COUNT(DISTINCT usr_follow.%s) AS N" "(SELECT COUNT(DISTINCT usr_follow.%s) AS N"
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_follow" "usr_follow"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s" " AND crs_users.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F", " GROUP BY %s) AS F",
FieldDB[Fol], FieldDB[Fol],
Gbl.Hierarchy.Ins.InsCod, Gbl.Hierarchy.Ins.InsCod,
FieldDB[Fol], FieldDB[Fol],
@ -4119,17 +4119,17 @@ static void Fig_GetAndShowFollowStats (void)
case Hie_Lvl_CTR: case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of questions" DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey", " per survey",
"SELECT AVG(N) FROM " "SELECT AVG(N) FROM " // row[0]
"(SELECT COUNT(DISTINCT usr_follow.%s) AS N" "(SELECT COUNT(DISTINCT usr_follow.%s) AS N"
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_follow" "usr_follow"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s" " AND crs_users.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F", " GROUP BY %s) AS F",
FieldDB[Fol], FieldDB[Fol],
Gbl.Hierarchy.Ctr.CtrCod, Gbl.Hierarchy.Ctr.CtrCod,
FieldDB[Fol], FieldDB[Fol],
@ -4138,15 +4138,15 @@ static void Fig_GetAndShowFollowStats (void)
case Hie_Lvl_DEG: case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of questions" DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey", " per survey",
"SELECT AVG(N) FROM " "SELECT AVG(N) FROM " // row[0]
"(SELECT COUNT(DISTINCT usr_follow.%s) AS N" "(SELECT COUNT(DISTINCT usr_follow.%s) AS N"
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"usr_follow" "usr_follow"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s" " AND crs_users.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F", " GROUP BY %s) AS F",
FieldDB[Fol], FieldDB[Fol],
Gbl.Hierarchy.Deg.DegCod, Gbl.Hierarchy.Deg.DegCod,
FieldDB[Fol], FieldDB[Fol],
@ -4155,13 +4155,13 @@ static void Fig_GetAndShowFollowStats (void)
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of questions" DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey", " per survey",
"SELECT AVG(N) FROM " "SELECT AVG(N) FROM " // row[0]
"(SELECT COUNT(DISTINCT usr_follow.%s) AS N" "(SELECT COUNT(DISTINCT usr_follow.%s) AS N"
" FROM crs_usr," " FROM crs_users,"
"usr_follow" "usr_follow"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_follow.%s" " AND crs_users.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F", " GROUP BY %s) AS F",
FieldDB[Fol], FieldDB[Fol],
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
FieldDB[Fol], FieldDB[Fol],
@ -5807,75 +5807,75 @@ unsigned Fig_GetNumUsrsWhoChoseAnOption (const char *SubQuery)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option", DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)" "SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_data" "usr_data"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.UsrCod=usr_data.UsrCod"
" AND %s", " AND %s",
Gbl.Hierarchy.Cty.CtyCod,SubQuery); Gbl.Hierarchy.Cty.CtyCod,SubQuery);
break; break;
case Hie_Lvl_INS: case Hie_Lvl_INS:
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option", DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)" "SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_data" "usr_data"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.UsrCod=usr_data.UsrCod"
" AND %s", " AND %s",
Gbl.Hierarchy.Ins.InsCod,SubQuery); Gbl.Hierarchy.Ins.InsCod,SubQuery);
break; break;
case Hie_Lvl_CTR: case Hie_Lvl_CTR:
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option", DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)" "SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_data" "usr_data"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.UsrCod=usr_data.UsrCod"
" AND %s", " AND %s",
Gbl.Hierarchy.Ctr.CtrCod,SubQuery); Gbl.Hierarchy.Ctr.CtrCod,SubQuery);
break; break;
case Hie_Lvl_DEG: case Hie_Lvl_DEG:
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option", DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)" "SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"usr_data" "usr_data"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.UsrCod=usr_data.UsrCod"
" AND %s", " AND %s",
Gbl.Hierarchy.Deg.DegCod,SubQuery); Gbl.Hierarchy.Deg.DegCod,SubQuery);
break; break;
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option", DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)" "SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM crs_usr," " FROM crs_users,"
"usr_data" "usr_data"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.UsrCod=usr_data.UsrCod"
" AND %s", " AND %s",
Gbl.Hierarchy.Crs.CrsCod,SubQuery); Gbl.Hierarchy.Crs.CrsCod,SubQuery);
break; break;
default: default:

View File

@ -2681,7 +2681,8 @@ bool Brw_CheckIfExistsFolderAssigmentForAnyUsr (const char *FolderName)
/***** Get all the users belonging to current course from database *****/ /***** Get all the users belonging to current course from database *****/
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get users" NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get users"
" from current course", " from current course",
"SELECT UsrCod FROM crs_usr" "SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld", " WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
@ -2796,7 +2797,8 @@ bool Brw_UpdateFoldersAssigmentsIfExistForAllUsrs (const char *OldFolderName,con
/***** Get all the users belonging to current course from database *****/ /***** Get all the users belonging to current course from database *****/
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get users" NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get users"
" from current course", " from current course",
"SELECT UsrCod FROM crs_usr" "SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld", " WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
@ -2915,7 +2917,8 @@ void Brw_RemoveFoldersAssignmentsIfExistForAllUsrs (const char *FolderName)
/***** Get all the users belonging to current course from database *****/ /***** Get all the users belonging to current course from database *****/
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get users" NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get users"
" from current course", " from current course",
"SELECT UsrCod FROM crs_usr" "SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld", " WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);

View File

@ -321,45 +321,48 @@ static unsigned long Fol_GetUsrsToFollow (unsigned long MaxUsrsToShow,
"(" "("
"SELECT DISTINCT usr_follow.FollowedCod AS UsrCod" "SELECT DISTINCT usr_follow.FollowedCod AS UsrCod"
" FROM usr_follow," " FROM usr_follow,"
"(SELECT FollowedCod FROM usr_follow" "(SELECT FollowedCod"
" WHERE FollowerCod=%ld) AS my_followed," " FROM usr_follow"
" usr_data" " WHERE FollowerCod=%ld) AS my_followed,"
" usr_data"
" WHERE usr_follow.FollowerCod=my_followed.FollowedCod" " WHERE usr_follow.FollowerCod=my_followed.FollowedCod"
" AND usr_follow.FollowedCod<>%ld" " AND usr_follow.FollowedCod<>%ld"
" AND usr_follow.FollowedCod=usr_data.UsrCod" " AND usr_follow.FollowedCod=usr_data.UsrCod"
" AND usr_data.Surname1<>''" // Surname 1 not empty " AND usr_data.Surname1<>''" // Surname 1 not empty
" AND usr_data.FirstName<>''" // First name not empty " AND usr_data.FirstName<>''" // First name not empty
"%s" // SubQuery1 "%s" // SubQuery1
")" ")"
" UNION " " UNION "
// 2. Users who share any course with me // 2. Users who share any course with me
"(" "("
"SELECT DISTINCT crs_usr.UsrCod" "SELECT DISTINCT crs_users.UsrCod"
" FROM crs_usr," " FROM crs_users,"
"(SELECT CrsCod FROM crs_usr" "(SELECT CrsCod"
" WHERE UsrCod=%ld) AS my_crs," " FROM crs_users"
" usr_data" " WHERE UsrCod=%ld) AS my_crs,"
" WHERE crs_usr.CrsCod=my_crs.CrsCod" " usr_data"
" AND crs_usr.UsrCod<>%ld" " WHERE crs_users.CrsCod=my_crs.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.UsrCod<>%ld"
" AND usr_data.Surname1<>''" // Surname 1 not empty " AND crs_users.UsrCod=usr_data.UsrCod"
" AND usr_data.FirstName<>''" // First name not empty " AND usr_data.Surname1<>''" // Surname 1 not empty
"%s" // SubQuery2 " AND usr_data.FirstName<>''" // First name not empty
"%s" // SubQuery2
")" ")"
" UNION " " UNION "
// 3. Users who share any course with me with another role // 3. Users who share any course with me with another role
"(" "("
"SELECT DISTINCT crs_usr.UsrCod" "SELECT DISTINCT crs_users.UsrCod"
" FROM crs_usr," " FROM crs_users,"
"(SELECT CrsCod,Role FROM crs_usr" "(SELECT CrsCod,Role"
" WHERE UsrCod=%ld) AS my_crs_role," " FROM crs_users"
" usr_data" " WHERE UsrCod=%ld) AS my_crs_role,"
" WHERE crs_usr.CrsCod=my_crs_role.CrsCod" " usr_data"
" AND crs_usr.Role<>my_crs_role.Role" " WHERE crs_users.CrsCod=my_crs_role.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.Role<>my_crs_role.Role"
" AND usr_data.Surname1<>''" // Surname 1 not empty " AND crs_users.UsrCod=usr_data.UsrCod"
" AND usr_data.FirstName<>''" // First name not empty " AND usr_data.Surname1<>''" // Surname 1 not empty
"%s" // SubQuery3 " AND usr_data.FirstName<>''" // First name not empty
"%s" // SubQuery3
")" ")"
") AS LikelyKnownUsrsToFollow" ") AS LikelyKnownUsrsToFollow"
// Do not select my followed // Do not select my followed
@ -379,24 +382,26 @@ static unsigned long Fol_GetUsrsToFollow (unsigned long MaxUsrsToShow,
// with codes >= that random code // with codes >= that random code
// that getting all users and then ordering by rand. // that getting all users and then ordering by rand.
"SELECT usr_data.UsrCod" "SELECT usr_data.UsrCod"
" FROM usr_data," " FROM usr_data,"
"(SELECT ROUND(RAND()*(SELECT MAX(UsrCod) FROM usr_data)) AS RandomUsrCod)" // a random user code "(SELECT ROUND(RAND()*(SELECT MAX(UsrCod)"
" AS random_usr" " FROM usr_data)) AS RandomUsrCod) AS random_usr" // a random user code
" WHERE usr_data.UsrCod<>%ld" " WHERE usr_data.UsrCod<>%ld"
" AND usr_data.Surname1<>''" // Surname 1 not empty " AND usr_data.Surname1<>''" // Surname 1 not empty
" AND usr_data.FirstName<>''" // First name not empty " AND usr_data.FirstName<>''" // First name not empty
"%s" // SubQuery4 "%s" // SubQuery4
// Do not select my followed // Do not select my followed
" AND usr_data.UsrCod NOT IN" " AND usr_data.UsrCod NOT IN"
" (SELECT FollowedCod FROM usr_follow" " (SELECT FollowedCod"
" WHERE FollowerCod=%ld)" " FROM usr_follow"
" WHERE FollowerCod=%ld)"
" AND usr_data.UsrCod>=random_usr.RandomUsrCod" // random user code could not exists in table of users " AND usr_data.UsrCod>=random_usr.RandomUsrCod" // random user code could not exists in table of users
// Get only MaxUsrsToShow users // Get only MaxUsrsToShow users
" LIMIT %lu" " LIMIT %lu"
")" ")"
") AS UsrsToFollow" ") AS UsrsToFollow"
// Get only MaxUsrsToShow users // Get only MaxUsrsToShow users
" ORDER BY RAND() LIMIT %lu", " ORDER BY RAND()"
" LIMIT %lu",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
@ -1378,20 +1383,20 @@ void Fol_GetAndShowRankingFollowers (void)
case Hie_Lvl_CTY: case Hie_Lvl_CTY:
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod," "SELECT usr_follow.FollowedCod," // row[0]
"COUNT(DISTINCT usr_follow.FollowerCod) AS N" "COUNT(DISTINCT usr_follow.FollowerCod) AS N" // row[1]
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_follow" "usr_follow"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_follow.FollowedCod" " AND crs_users.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod" " GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC," " ORDER BY N DESC,"
"usr_follow.FollowedCod" "usr_follow.FollowedCod"
@ -1401,18 +1406,18 @@ void Fol_GetAndShowRankingFollowers (void)
case Hie_Lvl_INS: case Hie_Lvl_INS:
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod," "SELECT usr_follow.FollowedCod," // row[0]
"COUNT(DISTINCT usr_follow.FollowerCod) AS N" "COUNT(DISTINCT usr_follow.FollowerCod) AS N" // row[1]
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_follow" "usr_follow"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_follow.FollowedCod" " AND crs_users.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod" " GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC," " ORDER BY N DESC,"
"usr_follow.FollowedCod" "usr_follow.FollowedCod"
@ -1422,16 +1427,16 @@ void Fol_GetAndShowRankingFollowers (void)
case Hie_Lvl_CTR: case Hie_Lvl_CTR:
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod," "SELECT usr_follow.FollowedCod," // row[0]
"COUNT(DISTINCT usr_follow.FollowerCod) AS N" "COUNT(DISTINCT usr_follow.FollowerCod) AS N" // row[1]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_follow" "usr_follow"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_follow.FollowedCod" " AND crs_users.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod" " GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC," " ORDER BY N DESC,"
"usr_follow.FollowedCod" "usr_follow.FollowedCod"
@ -1441,14 +1446,14 @@ void Fol_GetAndShowRankingFollowers (void)
case Hie_Lvl_DEG: case Hie_Lvl_DEG:
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod," "SELECT usr_follow.FollowedCod," // row[0]
"COUNT(DISTINCT usr_follow.FollowerCod) AS N" "COUNT(DISTINCT usr_follow.FollowerCod) AS N" // row[1]
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"usr_follow" "usr_follow"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_follow.FollowedCod" " AND crs_users.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod" " GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC," " ORDER BY N DESC,"
"usr_follow.FollowedCod" "usr_follow.FollowedCod"
@ -1458,12 +1463,12 @@ void Fol_GetAndShowRankingFollowers (void)
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod," "SELECT usr_follow.FollowedCod," // row[0]
"COUNT(DISTINCT usr_follow.FollowerCod) AS N" "COUNT(DISTINCT usr_follow.FollowerCod) AS N" // row[1]
" FROM crs_usr," " FROM crs_users,"
"usr_follow" "usr_follow"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_follow.FollowedCod" " AND crs_users.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod" " GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC," " ORDER BY N DESC,"
"usr_follow.FollowedCod" "usr_follow.FollowedCod"

View File

@ -977,12 +977,12 @@ static void Grp_LockTables (void)
{ {
DB_Query ("can not lock tables to change user's groups", DB_Query ("can not lock tables to change user's groups",
"LOCK TABLES " "LOCK TABLES "
"crs_grp_types WRITE," "crs_grp_types WRITE,"
"crs_grp WRITE," "crs_grp WRITE,"
"crs_grp_usr WRITE," "crs_grp_usr WRITE,"
"crs_usr READ," "crs_users READ,"
"crs_usr_last READ," "crs_usr_last READ,"
"roo_rooms READ"); "roo_rooms READ");
Gbl.DB.LockedTables = true; Gbl.DB.LockedTables = true;
} }
@ -3302,13 +3302,16 @@ unsigned Grp_CountNumUsrsInGrp (Rol_Role_t Role,long GrpCod)
return return
(unsigned) DB_QueryCOUNT ("can not get number of users in a group", (unsigned) DB_QueryCOUNT ("can not get number of users in a group",
"SELECT COUNT(*)" "SELECT COUNT(*)"
" FROM crs_grp_usr,crs_grp,crs_grp_types,crs_usr" " FROM crs_grp_usr,"
"crs_grp,"
"crs_grp_types,"
"crs_users"
" WHERE crs_grp_usr.GrpCod=%ld" " WHERE crs_grp_usr.GrpCod=%ld"
" AND crs_grp_usr.GrpCod=crs_grp.GrpCod" " AND crs_grp_usr.GrpCod=crs_grp.GrpCod"
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod" " AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=crs_usr.CrsCod" " AND crs_grp_types.CrsCod=crs_users.CrsCod"
" AND crs_grp_usr.UsrCod=crs_usr.UsrCod" " AND crs_grp_usr.UsrCod=crs_users.UsrCod"
" AND crs_usr.Role=%u", " AND crs_users.Role=%u",
GrpCod,(unsigned) Role); GrpCod,(unsigned) Role);
} }
@ -3321,13 +3324,16 @@ static unsigned long Grp_CountNumUsrsInNoGrpsOfType (Rol_Role_t Role,long GrpTyp
/***** Get number of users not belonging to groups of a type ******/ /***** Get number of users not belonging to groups of a type ******/
return DB_QueryCOUNT ("can not get the number of users" return DB_QueryCOUNT ("can not get the number of users"
" not belonging to groups of a type", " not belonging to groups of a type",
"SELECT COUNT(UsrCod) FROM crs_usr" "SELECT COUNT(UsrCod)"
" WHERE CrsCod=%ld AND Role=%u" " FROM crs_users"
" AND UsrCod NOT IN" " WHERE CrsCod=%ld"
" (SELECT DISTINCT crs_grp_usr.UsrCod" " AND Role=%u"
" FROM crs_grp,crs_grp_usr" " AND UsrCod NOT IN"
" WHERE crs_grp.GrpTypCod=%ld" " (SELECT DISTINCT crs_grp_usr.UsrCod"
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod)", " FROM crs_grp,"
"crs_grp_usr"
" WHERE crs_grp.GrpTypCod=%ld"
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod)",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Role,GrpTypCod); (unsigned) Role,GrpTypCod);
} }
@ -3498,17 +3504,20 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod)
"SELECT GrpTypCod FROM" "SELECT GrpTypCod FROM"
" (" " ("
"SELECT crs_grp_types.GrpTypCod AS GrpTypCod," "SELECT crs_grp_types.GrpTypCod AS GrpTypCod,"
"COUNT(*) AS NumStudents," "COUNT(*) AS NumStudents,"
"crs_grp.MaxStudents as MaxStudents" "crs_grp.MaxStudents as MaxStudents"
" FROM crs_grp_types,crs_grp,crs_grp_usr,crs_usr" " FROM crs_grp_types,"
"crs_grp,"
"crs_grp_usr,"
"crs_users"
" WHERE %s" // Which group types? " WHERE %s" // Which group types?
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
" AND crs_grp.Open='Y'" // Open " AND crs_grp.Open='Y'" // Open
" AND crs_grp.MaxStudents>0" // Admits students " AND crs_grp.MaxStudents>0" // Admits students
" AND crs_grp_types.CrsCod=crs_usr.CrsCod" " AND crs_grp_types.CrsCod=crs_users.CrsCod"
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod" " AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
" AND crs_grp_usr.UsrCod=crs_usr.UsrCod" " AND crs_grp_usr.UsrCod=crs_users.UsrCod"
" AND crs_usr.Role=%u" // Student " AND crs_users.Role=%u" // Student
" GROUP BY crs_grp.GrpCod" " GROUP BY crs_grp.GrpCod"
" HAVING NumStudents<MaxStudents" // Not full " HAVING NumStudents<MaxStudents" // Not full
") AS available_grp_types_with_stds" ") AS available_grp_types_with_stds"
@ -3517,31 +3526,35 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod)
// Available mandatory groups... // Available mandatory groups...
"SELECT crs_grp_types.GrpTypCod AS GrpTypCod" "SELECT crs_grp_types.GrpTypCod AS GrpTypCod"
" FROM crs_grp_types,crs_grp" " FROM crs_grp_types,"
"crs_grp"
" WHERE %s" // Which group types? " WHERE %s" // Which group types?
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
" AND crs_grp.Open='Y'" // Open " AND crs_grp.Open='Y'" // Open
" AND crs_grp.MaxStudents>0" // Admits students " AND crs_grp.MaxStudents>0" // Admits students
// ...without students // ...without students
" AND crs_grp.GrpCod NOT IN" " AND crs_grp.GrpCod NOT IN"
" (SELECT crs_grp_usr.GrpCod" " (SELECT crs_grp_usr.GrpCod"
" FROM crs_usr,crs_grp_usr" " FROM crs_users,"
" WHERE crs_usr.CrsCod=%ld" "crs_grp_usr"
" AND crs_usr.Role=%u" // Student " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=crs_grp_usr.UsrCod)" " AND crs_users.Role=%u" // Student
" AND crs_users.UsrCod=crs_grp_usr.UsrCod)"
") AS available_grp_types" ") AS available_grp_types"
// ...to which I don't belong // ...to which I don't belong
" WHERE GrpTypCod NOT IN" " WHERE GrpTypCod NOT IN"
" (SELECT crs_grp_types.GrpTypCod" " (SELECT crs_grp_types.GrpTypCod"
" FROM crs_grp_types,crs_grp,crs_grp_usr" " FROM crs_grp_types,"
" WHERE %s" // Which group types? "crs_grp,"
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" "crs_grp_usr"
" AND crs_grp.Open='Y'" // Open " WHERE %s" // Which group types?
" AND crs_grp.MaxStudents>0" // Admits students " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod" " AND crs_grp.Open='Y'" // Open
" AND crs_grp_usr.UsrCod=%ld)", // I belong " AND crs_grp.MaxStudents>0" // Admits students
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
" AND crs_grp_usr.UsrCod=%ld)", // I belong
SubQueryGrpTypes,(unsigned) Rol_STD, SubQueryGrpTypes,(unsigned) Rol_STD,
SubQueryGrpTypes, SubQueryGrpTypes,

View File

@ -355,20 +355,20 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"deg_degrees.FullName," "deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_data" "usr_data"
" WHERE deg_degrees.DegTypCod=%ld" " WHERE deg_degrees.DegTypCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld" " AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName", "crs_courses.FullName",
Indicators->DegTypCod, Indicators->DegTypCod,
@ -378,19 +378,19 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"deg_degrees.FullName," "deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_data" "usr_data"
" WHERE deg_degrees.DegCod=crs_courses.DegCod" " WHERE deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld" " AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName", "crs_courses.FullName",
(unsigned) Rol_TCH, (unsigned) Rol_TCH,
@ -401,26 +401,26 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
if (Indicators->DegTypCod > 0) if (Indicators->DegTypCod > 0)
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName," "SELECT deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses" "crs_courses"
" WHERE deg_degrees.DegTypCod=%ld" " WHERE deg_degrees.DegTypCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName", "crs_courses.FullName",
Indicators->DegTypCod); Indicators->DegTypCod);
else else
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName," "SELECT deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses" "crs_courses"
" WHERE deg_degrees.DegCod=crs_courses.DegCod" " WHERE deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName"); "crs_courses.FullName");
@ -431,24 +431,24 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"deg_degrees.FullName," "deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_data" "usr_data"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld" " AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName", "crs_courses.FullName",
Gbl.Hierarchy.Cty.CtyCod, Gbl.Hierarchy.Cty.CtyCod,
@ -457,18 +457,18 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
else else
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName," "SELECT deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses" "crs_courses"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName", "crs_courses.FullName",
Gbl.Hierarchy.Cty.CtyCod); Gbl.Hierarchy.Cty.CtyCod);
@ -478,22 +478,22 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"deg_degrees.FullName," "deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_data" "usr_data"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld" " AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName", "crs_courses.FullName",
Gbl.Hierarchy.Ins.InsCod, Gbl.Hierarchy.Ins.InsCod,
@ -502,16 +502,16 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
else else
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName," "SELECT deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses" "crs_courses"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName", "crs_courses.FullName",
Gbl.Hierarchy.Ins.InsCod); Gbl.Hierarchy.Ins.InsCod);
@ -521,20 +521,20 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"deg_degrees.FullName," "deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_data" "usr_data"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld" " AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName", "crs_courses.FullName",
Gbl.Hierarchy.Ctr.CtrCod, Gbl.Hierarchy.Ctr.CtrCod,
@ -543,14 +543,14 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
else else
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName," "SELECT deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses" "crs_courses"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName", "crs_courses.FullName",
Gbl.Hierarchy.Ctr.CtrCod); Gbl.Hierarchy.Ctr.CtrCod);
@ -560,20 +560,20 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"deg_degrees.FullName," "deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_data" "usr_data"
" WHERE deg_degrees.DegCod=%ld" " WHERE deg_degrees.DegCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld" " AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName", "crs_courses.FullName",
Gbl.Hierarchy.Deg.DegCod, Gbl.Hierarchy.Deg.DegCod,
@ -582,14 +582,14 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
else else
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName," "SELECT deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses" "crs_courses"
" WHERE deg_degrees.DegCod=%ld" " WHERE deg_degrees.DegCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName", "crs_courses.FullName",
Gbl.Hierarchy.Deg.DegCod); Gbl.Hierarchy.Deg.DegCod);
@ -599,21 +599,21 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"deg_degrees.FullName," "deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_data" "usr_data"
" WHERE crs_courses.CrsCod=%ld" " WHERE crs_courses.CrsCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.CrsCod=%ld" " AND crs_users.CrsCod=%ld"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_users.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld" " AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName", "crs_courses.FullName",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
@ -623,14 +623,14 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
else else
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses", DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName," "SELECT deg_degrees.FullName," // row[0]
"crs_courses.FullName," "crs_courses.FullName," // row[1]
"crs_courses.CrsCod," "crs_courses.CrsCod," // row[2]
"crs_courses.InsCrsCod" "crs_courses.InsCrsCod" // row[3]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses" "crs_courses"
" WHERE crs_courses.CrsCod=%ld" " WHERE crs_courses.CrsCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName," " ORDER BY deg_degrees.FullName,"
"crs_courses.FullName", "crs_courses.FullName",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);

View File

@ -2105,16 +2105,16 @@ unsigned Ins_GetCachedNumInssWithUsrs (Rol_Role_t Role,const char *SubQuery,
NumInssWithUsrs = (unsigned) NumInssWithUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of institutions with users", DB_QueryCOUNT ("can not get number of institutions with users",
"SELECT COUNT(DISTINCT ins_instits.InsCod)" "SELECT COUNT(DISTINCT ins_instits.InsCod)"
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr" "crs_users"
" WHERE %sinstitutions.InsCod=ctr_centers.InsCod" " WHERE %sinstitutions.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u", " AND crs_users.Role=%u",
SubQuery,(unsigned) Role); SubQuery,(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureInss[Role],Scope,Cod, FigCch_UpdateFigureIntoCache (FigureInss[Role],Scope,Cod,
FigCch_UNSIGNED,&NumInssWithUsrs); FigCch_UNSIGNED,&NumInssWithUsrs);

View File

@ -2185,10 +2185,13 @@ unsigned Msg_GetNumMsgsSentByTchsCrs (long CrsCod)
return return
(unsigned) DB_QueryCOUNT ("can not get the number of messages" (unsigned) DB_QueryCOUNT ("can not get the number of messages"
" sent by teachers", " sent by teachers",
"SELECT COUNT(*) FROM msg_snt,crs_usr" "SELECT COUNT(*)"
" FROM msg_snt,"
"crs_users"
" WHERE msg_snt.CrsCod=%ld" " WHERE msg_snt.CrsCod=%ld"
" AND crs_usr.CrsCod=%ld AND crs_usr.Role=%u" " AND crs_users.CrsCod=%ld"
" AND msg_snt.UsrCod=crs_usr.UsrCod", " AND crs_users.Role=%u"
" AND msg_snt.UsrCod=crs_users.UsrCod",
CrsCod,CrsCod,(unsigned) Rol_TCH); CrsCod,CrsCod,(unsigned) Rol_TCH);
} }

View File

@ -457,8 +457,8 @@ void Net_ShowWebAndSocialNetworksStats (void)
NumRows = (unsigned) NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users" DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks", " with webs / social networks",
"SELECT Web," "SELECT Web," // row[0]
"COUNT(*) AS N" "COUNT(*) AS N" // row[1]
" FROM usr_webs" " FROM usr_webs"
" GROUP BY Web" " GROUP BY Web"
" ORDER BY N DESC,Web"); " ORDER BY N DESC,Web");
@ -467,90 +467,95 @@ void Net_ShowWebAndSocialNetworksStats (void)
NumRows = (unsigned) NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users" DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks", " with webs / social networks",
"SELECT usr_webs.Web," "SELECT usr_webs.Web," // row[0]
"COUNT(DISTINCT usr_webs.UsrCod) AS N" "COUNT(DISTINCT usr_webs.UsrCod) AS N" // row[1]
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_webs" "usr_webs"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_webs.UsrCod" " AND crs_users.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web" " GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web", " ORDER BY N DESC,"
"usr_webs.Web",
Gbl.Hierarchy.Cty.CtyCod); Gbl.Hierarchy.Cty.CtyCod);
break; break;
case Hie_Lvl_INS: case Hie_Lvl_INS:
NumRows = (unsigned) NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users" DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks", " with webs / social networks",
"SELECT usr_webs.Web," "SELECT usr_webs.Web," // row[0]
"COUNT(DISTINCT usr_webs.UsrCod) AS N" "COUNT(DISTINCT usr_webs.UsrCod) AS N" // row[1]
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_webs" "usr_webs"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_webs.UsrCod" " AND crs_users.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web" " GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web", " ORDER BY N DESC,"
"usr_webs.Web",
Gbl.Hierarchy.Ins.InsCod); Gbl.Hierarchy.Ins.InsCod);
break; break;
case Hie_Lvl_CTR: case Hie_Lvl_CTR:
NumRows = (unsigned) NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users" DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks", " with webs / social networks",
"SELECT usr_webs.Web," "SELECT usr_webs.Web," // row[0]
"COUNT(DISTINCT usr_webs.UsrCod) AS N" "COUNT(DISTINCT usr_webs.UsrCod) AS N" // row[1]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_webs" "usr_webs"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_webs.UsrCod" " AND crs_users.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web" " GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web", " ORDER BY N DESC,"
"usr_webs.Web",
Gbl.Hierarchy.Ctr.CtrCod); Gbl.Hierarchy.Ctr.CtrCod);
break; break;
case Hie_Lvl_DEG: case Hie_Lvl_DEG:
NumRows = (unsigned) NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users" DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks", " with webs / social networks",
"SELECT usr_webs.Web," "SELECT usr_webs.Web," // row[0]
"COUNT(DISTINCT usr_webs.UsrCod) AS N" "COUNT(DISTINCT usr_webs.UsrCod) AS N" // row[1]
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"usr_webs" "usr_webs"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_webs.UsrCod" " AND crs_users.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web" " GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web", " ORDER BY N DESC,"
"usr_webs.Web",
Gbl.Hierarchy.Deg.DegCod); Gbl.Hierarchy.Deg.DegCod);
break; break;
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
NumRows = (unsigned) NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users" DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks", " with webs / social networks",
"SELECT usr_webs.Web," "SELECT usr_webs.Web," // row[0]
"COUNT(DISTINCT usr_webs.UsrCod) AS N" "COUNT(DISTINCT usr_webs.UsrCod) AS N" // row[1]
" FROM crs_usr," " FROM crs_users,"
"usr_webs" "usr_webs"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_webs.UsrCod" " AND crs_users.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web" " GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web", " ORDER BY N DESC,"
"usr_webs.Web",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:

View File

@ -1219,20 +1219,22 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
case Brw_ADMI_SHR_CRS: case Brw_ADMI_SHR_CRS:
case Brw_ADMI_MRK_CRS: // Notify all users in course except me case Brw_ADMI_MRK_CRS: // Notify all users in course except me
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"SELECT UsrCod FROM crs_usr" "SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld" " WHERE CrsCod=%ld"
" AND UsrCod<>%ld", " AND UsrCod<>%ld",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod);
break; break;
case Brw_ADMI_TCH_CRS: // Notify all teachers in course except me case Brw_ADMI_TCH_CRS: // Notify all teachers in course except me
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"SELECT UsrCod FROM crs_usr" "SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld" " WHERE CrsCod=%ld"
" AND UsrCod<>%ld" " AND UsrCod<>%ld"
" AND Role=%u", // Notify teachers only " AND Role=%u", // Notify teachers only
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH); (unsigned) Rol_TCH);
@ -1242,23 +1244,27 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
case Brw_ADMI_MRK_GRP: // Notify all users in group except me case Brw_ADMI_MRK_GRP: // Notify all users in group except me
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"SELECT UsrCod FROM crs_grp_usr" "SELECT UsrCod" // row[0]
" FROM crs_grp_usr"
" WHERE crs_grp_usr.GrpCod=%ld" " WHERE crs_grp_usr.GrpCod=%ld"
" AND crs_grp_usr.UsrCod<>%ld", " AND crs_grp_usr.UsrCod<>%ld",
Gbl.Crs.Grps.GrpCod, Gbl.Crs.Grps.GrpCod,
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod);
break; break;
case Brw_ADMI_TCH_GRP: // Notify all teachers in group except me case Brw_ADMI_TCH_GRP: // Notify all teachers in group except me
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"SELECT crs_grp_usr.UsrCod" "SELECT crs_grp_usr.UsrCod" // row[0]
" FROM crs_grp_usr,crs_grp,crs_grp_types,crs_usr" " FROM crs_grp_usr,"
"crs_grp,"
"crs_grp_types,"
"crs_users"
" WHERE crs_grp_usr.GrpCod=%ld" " WHERE crs_grp_usr.GrpCod=%ld"
" AND crs_grp_usr.UsrCod<>%ld" " AND crs_grp_usr.UsrCod<>%ld"
" AND crs_grp_usr.GrpCod=crs_grp.GrpCod" " AND crs_grp_usr.GrpCod=crs_grp.GrpCod"
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod" " AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=crs_usr.CrsCod" " AND crs_grp_types.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u", // Notify teachers only " AND crs_users.Role=%u", // Notify teachers only
Gbl.Crs.Grps.GrpCod, Gbl.Crs.Grps.GrpCod,
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH); (unsigned) Rol_TCH);
@ -1273,16 +1279,16 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
// Cases 1 and 2 are mutually exclusive, so the union returns the case 1 or 2 // Cases 1 and 2 are mutually exclusive, so the union returns the case 1 or 2
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"(SELECT crs_usr.UsrCod" // row[0] "(SELECT crs_users.UsrCod" // row[0]
" FROM asg_assignments," " FROM asg_assignments,"
"crs_usr" "crs_users"
" WHERE asg_assignments.AsgCod=%ld" " WHERE asg_assignments.AsgCod=%ld"
" AND asg_assignments.AsgCod NOT IN" " AND asg_assignments.AsgCod NOT IN"
" (SELECT AsgCod" " (SELECT AsgCod"
" FROM asg_groups" " FROM asg_groups"
" WHERE AsgCod=%ld)" " WHERE AsgCod=%ld)"
" AND asg_assignments.CrsCod=crs_usr.CrsCod" " AND asg_assignments.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod<>%ld)" " AND crs_users.UsrCod<>%ld)"
" UNION " " UNION "
"(SELECT DISTINCT crs_grp_usr.UsrCod" "(SELECT DISTINCT crs_grp_usr.UsrCod"
" FROM asg_groups," " FROM asg_groups,"
@ -1297,8 +1303,10 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
case Ntf_EVENT_NOTICE: case Ntf_EVENT_NOTICE:
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"SELECT UsrCod FROM crs_usr" "SELECT UsrCod" // row[0]
" WHERE CrsCod=%ld AND UsrCod<>%ld", " FROM crs_users"
" WHERE CrsCod=%ld"
" AND UsrCod<>%ld",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod);
break; break;
@ -1312,10 +1320,11 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
// If this course has teachers ==> send notification to teachers // If this course has teachers ==> send notification to teachers
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"SELECT UsrCod FROM crs_usr" "SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld" " WHERE CrsCod=%ld"
" AND UsrCod<>%ld" " AND UsrCod<>%ld"
" AND Role=%u", // Notify teachers only " AND Role=%u", // Notify teachers only
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH); (unsigned) Rol_TCH);
@ -1326,12 +1335,13 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
// ==> send notification to administrators or superusers // ==> send notification to administrators or superusers
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"SELECT UsrCod FROM usr_admins" "SELECT UsrCod" // row[0]
" FROM usr_admins"
" WHERE (Scope='%s'" " WHERE (Scope='%s'"
" OR (Scope='%s' AND Cod=%ld)" " OR (Scope='%s' AND Cod=%ld)"
" OR (Scope='%s' AND Cod=%ld)" " OR (Scope='%s' AND Cod=%ld)"
" OR (Scope='%s' AND Cod=%ld))" " OR (Scope='%s' AND Cod=%ld))"
" AND UsrCod<>%ld", " AND UsrCod<>%ld",
Sco_GetDBStrFromScope (Hie_Lvl_SYS), Sco_GetDBStrFromScope (Hie_Lvl_SYS),
Sco_GetDBStrFromScope (Hie_Lvl_INS),Gbl.Hierarchy.Ins.InsCod, Sco_GetDBStrFromScope (Hie_Lvl_INS),Gbl.Hierarchy.Ins.InsCod,
Sco_GetDBStrFromScope (Hie_Lvl_CTR),Gbl.Hierarchy.Ctr.CtrCod, Sco_GetDBStrFromScope (Hie_Lvl_CTR),Gbl.Hierarchy.Ctr.CtrCod,
@ -1342,11 +1352,13 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
// Cod is the code of the social publishing // Cod is the code of the social publishing
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"SELECT DISTINCT(PublisherCod) FROM tml_pubs" "SELECT DISTINCT(PublisherCod)" // row[0]
" FROM tml_pubs"
" WHERE NotCod=" " WHERE NotCod="
"(SELECT NotCod FROM tml_pubs" "(SELECT NotCod"
" WHERE PubCod=%ld)" " FROM tml_pubs"
" AND PublisherCod<>%ld", " WHERE PubCod=%ld)"
" AND PublisherCod<>%ld",
Cod,Gbl.Usrs.Me.UsrDat.UsrCod); Cod,Gbl.Usrs.Me.UsrDat.UsrCod);
break; break;
case Ntf_EVENT_TL_FAV: // New favourite to one of my social notes or comments case Ntf_EVENT_TL_FAV: // New favourite to one of my social notes or comments
@ -1364,16 +1376,21 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
case For_FORUM_COURSE_USRS: case For_FORUM_COURSE_USRS:
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"SELECT UsrCod FROM crs_usr" "SELECT UsrCod" // row[0]
" WHERE CrsCod=%ld AND UsrCod<>%ld", " FROM crs_users"
" WHERE CrsCod=%ld"
" AND UsrCod<>%ld",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod);
break; break;
case For_FORUM_COURSE_TCHS: case For_FORUM_COURSE_TCHS:
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"SELECT UsrCod FROM crs_usr" "SELECT UsrCod" // row[0]
" WHERE CrsCod=%ld AND Role=%u AND UsrCod<>%ld", " FROM crs_users"
" WHERE CrsCod=%ld"
" AND Role=%u"
" AND UsrCod<>%ld",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Rol_TCH, (unsigned) Rol_TCH,
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod);
@ -1385,7 +1402,7 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
case Ntf_EVENT_FORUM_REPLY: case Ntf_EVENT_FORUM_REPLY:
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"SELECT DISTINCT(UsrCod)" "SELECT DISTINCT(UsrCod)" // row[0]
" FROM for_posts" " FROM for_posts"
" WHERE ThrCod = (SELECT ThrCod" " WHERE ThrCod = (SELECT ThrCod"
" FROM for_posts" " FROM for_posts"
@ -1401,32 +1418,32 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
// Cases 1 and 2 are mutually exclusive, so the union returns the case 1 or 2 // Cases 1 and 2 are mutually exclusive, so the union returns the case 1 or 2
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"(SELECT crs_usr.UsrCod" "(SELECT crs_users.UsrCod" // row[0]
" FROM svy_surveys," " FROM svy_surveys,"
"crs_usr" "crs_users"
" WHERE svy_surveys.SvyCod=%ld" " WHERE svy_surveys.SvyCod=%ld"
" AND svy_surveys.SvyCod NOT IN" " AND svy_surveys.SvyCod NOT IN"
" (SELECT SvyCod" " (SELECT SvyCod"
" FROM svy_groups" " FROM svy_groups"
" WHERE SvyCod=%ld)" " WHERE SvyCod=%ld)"
" AND svy_surveys.Scope='%s'" " AND svy_surveys.Scope='%s'"
" AND svy_surveys.Cod=crs_usr.CrsCod" " AND svy_surveys.Cod=crs_users.CrsCod"
" AND crs_usr.UsrCod<>%ld" " AND crs_users.UsrCod<>%ld"
" AND (svy_surveys.Roles&(1<<crs_usr.Role))<>0)" " AND (svy_surveys.Roles&(1<<crs_users.Role))<>0)"
" UNION " " UNION "
"(SELECT DISTINCT crs_grp_usr.UsrCod" "(SELECT DISTINCT crs_grp_usr.UsrCod"
" FROM svy_groups," " FROM svy_groups,"
"crs_grp_usr," "crs_grp_usr,"
"svy_surveys," "svy_surveys,"
"crs_usr" "crs_users"
" WHERE svy_groups.SvyCod=%ld" " WHERE svy_groups.SvyCod=%ld"
" AND svy_groups.GrpCod=crs_grp_usr.GrpCod" " AND svy_groups.GrpCod=crs_grp_usr.GrpCod"
" AND crs_grp_usr.UsrCod=crs_usr.UsrCod" " AND crs_grp_usr.UsrCod=crs_users.UsrCod"
" AND crs_grp_usr.UsrCod<>%ld" " AND crs_grp_usr.UsrCod<>%ld"
" AND svy_groups.SvyCod=svy_surveys.SvyCod" " AND svy_groups.SvyCod=svy_surveys.SvyCod"
" AND svy_surveys.Scope='%s'" " AND svy_surveys.Scope='%s'"
" AND svy_surveys.Cod=crs_usr.CrsCod" " AND svy_surveys.Cod=crs_users.CrsCod"
" AND (svy_surveys.Roles&(1<<crs_usr.Role))<>0)", " AND (svy_surveys.Roles&(1<<crs_users.Role))<>0)",
Cod, Cod,
Cod, Cod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS), Sco_GetDBStrFromScope (Hie_Lvl_CRS),

View File

@ -1430,15 +1430,16 @@ static long Pho_GetDegWithAvgPhotoLeastRecentlyUpdated (void)
/* Get one degree with students not yet computed */ /* Get one degree with students not yet computed */
NumRows = NumRows =
DB_QuerySELECT (&mysql_res,"can not get degrees", DB_QuerySELECT (&mysql_res,"can not get degrees",
"SELECT DISTINCT deg_degrees.DegCod" "SELECT DISTINCT deg_degrees.DegCod" // row[0]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr" "crs_users"
" WHERE deg_degrees.DegCod=crs_courses.DegCod" " WHERE deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" AND deg_degrees.DegCod NOT IN" " AND deg_degrees.DegCod NOT IN"
" (SELECT DISTINCT DegCod FROM sta_degrees)" " (SELECT DISTINCT DegCod"
" FROM sta_degrees)"
" LIMIT 1", " LIMIT 1",
(unsigned) Rol_STD); (unsigned) Rol_STD);
@ -1462,15 +1463,16 @@ static long Pho_GetDegWithAvgPhotoLeastRecentlyUpdated (void)
/* Get degrees from database */ /* Get degrees from database */
NumRows = NumRows =
DB_QuerySELECT (&mysql_res,"can not get degrees", DB_QuerySELECT (&mysql_res,"can not get degrees",
"SELECT sta_degrees.DegCod" "SELECT sta_degrees.DegCod" // row[0]
" FROM sta_degrees," " FROM sta_degrees,"
"crs_courses," "crs_courses,"
"crs_usr" "crs_users"
" WHERE sta_degrees.TimeAvgPhoto<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)" " WHERE sta_degrees.TimeAvgPhoto<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)"
" AND sta_degrees.DegCod=crs_courses.DegCod" " AND sta_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.Role=%u" " AND crs_users.Role=%u"
" ORDER BY sta_degrees.TimeAvgPhoto LIMIT 1", " ORDER BY sta_degrees.TimeAvgPhoto"
" LIMIT 1",
Cfg_MIN_TIME_TO_RECOMPUTE_AVG_PHOTO, Cfg_MIN_TIME_TO_RECOMPUTE_AVG_PHOTO,
(unsigned) Rol_STD); (unsigned) Rol_STD);

View File

@ -1437,11 +1437,13 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
case Hie_Lvl_SYS: case Hie_Lvl_SYS:
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT UsrCod," "SELECT UsrCod," // row[0]
"%s" "%s" // row[1]
" FROM usr_figures" " FROM usr_figures"
" WHERE %s>0" " WHERE %s>0"
" AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " AND UsrCod NOT IN"
" (SELECT UsrCod"
" FROM usr_banned)"
" ORDER BY %s DESC," " ORDER BY %s DESC,"
"UsrCod" "UsrCod"
" LIMIT 100", " LIMIT 100",
@ -1452,22 +1454,24 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"usr_figures.UsrCod," "usr_figures.UsrCod," // row[0]
"usr_figures.%s" "usr_figures.%s" // row[1]
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_figures" "usr_figures"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod" " AND crs_users.UsrCod=usr_figures.UsrCod"
" AND usr_figures.%s>0" " AND usr_figures.%s>0"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " AND usr_figures.UsrCod NOT IN"
" (SELECT UsrCod"
" FROM usr_banned)"
" ORDER BY usr_figures.%s DESC," " ORDER BY usr_figures.%s DESC,"
"usr_figures.UsrCod" "usr_figures.UsrCod"
" LIMIT 100", " LIMIT 100",
@ -1479,20 +1483,22 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"usr_figures.UsrCod," "usr_figures.UsrCod," // row[0]
"usr_figures.%s" "usr_figures.%s" // row[1]
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_figures" "usr_figures"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod" " AND crs_users.UsrCod=usr_figures.UsrCod"
" AND usr_figures.%s>0" " AND usr_figures.%s>0"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " AND usr_figures.UsrCod NOT IN"
" (SELECT UsrCod"
" FROM usr_banned)"
" ORDER BY usr_figures.%s DESC," " ORDER BY usr_figures.%s DESC,"
"usr_figures.UsrCod" "usr_figures.UsrCod"
" LIMIT 100", " LIMIT 100",
@ -1504,18 +1510,20 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"usr_figures.UsrCod," "usr_figures.UsrCod," // row[0]
"usr_figures.%s" "usr_figures.%s" // row[1]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_figures" "usr_figures"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod" " AND crs_users.UsrCod=usr_figures.UsrCod"
" AND usr_figures.%s>0" " AND usr_figures.%s>0"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " AND usr_figures.UsrCod NOT IN"
" (SELECT UsrCod"
" FROM usr_banned)"
" ORDER BY usr_figures.%s DESC," " ORDER BY usr_figures.%s DESC,"
"usr_figures.UsrCod" "usr_figures.UsrCod"
" LIMIT 100", " LIMIT 100",
@ -1527,16 +1535,18 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"usr_figures.UsrCod," "usr_figures.UsrCod," // row[0]
"usr_figures.%s" "usr_figures.%s" // row[1]
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"usr_figures" "usr_figures"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod" " AND crs_users.UsrCod=usr_figures.UsrCod"
" AND usr_figures.%s>0" " AND usr_figures.%s>0"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " AND usr_figures.UsrCod NOT IN"
" (SELECT UsrCod"
" FROM usr_banned)"
" ORDER BY usr_figures.%s DESC," " ORDER BY usr_figures.%s DESC,"
"usr_figures.UsrCod" "usr_figures.UsrCod"
" LIMIT 100", " LIMIT 100",
@ -1548,14 +1558,16 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"usr_figures.UsrCod," "usr_figures.UsrCod," // row[0]
"usr_figures.%s" "usr_figures.%s" // row[1]
" FROM crs_usr," " FROM crs_users,"
"usr_figures" "usr_figures"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_figures.UsrCod" " AND crs_users.UsrCod=usr_figures.UsrCod"
" AND usr_figures.%s>0" " AND usr_figures.%s>0"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " AND usr_figures.UsrCod NOT IN"
" (SELECT UsrCod"
" FROM usr_banned)"
" ORDER BY usr_figures.%s DESC," " ORDER BY usr_figures.%s DESC,"
"usr_figures.UsrCod" "usr_figures.UsrCod"
" LIMIT 100", " LIMIT 100",
@ -1654,13 +1666,15 @@ void Prf_GetAndShowRankingClicksPerDay (void)
case Hie_Lvl_SYS: case Hie_Lvl_SYS:
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT UsrCod," "SELECT UsrCod," // row[0]
"NumClicks/(DATEDIFF(NOW()," "NumClicks/(DATEDIFF(NOW(),"
"FirstClickTime)+1) AS NumClicksPerDay" "FirstClickTime)+1) AS NumClicksPerDay" // row[1]
" FROM usr_figures" " FROM usr_figures"
" WHERE NumClicks>0" " WHERE NumClicks>0"
" AND FirstClickTime>FROM_UNIXTIME(0)" " AND FirstClickTime>FROM_UNIXTIME(0)"
" AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " AND UsrCod NOT IN"
" (SELECT UsrCod"
" FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,UsrCod" " ORDER BY NumClicksPerDay DESC,UsrCod"
" LIMIT 100"); " LIMIT 100");
break; break;
@ -1668,24 +1682,26 @@ void Prf_GetAndShowRankingClicksPerDay (void)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"usr_figures.UsrCod," "usr_figures.UsrCod," // row[0]
"usr_figures.NumClicks/(DATEDIFF(NOW()," "usr_figures.NumClicks/(DATEDIFF(NOW(),"
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay" "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" // row[1]
" FROM ins_instits," " FROM ins_instits,"
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_figures" "usr_figures"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod" " AND crs_users.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0" " AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)" " AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " AND usr_figures.UsrCod NOT IN"
" (SELECT UsrCod"
" FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC," " ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod" "usr_figures.UsrCod"
" LIMIT 100", " LIMIT 100",
@ -1695,22 +1711,24 @@ void Prf_GetAndShowRankingClicksPerDay (void)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"usr_figures.UsrCod," "usr_figures.UsrCod," // row[0]
"usr_figures.NumClicks/(DATEDIFF(NOW()," "usr_figures.NumClicks/(DATEDIFF(NOW(),"
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay" "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" // row[1]
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_figures" "usr_figures"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod" " AND crs_users.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0" " AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)" " AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " AND usr_figures.UsrCod NOT IN"
" (SELECT UsrCod"
" FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC," " ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod" "usr_figures.UsrCod"
" LIMIT 100", " LIMIT 100",
@ -1720,20 +1738,22 @@ void Prf_GetAndShowRankingClicksPerDay (void)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"usr_figures.UsrCod," "usr_figures.UsrCod," // row[0]
"usr_figures.NumClicks/(DATEDIFF(NOW()," "usr_figures.NumClicks/(DATEDIFF(NOW(),"
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay" "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" // row[1]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_usr," "crs_users,"
"usr_figures" "usr_figures"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod" " AND crs_users.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0" " AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)" " AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " AND usr_figures.UsrCod NOT IN"
" (SELECT UsrCod"
" FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC," " ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod" "usr_figures.UsrCod"
" LIMIT 100", " LIMIT 100",
@ -1743,18 +1763,20 @@ void Prf_GetAndShowRankingClicksPerDay (void)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"usr_figures.UsrCod," "usr_figures.UsrCod," // row[0]
"usr_figures.NumClicks/(DATEDIFF(NOW()," "usr_figures.NumClicks/(DATEDIFF(NOW(),"
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay" "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" // row[1]
" FROM crs_courses," " FROM crs_courses,"
"crs_usr," "crs_users,"
"usr_figures" "usr_figures"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod" " AND crs_users.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0" " AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)" " AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " AND usr_figures.UsrCod NOT IN"
" (SELECT UsrCod"
" FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC," " ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod" "usr_figures.UsrCod"
" LIMIT 100", " LIMIT 100",
@ -1764,16 +1786,16 @@ void Prf_GetAndShowRankingClicksPerDay (void)
NumUsrs = (unsigned) NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking", DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW " "SELECT DISTINCTROW "
"usr_figures.UsrCod," "usr_figures.UsrCod," // row[0]
"usr_figures.NumClicks/(DATEDIFF(NOW()," "usr_figures.NumClicks/(DATEDIFF(NOW(),"
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay" "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" // row[1]
" FROM crs_usr," " FROM crs_users,"
"usr_figures" "usr_figures"
" WHERE crs_usr.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_figures.UsrCod" " AND crs_users.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0" " AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)" " AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC," " ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod" "usr_figures.UsrCod"
" LIMIT 100", " LIMIT 100",

View File

@ -1013,13 +1013,17 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role,
"SELECT my_courses.CrsCod," // row[0] "SELECT my_courses.CrsCod," // row[0]
"COUNT(*) AS N" // row[1] "COUNT(*) AS N" // row[1]
" FROM" " FROM"
" (SELECT CrsCod FROM crs_usr" " (SELECT CrsCod"
" WHERE UsrCod=%ld AND Role=%u) AS my_courses" // It's imperative to use a derived table to not block crs_usr! " FROM crs_users"
" WHERE UsrCod=%ld"
" AND Role=%u) AS my_courses" // It's imperative to use a derived table to not block crs_usr!
" LEFT JOIN log" " LEFT JOIN log"
" ON (my_courses.CrsCod=log.CrsCod)" " ON (my_courses.CrsCod=log.CrsCod)"
" WHERE log.UsrCod=%ld AND log.Role=%u" " WHERE log.UsrCod=%ld"
" AND log.Role=%u"
" GROUP BY my_courses.CrsCod" " GROUP BY my_courses.CrsCod"
" ORDER BY N DESC,my_courses.CrsCod DESC", " ORDER BY N DESC,"
"my_courses.CrsCod DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Role, Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Role,
Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Role); Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Role);

View File

@ -387,8 +387,10 @@ Rol_Role_t Rol_GetRoleUsrInCrs (long UsrCod,long CrsCod)
Gbl.Cache.RoleUsrInCrs.CrsCod = CrsCod; Gbl.Cache.RoleUsrInCrs.CrsCod = CrsCod;
Gbl.Cache.RoleUsrInCrs.Role = Rol_UNK; Gbl.Cache.RoleUsrInCrs.Role = Rol_UNK;
if (DB_QuerySELECT (&mysql_res,"can not get the role of a user in a course", if (DB_QuerySELECT (&mysql_res,"can not get the role of a user in a course",
"SELECT Role FROM crs_usr" "SELECT Role" // row[0]
" WHERE CrsCod=%ld AND UsrCod=%ld", " FROM crs_users"
" WHERE CrsCod=%ld"
" AND UsrCod=%ld",
CrsCod,UsrCod) == 1) // User belongs to the course CrsCod,UsrCod) == 1) // User belongs to the course
{ {
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -419,7 +421,8 @@ void Rol_GetRolesInAllCrssIfNotYetGot (struct UsrData *UsrDat)
NumRoles = NumRoles =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get the roles of a user" (unsigned) DB_QuerySELECT (&mysql_res,"can not get the roles of a user"
" in all his/her courses", " in all his/her courses",
"SELECT DISTINCT(Role) FROM crs_usr" "SELECT DISTINCT(Role)" // row[0]
" FROM crs_users"
" WHERE UsrCod=%ld", " WHERE UsrCod=%ld",
UsrDat->UsrCod); UsrDat->UsrCod);
for (NumRole = 0, UsrDat->Roles.InCrss = 0; for (NumRole = 0, UsrDat->Roles.InCrss = 0;

View File

@ -863,10 +863,10 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
" (FilCod INT NOT NULL,UNIQUE INDEX(FilCod))" " (FilCod INT NOT NULL,UNIQUE INDEX(FilCod))"
" ENGINE=MEMORY" " ENGINE=MEMORY"
" SELECT brw_files.FilCod" " SELECT brw_files.FilCod"
" FROM crs_usr," " FROM crs_users,"
"brw_files" "brw_files"
" WHERE crs_usr.UsrCod=%ld" " WHERE crs_users.UsrCod=%ld"
" AND crs_usr.CrsCod=brw_files.Cod" " AND crs_users.CrsCod=brw_files.Cod"
" AND brw_files.FileBrowser IN (%u,%u,%u,%u)", " AND brw_files.FileBrowser IN (%u,%u,%u,%u)",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Brw_ADMI_DOC_CRS, (unsigned) Brw_ADMI_DOC_CRS,
@ -879,7 +879,8 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
" (FilCod INT NOT NULL,UNIQUE INDEX(FilCod))" " (FilCod INT NOT NULL,UNIQUE INDEX(FilCod))"
" ENGINE=MEMORY" " ENGINE=MEMORY"
" SELECT brw_files.FilCod" " SELECT brw_files.FilCod"
" FROM crs_grp_usr,brw_files" " FROM crs_grp_usr,"
"brw_files"
" WHERE crs_grp_usr.UsrCod=%ld" " WHERE crs_grp_usr.UsrCod=%ld"
" AND crs_grp_usr.GrpCod=brw_files.Cod" " AND crs_grp_usr.GrpCod=brw_files.Cod"
" AND brw_files.FileBrowser IN (%u,%u,%u,%u)", " AND brw_files.FileBrowser IN (%u,%u,%u,%u)",

View File

@ -724,10 +724,10 @@ static void Tmt_FillTimeTableFromDB (struct Tmt_Timetable *Timetable,
"tmt_courses.GrpCod," "tmt_courses.GrpCod,"
"tmt_courses.CrsCod" "tmt_courses.CrsCod"
" FROM tmt_courses," " FROM tmt_courses,"
"crs_usr" "crs_users"
" WHERE crs_usr.UsrCod=%ld" " WHERE crs_users.UsrCod=%ld"
" AND tmt_courses.GrpCod=-1" " AND tmt_courses.GrpCod=-1"
" AND tmt_courses.CrsCod=crs_usr.CrsCod" " AND tmt_courses.CrsCod=crs_users.CrsCod"
" UNION DISTINCT " " UNION DISTINCT "
"SELECT tmt_courses.Weekday," "SELECT tmt_courses.Weekday,"
"TIME_TO_SEC(tmt_courses.StartTime) AS S," "TIME_TO_SEC(tmt_courses.StartTime) AS S,"
@ -764,9 +764,9 @@ static void Tmt_FillTimeTableFromDB (struct Tmt_Timetable *Timetable,
"tmt_courses.GrpCod," // row[5] "tmt_courses.GrpCod," // row[5]
"tmt_courses.CrsCod" // row[6] "tmt_courses.CrsCod" // row[6]
" FROM tmt_courses," " FROM tmt_courses,"
"crs_usr" "crs_users"
" WHERE crs_usr.UsrCod=%ld" " WHERE crs_users.UsrCod=%ld"
" AND tmt_courses.CrsCod=crs_usr.CrsCod" " AND tmt_courses.CrsCod=crs_users.CrsCod"
" UNION " " UNION "
"SELECT Weekday," // row[0] "SELECT Weekday," // row[0]
"TIME_TO_SEC(StartTime) AS S," "TIME_TO_SEC(StartTime) AS S,"
@ -817,10 +817,11 @@ static void Tmt_FillTimeTableFromDB (struct Tmt_Timetable *Timetable,
"tmt_courses.ClassType," // row[4] "tmt_courses.ClassType," // row[4]
"tmt_courses.GrpCod" // row[5] "tmt_courses.GrpCod" // row[5]
" FROM tmt_courses," " FROM tmt_courses,"
"crs_usr" "crs_users"
" WHERE tmt_courses.CrsCod=%ld" " WHERE tmt_courses.CrsCod=%ld"
" AND tmt_courses.GrpCod=-1 AND crs_usr.UsrCod=%ld" " AND tmt_courses.GrpCod=-1"
" AND tmt_courses.CrsCod=crs_usr.CrsCod" " AND crs_users.UsrCod=%ld"
" AND tmt_courses.CrsCod=crs_users.CrsCod"
" UNION DISTINCT " " UNION DISTINCT "
"SELECT tmt_courses.Weekday," // row[0] "SELECT tmt_courses.Weekday," // row[0]
"TIME_TO_SEC(tmt_courses.StartTime) AS S," // row[1] "TIME_TO_SEC(tmt_courses.StartTime) AS S," // row[1]

File diff suppressed because it is too large Load Diff