Version 20.51.34: Mar 23, 2021 Groups database tables renamed.

This commit is contained in:
acanas 2021-03-24 00:03:35 +01:00
parent 36365b0813
commit 577f485e41
18 changed files with 404 additions and 373 deletions

View File

@ -293,9 +293,9 @@ CREATE TABLE IF NOT EXISTS grp_groups (
INDEX(GrpTypCod), INDEX(GrpTypCod),
INDEX(RooCod)); INDEX(RooCod));
-- --
-- Table crs_grp_types: stores the types of groups in courses -- Table grp_types: stores the types of groups in courses
-- --
CREATE TABLE IF NOT EXISTS crs_grp_types ( CREATE TABLE IF NOT EXISTS grp_types (
GrpTypCod INT NOT NULL AUTO_INCREMENT, GrpTypCod INT NOT NULL AUTO_INCREMENT,
CrsCod INT NOT NULL DEFAULT -1, CrsCod INT NOT NULL DEFAULT -1,
GrpTypName VARCHAR(2047) NOT NULL, GrpTypName VARCHAR(2047) NOT NULL,
@ -306,9 +306,9 @@ CREATE TABLE IF NOT EXISTS crs_grp_types (
UNIQUE INDEX(GrpTypCod), UNIQUE INDEX(GrpTypCod),
INDEX(CrsCod)); INDEX(CrsCod));
-- --
-- Table crs_grp_usr: stores the users beloging to each group -- Table grp_users: stores the users beloging to each group
-- --
CREATE TABLE IF NOT EXISTS crs_grp_usr ( CREATE TABLE IF NOT EXISTS grp_users (
GrpCod INT NOT NULL, GrpCod INT NOT NULL,
UsrCod INT NOT NULL, UsrCod INT NOT NULL,
UNIQUE INDEX(GrpCod,UsrCod), UNIQUE INDEX(GrpCod,UsrCod),

View File

@ -510,10 +510,10 @@ static int API_CheckCourseAndGroupCodes (struct soap *soap,
/***** Query if group code already exists in database *****/ /***** Query if group code already exists in database *****/
if (DB_QueryCOUNT ("can not get group", if (DB_QueryCOUNT ("can not get group",
"SELECT COUNT(*)" "SELECT COUNT(*)"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups" "grp_groups"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=%ld", " AND grp_groups.GrpCod=%ld",
CrsCod,GrpCod) != 1) CrsCod,GrpCod) != 1)
return soap_sender_fault (soap, return soap_sender_fault (soap,
@ -2108,12 +2108,12 @@ int swad__getGroupTypes (struct soap *soap,
/***** Query group types in a course from database *****/ /***** Query group types in a course from database *****/
NumRows = NumRows =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get group types", (unsigned) DB_QuerySELECT (&mysql_res,"can not get group types",
"SELECT GrpTypCod," "SELECT GrpTypCod," // row[0]
"GrpTypName," "GrpTypName," // row[1]
"Mandatory," "Mandatory," // row[2]
"Multiple," "Multiple," // row[3]
"UNIX_TIMESTAMP(OpenTime)" "UNIX_TIMESTAMP(OpenTime)" // row[4]
" FROM crs_grp_types" " FROM grp_types"
" WHERE CrsCod=%d" " WHERE CrsCod=%d"
" ORDER BY GrpTypName", " ORDER BY GrpTypName",
courseCode); courseCode);
@ -2227,18 +2227,18 @@ int swad__getGroups (struct soap *soap,
/***** Query groups in a course from database *****/ /***** Query groups in a course from database *****/
NumRows = NumRows =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get user's groups", (unsigned) DB_QuerySELECT (&mysql_res,"can not get user's groups",
"SELECT crs_grp_types.GrpTypCod," "SELECT grp_types.GrpTypCod," // row[0]
"crs_grp_types.GrpTypName," "grp_types.GrpTypName," // row[1]
"grp_groups.GrpCod," "grp_groups.GrpCod," // row[2]
"grp_groups.GrpName," "grp_groups.GrpName," // row[3]
"grp_groups.MaxStudents," "grp_groups.MaxStudents," // row[4]
"grp_groups.Open," "grp_groups.Open, " // row[5]
"grp_groups.FileZones" "grp_groups.FileZones" // row[6]
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups" "grp_groups"
" WHERE crs_grp_types.CrsCod=%d" " WHERE grp_types.CrsCod=%d"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" ORDER BY crs_grp_types.GrpTypName," " ORDER BY grp_types.GrpTypName,"
"grp_groups.GrpName", "grp_groups.GrpName",
courseCode); courseCode);
@ -2401,18 +2401,18 @@ int swad__sendMyGroups (struct soap *soap,
/***** Query groups in a course from database *****/ /***** Query groups in a course from database *****/
NumRows = NumRows =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get user's groups", (unsigned) DB_QuerySELECT (&mysql_res,"can not get user's groups",
"SELECT crs_grp_types.GrpTypCod," "SELECT grp_types.GrpTypCod," // row[0]
"crs_grp_types.GrpTypName," "grp_types.GrpTypName," // row[1]
"grp_groups.GrpCod," "grp_groups.GrpCod," // row[2]
"grp_groups.GrpName," "grp_groups.GrpName," // row[3]
"grp_groups.MaxStudents," "grp_groups.MaxStudents," // row[4]
"grp_groups.Open," "grp_groups.Open," // row[5]
"grp_groups.FileZones" "grp_groups.FileZones" // row[6]
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups" "grp_groups"
" WHERE crs_grp_types.CrsCod=%d" " WHERE grp_types.CrsCod=%d"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" ORDER BY crs_grp_types.GrpTypName," " ORDER BY grp_types.GrpTypName,"
"grp_groups.GrpName", "grp_groups.GrpName",
courseCode); courseCode);
@ -3021,21 +3021,21 @@ int swad__getAttendanceUsers (struct soap *soap,
// Event for one or more groups // Event for one or more groups
// Subquery: list of users in groups of this attendance event... // Subquery: list of users in groups of this attendance event...
// ...who have no entry in attendance list of users // ...who have no entry in attendance list of users
sprintf (SubQuery,"SELECT DISTINCT crs_grp_usr.UsrCod AS UsrCod," sprintf (SubQuery,"SELECT DISTINCT grp_users.UsrCod AS UsrCod," // row[0]
"'N' AS Present" "'N' AS Present" // row[1]
" FROM att_groups," " FROM att_groups,"
"grp_groups," "grp_groups,"
"crs_grp_types," "grp_types,"
"crs_users," "crs_users,"
"crs_grp_usr" "grp_users"
" WHERE att_groups.AttCod=%ld" " WHERE att_groups.AttCod=%ld"
" AND att_groups.GrpCod=grp_groups.GrpCod" " AND att_groups.GrpCod=grp_groups.GrpCod"
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod" " AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=crs_users.CrsCod" " AND grp_types.CrsCod=crs_users.CrsCod"
" AND crs_users.Role=%u" " AND crs_users.Role=%u"
" AND crs_users.UsrCod=crs_grp_usr.UsrCod" " AND crs_users.UsrCod=grp_users.UsrCod"
" AND crs_grp_usr.GrpCod=att_groups.GrpCod" " AND grp_users.GrpCod=att_groups.GrpCod"
" AND crs_grp_usr.UsrCod NOT IN" " AND grp_users.UsrCod NOT IN"
" (SELECT UsrCod" " (SELECT UsrCod"
" FROM att_users" " FROM att_users"
" WHERE AttCod=%ld)", " WHERE AttCod=%ld)",
@ -5062,18 +5062,18 @@ int swad__getMatches (struct soap *soap,
"UNIX_TIMESTAMP(EndTime)," // row[ 3] "UNIX_TIMESTAMP(EndTime)," // row[ 3]
"Title," // row[ 4] "Title," // row[ 4]
"QstInd" // row[ 5] "QstInd" // row[ 5]
" FROM mch_matches" " FROM mch_matches"
" WHERE GamCod=%ld" " WHERE GamCod=%ld"
" AND" " AND (MchCod NOT IN"
"(MchCod NOT IN"
" (SELECT MchCod FROM mch_groups)" " (SELECT MchCod FROM mch_groups)"
" OR" " OR"
" MchCod IN" " MchCod IN"
" (SELECT mch_groups.MchCod" " (SELECT mch_groups.MchCod"
" FROM mch_groups,crs_grp_usr" " FROM mch_groups,"
" WHERE crs_grp_usr.UsrCod=%ld" "grp_users"
" AND mch_groups.GrpCod=crs_grp_usr.GrpCod))" " WHERE grp_users.UsrCod=%ld"
" ORDER BY MchCod", " AND mch_groups.GrpCod=grp_users.GrpCod))"
" ORDER BY MchCod",
Game.GamCod, Game.GamCod,
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod);
getMatchesOut->matchesArray.__size = getMatchesOut->matchesArray.__size =

View File

@ -707,9 +707,9 @@ static void Asg_GetListAssignments (struct Asg_Assignments *Assignments)
" AsgCod IN" " AsgCod IN"
" (SELECT asg_groups.AsgCod" " (SELECT asg_groups.AsgCod"
" FROM asg_groups," " FROM asg_groups,"
"crs_grp_usr" "grp_users"
" WHERE crs_grp_usr.UsrCod=%ld" " WHERE grp_users.UsrCod=%ld"
" AND asg_groups.GrpCod=crs_grp_usr.GrpCod)" " AND asg_groups.GrpCod=grp_users.GrpCod)"
")" ")"
" ORDER BY %s", " ORDER BY %s",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
@ -1753,15 +1753,15 @@ static void Asg_GetAndWriteNamesOfGrpsAssociatedToAsg (struct Asg_Assignment *As
/***** Get groups associated to an assignment from database *****/ /***** Get groups associated to an assignment from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get groups of an assignment", NumRows = DB_QuerySELECT (&mysql_res,"can not get groups of an assignment",
"SELECT crs_grp_types.GrpTypName," "SELECT grp_types.GrpTypName," // row[0]
"grp_groups.GrpName" "grp_groups.GrpName" // row[1]
" FROM asg_groups," " FROM asg_groups,"
"grp_groups," "grp_groups,"
"crs_grp_types" "grp_types"
" WHERE asg_groups.AsgCod=%ld" " WHERE asg_groups.AsgCod=%ld"
" AND asg_groups.GrpCod=grp_groups.GrpCod" " AND asg_groups.GrpCod=grp_groups.GrpCod"
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod" " AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
" ORDER BY crs_grp_types.GrpTypName," " ORDER BY grp_types.GrpTypName,"
"grp_groups.GrpName", "grp_groups.GrpName",
Asg->AsgCod); Asg->AsgCod);
@ -1852,10 +1852,10 @@ static bool Asg_CheckIfIBelongToCrsOrGrpsThisAssignment (long AsgCod)
// Assignment is for some of my groups // Assignment is for some of my groups
"AsgCod IN" "AsgCod IN"
" (SELECT asg_groups.AsgCod" " (SELECT asg_groups.AsgCod"
" FROM crs_grp_usr," " FROM grp_users,"
"asg_groups" "asg_groups"
" WHERE crs_grp_usr.UsrCod=%ld" " WHERE grp_users.UsrCod=%ld"
" AND asg_groups.GrpCod=crs_grp_usr.GrpCod)" " AND asg_groups.GrpCod=grp_users.GrpCod)"
")", ")",
AsgCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0); AsgCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
case Rol_SYS_ADM: case Rol_SYS_ADM:

View File

@ -688,10 +688,10 @@ static void Att_GetListAttEvents (struct Att_Events *Events,
" OR" " OR"
" AttCod IN" " AttCod IN"
" (SELECT att_groups.AttCod" " (SELECT att_groups.AttCod"
" FROM crs_grp_usr," " FROM grp_users,"
"att_groups" "att_groups"
" WHERE crs_grp_usr.UsrCod=%ld" " WHERE grp_users.UsrCod=%ld"
" AND att_groups.GrpCod=crs_grp_usr.GrpCod))" " AND att_groups.GrpCod=grp_users.GrpCod))"
" ORDER BY %s", " ORDER BY %s",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
HiddenSubQuery[Gbl.Usrs.Me.Role.Logged], HiddenSubQuery[Gbl.Usrs.Me.Role.Logged],
@ -1543,18 +1543,18 @@ static void Att_GetAndWriteNamesOfGrpsAssociatedToAttEvent (struct Att_Event *Ev
/***** Get groups associated to an attendance event from database *****/ /***** Get groups associated to an attendance event from database *****/
NumGrps = (unsigned) DB_QuerySELECT (&mysql_res,"can not get groups of an attendance event", NumGrps = (unsigned) DB_QuerySELECT (&mysql_res,"can not get groups of an attendance event",
"SELECT crs_grp_types.GrpTypName," "SELECT grp_types.GrpTypName," // row[0]
"grp_groups.GrpName," "grp_groups.GrpName," // row[1]
"roo_rooms.ShortName" "roo_rooms.ShortName" // row[2]
" FROM (att_groups," " FROM (att_groups,"
"grp_groups," "grp_groups,"
"crs_grp_types)" "grp_types)"
" LEFT JOIN roo_rooms" " LEFT JOIN roo_rooms"
" ON grp_groups.RooCod=roo_rooms.RooCod" " ON grp_groups.RooCod=roo_rooms.RooCod"
" WHERE att_groups.AttCod=%ld" " WHERE att_groups.AttCod=%ld"
" AND att_groups.GrpCod=grp_groups.GrpCod" " AND att_groups.GrpCod=grp_groups.GrpCod"
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod" " AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
" ORDER BY crs_grp_types.GrpTypName," " ORDER BY grp_types.GrpTypName,"
"grp_groups.GrpName", "grp_groups.GrpName",
Event->AttCod); Event->AttCod);

View File

@ -600,13 +600,18 @@ TODO: Salvador Romero Cort
TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria. TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria.
*/ */
#define Log_PLATFORM_VERSION "SWAD 20.51.33 (2021-03-23)" #define Log_PLATFORM_VERSION "SWAD 20.51.34 (2021-03-23)"
#define CSS_FILE "swad20.45.css" #define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.6.2.js" #define JS_FILE "swad20.6.2.js"
/* /*
TODO: Rename CENTRE to CENTER in help wiki. TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 20.51.34: Mar 23, 2021 Groups database tables renamed. (308624 lines)
2 changes necessary in database:
RENAME TABLE crs_grp_types TO grp_types;
RENAME TABLE crs_grp_usr TO grp_users;
Version 20.51.33: Mar 23, 2021 Groups database table renamed. (308594 lines) Version 20.51.33: Mar 23, 2021 Groups database table renamed. (308594 lines)
1 change necessary in database: 1 change necessary in database:
RENAME TABLE crs_grp TO grp_groups; RENAME TABLE crs_grp TO grp_groups;

View File

@ -2026,27 +2026,27 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
/***** Remove groups in the course *****/ /***** Remove groups in the course *****/
/* Remove all the users in groups in the course */ /* Remove all the users in groups in the course */
DB_QueryDELETE ("can not remove users from groups of a course", DB_QueryDELETE ("can not remove users from groups of a course",
"DELETE FROM crs_grp_usr" "DELETE FROM grp_users"
" USING crs_grp_types," " USING grp_types,"
"grp_groups," "grp_groups,"
"crs_grp_usr" "grp_users"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod", " AND grp_groups.GrpCod=grp_users.GrpCod",
CrsCod); CrsCod);
/* Remove all the groups in the course */ /* Remove all the groups in the course */
DB_QueryDELETE ("can not remove groups of a course", DB_QueryDELETE ("can not remove groups of a course",
"DELETE FROM grp_groups" "DELETE FROM grp_groups"
" USING crs_grp_types," " USING grp_types,"
"grp_groups" "grp_groups"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod", " AND grp_types.GrpTypCod=grp_groups.GrpTypCod",
CrsCod); CrsCod);
/* Remove all the group types in the course */ /* Remove all the group types in the course */
DB_QueryDELETE ("can not remove types of group of a course", DB_QueryDELETE ("can not remove types of group of a course",
"DELETE FROM crs_grp_types" "DELETE FROM grp_types"
" WHERE CrsCod=%ld", " WHERE CrsCod=%ld",
CrsCod); CrsCod);

View File

@ -678,9 +678,9 @@ mysql> DESCRIBE grp_groups;
"INDEX(GrpTypCod)," "INDEX(GrpTypCod),"
"INDEX(RooCod))"); "INDEX(RooCod))");
/***** Table crs_grp_types *****/ /***** Table grp_types *****/
/* /*
mysql> DESCRIBE crs_grp_types; mysql> DESCRIBE grp_types;
+--------------+---------------+------+-----+---------+----------------+ +--------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra | | Field | Type | Null | Key | Default | Extra |
+--------------+---------------+------+-----+---------+----------------+ +--------------+---------------+------+-----+---------+----------------+
@ -694,7 +694,7 @@ mysql> DESCRIBE crs_grp_types;
+--------------+---------------+------+-----+---------+----------------+ +--------------+---------------+------+-----+---------+----------------+
7 rows in set (0,00 sec) 7 rows in set (0,00 sec)
*/ */
DB_CreateTable ("CREATE TABLE IF NOT EXISTS crs_grp_types (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS grp_types ("
"GrpTypCod INT NOT NULL AUTO_INCREMENT," "GrpTypCod INT NOT NULL AUTO_INCREMENT,"
"CrsCod INT NOT NULL DEFAULT -1," "CrsCod INT NOT NULL DEFAULT -1,"
"GrpTypName VARCHAR(2047) NOT NULL," // Grp_MAX_BYTES_GROUP_TYPE_NAME "GrpTypName VARCHAR(2047) NOT NULL," // Grp_MAX_BYTES_GROUP_TYPE_NAME
@ -705,9 +705,9 @@ mysql> DESCRIBE crs_grp_types;
"UNIQUE INDEX(GrpTypCod)," "UNIQUE INDEX(GrpTypCod),"
"INDEX(CrsCod))"); "INDEX(CrsCod))");
/***** Table crs_grp_usr *****/ /***** Table grp_users *****/
/* /*
mysql> DESCRIBE crs_grp_usr; mysql> DESCRIBE grp_users;
+--------+---------+------+-----+---------+-------+ +--------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra | | Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+ +--------+---------+------+-----+---------+-------+
@ -716,7 +716,7 @@ mysql> DESCRIBE crs_grp_usr;
+--------+---------+------+-----+---------+-------+ +--------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec) 2 rows in set (0.00 sec)
*/ */
DB_CreateTable ("CREATE TABLE IF NOT EXISTS crs_grp_usr (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS grp_users ("
"GrpCod INT NOT NULL," "GrpCod INT NOT NULL,"
"UsrCod INT NOT NULL," "UsrCod INT NOT NULL,"
"UNIQUE INDEX(GrpCod,UsrCod)," "UNIQUE INDEX(GrpCod,UsrCod),"

View File

@ -187,9 +187,10 @@ void ExaSes_ListSessions (struct Exa_Exams *Exams,
" OR" " OR"
" SesCod IN" " SesCod IN"
" (SELECT exa_groups.SesCod" " (SELECT exa_groups.SesCod"
" FROM exa_groups,crs_grp_usr" " FROM exa_groups,"
" WHERE crs_grp_usr.UsrCod=%ld" "grp_users"
" AND exa_groups.GrpCod=crs_grp_usr.GrpCod))", " WHERE grp_users.UsrCod=%ld"
" AND exa_groups.GrpCod=grp_users.GrpCod))",
Gbl.Usrs.Me.UsrDat.UsrCod) < 0) Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
} }
@ -665,15 +666,15 @@ static void ExaSes_GetAndWriteNamesOfGrpsAssociatedToSession (const struct ExaSe
/***** Get groups associated to an exam session from database *****/ /***** Get groups associated to an exam session from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get groups of an exam session", NumRows = DB_QuerySELECT (&mysql_res,"can not get groups of an exam session",
"SELECT crs_grp_types.GrpTypName," // row[0] "SELECT grp_types.GrpTypName," // row[0]
"grp_groups.GrpName" // row[1] "grp_groups.GrpName" // row[1]
" FROM exa_groups," " FROM exa_groups,"
"grp_groups," "grp_groups,"
"crs_grp_types" "grp_types"
" WHERE exa_groups.SesCod=%ld" " WHERE exa_groups.SesCod=%ld"
" AND exa_groups.GrpCod=grp_groups.GrpCod" " AND exa_groups.GrpCod=grp_groups.GrpCod"
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod" " AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
" ORDER BY crs_grp_types.GrpTypName," " ORDER BY grp_types.GrpTypName,"
"grp_groups.GrpName", "grp_groups.GrpName",
Session->SesCod); Session->SesCod);
@ -1733,17 +1734,18 @@ bool ExaSes_CheckIfICanListThisSessionBasedOnGrps (long SesCod)
/***** Check if I belong to any of the groups /***** Check if I belong to any of the groups
associated to the exam session *****/ associated to the exam session *****/
return (DB_QueryCOUNT ("can not check if I can play an exam session", return (DB_QueryCOUNT ("can not check if I can play an exam session",
"SELECT COUNT(*) FROM exa_sessions" "SELECT COUNT(*)"
" FROM exa_sessions"
" WHERE SesCod=%ld" " WHERE SesCod=%ld"
" AND" " AND (SesCod NOT IN"
"(SesCod NOT IN" " (SELECT SesCod FROM exa_groups)"
" (SELECT SesCod FROM exa_groups)" " OR"
" OR" " SesCod IN"
" SesCod IN" " (SELECT exa_groups.SesCod"
" (SELECT exa_groups.SesCod" " FROM exa_groups,"
" FROM exa_groups,crs_grp_usr" "grp_users"
" WHERE crs_grp_usr.UsrCod=%ld" " WHERE grp_users.UsrCod=%ld"
" AND crs_grp_usr.GrpCod=exa_groups.GrpCod))", " AND grp_users.GrpCod=exa_groups.GrpCod))",
SesCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0); SesCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
break; break;
case Rol_NET: case Rol_NET:

View File

@ -1703,16 +1703,16 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
" FROM brw_sizes" " FROM brw_sizes"
" WHERE FileBrowser IN (%u,%u,%u,%u,%u,%u)" " WHERE FileBrowser IN (%u,%u,%u,%u,%u,%u)"
" UNION " " UNION "
"SELECT crs_grp_types.CrsCod," "SELECT grp_types.CrsCod,"
"brw_sizes.Cod AS GrpCod," "brw_sizes.Cod AS GrpCod,"
"brw_sizes.NumLevels," "brw_sizes.NumLevels,"
"brw_sizes.NumFolders," "brw_sizes.NumFolders,"
"brw_sizes.NumFiles," "brw_sizes.NumFiles,"
"brw_sizes.TotalSize" "brw_sizes.TotalSize"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " WHERE grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=brw_sizes.Cod" " AND grp_groups.GrpCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)" " AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)"
") AS sizes", ") AS sizes",
@ -1748,17 +1748,17 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
case Brw_ADMI_SHR_GRP: case Brw_ADMI_SHR_GRP:
case Brw_ADMI_MRK_GRP: case Brw_ADMI_MRK_GRP:
DB_QuerySELECT (&mysql_res,"can not get size of a file browser", DB_QuerySELECT (&mysql_res,"can not get size of a file browser",
"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," // row[0] "SELECT COUNT(DISTINCT grp_types.CrsCod)," // row[0]
"COUNT(DISTINCT brw_sizes.Cod)," // row[1] "COUNT(DISTINCT brw_sizes.Cod)," // row[1]
"-1," // row[2] "-1," // row[2]
"MAX(brw_sizes.NumLevels)," // row[3] "MAX(brw_sizes.NumLevels)," // row[3]
"SUM(brw_sizes.NumFolders)," // row[4] "SUM(brw_sizes.NumFolders)," // row[4]
"SUM(brw_sizes.NumFiles)," // row[5] "SUM(brw_sizes.NumFiles)," // row[5]
"SUM(brw_sizes.TotalSize)" // row[6] "SUM(brw_sizes.TotalSize)" // row[6]
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " WHERE grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=brw_sizes.Cod" " AND grp_groups.GrpCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser=%u", " AND brw_sizes.FileBrowser=%u",
(unsigned) FileBrowser); (unsigned) FileBrowser);
@ -1828,7 +1828,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
" AND crs_courses.CrsCod=brw_sizes.Cod" " AND crs_courses.CrsCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u,%u,%u)" " AND brw_sizes.FileBrowser IN (%u,%u,%u,%u,%u,%u)"
" UNION " " UNION "
"SELECT crs_grp_types.CrsCod," "SELECT grp_types.CrsCod,"
"brw_sizes.Cod AS GrpCod," // Group zones "brw_sizes.Cod AS GrpCod," // Group zones
"brw_sizes.NumLevels," "brw_sizes.NumLevels,"
"brw_sizes.NumFolders," "brw_sizes.NumFolders,"
@ -1838,15 +1838,15 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_grp_types," "grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_courses.CrsCod=grp_types.CrsCod"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=brw_sizes.Cod" " AND grp_groups.GrpCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)" " AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)"
") AS sizes", ") AS sizes",
@ -1894,7 +1894,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
case Brw_ADMI_SHR_GRP: case Brw_ADMI_SHR_GRP:
case Brw_ADMI_MRK_GRP: case Brw_ADMI_MRK_GRP:
DB_QuerySELECT (&mysql_res,"can not get size of a file browser", DB_QuerySELECT (&mysql_res,"can not get size of a file browser",
"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," // row[0] "SELECT COUNT(DISTINCT grp_types.CrsCod)," // row[0]
"COUNT(DISTINCT brw_sizes.Cod)," // row[1] "COUNT(DISTINCT brw_sizes.Cod)," // row[1]
"-1," // row[2] "-1," // row[2]
"MAX(brw_sizes.NumLevels)," // row[3] "MAX(brw_sizes.NumLevels)," // row[3]
@ -1905,15 +1905,15 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
"ctr_centers," "ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_grp_types," "grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE ins_instits.CtyCod=%ld" " WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod" " AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_courses.CrsCod=grp_types.CrsCod"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=brw_sizes.Cod" " AND grp_groups.GrpCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser=%u", " AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Cty.CtyCod, Gbl.Hierarchy.Cty.CtyCod,
@ -2004,7 +2004,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
" AND crs_courses.CrsCod=brw_sizes.Cod" " AND crs_courses.CrsCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u,%u,%u)" " AND brw_sizes.FileBrowser IN (%u,%u,%u,%u,%u,%u)"
" UNION " " UNION "
"SELECT crs_grp_types.CrsCod," "SELECT grp_types.CrsCod,"
"brw_sizes.Cod AS GrpCod," // Group zones "brw_sizes.Cod AS GrpCod," // Group zones
"brw_sizes.NumLevels," "brw_sizes.NumLevels,"
"brw_sizes.NumFolders," "brw_sizes.NumFolders,"
@ -2013,14 +2013,14 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_grp_types," "grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_courses.CrsCod=grp_types.CrsCod"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=brw_sizes.Cod" " AND grp_groups.GrpCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)" " AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)"
") AS sizes", ") AS sizes",
@ -2066,7 +2066,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
case Brw_ADMI_SHR_GRP: case Brw_ADMI_SHR_GRP:
case Brw_ADMI_MRK_GRP: case Brw_ADMI_MRK_GRP:
DB_QuerySELECT (&mysql_res,"can not get size of a file browser", DB_QuerySELECT (&mysql_res,"can not get size of a file browser",
"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," // row[0] "SELECT COUNT(DISTINCT grp_types.CrsCod)," // row[0]
"COUNT(DISTINCT brw_sizes.Cod)," // row[1] "COUNT(DISTINCT brw_sizes.Cod)," // row[1]
"-1," // row[2] "-1," // row[2]
"MAX(brw_sizes.NumLevels)," // row[3] "MAX(brw_sizes.NumLevels)," // row[3]
@ -2076,14 +2076,14 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
" FROM ctr_centers," " FROM ctr_centers,"
"deg_degrees," "deg_degrees,"
"crs_courses," "crs_courses,"
"crs_grp_types," "grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE ctr_centers.InsCod=%ld" " WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_courses.CrsCod=grp_types.CrsCod"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=brw_sizes.Cod" " AND grp_groups.GrpCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser=%u", " AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Ins.InsCod, Gbl.Hierarchy.Ins.InsCod,
@ -2168,7 +2168,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
" AND crs_courses.CrsCod=brw_sizes.Cod" " AND crs_courses.CrsCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u,%u,%u)" " AND brw_sizes.FileBrowser IN (%u,%u,%u,%u,%u,%u)"
" UNION " " UNION "
"SELECT crs_grp_types.CrsCod," "SELECT grp_types.CrsCod,"
"brw_sizes.Cod AS GrpCod," // Group zones "brw_sizes.Cod AS GrpCod," // Group zones
"brw_sizes.NumLevels," "brw_sizes.NumLevels,"
"brw_sizes.NumFolders," "brw_sizes.NumFolders,"
@ -2176,13 +2176,13 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
"brw_sizes.TotalSize" "brw_sizes.TotalSize"
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_grp_types," "grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_courses.CrsCod=grp_types.CrsCod"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=brw_sizes.Cod" " AND grp_groups.GrpCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)" " AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)"
") AS sizes", ") AS sizes",
@ -2226,7 +2226,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
case Brw_ADMI_SHR_GRP: case Brw_ADMI_SHR_GRP:
case Brw_ADMI_MRK_GRP: case Brw_ADMI_MRK_GRP:
DB_QuerySELECT (&mysql_res,"can not get size of a file browser", DB_QuerySELECT (&mysql_res,"can not get size of a file browser",
"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," "SELECT COUNT(DISTINCT grp_types.CrsCod),"
"COUNT(DISTINCT brw_sizes.Cod)," // row[0] "COUNT(DISTINCT brw_sizes.Cod)," // row[0]
"-1," // row[1] "-1," // row[1]
"MAX(brw_sizes.NumLevels)," // row[2] "MAX(brw_sizes.NumLevels)," // row[2]
@ -2235,13 +2235,13 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
"SUM(brw_sizes.TotalSize)" // row[5] "SUM(brw_sizes.TotalSize)" // row[5]
" FROM deg_degrees," " FROM deg_degrees,"
"crs_courses," "crs_courses,"
"crs_grp_types," "grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE deg_degrees.CtrCod=%ld" " WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod" " AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_courses.CrsCod=grp_types.CrsCod"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=brw_sizes.Cod" " AND grp_groups.GrpCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser=%u", " AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Ctr.CtrCod, Gbl.Hierarchy.Ctr.CtrCod,
@ -2320,19 +2320,19 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
" AND crs_courses.CrsCod=brw_sizes.Cod" " AND crs_courses.CrsCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u,%u,%u)" " AND brw_sizes.FileBrowser IN (%u,%u,%u,%u,%u,%u)"
" UNION " " UNION "
"SELECT crs_grp_types.CrsCod," "SELECT grp_types.CrsCod,"
"brw_sizes.Cod AS GrpCod," // Group zones "brw_sizes.Cod AS GrpCod," // Group zones
"brw_sizes.NumLevels," "brw_sizes.NumLevels,"
"brw_sizes.NumFolders," "brw_sizes.NumFolders,"
"brw_sizes.NumFiles," "brw_sizes.NumFiles,"
"brw_sizes.TotalSize" "brw_sizes.TotalSize"
" FROM crs_courses," " FROM crs_courses,"
"crs_grp_types," "grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_courses.CrsCod=grp_types.CrsCod"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=brw_sizes.Cod" " AND grp_groups.GrpCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)" " AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)"
") AS sizes", ") AS sizes",
@ -2374,7 +2374,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
case Brw_ADMI_SHR_GRP: case Brw_ADMI_SHR_GRP:
case Brw_ADMI_MRK_GRP: case Brw_ADMI_MRK_GRP:
DB_QuerySELECT (&mysql_res,"can not get size of a file browser", DB_QuerySELECT (&mysql_res,"can not get size of a file browser",
"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," // row[0] "SELECT COUNT(DISTINCT grp_types.CrsCod)," // row[0]
"COUNT(DISTINCT brw_sizes.Cod)," // row[1] "COUNT(DISTINCT brw_sizes.Cod)," // row[1]
"-1," // row[2] "-1," // row[2]
"MAX(brw_sizes.NumLevels)," // row[3] "MAX(brw_sizes.NumLevels)," // row[3]
@ -2382,12 +2382,12 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
"SUM(brw_sizes.NumFiles)," // row[5] "SUM(brw_sizes.NumFiles)," // row[5]
"SUM(brw_sizes.TotalSize)" // row[6] "SUM(brw_sizes.TotalSize)" // row[6]
" FROM crs_courses," " FROM crs_courses,"
"crs_grp_types," "grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE crs_courses.DegCod=%ld" " WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_courses.CrsCod=grp_types.CrsCod"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=brw_sizes.Cod" " AND grp_groups.GrpCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser=%u", " AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Deg.DegCod, Gbl.Hierarchy.Deg.DegCod,
@ -2460,17 +2460,17 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
" WHERE Cod=%ld" " WHERE Cod=%ld"
" AND FileBrowser IN (%u,%u,%u,%u,%u,%u)" " AND FileBrowser IN (%u,%u,%u,%u,%u,%u)"
" UNION " " UNION "
"SELECT crs_grp_types.CrsCod," "SELECT grp_types.CrsCod,"
"brw_sizes.Cod AS GrpCod," // Group zones "brw_sizes.Cod AS GrpCod," // Group zones
"brw_sizes.NumLevels," "brw_sizes.NumLevels,"
"brw_sizes.NumFolders," "brw_sizes.NumFolders,"
"brw_sizes.NumFiles," "brw_sizes.NumFiles,"
"brw_sizes.TotalSize" "brw_sizes.TotalSize"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=brw_sizes.Cod" " AND grp_groups.GrpCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)" " AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)"
") AS sizes", ") AS sizes",
@ -2510,18 +2510,18 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
case Brw_ADMI_SHR_GRP: case Brw_ADMI_SHR_GRP:
case Brw_ADMI_MRK_GRP: case Brw_ADMI_MRK_GRP:
DB_QuerySELECT (&mysql_res,"can not get size of a file browser", DB_QuerySELECT (&mysql_res,"can not get size of a file browser",
"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," // row[0] "SELECT COUNT(DISTINCT grp_types.CrsCod)," // row[0]
"COUNT(DISTINCT brw_sizes.Cod)," // row[1] "COUNT(DISTINCT brw_sizes.Cod)," // row[1]
"-1," // row[2] "-1," // row[2]
"MAX(brw_sizes.NumLevels)," // row[3] "MAX(brw_sizes.NumLevels)," // row[3]
"SUM(brw_sizes.NumFolders)," // row[4] "SUM(brw_sizes.NumFolders)," // row[4]
"SUM(brw_sizes.NumFiles)," // row[5] "SUM(brw_sizes.NumFiles)," // row[5]
"SUM(brw_sizes.TotalSize)" // row[6] "SUM(brw_sizes.TotalSize)" // row[6]
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=brw_sizes.Cod" " AND grp_groups.GrpCod=brw_sizes.Cod"
" AND brw_sizes.FileBrowser=%u", " AND brw_sizes.FileBrowser=%u",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,

View File

@ -2742,10 +2742,10 @@ static void Brw_CreateFoldersAssignmentsIfNotExist (long ZoneUsrCod)
" OR " " OR "
"AsgCod IN" "AsgCod IN"
" (SELECT asg_groups.AsgCod" " (SELECT asg_groups.AsgCod"
" FROM crs_grp_usr," " FROM grp_users,"
"asg_groups" "asg_groups"
" WHERE crs_grp_usr.UsrCod=%ld" " WHERE grp_users.UsrCod=%ld"
" AND asg_groups.GrpCod=crs_grp_usr.GrpCod)" " AND asg_groups.GrpCod=grp_users.GrpCod)"
")", ")",
Gbl.Hierarchy.Crs.CrsCod,ZoneUsrCod); Gbl.Hierarchy.Crs.CrsCod,ZoneUsrCod);
@ -4380,10 +4380,10 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod)
/***** Build subquery for groups *****/ /***** Build subquery for groups *****/
sprintf (SubqueryGrp,"(SELECT grp_groups.GrpCod" sprintf (SubqueryGrp,"(SELECT grp_groups.GrpCod"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups" "grp_groups"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod)", " AND grp_types.GrpTypCod=grp_groups.GrpTypCod)",
CrsCod); CrsCod);
/***** Build subquery for projects *****/ /***** Build subquery for projects *****/
@ -4792,10 +4792,10 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long UsrCod,long CrsCod)
"(FileBrowser IN (%u,%u,%u,%u)" "(FileBrowser IN (%u,%u,%u,%u)"
" AND Cod IN" " AND Cod IN"
" (SELECT grp_groups.GrpCod" " (SELECT grp_groups.GrpCod"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups" "grp_groups"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod))" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod))"
")", ")",
UsrCod, UsrCod,
(unsigned) Brw_ADMI_DOC_CRS, (unsigned) Brw_ADMI_DOC_CRS,
@ -4824,10 +4824,10 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long UsrCod,long CrsCod)
"(FileBrowser IN (%u,%u,%u,%u)" "(FileBrowser IN (%u,%u,%u,%u)"
" AND Cod IN" " AND Cod IN"
" (SELECT grp_groups.GrpCod" " (SELECT grp_groups.GrpCod"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups" "grp_groups"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod))" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod))"
")", ")",
UsrCod, UsrCod,
(unsigned) Brw_ADMI_DOC_CRS, (unsigned) Brw_ADMI_DOC_CRS,
@ -4859,10 +4859,10 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long UsrCod,long CrsCod)
"(FileBrowser IN (%u,%u,%u,%u)" "(FileBrowser IN (%u,%u,%u,%u)"
" AND Cod IN" " AND Cod IN"
" (SELECT grp_groups.GrpCod" " (SELECT grp_groups.GrpCod"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups" "grp_groups"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod))" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod))"
")", ")",
UsrCod, UsrCod,
(unsigned) Brw_ADMI_DOC_CRS, (unsigned) Brw_ADMI_DOC_CRS,

View File

@ -977,9 +977,9 @@ static void Grp_LockTables (void)
{ {
DB_Query ("can not lock tables to change user's groups", DB_Query ("can not lock tables to change user's groups",
"LOCK TABLES " "LOCK TABLES "
"crs_grp_types WRITE," "crs_types WRITE,"
"grp_groups WRITE," "grp_groups WRITE,"
"crs_grp_usr WRITE," "grp_users WRITE,"
"crs_users READ," "crs_users READ,"
"crs_usr_last READ," "crs_usr_last READ,"
"roo_rooms READ"); "roo_rooms READ");
@ -1224,14 +1224,14 @@ void Grp_RemUsrFromAllGrpsInCrs (long UsrCod,long CrsCod)
/***** Remove user from all the groups of the course *****/ /***** Remove user from all the groups of the course *****/
DB_QueryDELETE ("can not remove a user from all groups of a course", DB_QueryDELETE ("can not remove a user from all groups of a course",
"DELETE FROM crs_grp_usr" "DELETE FROM grp_users"
" WHERE UsrCod=%ld" " WHERE UsrCod=%ld"
" AND GrpCod IN" " AND GrpCod IN"
" (SELECT grp_groups.GrpCod" " (SELECT grp_groups.GrpCod"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups" "grp_groups"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod)", " AND grp_types.GrpTypCod=grp_groups.GrpTypCod)",
UsrCod,CrsCod); UsrCod,CrsCod);
/***** Flush caches *****/ /***** Flush caches *****/
@ -1250,7 +1250,8 @@ void Grp_RemUsrFromAllGrps (long UsrCod)
/***** Remove user from all groups *****/ /***** Remove user from all groups *****/
DB_QueryDELETE ("can not remove a user from the groups he/she belongs to", DB_QueryDELETE ("can not remove a user from the groups he/she belongs to",
"DELETE FROM crs_grp_usr WHERE UsrCod=%ld", "DELETE FROM grp_users"
" WHERE UsrCod=%ld",
UsrCod); UsrCod);
/***** Flush caches *****/ /***** Flush caches *****/
@ -1269,9 +1270,11 @@ static void Grp_RemoveUsrFromGroup (long UsrCod,long GrpCod)
/***** Remove user from group *****/ /***** Remove user from group *****/
DB_QueryDELETE ("can not remove a user from a group", DB_QueryDELETE ("can not remove a user from a group",
"DELETE FROM crs_grp_usr" "DELETE FROM grp_users"
" WHERE GrpCod=%ld AND UsrCod=%ld", " WHERE GrpCod=%ld"
GrpCod,UsrCod); " AND UsrCod=%ld",
GrpCod,
UsrCod);
/***** Flush caches *****/ /***** Flush caches *****/
Grp_FlushCacheUsrSharesAnyOfMyGrpsInCurrentCrs (); Grp_FlushCacheUsrSharesAnyOfMyGrpsInCurrentCrs ();
@ -1287,7 +1290,7 @@ static void Grp_AddUsrToGroup (struct UsrData *UsrDat,long GrpCod)
{ {
/***** Register in group *****/ /***** Register in group *****/
DB_QueryINSERT ("can not add a user to a group", DB_QueryINSERT ("can not add a user to a group",
"INSERT INTO crs_grp_usr" "INSERT INTO grp_users"
" (GrpCod,UsrCod)" " (GrpCod,UsrCod)"
" VALUES" " VALUES"
" (%ld,%ld)", " (%ld,%ld)",
@ -2762,37 +2765,37 @@ void Grp_GetListGrpTypesInThisCrs (Grp_WhichGroupTypes_t WhichGroupTypes)
Gbl.Crs.Grps.GrpTypes.Num = Gbl.Crs.Grps.GrpTypes.Num =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get types of group" (unsigned) DB_QuerySELECT (&mysql_res,"can not get types of group"
" of a course", " of a course",
"SELECT crs_grp_types.GrpTypCod," "SELECT grp_types.GrpTypCod,"
"crs_grp_types.GrpTypName," "grp_types.GrpTypName,"
"crs_grp_types.Mandatory," "grp_types.Mandatory,"
"crs_grp_types.Multiple," "grp_types.Multiple,"
"crs_grp_types.MustBeOpened," "grp_types.MustBeOpened,"
"UNIX_TIMESTAMP(crs_grp_types.OpenTime)," "UNIX_TIMESTAMP(grp_types.OpenTime),"
"COUNT(grp_groups.GrpCod)" "COUNT(grp_groups.GrpCod)"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups" "grp_groups"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" GROUP BY crs_grp_types.GrpTypCod" " GROUP BY grp_types.GrpTypCod"
" ORDER BY crs_grp_types.GrpTypName", " ORDER BY grp_types.GrpTypName",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
case Grp_ALL_GROUP_TYPES: case Grp_ALL_GROUP_TYPES:
Gbl.Crs.Grps.GrpTypes.Num = Gbl.Crs.Grps.GrpTypes.Num =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get types of group" (unsigned) DB_QuerySELECT (&mysql_res,"can not get types of group"
" of a course", " of a course",
"(SELECT crs_grp_types.GrpTypCod," "(SELECT grp_types.GrpTypCod,"
"crs_grp_types.GrpTypName AS GrpTypName," "grp_types.GrpTypName AS GrpTypName,"
"crs_grp_types.Mandatory," "grp_types.Mandatory,"
"crs_grp_types.Multiple," "grp_types.Multiple,"
"crs_grp_types.MustBeOpened," "grp_types.MustBeOpened,"
"UNIX_TIMESTAMP(crs_grp_types.OpenTime)," "UNIX_TIMESTAMP(grp_types.OpenTime),"
"COUNT(grp_groups.GrpCod)" "COUNT(grp_groups.GrpCod)"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups" "grp_groups"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" GROUP BY crs_grp_types.GrpTypCod)" " GROUP BY grp_types.GrpTypCod)"
" UNION " " UNION "
"(SELECT GrpTypCod," "(SELECT GrpTypCod,"
"GrpTypName," "GrpTypName,"
@ -2801,7 +2804,7 @@ void Grp_GetListGrpTypesInThisCrs (Grp_WhichGroupTypes_t WhichGroupTypes)
"MustBeOpened," "MustBeOpened,"
"UNIX_TIMESTAMP(OpenTime)," "UNIX_TIMESTAMP(OpenTime),"
"0" "0"
" FROM crs_grp_types" " FROM grp_types"
" WHERE CrsCod=%ld" " WHERE CrsCod=%ld"
" AND GrpTypCod NOT IN" " AND GrpTypCod NOT IN"
" (SELECT GrpTypCod" " (SELECT GrpTypCod"
@ -2884,9 +2887,11 @@ void Grp_OpenGroupsAutomatically (void)
NumGrpTypes = NumGrpTypes =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get the types of group" (unsigned) DB_QuerySELECT (&mysql_res,"can not get the types of group"
" to be opened", " to be opened",
"SELECT GrpTypCod FROM crs_grp_types" "SELECT GrpTypCod"
" WHERE CrsCod=%ld AND MustBeOpened='Y'" " FROM grp_types"
" AND OpenTime<=NOW()", " WHERE CrsCod=%ld"
" AND MustBeOpened='Y'"
" AND OpenTime<=NOW()",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
for (NumGrpTyp = 0; for (NumGrpTyp = 0;
@ -2909,7 +2914,7 @@ void Grp_OpenGroupsAutomatically (void)
/***** To not try to open groups again, set MustBeOpened to false *****/ /***** To not try to open groups again, set MustBeOpened to false *****/
DB_QueryUPDATE ("can not update the opening of a type of group", DB_QueryUPDATE ("can not update the opening of a type of group",
"UPDATE crs_grp_types" "UPDATE grp_types"
" SET MustBeOpened='N'" " SET MustBeOpened='N'"
" WHERE GrpTypCod=%ld", " WHERE GrpTypCod=%ld",
GrpTypCod); GrpTypCod);
@ -3054,10 +3059,10 @@ unsigned Grp_CountNumGrpsInCurrentCrs (void)
return return
(unsigned) DB_QueryCOUNT ("can not get number of groups in this course", (unsigned) DB_QueryCOUNT ("can not get number of groups in this course",
"SELECT COUNT(*)" "SELECT COUNT(*)"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups" "grp_groups"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod", " AND grp_types.GrpTypCod=grp_groups.GrpTypCod",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
} }
@ -3117,8 +3122,9 @@ static void Grp_GetDataOfGroupTypeByCod (struct GroupType *GrpTyp)
"Multiple," // row[2] "Multiple," // row[2]
"MustBeOpened," // row[3] "MustBeOpened," // row[3]
"UNIX_TIMESTAMP(OpenTime)" // row[4] "UNIX_TIMESTAMP(OpenTime)" // row[4]
" FROM crs_grp_types" " FROM grp_types"
" WHERE CrsCod=%ld AND GrpTypCod=%ld", " WHERE CrsCod=%ld"
" AND GrpTypCod=%ld",
Gbl.Hierarchy.Crs.CrsCod,GrpTyp->GrpTypCod) != 1) Gbl.Hierarchy.Crs.CrsCod,GrpTyp->GrpTypCod) != 1)
Lay_ShowErrorAndExit ("Error when getting type of group."); Lay_ShowErrorAndExit ("Error when getting type of group.");
@ -3147,7 +3153,8 @@ static bool Grp_GetMultipleEnrolmentOfAGroupType (long GrpTypCod)
/***** Get data of a type of group from database *****/ /***** Get data of a type of group from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get if type of group" if (DB_QuerySELECT (&mysql_res,"can not get if type of group"
" has multiple enrolment", " has multiple enrolment",
"SELECT Multiple FROM crs_grp_types" "SELECT Multiple"
" FROM grp_types"
" WHERE GrpTypCod=%ld", " WHERE GrpTypCod=%ld",
GrpTypCod) != 1) GrpTypCod) != 1)
Lay_ShowErrorAndExit ("Error when getting type of enrolment."); Lay_ShowErrorAndExit ("Error when getting type of enrolment.");
@ -3190,9 +3197,9 @@ void Grp_GetDataOfGroupByCod (struct GroupData *GrpDat)
/***** Get data of a group from database *****/ /***** Get data of a group from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get data of a group", NumRows = DB_QuerySELECT (&mysql_res,"can not get data of a group",
"SELECT grp_groups.GrpTypCod," // row[0] "SELECT grp_groups.GrpTypCod," // row[0]
"crs_grp_types.CrsCod," // row[1] "grp_types.CrsCod," // row[1]
"crs_grp_types.GrpTypName," // row[2] "grp_types.GrpTypName," // row[2]
"crs_grp_types.Multiple," // row[3] "grp_types.Multiple," // row[3]
"grp_groups.GrpName," // row[4] "grp_groups.GrpName," // row[4]
"grp_groups.RooCod," // row[5] "grp_groups.RooCod," // row[5]
"roo_rooms.ShortName," // row[6] "roo_rooms.ShortName," // row[6]
@ -3200,11 +3207,11 @@ void Grp_GetDataOfGroupByCod (struct GroupData *GrpDat)
"grp_groups.Open," // row[8] "grp_groups.Open," // row[8]
"grp_groups.FileZones" // row[9] "grp_groups.FileZones" // row[9]
" FROM (grp_groups," " FROM (grp_groups,"
"crs_grp_types)" "grp_types)"
" LEFT JOIN roo_rooms" " LEFT JOIN roo_rooms"
" ON grp_groups.RooCod=roo_rooms.RooCod" " ON grp_groups.RooCod=roo_rooms.RooCod"
" WHERE grp_groups.GrpCod=%ld" " WHERE grp_groups.GrpCod=%ld"
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod", " AND grp_groups.GrpTypCod=grp_types.GrpTypCod",
GrpDat->GrpCod); GrpDat->GrpCod);
if (NumRows == 1) if (NumRows == 1)
@ -3308,10 +3315,10 @@ bool Grp_CheckIfGroupBelongsToCourse (long GrpCod,long CrsCod)
return (DB_QueryCOUNT ("can not check if a group belongs to a course", return (DB_QueryCOUNT ("can not check if a group belongs to a course",
"SELECT COUNT(*)" "SELECT COUNT(*)"
" FROM grp_groups," " FROM grp_groups,"
"crs_grp_types" "grp_types"
" WHERE grp_groups.GrpCod=%ld" " WHERE grp_groups.GrpCod=%ld"
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod" " AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=%ld", " AND grp_types.CrsCod=%ld",
GrpCod,CrsCod) != 0); GrpCod,CrsCod) != 0);
} }
@ -3325,15 +3332,15 @@ unsigned Grp_CountNumUsrsInGrp (Rol_Role_t Role,long GrpCod)
return return
(unsigned) DB_QueryCOUNT ("can not get number of users in a group", (unsigned) DB_QueryCOUNT ("can not get number of users in a group",
"SELECT COUNT(*)" "SELECT COUNT(*)"
" FROM crs_grp_usr," " FROM grp_users,"
"grp_groups," "grp_groups,"
"crs_grp_types," "grp_types,"
"crs_users" "crs_users"
" WHERE crs_grp_usr.GrpCod=%ld" " WHERE grp_users.GrpCod=%ld"
" AND crs_grp_usr.GrpCod=grp_groups.GrpCod" " AND grp_users.GrpCod=grp_groups.GrpCod"
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod" " AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=crs_users.CrsCod" " AND grp_types.CrsCod=crs_users.CrsCod"
" AND crs_grp_usr.UsrCod=crs_users.UsrCod" " AND grp_users.UsrCod=crs_users.UsrCod"
" AND crs_users.Role=%u", " AND crs_users.Role=%u",
GrpCod,(unsigned) Role); GrpCod,(unsigned) Role);
} }
@ -3352,11 +3359,11 @@ static unsigned long Grp_CountNumUsrsInNoGrpsOfType (Rol_Role_t Role,long GrpTyp
" WHERE CrsCod=%ld" " WHERE CrsCod=%ld"
" AND Role=%u" " AND Role=%u"
" AND UsrCod NOT IN" " AND UsrCod NOT IN"
" (SELECT DISTINCT crs_grp_usr.UsrCod" " (SELECT DISTINCT grp_users.UsrCod"
" FROM grp_groups," " FROM grp_groups,"
"crs_grp_usr" "grp_users"
" WHERE grp_groups.GrpTypCod=%ld" " WHERE grp_groups.GrpTypCod=%ld"
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod)", " AND grp_groups.GrpCod=grp_users.GrpCod)",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Role,GrpTypCod); (unsigned) Role,GrpTypCod);
} }
@ -3372,11 +3379,13 @@ static bool Grp_CheckIfIBelongToGrpsOfType (long GrpTypCod)
/***** Get a group which I belong to from database *****/ /***** Get a group which I belong to from database *****/
NumGrps = DB_QueryCOUNT ("can not check if you belong to a group type", NumGrps = DB_QueryCOUNT ("can not check if you belong to a group type",
"SELECT COUNT(grp_groups.GrpCod)" "SELECT COUNT(grp_groups.GrpCod)"
" FROM grp_groups,crs_grp_usr" " FROM grp_groups,"
"grp_users"
" WHERE grp_groups.GrpTypCod=%ld" " WHERE grp_groups.GrpTypCod=%ld"
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod" " AND grp_groups.GrpCod=grp_users.GrpCod"
" AND crs_grp_usr.UsrCod=%ld", // I belong " AND grp_users.UsrCod=%ld", // I belong
GrpTypCod,Gbl.Usrs.Me.UsrDat.UsrCod); GrpTypCod,
Gbl.Usrs.Me.UsrDat.UsrCod);
return (NumGrps != 0); return (NumGrps != 0);
} }
@ -3406,9 +3415,12 @@ bool Grp_GetIfIBelongToGrp (long GrpCod)
Gbl.Cache.IBelongToGrp.GrpCod = GrpCod; Gbl.Cache.IBelongToGrp.GrpCod = GrpCod;
Gbl.Cache.IBelongToGrp.IBelong = Gbl.Cache.IBelongToGrp.IBelong =
(DB_QueryCOUNT ("can not check if you belong to a group", (DB_QueryCOUNT ("can not check if you belong to a group",
"SELECT COUNT(*) FROM crs_grp_usr" "SELECT COUNT(*)"
" WHERE GrpCod=%ld AND UsrCod=%ld", " FROM grp_users"
GrpCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0); " WHERE GrpCod=%ld"
" AND UsrCod=%ld",
GrpCod,
Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
return Gbl.Cache.IBelongToGrp.IBelong; return Gbl.Cache.IBelongToGrp.IBelong;
} }
@ -3477,17 +3489,17 @@ bool Grp_CheckIfUsrSharesAnyOfMyGrpsInCurrentCrs (const struct UsrData *UsrDat)
(DB_QueryCOUNT ("can not check if a user shares any group" (DB_QueryCOUNT ("can not check if a user shares any group"
" in the current course with you", " in the current course with you",
"SELECT COUNT(*)" "SELECT COUNT(*)"
" FROM crs_grp_usr" " FROM grp_users"
" WHERE UsrCod=%ld" " WHERE UsrCod=%ld"
" AND GrpCod IN" " AND GrpCod IN"
" (SELECT crs_grp_usr.GrpCod" " (SELECT grp_users.GrpCod"
" FROM crs_grp_usr," " FROM grp_users,"
"grp_groups," "grp_groups,"
"crs_grp_types" "grp_types"
" WHERE crs_grp_usr.UsrCod=%ld" " WHERE grp_users.UsrCod=%ld"
" AND crs_grp_usr.GrpCod=grp_groups.GrpCod" " AND grp_users.GrpCod=grp_groups.GrpCod"
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod" " AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=%ld)", " AND grp_types.CrsCod=%ld)",
UsrDat->UsrCod, UsrDat->UsrCod,
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.Hierarchy.Crs.CrsCod) != 0); Gbl.Hierarchy.Crs.CrsCod) != 0);
@ -3507,14 +3519,14 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod)
if (GrpTypCod > 0) // restrict to the given group type, mandatory or not if (GrpTypCod > 0) // restrict to the given group type, mandatory or not
{ {
if (asprintf (&SubQueryGrpTypes,"crs_grp_types.GrpTypCod=%ld", if (asprintf (&SubQueryGrpTypes,"grp_types.GrpTypCod=%ld",
GrpTypCod) < 0) GrpTypCod) < 0)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
} }
else // all mandatory group types in the current course else // all mandatory group types in the current course
{ {
if (asprintf (&SubQueryGrpTypes,"crs_grp_types.CrsCod=%ld" if (asprintf (&SubQueryGrpTypes,"grp_types.CrsCod=%ld"
" AND crs_grp_types.Mandatory='Y'", " AND grp_types.Mandatory='Y'",
Gbl.Hierarchy.Crs.CrsCod) < 0) Gbl.Hierarchy.Crs.CrsCod) < 0)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
} }
@ -3529,20 +3541,20 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod)
// Available mandatory groups with students // Available mandatory groups with students
"SELECT GrpTypCod FROM" "SELECT GrpTypCod FROM"
" (" " ("
"SELECT crs_grp_types.GrpTypCod AS GrpTypCod," "SELECT grp_types.GrpTypCod AS GrpTypCod,"
"COUNT(*) AS NumStudents," "COUNT(*) AS NumStudents,"
"grp_groups.MaxStudents as MaxStudents" "grp_groups.MaxStudents as MaxStudents"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups," "grp_groups,"
"crs_grp_usr," "grp_users,"
"crs_users" "crs_users"
" WHERE %s" // Which group types? " WHERE %s" // Which group types?
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.Open='Y'" // Open " AND grp_groups.Open='Y'" // Open
" AND grp_groups.MaxStudents>0" // Admits students " AND grp_groups.MaxStudents>0" // Admits students
" AND crs_grp_types.CrsCod=crs_users.CrsCod" " AND grp_types.CrsCod=crs_users.CrsCod"
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod" " AND grp_groups.GrpCod=grp_users.GrpCod"
" AND crs_grp_usr.UsrCod=crs_users.UsrCod" " AND grp_users.UsrCod=crs_users.UsrCod"
" AND crs_users.Role=%u" // Student " AND crs_users.Role=%u" // Student
" GROUP BY grp_groups.GrpCod" " GROUP BY grp_groups.GrpCod"
" HAVING NumStudents<MaxStudents" // Not full " HAVING NumStudents<MaxStudents" // Not full
@ -3551,36 +3563,36 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod)
" UNION " " UNION "
// Available mandatory groups... // Available mandatory groups...
"SELECT crs_grp_types.GrpTypCod AS GrpTypCod" "SELECT grp_types.GrpTypCod AS GrpTypCod"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups" "grp_groups"
" WHERE %s" // Which group types? " WHERE %s" // Which group types?
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.Open='Y'" // Open " AND grp_groups.Open='Y'" // Open
" AND grp_groups.MaxStudents>0" // Admits students " AND grp_groups.MaxStudents>0" // Admits students
// ...without students // ...without students
" AND grp_groups.GrpCod NOT IN" " AND grp_groups.GrpCod NOT IN"
" (SELECT crs_grp_usr.GrpCod" " (SELECT grp_users.GrpCod"
" FROM crs_users," " FROM crs_users,"
"crs_grp_usr" "grp_users"
" WHERE crs_users.CrsCod=%ld" " WHERE crs_users.CrsCod=%ld"
" AND crs_users.Role=%u" // Student " AND crs_users.Role=%u" // Student
" AND crs_users.UsrCod=crs_grp_usr.UsrCod)" " AND crs_users.UsrCod=grp_users.UsrCod)"
") AS available_grp_types" ") AS available_grp_types"
// ...to which I don't belong // ...to which I don't belong
" WHERE GrpTypCod NOT IN" " WHERE GrpTypCod NOT IN"
" (SELECT crs_grp_types.GrpTypCod" " (SELECT grp_types.GrpTypCod"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups," "grp_groups,"
"crs_grp_usr" "grp_users"
" WHERE %s" // Which group types? " WHERE %s" // Which group types?
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.Open='Y'" // Open " AND grp_groups.Open='Y'" // Open
" AND grp_groups.MaxStudents>0" // Admits students " AND grp_groups.MaxStudents>0" // Admits students
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod" " AND grp_groups.GrpCod=grp_users.GrpCod"
" AND crs_grp_usr.UsrCod=%ld)", // I belong " AND grp_users.UsrCod=%ld)", // I belong
SubQueryGrpTypes,(unsigned) Rol_STD, SubQueryGrpTypes,(unsigned) Rol_STD,
SubQueryGrpTypes, SubQueryGrpTypes,
@ -3612,7 +3624,7 @@ static void Grp_GetLstCodGrpsUsrBelongs (long CrsCod,long GrpTypCod,
(unsigned) DB_QuerySELECT (&mysql_res,"can not get the groups" (unsigned) DB_QuerySELECT (&mysql_res,"can not get the groups"
" which a user belongs to", " which a user belongs to",
"SELECT GrpCod" "SELECT GrpCod"
" FROM crs_grp_usr" " FROM grp_users"
" WHERE UsrCod=%ld", // Groups will be unordered " WHERE UsrCod=%ld", // Groups will be unordered
UsrCod); UsrCod);
else if (GrpTypCod < 0) // Query the groups of any type in the course else if (GrpTypCod < 0) // Query the groups of any type in the course
@ -3620,14 +3632,14 @@ static void Grp_GetLstCodGrpsUsrBelongs (long CrsCod,long GrpTypCod,
(unsigned) DB_QuerySELECT (&mysql_res,"can not get the groups" (unsigned) DB_QuerySELECT (&mysql_res,"can not get the groups"
" which a user belongs to", " which a user belongs to",
"SELECT grp_groups.GrpCod" "SELECT grp_groups.GrpCod"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups," "grp_groups,"
"crs_grp_usr" "grp_users"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod" " AND grp_groups.GrpCod=grp_users.GrpCod"
" AND crs_grp_usr.UsrCod=%ld" " AND grp_users.UsrCod=%ld"
" ORDER BY crs_grp_types.GrpTypName," " ORDER BY grp_types.GrpTypName,"
"grp_groups.GrpName", "grp_groups.GrpName",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
UsrCod); UsrCod);
@ -3636,14 +3648,14 @@ static void Grp_GetLstCodGrpsUsrBelongs (long CrsCod,long GrpTypCod,
(unsigned) DB_QuerySELECT (&mysql_res,"can not get the groups" (unsigned) DB_QuerySELECT (&mysql_res,"can not get the groups"
" which a user belongs to", " which a user belongs to",
"SELECT grp_groups.GrpCod" "SELECT grp_groups.GrpCod"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups," "grp_groups,"
"crs_grp_usr" "grp_users"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=%ld" " AND grp_types.GrpTypCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod" " AND grp_groups.GrpCod=grp_users.GrpCod"
" AND crs_grp_usr.UsrCod=%ld" " AND grp_users.UsrCod=%ld"
" ORDER BY grp_groups.GrpName", " ORDER BY grp_groups.GrpName",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
GrpTypCod, GrpTypCod,
@ -3687,15 +3699,15 @@ void Grp_GetLstCodGrpsWithFileZonesIBelong (struct ListCodGrps *LstGrps)
(unsigned) DB_QuerySELECT (&mysql_res,"can not get the groups" (unsigned) DB_QuerySELECT (&mysql_res,"can not get the groups"
" which you belong to", " which you belong to",
"SELECT grp_groups.GrpCod" "SELECT grp_groups.GrpCod"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups," "grp_groups,"
"crs_grp_usr" "grp_users"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND grp_groups.FileZones='Y'" " AND grp_groups.FileZones='Y'"
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod" " AND grp_groups.GrpCod=grp_users.GrpCod"
" AND crs_grp_usr.UsrCod=%ld" " AND grp_users.UsrCod=%ld"
" ORDER BY crs_grp_types.GrpTypName," " ORDER BY grp_types.GrpTypName,"
"grp_groups.GrpName", "grp_groups.GrpName",
Gbl.Hierarchy.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Hierarchy.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod);
@ -3755,10 +3767,11 @@ void Grp_GetNamesGrpsStdBelongsTo (long GrpTypCod,long UsrCod,char *GroupNames)
NumRows = DB_QuerySELECT (&mysql_res,"can not get the names of groups" NumRows = DB_QuerySELECT (&mysql_res,"can not get the names of groups"
" a user belongs to", " a user belongs to",
"SELECT grp_groups.GrpName" "SELECT grp_groups.GrpName"
" FROM grp_groups,crs_grp_usr" " FROM grp_groups,"
"grp_users"
" WHERE grp_groups.GrpTypCod=%ld" " WHERE grp_groups.GrpTypCod=%ld"
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod" " AND grp_groups.GrpCod=grp_users.GrpCod"
" AND crs_grp_usr.UsrCod=%ld" " AND grp_users.UsrCod=%ld"
" ORDER BY grp_groups.GrpName", " ORDER BY grp_groups.GrpName",
GrpTypCod,UsrCod); GrpTypCod,UsrCod);
@ -3932,9 +3945,11 @@ static bool Grp_CheckIfGroupTypeNameExists (const char *GrpTypName,long GrpTypCo
/***** Get number of group types with a name from database *****/ /***** Get number of group types with a name from database *****/
return (DB_QueryCOUNT ("can not check if the name of type of group" return (DB_QueryCOUNT ("can not check if the name of type of group"
" already existed", " already existed",
"SELECT COUNT(*) FROM crs_grp_types" "SELECT COUNT(*)"
" WHERE CrsCod=%ld AND GrpTypName='%s'" " FROM grp_types"
" AND GrpTypCod<>%ld", " WHERE CrsCod=%ld"
" AND GrpTypName='%s'"
" AND GrpTypCod<>%ld",
Gbl.Hierarchy.Crs.CrsCod,GrpTypName,GrpTypCod) != 0); Gbl.Hierarchy.Crs.CrsCod,GrpTypName,GrpTypCod) != 0);
} }
@ -3963,7 +3978,7 @@ static void Grp_CreateGroupType (void)
/***** Create a new group type *****/ /***** Create a new group type *****/
Gbl.Crs.Grps.GrpTyp.GrpTypCod = Gbl.Crs.Grps.GrpTyp.GrpTypCod =
DB_QueryINSERTandReturnCode ("can not create type of group", DB_QueryINSERTandReturnCode ("can not create type of group",
"INSERT INTO crs_grp_types" "INSERT INTO grp_types"
" (CrsCod,GrpTypName,Mandatory,Multiple,MustBeOpened,OpenTime)" " (CrsCod,GrpTypName,Mandatory,Multiple,MustBeOpened,OpenTime)"
" VALUES" " VALUES"
" (%ld,'%s','%c','%c','%c',FROM_UNIXTIME(%ld))", " (%ld,'%s','%c','%c','%c',FROM_UNIXTIME(%ld))",
@ -4178,7 +4193,7 @@ static void Grp_RemoveGroupTypeCompletely (void)
/***** Remove all the students in groups of this type *****/ /***** Remove all the students in groups of this type *****/
DB_QueryDELETE ("can not remove users from all groups of a type", DB_QueryDELETE ("can not remove users from all groups of a type",
"DELETE FROM crs_grp_usr" "DELETE FROM grp_users"
" WHERE GrpCod IN" " WHERE GrpCod IN"
" (SELECT GrpCod" " (SELECT GrpCod"
" FROM grp_groups" " FROM grp_groups"
@ -4193,7 +4208,7 @@ static void Grp_RemoveGroupTypeCompletely (void)
/***** Remove the group type *****/ /***** Remove the group type *****/
DB_QueryDELETE ("can not remove a type of group", DB_QueryDELETE ("can not remove a type of group",
"DELETE FROM crs_grp_types" "DELETE FROM grp_types"
" WHERE GrpTypCod=%ld", " WHERE GrpTypCod=%ld",
Gbl.Crs.Grps.GrpTyp.GrpTypCod); Gbl.Crs.Grps.GrpTyp.GrpTypCod);
@ -4244,7 +4259,8 @@ static void Grp_RemoveGroupCompletely (void)
/***** Remove all the students in this group *****/ /***** Remove all the students in this group *****/
DB_QueryDELETE ("can not remove users from a group", DB_QueryDELETE ("can not remove users from a group",
"DELETE FROM crs_grp_usr WHERE GrpCod=%ld", "DELETE FROM grp_users"
" WHERE GrpCod=%ld",
Gbl.Crs.Grps.GrpCod); Gbl.Crs.Grps.GrpCod);
/***** Remove the group *****/ /***** Remove the group *****/
@ -4539,7 +4555,8 @@ void Grp_ChangeMandatGrpTyp (void)
{ {
/***** Update of the table of types of group changing the old type of enrolment by the new *****/ /***** Update of the table of types of group changing the old type of enrolment by the new *****/
DB_QueryUPDATE ("can not update enrolment type of a type of group", DB_QueryUPDATE ("can not update enrolment type of a type of group",
"UPDATE crs_grp_types SET Mandatory='%c'" "UPDATE grp_types"
" SET Mandatory='%c'"
" WHERE GrpTypCod=%ld", " WHERE GrpTypCod=%ld",
NewMandatoryEnrolment ? 'Y' : NewMandatoryEnrolment ? 'Y' :
'N', 'N',
@ -4596,7 +4613,8 @@ void Grp_ChangeMultiGrpTyp (void)
{ {
/***** Update of the table of types of group changing the old type of enrolment by the new *****/ /***** Update of the table of types of group changing the old type of enrolment by the new *****/
DB_QueryUPDATE ("can not update enrolment type of a type of group", DB_QueryUPDATE ("can not update enrolment type of a type of group",
"UPDATE crs_grp_types SET Multiple='%c'" "UPDATE grp_types"
" SET Multiple='%c'"
" WHERE GrpTypCod=%ld", " WHERE GrpTypCod=%ld",
NewMultipleEnrolment ? 'Y' : NewMultipleEnrolment ? 'Y' :
'N', 'N',
@ -4638,8 +4656,9 @@ void Grp_ChangeOpenTimeGrpTyp (void)
/***** Update the table of types of group /***** Update the table of types of group
changing the old open time of enrolment by the new *****/ changing the old open time of enrolment by the new *****/
DB_QueryUPDATE ("can not update enrolment type of a type of group", DB_QueryUPDATE ("can not update enrolment type of a type of group",
"UPDATE crs_grp_types" "UPDATE grp_types"
" SET MustBeOpened='%c',OpenTime=FROM_UNIXTIME(%ld)" " SET MustBeOpened='%c',"
"OpenTime=FROM_UNIXTIME(%ld)"
" WHERE GrpTypCod=%ld", " WHERE GrpTypCod=%ld",
Gbl.Crs.Grps.GrpTyp.MustBeOpened ? 'Y' : Gbl.Crs.Grps.GrpTyp.MustBeOpened ? 'Y' :
'N', 'N',
@ -4791,7 +4810,8 @@ void Grp_RenameGroupType (void)
{ {
/* Update the table changing old name by new name */ /* Update the table changing old name by new name */
DB_QueryUPDATE ("can not update the type of a group", DB_QueryUPDATE ("can not update the type of a group",
"UPDATE crs_grp_types SET GrpTypName='%s'" "UPDATE grp_types"
" SET GrpTypName='%s'"
" WHERE GrpTypCod=%ld", " WHERE GrpTypCod=%ld",
NewNameGrpTyp, NewNameGrpTyp,
Gbl.Crs.Grps.GrpTyp.GrpTypCod); Gbl.Crs.Grps.GrpTyp.GrpTypCod);

View File

@ -1494,11 +1494,11 @@ static unsigned long Ind_GetNumFilesInDocumZonesOfCrsFromDB (long CrsCod)
" FROM brw_sizes" " FROM brw_sizes"
" WHERE FileBrowser=%u AND Cod=%ld) +" " WHERE FileBrowser=%u AND Cod=%ld) +"
" (SELECT COALESCE(SUM(brw_sizes.NumFiles),0)" " (SELECT COALESCE(SUM(brw_sizes.NumFiles),0)"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND brw_sizes.FileBrowser=%u" " AND brw_sizes.FileBrowser=%u"
" AND brw_sizes.Cod=grp_groups.GrpCod)", " AND brw_sizes.Cod=grp_groups.GrpCod)",
(unsigned) Brw_FileBrowserForDB_files[Brw_ADMI_DOC_CRS], (unsigned) Brw_FileBrowserForDB_files[Brw_ADMI_DOC_CRS],
@ -1537,11 +1537,11 @@ static unsigned long Ind_GetNumFilesInShareZonesOfCrsFromDB (long CrsCod)
" FROM brw_sizes" " FROM brw_sizes"
" WHERE FileBrowser=%u AND Cod=%ld) +" " WHERE FileBrowser=%u AND Cod=%ld) +"
" (SELECT COALESCE(SUM(brw_sizes.NumFiles),0)" " (SELECT COALESCE(SUM(brw_sizes.NumFiles),0)"
" FROM crs_grp_types," " FROM grp_types,"
"grp_groups," "grp_groups,"
"brw_sizes" "brw_sizes"
" WHERE crs_grp_types.CrsCod=%ld" " WHERE grp_types.CrsCod=%ld"
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod" " AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
" AND brw_sizes.FileBrowser=%u" " AND brw_sizes.FileBrowser=%u"
" AND brw_sizes.Cod=grp_groups.GrpCod)", " AND brw_sizes.Cod=grp_groups.GrpCod)",
(unsigned) Brw_FileBrowserForDB_files[Brw_ADMI_SHR_CRS], (unsigned) Brw_FileBrowserForDB_files[Brw_ADMI_SHR_CRS],

View File

@ -310,9 +310,10 @@ void Mch_ListMatches (struct Gam_Games *Games,
" OR" " OR"
" MchCod IN" " MchCod IN"
" (SELECT mch_groups.MchCod" " (SELECT mch_groups.MchCod"
" FROM mch_groups,crs_grp_usr" " FROM grp_users,"
" WHERE crs_grp_usr.UsrCod=%ld" "mch_groups"
" AND mch_groups.GrpCod=crs_grp_usr.GrpCod))", " WHERE grp_users.UsrCod=%ld"
" AND grp_users.GrpCod=mch_groups.GrpCod))",
Gbl.Usrs.Me.UsrDat.UsrCod) < 0) Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
} }
@ -766,15 +767,15 @@ static void Mch_GetAndWriteNamesOfGrpsAssociatedToMatch (const struct Mch_Match
/***** Get groups associated to a match from database *****/ /***** Get groups associated to a match from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get groups of a match", NumRows = DB_QuerySELECT (&mysql_res,"can not get groups of a match",
"SELECT crs_grp_types.GrpTypName," "SELECT grp_types.GrpTypName,"
"grp_groups.GrpName" "grp_groups.GrpName"
" FROM mch_groups," " FROM mch_groups,"
"grp_groups," "grp_groups,"
"crs_grp_types" "grp_types"
" WHERE mch_groups.MchCod=%ld" " WHERE mch_groups.MchCod=%ld"
" AND mch_groups.GrpCod=grp_groups.GrpCod" " AND mch_groups.GrpCod=grp_groups.GrpCod"
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod" " AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
" ORDER BY crs_grp_types.GrpTypName," " ORDER BY grp_types.GrpTypName,"
"grp_groups.GrpName", "grp_groups.GrpName",
Match->MchCod); Match->MchCod);
@ -2524,9 +2525,10 @@ bool Mch_CheckIfICanPlayThisMatchBasedOnGrps (const struct Mch_Match *Match)
" OR" " OR"
" MchCod IN" " MchCod IN"
" (SELECT mch_groups.MchCod" " (SELECT mch_groups.MchCod"
" FROM mch_groups,crs_grp_usr" " FROM grp_users,"
" WHERE crs_grp_usr.UsrCod=%ld" "mch_groups"
" AND crs_grp_usr.GrpCod=mch_groups.GrpCod))", " WHERE grp_users.UsrCod=%ld"
" AND grp_users.GrpCod=mch_groups.GrpCod))",
Match->MchCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0); Match->MchCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
break; break;
case Rol_NET: case Rol_NET:

View File

@ -1244,26 +1244,26 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
case Brw_ADMI_MRK_GRP: // Notify all users in group except me case Brw_ADMI_MRK_GRP: // Notify all users in group except me
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"SELECT UsrCod" // row[0] "SELECT UsrCod" // row[0]
" FROM crs_grp_usr" " FROM grp_users"
" WHERE crs_grp_usr.GrpCod=%ld" " WHERE GrpCod=%ld"
" AND crs_grp_usr.UsrCod<>%ld", " AND UsrCod<>%ld",
Gbl.Crs.Grps.GrpCod, Gbl.Crs.Grps.GrpCod,
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod);
break; break;
case Brw_ADMI_TCH_GRP: // Notify all teachers in group except me case Brw_ADMI_TCH_GRP: // Notify all teachers in group except me
NumRows = DB_QuerySELECT (&mysql_res,"can not get users" NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified", " to be notified",
"SELECT crs_grp_usr.UsrCod" // row[0] "SELECT grp_users.UsrCod" // row[0]
" FROM crs_grp_usr," " FROM grp_users,"
"grp_groups," "grp_groups,"
"crs_grp_types," "grp_types,"
"crs_users" "crs_users"
" WHERE crs_grp_usr.GrpCod=%ld" " WHERE grp_users.GrpCod=%ld"
" AND crs_grp_usr.UsrCod<>%ld" " AND grp_users.UsrCod<>%ld"
" AND crs_grp_usr.GrpCod=grp_groups.GrpCod" " AND grp_users.GrpCod=grp_groups.GrpCod"
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod" " AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=crs_users.CrsCod" " AND grp_types.CrsCod=crs_users.CrsCod"
" AND crs_users.Role=%u", // Notify teachers only " AND crs_users.Role=%u", // Notify teachers only
Gbl.Crs.Grps.GrpCod, Gbl.Crs.Grps.GrpCod,
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
@ -1290,12 +1290,12 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
" AND asg_assignments.CrsCod=crs_users.CrsCod" " AND asg_assignments.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod<>%ld)" " AND crs_users.UsrCod<>%ld)"
" UNION " " UNION "
"(SELECT DISTINCT crs_grp_usr.UsrCod" "(SELECT DISTINCT grp_users.UsrCod"
" FROM asg_groups," " FROM asg_groups,"
"crs_grp_usr" "grp_users"
" WHERE asg_groups.AsgCod=%ld" " WHERE asg_groups.AsgCod=%ld"
" AND asg_groups.GrpCod=crs_grp_usr.GrpCod" " AND asg_groups.GrpCod=grp_users.GrpCod"
" AND crs_grp_usr.UsrCod<>%ld)", " AND grp_users.UsrCod<>%ld)",
Cod,Cod,Gbl.Usrs.Me.UsrDat.UsrCod, Cod,Cod,Gbl.Usrs.Me.UsrDat.UsrCod,
Cod,Gbl.Usrs.Me.UsrDat.UsrCod); Cod,Gbl.Usrs.Me.UsrDat.UsrCod);
break; break;
@ -1431,15 +1431,15 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
" AND crs_users.UsrCod<>%ld" " AND crs_users.UsrCod<>%ld"
" AND (svy_surveys.Roles&(1<<crs_users.Role))<>0)" " AND (svy_surveys.Roles&(1<<crs_users.Role))<>0)"
" UNION " " UNION "
"(SELECT DISTINCT crs_grp_usr.UsrCod" "(SELECT DISTINCT grp_users.UsrCod"
" FROM svy_groups," " FROM svy_groups,"
"crs_grp_usr," "grp_users,"
"svy_surveys," "svy_surveys,"
"crs_users" "crs_users"
" WHERE svy_groups.SvyCod=%ld" " WHERE svy_groups.SvyCod=%ld"
" AND svy_groups.GrpCod=crs_grp_usr.GrpCod" " AND svy_groups.GrpCod=grp_users.GrpCod"
" AND crs_grp_usr.UsrCod=crs_users.UsrCod" " AND grp_users.UsrCod=crs_users.UsrCod"
" AND crs_grp_usr.UsrCod<>%ld" " AND grp_users.UsrCod<>%ld"
" AND svy_groups.SvyCod=svy_surveys.SvyCod" " AND svy_groups.SvyCod=svy_surveys.SvyCod"
" AND svy_surveys.Scope='%s'" " AND svy_surveys.Scope='%s'"
" AND svy_surveys.Cod=crs_users.CrsCod" " AND svy_surveys.Cod=crs_users.CrsCod"

View File

@ -879,10 +879,10 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
" (FilCod INT NOT NULL,UNIQUE INDEX(FilCod))" " (FilCod INT NOT NULL,UNIQUE INDEX(FilCod))"
" ENGINE=MEMORY" " ENGINE=MEMORY"
" SELECT brw_files.FilCod" " SELECT brw_files.FilCod"
" FROM crs_grp_usr," " FROM grp_users,"
"brw_files" "brw_files"
" WHERE crs_grp_usr.UsrCod=%ld" " WHERE grp_users.UsrCod=%ld"
" AND crs_grp_usr.GrpCod=brw_files.Cod" " AND grp_users.GrpCod=brw_files.Cod"
" AND brw_files.FileBrowser IN (%u,%u,%u,%u)", " AND brw_files.FileBrowser IN (%u,%u,%u,%u)",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Brw_ADMI_DOC_GRP, (unsigned) Brw_ADMI_DOC_GRP,
@ -935,7 +935,7 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
"grp_groups.GrpCod" "grp_groups.GrpCod"
" FROM brw_files," " FROM brw_files,"
"grp_groups," "grp_groups,"
"crs_grp_types," "grp_types,"
"crs_courses," "crs_courses,"
"deg_degrees," "deg_degrees,"
"ctr_centers," "ctr_centers,"
@ -945,8 +945,8 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
" AND %s" " AND %s"
" AND brw_files.FileBrowser IN (%u,%u,%u,%u)" " AND brw_files.FileBrowser IN (%u,%u,%u,%u)"
" AND brw_files.Cod=grp_groups.GrpCod" " AND brw_files.Cod=grp_groups.GrpCod"
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod" " AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=crs_courses.CrsCod" " AND grp_types.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod" " AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod" " AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=ins_instits.InsCod" " AND ctr_centers.InsCod=ins_instits.InsCod"
@ -1124,7 +1124,7 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
"grp_groups.GrpCod" "grp_groups.GrpCod"
" FROM brw_files," " FROM brw_files,"
"grp_groups," "grp_groups,"
"crs_grp_types," "grp_types,"
"crs_courses," "crs_courses,"
"deg_degrees," "deg_degrees,"
"ctr_centers," "ctr_centers,"
@ -1134,8 +1134,8 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
" AND %s" " AND %s"
" AND brw_files.FileBrowser IN (%u,%u,%u,%u)" " AND brw_files.FileBrowser IN (%u,%u,%u,%u)"
" AND brw_files.Cod=grp_groups.GrpCod" " AND brw_files.Cod=grp_groups.GrpCod"
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod" " AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=crs_courses.CrsCod" " AND grp_types.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod" " AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=ctr_centers.CtrCod" " AND deg_degrees.CtrCod=ctr_centers.CtrCod"
" AND ctr_centers.InsCod=ins_instits.InsCod" " AND ctr_centers.InsCod=ins_instits.InsCod"

View File

@ -997,9 +997,10 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
" OR" " OR"
" SvyCod IN" " SvyCod IN"
" (SELECT svy_groups.SvyCod" " (SELECT svy_groups.SvyCod"
" FROM svy_groups,crs_grp_usr" " FROM grp_users,"
" WHERE crs_grp_usr.UsrCod=%ld" "svy_groups"
" AND svy_groups.GrpCod=crs_grp_usr.GrpCod))" " WHERE grp_users.UsrCod=%ld"
" AND grp_users.GrpCod=svy_groups.GrpCod))"
")", ")",
SubQueryFilled ? " OR " : SubQueryFilled ? " OR " :
"", "",
@ -2496,15 +2497,15 @@ static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Svy_Survey *Svy)
/***** Get groups associated to a survey from database *****/ /***** Get groups associated to a survey from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get groups of a survey", NumRows = DB_QuerySELECT (&mysql_res,"can not get groups of a survey",
"SELECT crs_grp_types.GrpTypName," "SELECT grp_types.GrpTypName,"
"grp_groups.GrpName" "grp_groups.GrpName"
" FROM svy_groups," " FROM svy_groups,"
"grp_groups," "grp_groups,"
"crs_grp_types" "grp_types"
" WHERE svy_groups.SvyCod=%ld" " WHERE svy_groups.SvyCod=%ld"
" AND svy_groups.GrpCod=grp_groups.GrpCod" " AND svy_groups.GrpCod=grp_groups.GrpCod"
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod" " AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
" ORDER BY crs_grp_types.GrpTypName," " ORDER BY grp_types.GrpTypName,"
"grp_groups.GrpName", "grp_groups.GrpName",
Svy->SvyCod); Svy->SvyCod);
@ -2618,10 +2619,10 @@ static bool Svy_CheckIfICanDoThisSurveyBasedOnGrps (long SvyCod)
" OR" " OR"
" SvyCod IN" " SvyCod IN"
" (SELECT svy_groups.SvyCod" " (SELECT svy_groups.SvyCod"
" FROM crs_grp_usr," " FROM grp_users,"
"svy_groups" "svy_groups"
" WHERE crs_grp_usr.UsrCod=%ld" " WHERE grp_users.UsrCod=%ld"
" AND svy_groups.GrpCod=crs_grp_usr.GrpCod))", " AND grp_users.GrpCod=svy_groups.GrpCod))",
SvyCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0); SvyCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
} }

View File

@ -736,10 +736,10 @@ static void Tmt_FillTimeTableFromDB (struct Tmt_Timetable *Timetable,
"tmt_courses.ClassType," "tmt_courses.ClassType,"
"tmt_courses.GrpCod," "tmt_courses.GrpCod,"
"tmt_courses.CrsCod" "tmt_courses.CrsCod"
" FROM tmt_courses," " FROM grp_users,"
"crs_grp_usr" "tmt_courses"
" WHERE crs_grp_usr.UsrCod=%ld" " WHERE grp_users.UsrCod=%ld"
" AND tmt_courses.GrpCod=crs_grp_usr.GrpCod" " AND grp_users.GrpCod=tmt_courses.GrpCod"
" UNION " " UNION "
"SELECT Weekday," "SELECT Weekday,"
"TIME_TO_SEC(StartTime) AS S," "TIME_TO_SEC(StartTime) AS S,"
@ -829,10 +829,11 @@ static void Tmt_FillTimeTableFromDB (struct Tmt_Timetable *Timetable,
"tmt_courses.Info," // row[3] "tmt_courses.Info," // row[3]
"tmt_courses.ClassType," // row[4] "tmt_courses.ClassType," // row[4]
"tmt_courses.GrpCod" // row[5] "tmt_courses.GrpCod" // row[5]
" FROM tmt_courses,crs_grp_usr" " FROM tmt_courses,"
"grp_users"
" WHERE tmt_courses.CrsCod=%ld" " WHERE tmt_courses.CrsCod=%ld"
" AND crs_grp_usr.UsrCod=%ld" " AND grp_users.UsrCod=%ld"
" AND tmt_courses.GrpCod=crs_grp_usr.GrpCod" " AND tmt_courses.GrpCod=grp_users.GrpCod"
" ORDER BY Weekday," " ORDER BY Weekday,"
"S," "S,"
"ClassType," "ClassType,"

View File

@ -4098,11 +4098,11 @@ long Usr_GetRamdomStdFromGrp (long GrpCod)
/***** Get a random student from a group from database *****/ /***** Get a random student from a group from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get a random student from a group", if (DB_QuerySELECT (&mysql_res,"can not get a random student from a group",
"SELECT crs_grp_usr.UsrCod" // row[0] "SELECT grp_users.UsrCod" // row[0]
" FROM crs_grp_usr," " FROM grp_users,"
"crs_users" "crs_users"
" WHERE crs_grp_usr.GrpCod=%ld" " WHERE grp_users.GrpCod=%ld"
" AND crs_grp_usr.UsrCod=crs_users.UsrCod" " AND grp_users.UsrCod=crs_users.UsrCod"
" AND crs_users.Role=%u" " AND crs_users.Role=%u"
" ORDER BY RAND()" " ORDER BY RAND()"
" LIMIT 1", " LIMIT 1",
@ -4520,7 +4520,7 @@ static void Usr_BuildQueryToGetUsrsLstCrs (char **Query,Rol_Role_t Role)
{ {
Str_Concat (*Query," AND (crs_users.UsrCod IN" Str_Concat (*Query," AND (crs_users.UsrCod IN"
" (SELECT DISTINCT UsrCod" " (SELECT DISTINCT UsrCod"
" FROM crs_grp_usr" " FROM grp_users"
" WHERE", " WHERE",
Usr_MAX_BYTES_QUERY_GET_LIST_USRS); Usr_MAX_BYTES_QUERY_GET_LIST_USRS);
NumPositiveCods = 0; NumPositiveCods = 0;
@ -4553,15 +4553,15 @@ static void Usr_BuildQueryToGetUsrsLstCrs (char **Query,Rol_Role_t Role)
Str_Concat (*Query," AND (",Usr_MAX_BYTES_QUERY_GET_LIST_USRS); Str_Concat (*Query," AND (",Usr_MAX_BYTES_QUERY_GET_LIST_USRS);
/* Select all the students of the course who don't belong to any group of type GrpTypCod */ /* Select all the students of the course who don't belong to any group of type GrpTypCod */
Str_Concat (*Query,"crs_users.UsrCod NOT IN" Str_Concat (*Query,"crs_users.UsrCod NOT IN"
" (SELECT DISTINCT crs_grp_usr.UsrCod" " (SELECT DISTINCT grp_users.UsrCod"
" FROM grp_groups," " FROM grp_groups,"
"crs_grp_usr" "grp_users"
" WHERE grp_groups.GrpTypCod='", " WHERE grp_groups.GrpTypCod='",
Usr_MAX_BYTES_QUERY_GET_LIST_USRS); Usr_MAX_BYTES_QUERY_GET_LIST_USRS);
snprintf (LongStr,sizeof (LongStr),"%ld", snprintf (LongStr,sizeof (LongStr),"%ld",
Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod); Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod);
Str_Concat (*Query,LongStr,Usr_MAX_BYTES_QUERY_GET_LIST_USRS); Str_Concat (*Query,LongStr,Usr_MAX_BYTES_QUERY_GET_LIST_USRS);
Str_Concat (*Query,"' AND grp_groups.GrpCod=crs_grp_usr.GrpCod)", Str_Concat (*Query,"' AND grp_groups.GrpCod=grp_users.GrpCod)",
Usr_MAX_BYTES_QUERY_GET_LIST_USRS); Usr_MAX_BYTES_QUERY_GET_LIST_USRS);
NumNegativeCods++; NumNegativeCods++;
} }