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

View File

@ -1048,10 +1048,12 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
/***** Remove user from the tables of courses and users *****/
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);
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);
if (QuietOrVerbose == Cns_VERBOSE)

View File

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

View File

@ -2202,16 +2202,17 @@ unsigned Ctr_GetCachedNumCtrsWithUsrs (Rol_Role_t Role,const char *SubQuery,
NumCtrsWithUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of centers with users",
"SELECT COUNT(DISTINCT ctr_centers.CtrCod)"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr"
" WHERE %sinstitutions.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u",
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users"
" WHERE %s"
"institutions.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.Role=%u",
SubQuery,(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureCtrs[Role],Scope,Cod,
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.
*/
#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 JS_FILE "swad20.6.2.js"
/*
TODO: Rename CENTRE to CENTER in help wiki.
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)
1 change necessary in database:
RENAME TABLE att_usr TO att_users;

View File

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

View File

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

View File

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

View File

@ -839,9 +839,9 @@ mysql> DESCRIBE crs_records;
"Txt TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
"UNIQUE INDEX(FieldCod,UsrCod))");
/***** Table crs_usr *****/
/***** Table crs_users *****/
/*
mysql> DESCRIBE crs_usr;
mysql> DESCRIBE crs_users;
+----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
@ -852,7 +852,7 @@ mysql> DESCRIBE crs_usr;
+----------+---------------+------+-----+---------+-------+
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,"
"UsrCod INT NOT NULL,"
"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.FullName," // row[6]
"deg_degrees.WWW" // row[7]
" FROM deg_degrees,"
"crs_courses,"
"crs_usr"
" FROM deg_degrees,"
"crs_courses,"
"crs_users"
" WHERE deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.Role=%u"
" ORDER BY deg_degrees.ShortName",
(unsigned) Rol_STD);
@ -2128,16 +2128,16 @@ unsigned Deg_GetCachedNumDegsWithUsrs (Rol_Role_t Role,const char *SubQuery,
NumDegsWithUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of degrees with users",
"SELECT COUNT(DISTINCT deg_degrees.DegCod)"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users"
" WHERE %sinstitutions.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u",
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.Role=%u",
SubQuery,(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureDegs[Role],Scope,Cod,
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]
" FROM dpt_departments,"
"usr_data,"
"crs_usr"
"crs_users"
" WHERE dpt_departments.InsCod=%ld"
" AND dpt_departments.DptCod=usr_data.DptCod"
" AND usr_data.UsrCod=crs_usr.UsrCod"
" AND crs_usr.Role IN (%u,%u)"
" AND usr_data.UsrCod=crs_users.UsrCod"
" AND crs_users.Role IN (%u,%u)"
" GROUP BY dpt_departments.DptCod)"
" UNION "
"(SELECT DptCod," // row[0]
@ -365,9 +365,9 @@ static void Dpt_GetListDepartments (struct Dpt_Departments *Departments,long Ins
" WHERE InsCod=%ld"
" AND DptCod NOT IN"
" (SELECT DISTINCT usr_data.DptCod"
" FROM usr_data,crs_usr"
" WHERE crs_usr.Role IN (%u,%u)"
" AND crs_usr.UsrCod=usr_data.UsrCod))"
" FROM usr_data,crs_users"
" WHERE crs_users.Role IN (%u,%u)"
" AND crs_users.UsrCod=usr_data.UsrCod))"
" ORDER BY %s",
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]
" FROM dpt_departments,"
"usr_data,"
"crs_usr"
"crs_users"
" WHERE dpt_departments.DptCod=%ld"
" AND dpt_departments.DptCod=usr_data.DptCod"
" AND usr_data.UsrCod=crs_usr.UsrCod"
" AND crs_usr.Role=%u"
" AND usr_data.UsrCod=crs_users.UsrCod"
" AND crs_users.Role=%u"
" GROUP BY dpt_departments.DptCod)"
" UNION "
"(SELECT InsCod," // row[0]
@ -465,9 +465,9 @@ void Dpt_GetDataOfDepartmentByCod (struct Dpt_Department *Dpt)
" AND DptCod NOT IN"
" (SELECT DISTINCT usr_data.DptCod"
" FROM usr_data,"
"crs_usr"
" WHERE crs_usr.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod))",
"crs_users"
" WHERE crs_users.Role=%u"
" AND crs_users.UsrCod=usr_data.UsrCod))",
Dpt->DptCod,(unsigned) Rol_TCH,
Dpt->DptCod,(unsigned) Rol_TCH);
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 *****/
DB_QueryUPDATE ("can not modify user's role in course",
"UPDATE crs_usr SET Role=%u"
" WHERE CrsCod=%ld AND UsrCod=%ld",
(unsigned) NewRole,Gbl.Hierarchy.Crs.CrsCod,UsrDat->UsrCod);
"UPDATE crs_users"
" SET Role=%u"
" WHERE CrsCod=%ld"
" AND UsrCod=%ld",
(unsigned) NewRole,
Gbl.Hierarchy.Crs.CrsCod,
UsrDat->UsrCod);
/***** Flush caches *****/
Usr_FlushCachesUsr ();
@ -291,7 +295,7 @@ void Enr_RegisterUsrInCurrentCrs (struct UsrData *UsrDat,Rol_Role_t NewRole,
/***** Register user in current course in database *****/
DB_QueryINSERT ("can not register user in course",
"INSERT INTO crs_usr"
"INSERT INTO crs_users"
" (CrsCod,UsrCod,Role,Accepted)"
" VALUES"
" (%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"
" in course",
"SELECT Role"
" FROM crs_usr"
" WHERE CrsCod=%ld AND UsrCod=%ld",
" FROM crs_users"
" WHERE CrsCod=%ld"
" AND UsrCod=%ld",
CrsCod,UsrCod) == 1) // Result should have a unique row
{
/***** Get user's role in course *****/
@ -880,14 +885,16 @@ void Enr_RemoveOldUsrs (void)
/***** Get old users from database *****/
NumUsrs = DB_QuerySELECT (&mysql_res,"can not get old users",
"SELECT UsrCod FROM"
"("
"SELECT UsrCod FROM usr_last WHERE"
" LastTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)"
" UNION "
"SELECT UsrCod FROM usr_data WHERE"
" UsrCod NOT IN (SELECT UsrCod FROM usr_last)"
") AS candidate_usrs"
" WHERE UsrCod NOT IN (SELECT DISTINCT UsrCod FROM crs_usr)",
"("
"SELECT UsrCod FROM usr_last WHERE"
" LastTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)"
" UNION "
"SELECT UsrCod FROM usr_data WHERE"
" UsrCod NOT IN (SELECT UsrCod FROM usr_last)"
") AS candidate_usrs"
" WHERE UsrCod NOT IN"
" (SELECT DISTINCT UsrCod"
" FROM crs_users)",
(unsigned long) SecondsWithoutAccess);
if (NumUsrs)
{
@ -2331,17 +2338,17 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in all courses in which I am teacher
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM crs_usr,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM crs_users,"
"crs_usr_requests"
" WHERE crs_users.UsrCod=%ld"
" AND crs_users.Role=%u"
" AND crs_users.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH,
@ -2351,11 +2358,11 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in all degrees administrated by me
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins,"
"crs_courses,"
"crs_usr_requests"
@ -2372,11 +2379,11 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in all centers administrated by me
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins,"
"deg_degrees,"
"crs_courses,"
@ -2395,11 +2402,11 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in all institutions administrated by me
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins,"
"ctr_centers,"
"deg_degrees,"
@ -2420,11 +2427,11 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// All requests
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT ReqCod,"
"CrsCod,"
"UsrCod,"
"Role,"
"UNIX_TIMESTAMP(RequestTime)"
"SELECT ReqCod," // row[0]
"CrsCod," // row[1]
"UsrCod," // row[2]
"Role," // row[3]
"UNIX_TIMESTAMP(RequestTime)" // row[4]
" FROM crs_usr_requests"
" WHERE ((1<<Role)&%u)<>0"
" 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
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM crs_usr,"
"ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=ins_instits.InsCod"
" AND ins_instits.CtyCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // roe[4]
" FROM crs_users,"
"ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_users.UsrCod=%ld"
" AND crs_users.Role=%u"
" AND crs_users.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=ins_instits.InsCod"
" AND ins_instits.CtyCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH,
@ -2472,26 +2479,26 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in degrees of this country administrated by me
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,"
"ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins,"
"ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=ins_instits.InsCod"
" AND ins_instits.CtyCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=ins_instits.InsCod"
" AND ins_instits.CtyCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
@ -2502,26 +2509,26 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in centers of this country administrated by me
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,"
"ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins,"
"ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=ins_instits.InsCod"
" AND ins_instits.CtyCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=ins_instits.InsCod"
" AND ins_instits.CtyCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_CTR),
@ -2531,28 +2538,27 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
case Rol_INS_ADM:
// Requests in institutions of this country administrated by me
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,"
"ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins,"
"ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=ins_instits.InsCod"
" AND ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=ins_instits.InsCod"
" AND ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_INS),
@ -2563,22 +2569,22 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in any course of this country
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Cty.CtyCod,
RolesSelected);
@ -2595,24 +2601,24 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in courses of this institution in which I am teacher
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM crs_usr,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM crs_users,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_users.UsrCod=%ld"
" AND crs_users.Role=%u"
" AND crs_users.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH,
@ -2623,24 +2629,24 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in degrees of this institution administrated by me
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
@ -2651,24 +2657,24 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in centers of this institution administrated by me
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
Gbl.Hierarchy.Ins.InsCod,
@ -2679,20 +2685,20 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in any course of this institution
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Ins.InsCod,
RolesSelected);
@ -2709,22 +2715,22 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in courses of this center in which I am teacher
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM crs_usr,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM crs_users,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_users.UsrCod=%ld"
" AND crs_users.Role=%u"
" AND crs_users.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH,
@ -2735,22 +2741,22 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in degrees of this center administrated by me
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM usr_admins,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
@ -2763,18 +2769,18 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Request in any course of this center
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr_requests"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Ctr.CtrCod,
RolesSelected);
@ -2791,20 +2797,20 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in courses of this degree in which I am teacher
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM crs_usr,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM crs_users,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_users.UsrCod=%ld"
" AND crs_users.Role=%u"
" AND crs_users.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH,
@ -2818,16 +2824,16 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in any course of this degree
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM crs_courses,"
"crs_usr_requests"
"SELECT crs_usr_requests.ReqCod," // row[0]
"crs_usr_requests.CrsCod," // row[1]
"crs_usr_requests.UsrCod," // row[2]
"crs_usr_requests.Role," // row[3]
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)" // row[4]
" FROM crs_courses,"
"crs_usr_requests"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Deg.DegCod,
RolesSelected);
@ -2848,14 +2854,14 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
// Requests in this course
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT ReqCod,"
"CrsCod,"
"UsrCod,"
"Role,"
"UNIX_TIMESTAMP(RequestTime)"
" FROM crs_usr_requests"
"SELECT ReqCod," // row[0]
"CrsCod," // row[1]
"UsrCod," // row[2]
"Role," // row[3]
"UNIX_TIMESTAMP(RequestTime)" // row[4]
" FROM crs_usr_requests"
" WHERE CrsCod=%ld"
" AND ((1<<Role)&%u)<>0"
" AND ((1<<Role)&%u)<>0"
" ORDER BY RequestTime DESC",
Gbl.Hierarchy.Crs.CrsCod,
RolesSelected);
@ -4100,8 +4106,10 @@ void Enr_AcceptUsrInCrs (long UsrCod)
{
/***** Set enrolment of a user to "accepted" in the current course *****/
DB_QueryUPDATE ("can not confirm user's enrolment",
"UPDATE crs_usr SET Accepted='Y'"
" WHERE CrsCod=%ld AND UsrCod=%ld",
"UPDATE crs_users"
" SET Accepted='Y'"
" WHERE CrsCod=%ld"
" AND UsrCod=%ld",
Gbl.Hierarchy.Crs.CrsCod,UsrCod);
}
@ -4212,11 +4220,13 @@ static void Enr_EffectivelyRemUsrFromCrs (struct UsrData *UsrDat,
/***** Remove user from the tables of courses-users *****/
DB_QueryDELETE ("can not remove a user from a course",
"DELETE FROM crs_usr_last"
" WHERE UsrCod=%ld AND CrsCod=%ld",
" WHERE UsrCod=%ld"
" AND CrsCod=%ld",
UsrDat->UsrCod,Crs->CrsCod);
DB_QueryDELETE ("can not remove a user from a course",
"DELETE FROM crs_usr"
" WHERE CrsCod=%ld AND UsrCod=%ld",
"DELETE FROM crs_users"
" WHERE CrsCod=%ld"
" AND UsrCod=%ld",
Crs->CrsCod,UsrDat->UsrCod);
/***** 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);
break;
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);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (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)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod,"
"COUNT(DISTINCT crs_usr.UsrCod) AS N"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr"
"COUNT(DISTINCT crs_users.UsrCod) AS N"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users"
" WHERE ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" GROUP BY InsCod"
" ORDER BY N DESC");
break;
@ -1319,17 +1319,17 @@ static void Fig_GetAndShowInssOrderedByNumUsrsInCrss (void)
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod,"
"COUNT(DISTINCT crs_usr.UsrCod) AS N"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr"
"COUNT(DISTINCT crs_users.UsrCod) AS N"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" GROUP BY ctr_centers.InsCod"
" ORDER BY N DESC",
Gbl.Hierarchy.Cty.CtyCod);
@ -1341,15 +1341,15 @@ static void Fig_GetAndShowInssOrderedByNumUsrsInCrss (void)
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod,"
"COUNT(DISTINCT crs_usr.UsrCod) AS N"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr"
"COUNT(DISTINCT crs_users.UsrCod) AS N"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" GROUP BY ctr_centers.InsCod"
" ORDER BY N DESC",
Gbl.Hierarchy.Ins.InsCod);
@ -1956,14 +1956,14 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"crs_users,"
"brw_sizes"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=brw_sizes.ZoneUsrCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=brw_sizes.ZoneUsrCod"
" AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) FileBrowser);
@ -2123,13 +2123,13 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"crs_users,"
"brw_sizes"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=brw_sizes.ZoneUsrCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=brw_sizes.ZoneUsrCod"
" AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Ins.InsCod,
(unsigned) FileBrowser);
@ -2278,12 +2278,12 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
"SUM(brw_sizes.TotalSize)" // row[6]
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"crs_users,"
"brw_sizes"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=brw_sizes.ZoneUsrCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=brw_sizes.ZoneUsrCod"
" AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) FileBrowser);
@ -2421,11 +2421,11 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
"SUM(brw_sizes.NumFiles)," // row[5]
"SUM(brw_sizes.TotalSize)" // row[6]
" FROM crs_courses,"
"crs_usr,"
"crs_users,"
"brw_sizes"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=brw_sizes.ZoneUsrCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=brw_sizes.ZoneUsrCod"
" AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) FileBrowser);
@ -2552,10 +2552,10 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
"SUM(brw_sizes.NumFolders)," // row[4]
"SUM(brw_sizes.NumFiles)," // row[5]
"SUM(brw_sizes.TotalSize)" // row[6]
" FROM crs_usr,"
" FROM crs_users,"
"brw_sizes"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=brw_sizes.ZoneUsrCod"
" WHERE crs_users.CrsCod=%ld"
" AND crs_users.UsrCod=brw_sizes.ZoneUsrCod"
" AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Crs.CrsCod,
(unsigned) FileBrowser);
@ -3598,85 +3598,85 @@ static void Fig_GetAndShowTimelineActivityStats (void)
case Hie_Lvl_CTY:
NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod),"
"COUNT(DISTINCT tml_notes.UsrCod)"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"tml_notes"
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) NoteType);
break;
case Hie_Lvl_INS:
NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod),"
"COUNT(DISTINCT tml_notes.UsrCod)"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"tml_notes"
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Ins.InsCod,
(unsigned) NoteType);
break;
case Hie_Lvl_CTR:
NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod),"
"COUNT(DISTINCT tml_notes.UsrCod)"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"tml_notes"
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) NoteType);
break;
case Hie_Lvl_DEG:
NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod),"
"COUNT(DISTINCT tml_notes.UsrCod)"
" FROM crs_courses,"
"crs_usr,"
"tml_notes"
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_courses,"
"crs_users,"
"tml_notes"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) NoteType);
break;
case Hie_Lvl_CRS:
NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod),"
"COUNT(DISTINCT tml_notes.UsrCod)"
" FROM crs_usr,"
"tml_notes"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_users,"
"tml_notes"
" WHERE crs_users.CrsCod=%ld"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Crs.CrsCod,
(unsigned) NoteType);
break;
@ -3749,76 +3749,76 @@ static void Fig_GetAndShowTimelineActivityStats (void)
case Hie_Lvl_CTY:
NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod),"
"COUNT(DISTINCT tml_notes.UsrCod)"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"tml_notes"
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod",
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod),"
"COUNT(DISTINCT tml_notes.UsrCod)"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"tml_notes"
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod",
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod),"
"COUNT(DISTINCT tml_notes.UsrCod)"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"tml_notes"
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod),"
"COUNT(DISTINCT tml_notes.UsrCod)"
" FROM crs_courses,"
"crs_usr,"
"tml_notes"
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_courses,"
"crs_users,"
"tml_notes"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=tml_notes.UsrCod",
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
NumRows =
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod),"
"COUNT(DISTINCT tml_notes.UsrCod)"
" FROM crs_usr,"
"tml_notes"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=tml_notes.UsrCod",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_users,"
"tml_notes"
" WHERE crs_users.CrsCod=%ld"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
@ -3952,18 +3952,18 @@ static void Fig_GetAndShowFollowStats (void)
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT usr_follow.%s)"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_follow"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"usr_follow"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s",
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_follow.%s",
FieldDB[Fol],
Gbl.Hierarchy.Cty.CtyCod,
FieldDB[Fol]);
@ -3972,16 +3972,16 @@ static void Fig_GetAndShowFollowStats (void)
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT usr_follow.%s)"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_follow"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"usr_follow"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s",
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_follow.%s",
FieldDB[Fol],
Gbl.Hierarchy.Ins.InsCod,
FieldDB[Fol]);
@ -3992,12 +3992,12 @@ static void Fig_GetAndShowFollowStats (void)
"SELECT COUNT(DISTINCT usr_follow.%s)"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"crs_users,"
"usr_follow"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_follow.%s",
FieldDB[Fol],
Gbl.Hierarchy.Ctr.CtrCod,
FieldDB[Fol]);
@ -4006,12 +4006,12 @@ static void Fig_GetAndShowFollowStats (void)
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT usr_follow.%s)"
" FROM crs_courses,"
"crs_usr,"
"usr_follow"
" FROM crs_courses,"
"crs_users,"
"usr_follow"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s",
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_follow.%s",
FieldDB[Fol],
Gbl.Hierarchy.Deg.DegCod,
FieldDB[Fol]);
@ -4020,10 +4020,10 @@ static void Fig_GetAndShowFollowStats (void)
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT usr_follow.%s)"
" FROM crs_usr,"
"usr_follow"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_follow.%s",
" FROM crs_users,"
"usr_follow"
" WHERE crs_users.CrsCod=%ld"
" AND crs_users.UsrCod=usr_follow.%s",
FieldDB[Fol],
Gbl.Hierarchy.Crs.CrsCod,
FieldDB[Fol]);
@ -4065,31 +4065,31 @@ static void Fig_GetAndShowFollowStats (void)
case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey",
"SELECT AVG(N) FROM "
"SELECT AVG(N) FROM " // row[0]
"(SELECT COUNT(%s) AS N"
" FROM usr_follow"
" GROUP BY %s) AS F",
" FROM usr_follow"
" GROUP BY %s) AS F",
FieldDB[Fol],
FieldDB[1 - Fol]);
break;
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey",
"SELECT AVG(N) FROM "
"SELECT AVG(N) FROM " // row[0]
"(SELECT COUNT(DISTINCT usr_follow.%s) AS N"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_follow"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F",
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"usr_follow"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F",
FieldDB[Fol],
Gbl.Hierarchy.Cty.CtyCod,
FieldDB[Fol],
@ -4098,19 +4098,19 @@ static void Fig_GetAndShowFollowStats (void)
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey",
"SELECT AVG(N) FROM "
"SELECT AVG(N) FROM " // row[0]
"(SELECT COUNT(DISTINCT usr_follow.%s) AS N"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_follow"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F",
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"usr_follow"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F",
FieldDB[Fol],
Gbl.Hierarchy.Ins.InsCod,
FieldDB[Fol],
@ -4119,17 +4119,17 @@ static void Fig_GetAndShowFollowStats (void)
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey",
"SELECT AVG(N) FROM "
"SELECT AVG(N) FROM " // row[0]
"(SELECT COUNT(DISTINCT usr_follow.%s) AS N"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_follow"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F",
" FROM deg_degrees,"
"crs_courses,"
"crs_users,"
"usr_follow"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F",
FieldDB[Fol],
Gbl.Hierarchy.Ctr.CtrCod,
FieldDB[Fol],
@ -4138,15 +4138,15 @@ static void Fig_GetAndShowFollowStats (void)
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey",
"SELECT AVG(N) FROM "
"SELECT AVG(N) FROM " // row[0]
"(SELECT COUNT(DISTINCT usr_follow.%s) AS N"
" FROM crs_courses,"
"crs_usr,"
"usr_follow"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F",
" FROM crs_courses,"
"crs_users,"
"usr_follow"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F",
FieldDB[Fol],
Gbl.Hierarchy.Deg.DegCod,
FieldDB[Fol],
@ -4155,13 +4155,13 @@ static void Fig_GetAndShowFollowStats (void)
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey",
"SELECT AVG(N) FROM "
"SELECT AVG(N) FROM " // row[0]
"(SELECT COUNT(DISTINCT usr_follow.%s) AS N"
" FROM crs_usr,"
"usr_follow"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F",
" FROM crs_users,"
"usr_follow"
" WHERE crs_users.CrsCod=%ld"
" AND crs_users.UsrCod=usr_follow.%s"
" GROUP BY %s) AS F",
FieldDB[Fol],
Gbl.Hierarchy.Crs.CrsCod,
FieldDB[Fol],
@ -5807,75 +5807,75 @@ unsigned Fig_GetNumUsrsWhoChoseAnOption (const char *SubQuery)
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_data"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"usr_data"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND %s",
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_data.UsrCod"
" AND %s",
Gbl.Hierarchy.Cty.CtyCod,SubQuery);
break;
case Hie_Lvl_INS:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_data"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"usr_data"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND %s",
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_data.UsrCod"
" AND %s",
Gbl.Hierarchy.Ins.InsCod,SubQuery);
break;
case Hie_Lvl_CTR:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_data"
" FROM deg_degrees,"
"crs_courses,"
"crs_users,"
"usr_data"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND %s",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_data.UsrCod"
" AND %s",
Gbl.Hierarchy.Ctr.CtrCod,SubQuery);
break;
case Hie_Lvl_DEG:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM crs_courses,"
"crs_usr,"
"usr_data"
" FROM crs_courses,"
"crs_users,"
"usr_data"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND %s",
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_data.UsrCod"
" AND %s",
Gbl.Hierarchy.Deg.DegCod,SubQuery);
break;
case Hie_Lvl_CRS:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM crs_usr,"
"usr_data"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND %s",
" FROM crs_users,"
"usr_data"
" WHERE crs_users.CrsCod=%ld"
" AND crs_users.UsrCod=usr_data.UsrCod"
" AND %s",
Gbl.Hierarchy.Crs.CrsCod,SubQuery);
break;
default:

View File

@ -2681,7 +2681,8 @@ bool Brw_CheckIfExistsFolderAssigmentForAnyUsr (const char *FolderName)
/***** Get all the users belonging to current course from database *****/
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get users"
" from current course",
"SELECT UsrCod FROM crs_usr"
"SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld",
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 *****/
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get users"
" from current course",
"SELECT UsrCod FROM crs_usr"
"SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);
@ -2915,7 +2917,8 @@ void Brw_RemoveFoldersAssignmentsIfExistForAllUsrs (const char *FolderName)
/***** Get all the users belonging to current course from database *****/
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get users"
" from current course",
"SELECT UsrCod FROM crs_usr"
"SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld",
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"
" FROM usr_follow,"
"(SELECT FollowedCod FROM usr_follow"
" WHERE FollowerCod=%ld) AS my_followed,"
" usr_data"
"(SELECT FollowedCod"
" FROM usr_follow"
" WHERE FollowerCod=%ld) AS my_followed,"
" usr_data"
" WHERE usr_follow.FollowerCod=my_followed.FollowedCod"
" AND usr_follow.FollowedCod<>%ld"
" AND usr_follow.FollowedCod=usr_data.UsrCod"
" AND usr_data.Surname1<>''" // Surname 1 not empty
" AND usr_data.FirstName<>''" // First name not empty
"%s" // SubQuery1
" AND usr_follow.FollowedCod<>%ld"
" AND usr_follow.FollowedCod=usr_data.UsrCod"
" AND usr_data.Surname1<>''" // Surname 1 not empty
" AND usr_data.FirstName<>''" // First name not empty
"%s" // SubQuery1
")"
" UNION "
// 2. Users who share any course with me
"("
"SELECT DISTINCT crs_usr.UsrCod"
" FROM crs_usr,"
"(SELECT CrsCod FROM crs_usr"
" WHERE UsrCod=%ld) AS my_crs,"
" usr_data"
" WHERE crs_usr.CrsCod=my_crs.CrsCod"
" AND crs_usr.UsrCod<>%ld"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.Surname1<>''" // Surname 1 not empty
" AND usr_data.FirstName<>''" // First name not empty
"%s" // SubQuery2
"SELECT DISTINCT crs_users.UsrCod"
" FROM crs_users,"
"(SELECT CrsCod"
" FROM crs_users"
" WHERE UsrCod=%ld) AS my_crs,"
" usr_data"
" WHERE crs_users.CrsCod=my_crs.CrsCod"
" AND crs_users.UsrCod<>%ld"
" AND crs_users.UsrCod=usr_data.UsrCod"
" AND usr_data.Surname1<>''" // Surname 1 not empty
" AND usr_data.FirstName<>''" // First name not empty
"%s" // SubQuery2
")"
" UNION "
// 3. Users who share any course with me with another role
"("
"SELECT DISTINCT crs_usr.UsrCod"
" FROM crs_usr,"
"(SELECT CrsCod,Role FROM crs_usr"
" WHERE UsrCod=%ld) AS my_crs_role,"
" usr_data"
" WHERE crs_usr.CrsCod=my_crs_role.CrsCod"
" AND crs_usr.Role<>my_crs_role.Role"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.Surname1<>''" // Surname 1 not empty
" AND usr_data.FirstName<>''" // First name not empty
"%s" // SubQuery3
"SELECT DISTINCT crs_users.UsrCod"
" FROM crs_users,"
"(SELECT CrsCod,Role"
" FROM crs_users"
" WHERE UsrCod=%ld) AS my_crs_role,"
" usr_data"
" WHERE crs_users.CrsCod=my_crs_role.CrsCod"
" AND crs_users.Role<>my_crs_role.Role"
" AND crs_users.UsrCod=usr_data.UsrCod"
" AND usr_data.Surname1<>''" // Surname 1 not empty
" AND usr_data.FirstName<>''" // First name not empty
"%s" // SubQuery3
")"
") AS LikelyKnownUsrsToFollow"
// Do not select my followed
@ -379,24 +382,26 @@ static unsigned long Fol_GetUsrsToFollow (unsigned long MaxUsrsToShow,
// with codes >= that random code
// that getting all users and then ordering by rand.
"SELECT usr_data.UsrCod"
" FROM usr_data,"
"(SELECT ROUND(RAND()*(SELECT MAX(UsrCod) FROM usr_data)) AS RandomUsrCod)" // a random user code
" AS random_usr"
" FROM usr_data,"
"(SELECT ROUND(RAND()*(SELECT MAX(UsrCod)"
" FROM usr_data)) AS RandomUsrCod) AS random_usr" // a random user code
" WHERE usr_data.UsrCod<>%ld"
" AND usr_data.Surname1<>''" // Surname 1 not empty
" AND usr_data.FirstName<>''" // First name not empty
" AND usr_data.Surname1<>''" // Surname 1 not empty
" AND usr_data.FirstName<>''" // First name not empty
"%s" // SubQuery4
// Do not select my followed
" AND usr_data.UsrCod NOT IN"
" (SELECT FollowedCod FROM usr_follow"
" WHERE FollowerCod=%ld)"
" (SELECT FollowedCod"
" FROM usr_follow"
" WHERE FollowerCod=%ld)"
" AND usr_data.UsrCod>=random_usr.RandomUsrCod" // random user code could not exists in table of users
// Get only MaxUsrsToShow users
" LIMIT %lu"
")"
") AS UsrsToFollow"
// Get only MaxUsrsToShow users
" ORDER BY RAND() LIMIT %lu",
" ORDER BY RAND()"
" LIMIT %lu",
Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.Usrs.Me.UsrDat.UsrCod,
@ -1378,20 +1383,20 @@ void Fol_GetAndShowRankingFollowers (void)
case Hie_Lvl_CTY:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,"
"COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_follow"
"SELECT usr_follow.FollowedCod," // row[0]
"COUNT(DISTINCT usr_follow.FollowerCod) AS N" // row[1]
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"usr_follow"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.FollowedCod"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC,"
"usr_follow.FollowedCod"
@ -1401,18 +1406,18 @@ void Fol_GetAndShowRankingFollowers (void)
case Hie_Lvl_INS:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,"
"COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_follow"
"SELECT usr_follow.FollowedCod," // row[0]
"COUNT(DISTINCT usr_follow.FollowerCod) AS N" // row[1]
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"usr_follow"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.FollowedCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC,"
"usr_follow.FollowedCod"
@ -1422,16 +1427,16 @@ void Fol_GetAndShowRankingFollowers (void)
case Hie_Lvl_CTR:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,"
"COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_follow"
"SELECT usr_follow.FollowedCod," // row[0]
"COUNT(DISTINCT usr_follow.FollowerCod) AS N" // row[1]
" FROM deg_degrees,"
"crs_courses,"
"crs_users,"
"usr_follow"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.FollowedCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC,"
"usr_follow.FollowedCod"
@ -1441,14 +1446,14 @@ void Fol_GetAndShowRankingFollowers (void)
case Hie_Lvl_DEG:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,"
"COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM crs_courses,"
"crs_usr,"
"usr_follow"
"SELECT usr_follow.FollowedCod," // row[0]
"COUNT(DISTINCT usr_follow.FollowerCod) AS N" // row[1]
" FROM crs_courses,"
"crs_users,"
"usr_follow"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.FollowedCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC,"
"usr_follow.FollowedCod"
@ -1458,12 +1463,12 @@ void Fol_GetAndShowRankingFollowers (void)
case Hie_Lvl_CRS:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,"
"COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM crs_usr,"
"usr_follow"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_follow.FollowedCod"
"SELECT usr_follow.FollowedCod," // row[0]
"COUNT(DISTINCT usr_follow.FollowerCod) AS N" // row[1]
" FROM crs_users,"
"usr_follow"
" WHERE crs_users.CrsCod=%ld"
" AND crs_users.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC,"
"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",
"LOCK TABLES "
"crs_grp_types WRITE,"
"crs_grp WRITE,"
"crs_grp_usr WRITE,"
"crs_usr READ,"
"crs_usr_last READ,"
"roo_rooms READ");
"crs_grp_types WRITE,"
"crs_grp WRITE,"
"crs_grp_usr WRITE,"
"crs_users READ,"
"crs_usr_last READ,"
"roo_rooms READ");
Gbl.DB.LockedTables = true;
}
@ -3302,13 +3302,16 @@ unsigned Grp_CountNumUsrsInGrp (Rol_Role_t Role,long GrpCod)
return
(unsigned) DB_QueryCOUNT ("can not get number of users in a group",
"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"
" AND crs_grp_usr.GrpCod=crs_grp.GrpCod"
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=crs_usr.CrsCod"
" AND crs_grp_usr.UsrCod=crs_usr.UsrCod"
" AND crs_usr.Role=%u",
" AND crs_grp_usr.GrpCod=crs_grp.GrpCod"
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=crs_users.CrsCod"
" AND crs_grp_usr.UsrCod=crs_users.UsrCod"
" AND crs_users.Role=%u",
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 ******/
return DB_QueryCOUNT ("can not get the number of users"
" not belonging to groups of a type",
"SELECT COUNT(UsrCod) FROM crs_usr"
" WHERE CrsCod=%ld AND Role=%u"
" AND UsrCod NOT IN"
" (SELECT DISTINCT crs_grp_usr.UsrCod"
" FROM crs_grp,crs_grp_usr"
" WHERE crs_grp.GrpTypCod=%ld"
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod)",
"SELECT COUNT(UsrCod)"
" FROM crs_users"
" WHERE CrsCod=%ld"
" AND Role=%u"
" AND UsrCod NOT IN"
" (SELECT DISTINCT crs_grp_usr.UsrCod"
" FROM crs_grp,"
"crs_grp_usr"
" WHERE crs_grp.GrpTypCod=%ld"
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod)",
Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Role,GrpTypCod);
}
@ -3498,17 +3504,20 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod)
"SELECT GrpTypCod FROM"
" ("
"SELECT crs_grp_types.GrpTypCod AS GrpTypCod,"
"COUNT(*) AS NumStudents,"
"crs_grp.MaxStudents as MaxStudents"
" FROM crs_grp_types,crs_grp,crs_grp_usr,crs_usr"
"COUNT(*) AS NumStudents,"
"crs_grp.MaxStudents as MaxStudents"
" FROM crs_grp_types,"
"crs_grp,"
"crs_grp_usr,"
"crs_users"
" WHERE %s" // Which group types?
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
" AND crs_grp.Open='Y'" // Open
" AND crs_grp.MaxStudents>0" // Admits students
" AND crs_grp_types.CrsCod=crs_usr.CrsCod"
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
" AND crs_grp_usr.UsrCod=crs_usr.UsrCod"
" AND crs_usr.Role=%u" // Student
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
" AND crs_grp.Open='Y'" // Open
" AND crs_grp.MaxStudents>0" // Admits students
" AND crs_grp_types.CrsCod=crs_users.CrsCod"
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
" AND crs_grp_usr.UsrCod=crs_users.UsrCod"
" AND crs_users.Role=%u" // Student
" GROUP BY crs_grp.GrpCod"
" HAVING NumStudents<MaxStudents" // Not full
") AS available_grp_types_with_stds"
@ -3517,31 +3526,35 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod)
// Available mandatory groups...
"SELECT crs_grp_types.GrpTypCod AS GrpTypCod"
" FROM crs_grp_types,crs_grp"
" FROM crs_grp_types,"
"crs_grp"
" WHERE %s" // Which group types?
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
" AND crs_grp.Open='Y'" // Open
" AND crs_grp.MaxStudents>0" // Admits students
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
" AND crs_grp.Open='Y'" // Open
" AND crs_grp.MaxStudents>0" // Admits students
// ...without students
" AND crs_grp.GrpCod NOT IN"
" (SELECT crs_grp_usr.GrpCod"
" FROM crs_usr,crs_grp_usr"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.Role=%u" // Student
" AND crs_usr.UsrCod=crs_grp_usr.UsrCod)"
" AND crs_grp.GrpCod NOT IN"
" (SELECT crs_grp_usr.GrpCod"
" FROM crs_users,"
"crs_grp_usr"
" WHERE crs_users.CrsCod=%ld"
" AND crs_users.Role=%u" // Student
" AND crs_users.UsrCod=crs_grp_usr.UsrCod)"
") AS available_grp_types"
// ...to which I don't belong
" WHERE GrpTypCod NOT IN"
" (SELECT crs_grp_types.GrpTypCod"
" FROM crs_grp_types,crs_grp,crs_grp_usr"
" WHERE %s" // Which group types?
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
" AND crs_grp.Open='Y'" // Open
" AND crs_grp.MaxStudents>0" // Admits students
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
" AND crs_grp_usr.UsrCod=%ld)", // I belong
" (SELECT crs_grp_types.GrpTypCod"
" FROM crs_grp_types,"
"crs_grp,"
"crs_grp_usr"
" WHERE %s" // Which group types?
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
" AND crs_grp.Open='Y'" // Open
" 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,

View File

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

View File

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

View File

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

View File

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

View File

@ -1219,20 +1219,22 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
case Brw_ADMI_SHR_CRS:
case Brw_ADMI_MRK_CRS: // Notify all users in course except me
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"SELECT UsrCod FROM crs_usr"
" to be notified",
"SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld"
" AND UsrCod<>%ld",
" AND UsrCod<>%ld",
Gbl.Hierarchy.Crs.CrsCod,
Gbl.Usrs.Me.UsrDat.UsrCod);
break;
case Brw_ADMI_TCH_CRS: // Notify all teachers in course except me
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"SELECT UsrCod FROM crs_usr"
"SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld"
" AND UsrCod<>%ld"
" AND Role=%u", // Notify teachers only
" AND UsrCod<>%ld"
" AND Role=%u", // Notify teachers only
Gbl.Hierarchy.Crs.CrsCod,
Gbl.Usrs.Me.UsrDat.UsrCod,
(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
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"SELECT UsrCod FROM crs_grp_usr"
"SELECT UsrCod" // row[0]
" FROM crs_grp_usr"
" WHERE crs_grp_usr.GrpCod=%ld"
" AND crs_grp_usr.UsrCod<>%ld",
" AND crs_grp_usr.UsrCod<>%ld",
Gbl.Crs.Grps.GrpCod,
Gbl.Usrs.Me.UsrDat.UsrCod);
break;
case Brw_ADMI_TCH_GRP: // Notify all teachers in group except me
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"SELECT crs_grp_usr.UsrCod"
" FROM crs_grp_usr,crs_grp,crs_grp_types,crs_usr"
"SELECT crs_grp_usr.UsrCod" // row[0]
" FROM crs_grp_usr,"
"crs_grp,"
"crs_grp_types,"
"crs_users"
" WHERE crs_grp_usr.GrpCod=%ld"
" AND crs_grp_usr.UsrCod<>%ld"
" AND crs_grp_usr.GrpCod=crs_grp.GrpCod"
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u", // Notify teachers only
" AND crs_grp_usr.UsrCod<>%ld"
" AND crs_grp_usr.GrpCod=crs_grp.GrpCod"
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=crs_users.CrsCod"
" AND crs_users.Role=%u", // Notify teachers only
Gbl.Crs.Grps.GrpCod,
Gbl.Usrs.Me.UsrDat.UsrCod,
(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
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"(SELECT crs_usr.UsrCod" // row[0]
"(SELECT crs_users.UsrCod" // row[0]
" FROM asg_assignments,"
"crs_usr"
"crs_users"
" WHERE asg_assignments.AsgCod=%ld"
" AND asg_assignments.AsgCod NOT IN"
" (SELECT AsgCod"
" FROM asg_groups"
" WHERE AsgCod=%ld)"
" AND asg_assignments.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod<>%ld)"
" AND asg_assignments.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod<>%ld)"
" UNION "
"(SELECT DISTINCT crs_grp_usr.UsrCod"
" FROM asg_groups,"
@ -1297,8 +1303,10 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
case Ntf_EVENT_NOTICE:
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"SELECT UsrCod FROM crs_usr"
" WHERE CrsCod=%ld AND UsrCod<>%ld",
"SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld"
" AND UsrCod<>%ld",
Gbl.Hierarchy.Crs.CrsCod,
Gbl.Usrs.Me.UsrDat.UsrCod);
break;
@ -1312,10 +1320,11 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
// If this course has teachers ==> send notification to teachers
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"SELECT UsrCod FROM crs_usr"
"SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld"
" AND UsrCod<>%ld"
" AND Role=%u", // Notify teachers only
" AND UsrCod<>%ld"
" AND Role=%u", // Notify teachers only
Gbl.Hierarchy.Crs.CrsCod,
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH);
@ -1326,12 +1335,13 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
// ==> send notification to administrators or superusers
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"SELECT UsrCod FROM usr_admins"
"SELECT UsrCod" // row[0]
" FROM usr_admins"
" WHERE (Scope='%s'"
" OR (Scope='%s' AND Cod=%ld)"
" OR (Scope='%s' AND Cod=%ld)"
" OR (Scope='%s' AND Cod=%ld))"
" AND UsrCod<>%ld",
" OR (Scope='%s' AND Cod=%ld)"
" OR (Scope='%s' AND Cod=%ld)"
" OR (Scope='%s' AND Cod=%ld))"
" AND UsrCod<>%ld",
Sco_GetDBStrFromScope (Hie_Lvl_SYS),
Sco_GetDBStrFromScope (Hie_Lvl_INS),Gbl.Hierarchy.Ins.InsCod,
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
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"SELECT DISTINCT(PublisherCod) FROM tml_pubs"
"SELECT DISTINCT(PublisherCod)" // row[0]
" FROM tml_pubs"
" WHERE NotCod="
"(SELECT NotCod FROM tml_pubs"
" WHERE PubCod=%ld)"
" AND PublisherCod<>%ld",
"(SELECT NotCod"
" FROM tml_pubs"
" WHERE PubCod=%ld)"
" AND PublisherCod<>%ld",
Cod,Gbl.Usrs.Me.UsrDat.UsrCod);
break;
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:
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"SELECT UsrCod FROM crs_usr"
" WHERE CrsCod=%ld AND UsrCod<>%ld",
"SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld"
" AND UsrCod<>%ld",
Gbl.Hierarchy.Crs.CrsCod,
Gbl.Usrs.Me.UsrDat.UsrCod);
break;
case For_FORUM_COURSE_TCHS:
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"SELECT UsrCod FROM crs_usr"
" WHERE CrsCod=%ld AND Role=%u AND UsrCod<>%ld",
"SELECT UsrCod" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld"
" AND Role=%u"
" AND UsrCod<>%ld",
Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Rol_TCH,
Gbl.Usrs.Me.UsrDat.UsrCod);
@ -1385,7 +1402,7 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
case Ntf_EVENT_FORUM_REPLY:
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"SELECT DISTINCT(UsrCod)"
"SELECT DISTINCT(UsrCod)" // row[0]
" FROM for_posts"
" WHERE ThrCod = (SELECT ThrCod"
" 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
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"(SELECT crs_usr.UsrCod"
"(SELECT crs_users.UsrCod" // row[0]
" FROM svy_surveys,"
"crs_usr"
"crs_users"
" WHERE svy_surveys.SvyCod=%ld"
" AND svy_surveys.SvyCod NOT IN"
" (SELECT SvyCod"
" FROM svy_groups"
" WHERE SvyCod=%ld)"
" AND svy_surveys.Scope='%s'"
" AND svy_surveys.Cod=crs_usr.CrsCod"
" AND crs_usr.UsrCod<>%ld"
" AND (svy_surveys.Roles&(1<<crs_usr.Role))<>0)"
" AND svy_surveys.Cod=crs_users.CrsCod"
" AND crs_users.UsrCod<>%ld"
" AND (svy_surveys.Roles&(1<<crs_users.Role))<>0)"
" UNION "
"(SELECT DISTINCT crs_grp_usr.UsrCod"
" FROM svy_groups,"
"crs_grp_usr,"
"svy_surveys,"
"crs_usr"
"crs_users"
" WHERE svy_groups.SvyCod=%ld"
" 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 svy_groups.SvyCod=svy_surveys.SvyCod"
" AND svy_surveys.Scope='%s'"
" AND svy_surveys.Cod=crs_usr.CrsCod"
" AND (svy_surveys.Roles&(1<<crs_usr.Role))<>0)",
" AND svy_surveys.Cod=crs_users.CrsCod"
" AND (svy_surveys.Roles&(1<<crs_users.Role))<>0)",
Cod,
Cod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS),

View File

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

View File

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

View File

@ -1013,13 +1013,17 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role,
"SELECT my_courses.CrsCod," // row[0]
"COUNT(*) AS N" // row[1]
" FROM"
" (SELECT CrsCod FROM crs_usr"
" WHERE UsrCod=%ld AND Role=%u) AS my_courses" // It's imperative to use a derived table to not block crs_usr!
" (SELECT CrsCod"
" 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"
" 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"
" 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);

View File

@ -387,8 +387,10 @@ Rol_Role_t Rol_GetRoleUsrInCrs (long UsrCod,long CrsCod)
Gbl.Cache.RoleUsrInCrs.CrsCod = CrsCod;
Gbl.Cache.RoleUsrInCrs.Role = Rol_UNK;
if (DB_QuerySELECT (&mysql_res,"can not get the role of a user in a course",
"SELECT Role FROM crs_usr"
" WHERE CrsCod=%ld AND UsrCod=%ld",
"SELECT Role" // row[0]
" FROM crs_users"
" WHERE CrsCod=%ld"
" AND UsrCod=%ld",
CrsCod,UsrCod) == 1) // User belongs to the course
{
row = mysql_fetch_row (mysql_res);
@ -419,7 +421,8 @@ void Rol_GetRolesInAllCrssIfNotYetGot (struct UsrData *UsrDat)
NumRoles =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get the roles of a user"
" in all his/her courses",
"SELECT DISTINCT(Role) FROM crs_usr"
"SELECT DISTINCT(Role)" // row[0]
" FROM crs_users"
" WHERE UsrCod=%ld",
UsrDat->UsrCod);
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))"
" ENGINE=MEMORY"
" SELECT brw_files.FilCod"
" FROM crs_usr,"
" FROM crs_users,"
"brw_files"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=brw_files.Cod"
" WHERE crs_users.UsrCod=%ld"
" AND crs_users.CrsCod=brw_files.Cod"
" AND brw_files.FileBrowser IN (%u,%u,%u,%u)",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Brw_ADMI_DOC_CRS,
@ -879,7 +879,8 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
" (FilCod INT NOT NULL,UNIQUE INDEX(FilCod))"
" ENGINE=MEMORY"
" SELECT brw_files.FilCod"
" FROM crs_grp_usr,brw_files"
" FROM crs_grp_usr,"
"brw_files"
" WHERE crs_grp_usr.UsrCod=%ld"
" AND crs_grp_usr.GrpCod=brw_files.Cod"
" 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.CrsCod"
" FROM tmt_courses,"
"crs_usr"
" WHERE crs_usr.UsrCod=%ld"
"crs_users"
" WHERE crs_users.UsrCod=%ld"
" AND tmt_courses.GrpCod=-1"
" AND tmt_courses.CrsCod=crs_usr.CrsCod"
" AND tmt_courses.CrsCod=crs_users.CrsCod"
" UNION DISTINCT "
"SELECT tmt_courses.Weekday,"
"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.CrsCod" // row[6]
" FROM tmt_courses,"
"crs_usr"
" WHERE crs_usr.UsrCod=%ld"
" AND tmt_courses.CrsCod=crs_usr.CrsCod"
"crs_users"
" WHERE crs_users.UsrCod=%ld"
" AND tmt_courses.CrsCod=crs_users.CrsCod"
" UNION "
"SELECT Weekday," // row[0]
"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.GrpCod" // row[5]
" FROM tmt_courses,"
"crs_usr"
"crs_users"
" WHERE tmt_courses.CrsCod=%ld"
" AND tmt_courses.GrpCod=-1 AND crs_usr.UsrCod=%ld"
" AND tmt_courses.CrsCod=crs_usr.CrsCod"
" AND tmt_courses.GrpCod=-1"
" AND crs_users.UsrCod=%ld"
" AND tmt_courses.CrsCod=crs_users.CrsCod"
" UNION DISTINCT "
"SELECT tmt_courses.Weekday," // row[0]
"TIME_TO_SEC(tmt_courses.StartTime) AS S," // row[1]

File diff suppressed because it is too large Load Diff