mirror of https://github.com/acanas/swad-core.git
Version 20.51.34: Mar 23, 2021 Groups database tables renamed.
This commit is contained in:
parent
36365b0813
commit
577f485e41
|
@ -293,9 +293,9 @@ CREATE TABLE IF NOT EXISTS grp_groups (
|
|||
INDEX(GrpTypCod),
|
||||
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,
|
||||
CrsCod INT NOT NULL DEFAULT -1,
|
||||
GrpTypName VARCHAR(2047) NOT NULL,
|
||||
|
@ -306,9 +306,9 @@ CREATE TABLE IF NOT EXISTS crs_grp_types (
|
|||
UNIQUE INDEX(GrpTypCod),
|
||||
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,
|
||||
UsrCod INT NOT NULL,
|
||||
UNIQUE INDEX(GrpCod,UsrCod),
|
||||
|
|
96
swad_API.c
96
swad_API.c
|
@ -510,10 +510,10 @@ static int API_CheckCourseAndGroupCodes (struct soap *soap,
|
|||
/***** Query if group code already exists in database *****/
|
||||
if (DB_QueryCOUNT ("can not get group",
|
||||
"SELECT COUNT(*)"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=%ld",
|
||||
CrsCod,GrpCod) != 1)
|
||||
return soap_sender_fault (soap,
|
||||
|
@ -2108,12 +2108,12 @@ int swad__getGroupTypes (struct soap *soap,
|
|||
/***** Query group types in a course from database *****/
|
||||
NumRows =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get group types",
|
||||
"SELECT GrpTypCod,"
|
||||
"GrpTypName,"
|
||||
"Mandatory,"
|
||||
"Multiple,"
|
||||
"UNIX_TIMESTAMP(OpenTime)"
|
||||
" FROM crs_grp_types"
|
||||
"SELECT GrpTypCod," // row[0]
|
||||
"GrpTypName," // row[1]
|
||||
"Mandatory," // row[2]
|
||||
"Multiple," // row[3]
|
||||
"UNIX_TIMESTAMP(OpenTime)" // row[4]
|
||||
" FROM grp_types"
|
||||
" WHERE CrsCod=%d"
|
||||
" ORDER BY GrpTypName",
|
||||
courseCode);
|
||||
|
@ -2227,18 +2227,18 @@ int swad__getGroups (struct soap *soap,
|
|||
/***** Query groups in a course from database *****/
|
||||
NumRows =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get user's groups",
|
||||
"SELECT crs_grp_types.GrpTypCod,"
|
||||
"crs_grp_types.GrpTypName,"
|
||||
"grp_groups.GrpCod,"
|
||||
"grp_groups.GrpName,"
|
||||
"grp_groups.MaxStudents,"
|
||||
"grp_groups.Open,"
|
||||
"grp_groups.FileZones"
|
||||
" FROM crs_grp_types,"
|
||||
"SELECT grp_types.GrpTypCod," // row[0]
|
||||
"grp_types.GrpTypName," // row[1]
|
||||
"grp_groups.GrpCod," // row[2]
|
||||
"grp_groups.GrpName," // row[3]
|
||||
"grp_groups.MaxStudents," // row[4]
|
||||
"grp_groups.Open, " // row[5]
|
||||
"grp_groups.FileZones" // row[6]
|
||||
" FROM grp_types,"
|
||||
"grp_groups"
|
||||
" WHERE crs_grp_types.CrsCod=%d"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" ORDER BY crs_grp_types.GrpTypName,"
|
||||
" WHERE grp_types.CrsCod=%d"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" ORDER BY grp_types.GrpTypName,"
|
||||
"grp_groups.GrpName",
|
||||
courseCode);
|
||||
|
||||
|
@ -2401,18 +2401,18 @@ int swad__sendMyGroups (struct soap *soap,
|
|||
/***** Query groups in a course from database *****/
|
||||
NumRows =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get user's groups",
|
||||
"SELECT crs_grp_types.GrpTypCod,"
|
||||
"crs_grp_types.GrpTypName,"
|
||||
"grp_groups.GrpCod,"
|
||||
"grp_groups.GrpName,"
|
||||
"grp_groups.MaxStudents,"
|
||||
"grp_groups.Open,"
|
||||
"grp_groups.FileZones"
|
||||
" FROM crs_grp_types,"
|
||||
"SELECT grp_types.GrpTypCod," // row[0]
|
||||
"grp_types.GrpTypName," // row[1]
|
||||
"grp_groups.GrpCod," // row[2]
|
||||
"grp_groups.GrpName," // row[3]
|
||||
"grp_groups.MaxStudents," // row[4]
|
||||
"grp_groups.Open," // row[5]
|
||||
"grp_groups.FileZones" // row[6]
|
||||
" FROM grp_types,"
|
||||
"grp_groups"
|
||||
" WHERE crs_grp_types.CrsCod=%d"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" ORDER BY crs_grp_types.GrpTypName,"
|
||||
" WHERE grp_types.CrsCod=%d"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" ORDER BY grp_types.GrpTypName,"
|
||||
"grp_groups.GrpName",
|
||||
courseCode);
|
||||
|
||||
|
@ -3021,21 +3021,21 @@ int swad__getAttendanceUsers (struct soap *soap,
|
|||
// Event for one or more groups
|
||||
// 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"
|
||||
sprintf (SubQuery,"SELECT DISTINCT grp_users.UsrCod AS UsrCod," // row[0]
|
||||
"'N' AS Present" // row[1]
|
||||
" FROM att_groups,"
|
||||
"grp_groups,"
|
||||
"crs_grp_types,"
|
||||
"grp_types,"
|
||||
"crs_users,"
|
||||
"crs_grp_usr"
|
||||
"grp_users"
|
||||
" WHERE att_groups.AttCod=%ld"
|
||||
" AND att_groups.GrpCod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" AND crs_grp_types.CrsCod=crs_users.CrsCod"
|
||||
" AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
|
||||
" AND 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"
|
||||
" AND crs_users.UsrCod=grp_users.UsrCod"
|
||||
" AND grp_users.GrpCod=att_groups.GrpCod"
|
||||
" AND grp_users.UsrCod NOT IN"
|
||||
" (SELECT UsrCod"
|
||||
" FROM att_users"
|
||||
" WHERE AttCod=%ld)",
|
||||
|
@ -5062,18 +5062,18 @@ int swad__getMatches (struct soap *soap,
|
|||
"UNIX_TIMESTAMP(EndTime)," // row[ 3]
|
||||
"Title," // row[ 4]
|
||||
"QstInd" // row[ 5]
|
||||
" FROM mch_matches"
|
||||
" WHERE GamCod=%ld"
|
||||
" AND"
|
||||
"(MchCod NOT IN"
|
||||
" FROM mch_matches"
|
||||
" WHERE GamCod=%ld"
|
||||
" AND (MchCod NOT IN"
|
||||
" (SELECT MchCod FROM mch_groups)"
|
||||
" OR"
|
||||
" MchCod IN"
|
||||
" (SELECT mch_groups.MchCod"
|
||||
" FROM mch_groups,crs_grp_usr"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND mch_groups.GrpCod=crs_grp_usr.GrpCod))"
|
||||
" ORDER BY MchCod",
|
||||
" FROM mch_groups,"
|
||||
"grp_users"
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND mch_groups.GrpCod=grp_users.GrpCod))"
|
||||
" ORDER BY MchCod",
|
||||
Game.GamCod,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
getMatchesOut->matchesArray.__size =
|
||||
|
|
|
@ -707,9 +707,9 @@ static void Asg_GetListAssignments (struct Asg_Assignments *Assignments)
|
|||
" AsgCod IN"
|
||||
" (SELECT asg_groups.AsgCod"
|
||||
" FROM asg_groups,"
|
||||
"crs_grp_usr"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND asg_groups.GrpCod=crs_grp_usr.GrpCod)"
|
||||
"grp_users"
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND asg_groups.GrpCod=grp_users.GrpCod)"
|
||||
")"
|
||||
" ORDER BY %s",
|
||||
Gbl.Hierarchy.Crs.CrsCod,
|
||||
|
@ -1753,15 +1753,15 @@ static void Asg_GetAndWriteNamesOfGrpsAssociatedToAsg (struct Asg_Assignment *As
|
|||
|
||||
/***** Get groups associated to an assignment from database *****/
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get groups of an assignment",
|
||||
"SELECT crs_grp_types.GrpTypName,"
|
||||
"grp_groups.GrpName"
|
||||
"SELECT grp_types.GrpTypName," // row[0]
|
||||
"grp_groups.GrpName" // row[1]
|
||||
" FROM asg_groups,"
|
||||
"grp_groups,"
|
||||
"crs_grp_types"
|
||||
"grp_types"
|
||||
" WHERE asg_groups.AsgCod=%ld"
|
||||
" AND asg_groups.GrpCod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" ORDER BY crs_grp_types.GrpTypName,"
|
||||
" AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
|
||||
" ORDER BY grp_types.GrpTypName,"
|
||||
"grp_groups.GrpName",
|
||||
Asg->AsgCod);
|
||||
|
||||
|
@ -1852,10 +1852,10 @@ static bool Asg_CheckIfIBelongToCrsOrGrpsThisAssignment (long AsgCod)
|
|||
// Assignment is for some of my groups
|
||||
"AsgCod IN"
|
||||
" (SELECT asg_groups.AsgCod"
|
||||
" FROM crs_grp_usr,"
|
||||
" FROM grp_users,"
|
||||
"asg_groups"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND asg_groups.GrpCod=crs_grp_usr.GrpCod)"
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND asg_groups.GrpCod=grp_users.GrpCod)"
|
||||
")",
|
||||
AsgCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
|
||||
case Rol_SYS_ADM:
|
||||
|
|
|
@ -688,10 +688,10 @@ static void Att_GetListAttEvents (struct Att_Events *Events,
|
|||
" OR"
|
||||
" AttCod IN"
|
||||
" (SELECT att_groups.AttCod"
|
||||
" FROM crs_grp_usr,"
|
||||
" FROM grp_users,"
|
||||
"att_groups"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND att_groups.GrpCod=crs_grp_usr.GrpCod))"
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND att_groups.GrpCod=grp_users.GrpCod))"
|
||||
" ORDER BY %s",
|
||||
Gbl.Hierarchy.Crs.CrsCod,
|
||||
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 *****/
|
||||
NumGrps = (unsigned) DB_QuerySELECT (&mysql_res,"can not get groups of an attendance event",
|
||||
"SELECT crs_grp_types.GrpTypName,"
|
||||
"grp_groups.GrpName,"
|
||||
"roo_rooms.ShortName"
|
||||
"SELECT grp_types.GrpTypName," // row[0]
|
||||
"grp_groups.GrpName," // row[1]
|
||||
"roo_rooms.ShortName" // row[2]
|
||||
" FROM (att_groups,"
|
||||
"grp_groups,"
|
||||
"crs_grp_types)"
|
||||
"grp_types)"
|
||||
" LEFT JOIN roo_rooms"
|
||||
" ON grp_groups.RooCod=roo_rooms.RooCod"
|
||||
" WHERE att_groups.AttCod=%ld"
|
||||
" AND att_groups.GrpCod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" ORDER BY crs_grp_types.GrpTypName,"
|
||||
" AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
|
||||
" ORDER BY grp_types.GrpTypName,"
|
||||
"grp_groups.GrpName",
|
||||
Event->AttCod);
|
||||
|
||||
|
|
|
@ -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.33 (2021-03-23)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 20.51.34 (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.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)
|
||||
1 change necessary in database:
|
||||
RENAME TABLE crs_grp TO grp_groups;
|
||||
|
|
|
@ -2026,27 +2026,27 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
|
|||
/***** Remove groups in the course *****/
|
||||
/* 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,"
|
||||
"DELETE FROM grp_users"
|
||||
" USING grp_types,"
|
||||
"grp_groups,"
|
||||
"crs_grp_usr"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod",
|
||||
"grp_users"
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=grp_users.GrpCod",
|
||||
CrsCod);
|
||||
|
||||
/* Remove all the groups in the course */
|
||||
DB_QueryDELETE ("can not remove groups of a course",
|
||||
"DELETE FROM grp_groups"
|
||||
" USING crs_grp_types,"
|
||||
" USING grp_types,"
|
||||
"grp_groups"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod",
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.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"
|
||||
"DELETE FROM grp_types"
|
||||
" WHERE CrsCod=%ld",
|
||||
CrsCod);
|
||||
|
||||
|
|
|
@ -678,9 +678,9 @@ mysql> DESCRIBE grp_groups;
|
|||
"INDEX(GrpTypCod),"
|
||||
"INDEX(RooCod))");
|
||||
|
||||
/***** Table crs_grp_types *****/
|
||||
/***** Table grp_types *****/
|
||||
/*
|
||||
mysql> DESCRIBE crs_grp_types;
|
||||
mysql> DESCRIBE grp_types;
|
||||
+--------------+---------------+------+-----+---------+----------------+
|
||||
| Field | Type | Null | Key | Default | Extra |
|
||||
+--------------+---------------+------+-----+---------+----------------+
|
||||
|
@ -694,7 +694,7 @@ mysql> DESCRIBE crs_grp_types;
|
|||
+--------------+---------------+------+-----+---------+----------------+
|
||||
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,"
|
||||
"CrsCod INT NOT NULL DEFAULT -1,"
|
||||
"GrpTypName VARCHAR(2047) NOT NULL," // Grp_MAX_BYTES_GROUP_TYPE_NAME
|
||||
|
@ -705,9 +705,9 @@ mysql> DESCRIBE crs_grp_types;
|
|||
"UNIQUE INDEX(GrpTypCod),"
|
||||
"INDEX(CrsCod))");
|
||||
|
||||
/***** Table crs_grp_usr *****/
|
||||
/***** Table grp_users *****/
|
||||
/*
|
||||
mysql> DESCRIBE crs_grp_usr;
|
||||
mysql> DESCRIBE grp_users;
|
||||
+--------+---------+------+-----+---------+-------+
|
||||
| Field | Type | Null | Key | Default | Extra |
|
||||
+--------+---------+------+-----+---------+-------+
|
||||
|
@ -716,7 +716,7 @@ mysql> DESCRIBE crs_grp_usr;
|
|||
+--------+---------+------+-----+---------+-------+
|
||||
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,"
|
||||
"UsrCod INT NOT NULL,"
|
||||
"UNIQUE INDEX(GrpCod,UsrCod),"
|
||||
|
|
|
@ -187,9 +187,10 @@ void ExaSes_ListSessions (struct Exa_Exams *Exams,
|
|||
" OR"
|
||||
" SesCod IN"
|
||||
" (SELECT exa_groups.SesCod"
|
||||
" FROM exa_groups,crs_grp_usr"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND exa_groups.GrpCod=crs_grp_usr.GrpCod))",
|
||||
" FROM exa_groups,"
|
||||
"grp_users"
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND exa_groups.GrpCod=grp_users.GrpCod))",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
}
|
||||
|
@ -665,15 +666,15 @@ static void ExaSes_GetAndWriteNamesOfGrpsAssociatedToSession (const struct ExaSe
|
|||
|
||||
/***** Get groups associated to an exam session from database *****/
|
||||
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]
|
||||
" FROM exa_groups,"
|
||||
"grp_groups,"
|
||||
"crs_grp_types"
|
||||
"grp_types"
|
||||
" WHERE exa_groups.SesCod=%ld"
|
||||
" AND exa_groups.GrpCod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" ORDER BY crs_grp_types.GrpTypName,"
|
||||
" AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
|
||||
" ORDER BY grp_types.GrpTypName,"
|
||||
"grp_groups.GrpName",
|
||||
Session->SesCod);
|
||||
|
||||
|
@ -1733,17 +1734,18 @@ bool ExaSes_CheckIfICanListThisSessionBasedOnGrps (long SesCod)
|
|||
/***** Check if I belong to any of the groups
|
||||
associated to the 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"
|
||||
" AND"
|
||||
"(SesCod NOT IN"
|
||||
" (SELECT SesCod FROM exa_groups)"
|
||||
" OR"
|
||||
" SesCod IN"
|
||||
" (SELECT exa_groups.SesCod"
|
||||
" FROM exa_groups,crs_grp_usr"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND crs_grp_usr.GrpCod=exa_groups.GrpCod))",
|
||||
" AND (SesCod NOT IN"
|
||||
" (SELECT SesCod FROM exa_groups)"
|
||||
" OR"
|
||||
" SesCod IN"
|
||||
" (SELECT exa_groups.SesCod"
|
||||
" FROM exa_groups,"
|
||||
"grp_users"
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND grp_users.GrpCod=exa_groups.GrpCod))",
|
||||
SesCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
|
||||
break;
|
||||
case Rol_NET:
|
||||
|
|
|
@ -1703,16 +1703,16 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
" FROM brw_sizes"
|
||||
" WHERE FileBrowser IN (%u,%u,%u,%u,%u,%u)"
|
||||
" UNION "
|
||||
"SELECT crs_grp_types.CrsCod,"
|
||||
"SELECT grp_types.CrsCod,"
|
||||
"brw_sizes.Cod AS GrpCod,"
|
||||
"brw_sizes.NumLevels,"
|
||||
"brw_sizes.NumFolders,"
|
||||
"brw_sizes.NumFiles,"
|
||||
"brw_sizes.TotalSize"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups,"
|
||||
"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 brw_sizes.FileBrowser IN (%u,%u,%u,%u)"
|
||||
") AS sizes",
|
||||
|
@ -1748,17 +1748,17 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
case Brw_ADMI_SHR_GRP:
|
||||
case Brw_ADMI_MRK_GRP:
|
||||
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]
|
||||
"-1," // row[2]
|
||||
"MAX(brw_sizes.NumLevels)," // row[3]
|
||||
"SUM(brw_sizes.NumFolders)," // row[4]
|
||||
"SUM(brw_sizes.NumFiles)," // row[5]
|
||||
"SUM(brw_sizes.TotalSize)" // row[6]
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups,"
|
||||
"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 brw_sizes.FileBrowser=%u",
|
||||
(unsigned) FileBrowser);
|
||||
|
@ -1828,7 +1828,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
" AND crs_courses.CrsCod=brw_sizes.Cod"
|
||||
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u,%u,%u)"
|
||||
" UNION "
|
||||
"SELECT crs_grp_types.CrsCod,"
|
||||
"SELECT grp_types.CrsCod,"
|
||||
"brw_sizes.Cod AS GrpCod," // Group zones
|
||||
"brw_sizes.NumLevels,"
|
||||
"brw_sizes.NumFolders,"
|
||||
|
@ -1838,15 +1838,15 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
"ctr_centers,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_grp_types,"
|
||||
"grp_types,"
|
||||
"grp_groups,"
|
||||
"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_grp_types.CrsCod"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND crs_courses.CrsCod=grp_types.CrsCod"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=brw_sizes.Cod"
|
||||
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)"
|
||||
") AS sizes",
|
||||
|
@ -1894,7 +1894,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
case Brw_ADMI_SHR_GRP:
|
||||
case Brw_ADMI_MRK_GRP:
|
||||
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]
|
||||
"-1," // row[2]
|
||||
"MAX(brw_sizes.NumLevels)," // row[3]
|
||||
|
@ -1905,15 +1905,15 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
"ctr_centers,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_grp_types,"
|
||||
"grp_types,"
|
||||
"grp_groups,"
|
||||
"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_grp_types.CrsCod"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND crs_courses.CrsCod=grp_types.CrsCod"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=brw_sizes.Cod"
|
||||
" AND brw_sizes.FileBrowser=%u",
|
||||
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 brw_sizes.FileBrowser IN (%u,%u,%u,%u,%u,%u)"
|
||||
" UNION "
|
||||
"SELECT crs_grp_types.CrsCod,"
|
||||
"SELECT grp_types.CrsCod,"
|
||||
"brw_sizes.Cod AS GrpCod," // Group zones
|
||||
"brw_sizes.NumLevels,"
|
||||
"brw_sizes.NumFolders,"
|
||||
|
@ -2013,14 +2013,14 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
" FROM ctr_centers,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_grp_types,"
|
||||
"grp_types,"
|
||||
"grp_groups,"
|
||||
"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_grp_types.CrsCod"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND crs_courses.CrsCod=grp_types.CrsCod"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=brw_sizes.Cod"
|
||||
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)"
|
||||
") AS sizes",
|
||||
|
@ -2066,7 +2066,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
case Brw_ADMI_SHR_GRP:
|
||||
case Brw_ADMI_MRK_GRP:
|
||||
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]
|
||||
"-1," // row[2]
|
||||
"MAX(brw_sizes.NumLevels)," // row[3]
|
||||
|
@ -2076,14 +2076,14 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
" FROM ctr_centers,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_grp_types,"
|
||||
"grp_types,"
|
||||
"grp_groups,"
|
||||
"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_grp_types.CrsCod"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND crs_courses.CrsCod=grp_types.CrsCod"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=brw_sizes.Cod"
|
||||
" AND brw_sizes.FileBrowser=%u",
|
||||
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 brw_sizes.FileBrowser IN (%u,%u,%u,%u,%u,%u)"
|
||||
" UNION "
|
||||
"SELECT crs_grp_types.CrsCod,"
|
||||
"SELECT grp_types.CrsCod,"
|
||||
"brw_sizes.Cod AS GrpCod," // Group zones
|
||||
"brw_sizes.NumLevels,"
|
||||
"brw_sizes.NumFolders,"
|
||||
|
@ -2176,13 +2176,13 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
"brw_sizes.TotalSize"
|
||||
" FROM deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_grp_types,"
|
||||
"grp_types,"
|
||||
"grp_groups,"
|
||||
"brw_sizes"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_grp_types.CrsCod"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND crs_courses.CrsCod=grp_types.CrsCod"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=brw_sizes.Cod"
|
||||
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)"
|
||||
") AS sizes",
|
||||
|
@ -2226,7 +2226,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
case Brw_ADMI_SHR_GRP:
|
||||
case Brw_ADMI_MRK_GRP:
|
||||
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]
|
||||
"-1," // row[1]
|
||||
"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]
|
||||
" FROM deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_grp_types,"
|
||||
"grp_types,"
|
||||
"grp_groups,"
|
||||
"brw_sizes"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_grp_types.CrsCod"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND crs_courses.CrsCod=grp_types.CrsCod"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=brw_sizes.Cod"
|
||||
" AND brw_sizes.FileBrowser=%u",
|
||||
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 brw_sizes.FileBrowser IN (%u,%u,%u,%u,%u,%u)"
|
||||
" UNION "
|
||||
"SELECT crs_grp_types.CrsCod,"
|
||||
"SELECT grp_types.CrsCod,"
|
||||
"brw_sizes.Cod AS GrpCod," // Group zones
|
||||
"brw_sizes.NumLevels,"
|
||||
"brw_sizes.NumFolders,"
|
||||
"brw_sizes.NumFiles,"
|
||||
"brw_sizes.TotalSize"
|
||||
" FROM crs_courses,"
|
||||
"crs_grp_types,"
|
||||
"grp_types,"
|
||||
"grp_groups,"
|
||||
"brw_sizes"
|
||||
" WHERE crs_courses.DegCod=%ld"
|
||||
" AND crs_courses.CrsCod=crs_grp_types.CrsCod"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND crs_courses.CrsCod=grp_types.CrsCod"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=brw_sizes.Cod"
|
||||
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)"
|
||||
") AS sizes",
|
||||
|
@ -2374,7 +2374,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
case Brw_ADMI_SHR_GRP:
|
||||
case Brw_ADMI_MRK_GRP:
|
||||
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]
|
||||
"-1," // row[2]
|
||||
"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.TotalSize)" // row[6]
|
||||
" FROM crs_courses,"
|
||||
"crs_grp_types,"
|
||||
"grp_types,"
|
||||
"grp_groups,"
|
||||
"brw_sizes"
|
||||
" WHERE crs_courses.DegCod=%ld"
|
||||
" AND crs_courses.CrsCod=crs_grp_types.CrsCod"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND crs_courses.CrsCod=grp_types.CrsCod"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=brw_sizes.Cod"
|
||||
" AND brw_sizes.FileBrowser=%u",
|
||||
Gbl.Hierarchy.Deg.DegCod,
|
||||
|
@ -2460,17 +2460,17 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
" WHERE Cod=%ld"
|
||||
" AND FileBrowser IN (%u,%u,%u,%u,%u,%u)"
|
||||
" UNION "
|
||||
"SELECT crs_grp_types.CrsCod,"
|
||||
"SELECT grp_types.CrsCod,"
|
||||
"brw_sizes.Cod AS GrpCod," // Group zones
|
||||
"brw_sizes.NumLevels,"
|
||||
"brw_sizes.NumFolders,"
|
||||
"brw_sizes.NumFiles,"
|
||||
"brw_sizes.TotalSize"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups,"
|
||||
"brw_sizes"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=brw_sizes.Cod"
|
||||
" AND brw_sizes.FileBrowser IN (%u,%u,%u,%u)"
|
||||
") AS sizes",
|
||||
|
@ -2510,18 +2510,18 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
|||
case Brw_ADMI_SHR_GRP:
|
||||
case Brw_ADMI_MRK_GRP:
|
||||
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]
|
||||
"-1," // row[2]
|
||||
"MAX(brw_sizes.NumLevels)," // row[3]
|
||||
"SUM(brw_sizes.NumFolders)," // row[4]
|
||||
"SUM(brw_sizes.NumFiles)," // row[5]
|
||||
"SUM(brw_sizes.TotalSize)" // row[6]
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups,"
|
||||
"brw_sizes"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=brw_sizes.Cod"
|
||||
" AND brw_sizes.FileBrowser=%u",
|
||||
Gbl.Hierarchy.Crs.CrsCod,
|
||||
|
|
|
@ -2742,10 +2742,10 @@ static void Brw_CreateFoldersAssignmentsIfNotExist (long ZoneUsrCod)
|
|||
" OR "
|
||||
"AsgCod IN"
|
||||
" (SELECT asg_groups.AsgCod"
|
||||
" FROM crs_grp_usr,"
|
||||
" FROM grp_users,"
|
||||
"asg_groups"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND asg_groups.GrpCod=crs_grp_usr.GrpCod)"
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND asg_groups.GrpCod=grp_users.GrpCod)"
|
||||
")",
|
||||
Gbl.Hierarchy.Crs.CrsCod,ZoneUsrCod);
|
||||
|
||||
|
@ -4380,10 +4380,10 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod)
|
|||
|
||||
/***** Build subquery for groups *****/
|
||||
sprintf (SubqueryGrp,"(SELECT grp_groups.GrpCod"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod)",
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod)",
|
||||
CrsCod);
|
||||
|
||||
/***** Build subquery for projects *****/
|
||||
|
@ -4792,10 +4792,10 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long UsrCod,long CrsCod)
|
|||
"(FileBrowser IN (%u,%u,%u,%u)"
|
||||
" AND Cod IN"
|
||||
" (SELECT grp_groups.GrpCod"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod))"
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod))"
|
||||
")",
|
||||
UsrCod,
|
||||
(unsigned) Brw_ADMI_DOC_CRS,
|
||||
|
@ -4824,10 +4824,10 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long UsrCod,long CrsCod)
|
|||
"(FileBrowser IN (%u,%u,%u,%u)"
|
||||
" AND Cod IN"
|
||||
" (SELECT grp_groups.GrpCod"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod))"
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod))"
|
||||
")",
|
||||
UsrCod,
|
||||
(unsigned) Brw_ADMI_DOC_CRS,
|
||||
|
@ -4859,10 +4859,10 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long UsrCod,long CrsCod)
|
|||
"(FileBrowser IN (%u,%u,%u,%u)"
|
||||
" AND Cod IN"
|
||||
" (SELECT grp_groups.GrpCod"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod))"
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod))"
|
||||
")",
|
||||
UsrCod,
|
||||
(unsigned) Brw_ADMI_DOC_CRS,
|
||||
|
|
290
swad_group.c
290
swad_group.c
|
@ -977,9 +977,9 @@ static void Grp_LockTables (void)
|
|||
{
|
||||
DB_Query ("can not lock tables to change user's groups",
|
||||
"LOCK TABLES "
|
||||
"crs_grp_types WRITE,"
|
||||
"crs_types WRITE,"
|
||||
"grp_groups WRITE,"
|
||||
"crs_grp_usr WRITE,"
|
||||
"grp_users WRITE,"
|
||||
"crs_users READ,"
|
||||
"crs_usr_last READ,"
|
||||
"roo_rooms READ");
|
||||
|
@ -1224,14 +1224,14 @@ void Grp_RemUsrFromAllGrpsInCrs (long UsrCod,long CrsCod)
|
|||
|
||||
/***** Remove user from all the groups of the 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"
|
||||
" AND GrpCod IN"
|
||||
" (SELECT grp_groups.GrpCod"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod)",
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod)",
|
||||
UsrCod,CrsCod);
|
||||
|
||||
/***** Flush caches *****/
|
||||
|
@ -1250,7 +1250,8 @@ void Grp_RemUsrFromAllGrps (long UsrCod)
|
|||
|
||||
/***** Remove user from all groups *****/
|
||||
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);
|
||||
|
||||
/***** Flush caches *****/
|
||||
|
@ -1269,9 +1270,11 @@ static void Grp_RemoveUsrFromGroup (long UsrCod,long GrpCod)
|
|||
|
||||
/***** Remove user from group *****/
|
||||
DB_QueryDELETE ("can not remove a user from a group",
|
||||
"DELETE FROM crs_grp_usr"
|
||||
" WHERE GrpCod=%ld AND UsrCod=%ld",
|
||||
GrpCod,UsrCod);
|
||||
"DELETE FROM grp_users"
|
||||
" WHERE GrpCod=%ld"
|
||||
" AND UsrCod=%ld",
|
||||
GrpCod,
|
||||
UsrCod);
|
||||
|
||||
/***** Flush caches *****/
|
||||
Grp_FlushCacheUsrSharesAnyOfMyGrpsInCurrentCrs ();
|
||||
|
@ -1287,7 +1290,7 @@ static void Grp_AddUsrToGroup (struct UsrData *UsrDat,long GrpCod)
|
|||
{
|
||||
/***** Register in group *****/
|
||||
DB_QueryINSERT ("can not add a user to a group",
|
||||
"INSERT INTO crs_grp_usr"
|
||||
"INSERT INTO grp_users"
|
||||
" (GrpCod,UsrCod)"
|
||||
" VALUES"
|
||||
" (%ld,%ld)",
|
||||
|
@ -2762,37 +2765,37 @@ void Grp_GetListGrpTypesInThisCrs (Grp_WhichGroupTypes_t WhichGroupTypes)
|
|||
Gbl.Crs.Grps.GrpTypes.Num =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get types of group"
|
||||
" of a course",
|
||||
"SELECT crs_grp_types.GrpTypCod,"
|
||||
"crs_grp_types.GrpTypName,"
|
||||
"crs_grp_types.Mandatory,"
|
||||
"crs_grp_types.Multiple,"
|
||||
"crs_grp_types.MustBeOpened,"
|
||||
"UNIX_TIMESTAMP(crs_grp_types.OpenTime),"
|
||||
"SELECT grp_types.GrpTypCod,"
|
||||
"grp_types.GrpTypName,"
|
||||
"grp_types.Mandatory,"
|
||||
"grp_types.Multiple,"
|
||||
"grp_types.MustBeOpened,"
|
||||
"UNIX_TIMESTAMP(grp_types.OpenTime),"
|
||||
"COUNT(grp_groups.GrpCod)"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" GROUP BY crs_grp_types.GrpTypCod"
|
||||
" ORDER BY crs_grp_types.GrpTypName",
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" GROUP BY grp_types.GrpTypCod"
|
||||
" ORDER BY grp_types.GrpTypName",
|
||||
Gbl.Hierarchy.Crs.CrsCod);
|
||||
break;
|
||||
case Grp_ALL_GROUP_TYPES:
|
||||
Gbl.Crs.Grps.GrpTypes.Num =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get types of group"
|
||||
" of a course",
|
||||
"(SELECT crs_grp_types.GrpTypCod,"
|
||||
"crs_grp_types.GrpTypName AS GrpTypName,"
|
||||
"crs_grp_types.Mandatory,"
|
||||
"crs_grp_types.Multiple,"
|
||||
"crs_grp_types.MustBeOpened,"
|
||||
"UNIX_TIMESTAMP(crs_grp_types.OpenTime),"
|
||||
"(SELECT grp_types.GrpTypCod,"
|
||||
"grp_types.GrpTypName AS GrpTypName,"
|
||||
"grp_types.Mandatory,"
|
||||
"grp_types.Multiple,"
|
||||
"grp_types.MustBeOpened,"
|
||||
"UNIX_TIMESTAMP(grp_types.OpenTime),"
|
||||
"COUNT(grp_groups.GrpCod)"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" GROUP BY crs_grp_types.GrpTypCod)"
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" GROUP BY grp_types.GrpTypCod)"
|
||||
" UNION "
|
||||
"(SELECT GrpTypCod,"
|
||||
"GrpTypName,"
|
||||
|
@ -2801,7 +2804,7 @@ void Grp_GetListGrpTypesInThisCrs (Grp_WhichGroupTypes_t WhichGroupTypes)
|
|||
"MustBeOpened,"
|
||||
"UNIX_TIMESTAMP(OpenTime),"
|
||||
"0"
|
||||
" FROM crs_grp_types"
|
||||
" FROM grp_types"
|
||||
" WHERE CrsCod=%ld"
|
||||
" AND GrpTypCod NOT IN"
|
||||
" (SELECT GrpTypCod"
|
||||
|
@ -2884,9 +2887,11 @@ void Grp_OpenGroupsAutomatically (void)
|
|||
NumGrpTypes =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get the types of group"
|
||||
" to be opened",
|
||||
"SELECT GrpTypCod FROM crs_grp_types"
|
||||
" WHERE CrsCod=%ld AND MustBeOpened='Y'"
|
||||
" AND OpenTime<=NOW()",
|
||||
"SELECT GrpTypCod"
|
||||
" FROM grp_types"
|
||||
" WHERE CrsCod=%ld"
|
||||
" AND MustBeOpened='Y'"
|
||||
" AND OpenTime<=NOW()",
|
||||
Gbl.Hierarchy.Crs.CrsCod);
|
||||
|
||||
for (NumGrpTyp = 0;
|
||||
|
@ -2909,7 +2914,7 @@ void Grp_OpenGroupsAutomatically (void)
|
|||
|
||||
/***** To not try to open groups again, set MustBeOpened to false *****/
|
||||
DB_QueryUPDATE ("can not update the opening of a type of group",
|
||||
"UPDATE crs_grp_types"
|
||||
"UPDATE grp_types"
|
||||
" SET MustBeOpened='N'"
|
||||
" WHERE GrpTypCod=%ld",
|
||||
GrpTypCod);
|
||||
|
@ -3054,10 +3059,10 @@ unsigned Grp_CountNumGrpsInCurrentCrs (void)
|
|||
return
|
||||
(unsigned) DB_QueryCOUNT ("can not get number of groups in this course",
|
||||
"SELECT COUNT(*)"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod",
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod",
|
||||
Gbl.Hierarchy.Crs.CrsCod);
|
||||
}
|
||||
|
||||
|
@ -3117,8 +3122,9 @@ static void Grp_GetDataOfGroupTypeByCod (struct GroupType *GrpTyp)
|
|||
"Multiple," // row[2]
|
||||
"MustBeOpened," // row[3]
|
||||
"UNIX_TIMESTAMP(OpenTime)" // row[4]
|
||||
" FROM crs_grp_types"
|
||||
" WHERE CrsCod=%ld AND GrpTypCod=%ld",
|
||||
" FROM grp_types"
|
||||
" WHERE CrsCod=%ld"
|
||||
" AND GrpTypCod=%ld",
|
||||
Gbl.Hierarchy.Crs.CrsCod,GrpTyp->GrpTypCod) != 1)
|
||||
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 *****/
|
||||
if (DB_QuerySELECT (&mysql_res,"can not get if type of group"
|
||||
" has multiple enrolment",
|
||||
"SELECT Multiple FROM crs_grp_types"
|
||||
"SELECT Multiple"
|
||||
" FROM grp_types"
|
||||
" WHERE GrpTypCod=%ld",
|
||||
GrpTypCod) != 1)
|
||||
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 *****/
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get data of a group",
|
||||
"SELECT grp_groups.GrpTypCod," // row[0]
|
||||
"crs_grp_types.CrsCod," // row[1]
|
||||
"crs_grp_types.GrpTypName," // row[2]
|
||||
"crs_grp_types.Multiple," // row[3]
|
||||
"grp_types.CrsCod," // row[1]
|
||||
"grp_types.GrpTypName," // row[2]
|
||||
"grp_types.Multiple," // row[3]
|
||||
"grp_groups.GrpName," // row[4]
|
||||
"grp_groups.RooCod," // row[5]
|
||||
"roo_rooms.ShortName," // row[6]
|
||||
|
@ -3200,11 +3207,11 @@ void Grp_GetDataOfGroupByCod (struct GroupData *GrpDat)
|
|||
"grp_groups.Open," // row[8]
|
||||
"grp_groups.FileZones" // row[9]
|
||||
" FROM (grp_groups,"
|
||||
"crs_grp_types)"
|
||||
"grp_types)"
|
||||
" LEFT JOIN roo_rooms"
|
||||
" ON grp_groups.RooCod=roo_rooms.RooCod"
|
||||
" WHERE grp_groups.GrpCod=%ld"
|
||||
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod",
|
||||
" AND grp_groups.GrpTypCod=grp_types.GrpTypCod",
|
||||
GrpDat->GrpCod);
|
||||
|
||||
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",
|
||||
"SELECT COUNT(*)"
|
||||
" FROM grp_groups,"
|
||||
"crs_grp_types"
|
||||
"grp_types"
|
||||
" WHERE grp_groups.GrpCod=%ld"
|
||||
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" AND crs_grp_types.CrsCod=%ld",
|
||||
" AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
|
||||
" AND grp_types.CrsCod=%ld",
|
||||
GrpCod,CrsCod) != 0);
|
||||
}
|
||||
|
||||
|
@ -3325,15 +3332,15 @@ 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,"
|
||||
" FROM grp_users,"
|
||||
"grp_groups,"
|
||||
"crs_grp_types,"
|
||||
"grp_types,"
|
||||
"crs_users"
|
||||
" WHERE crs_grp_usr.GrpCod=%ld"
|
||||
" AND crs_grp_usr.GrpCod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" AND crs_grp_types.CrsCod=crs_users.CrsCod"
|
||||
" AND crs_grp_usr.UsrCod=crs_users.UsrCod"
|
||||
" WHERE grp_users.GrpCod=%ld"
|
||||
" AND grp_users.GrpCod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
|
||||
" AND grp_types.CrsCod=crs_users.CrsCod"
|
||||
" AND grp_users.UsrCod=crs_users.UsrCod"
|
||||
" AND crs_users.Role=%u",
|
||||
GrpCod,(unsigned) Role);
|
||||
}
|
||||
|
@ -3352,11 +3359,11 @@ static unsigned long Grp_CountNumUsrsInNoGrpsOfType (Rol_Role_t Role,long GrpTyp
|
|||
" WHERE CrsCod=%ld"
|
||||
" AND Role=%u"
|
||||
" AND UsrCod NOT IN"
|
||||
" (SELECT DISTINCT crs_grp_usr.UsrCod"
|
||||
" (SELECT DISTINCT grp_users.UsrCod"
|
||||
" FROM grp_groups,"
|
||||
"crs_grp_usr"
|
||||
"grp_users"
|
||||
" WHERE grp_groups.GrpTypCod=%ld"
|
||||
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod)",
|
||||
" AND grp_groups.GrpCod=grp_users.GrpCod)",
|
||||
Gbl.Hierarchy.Crs.CrsCod,
|
||||
(unsigned) Role,GrpTypCod);
|
||||
}
|
||||
|
@ -3372,11 +3379,13 @@ static bool Grp_CheckIfIBelongToGrpsOfType (long GrpTypCod)
|
|||
/***** Get a group which I belong to from database *****/
|
||||
NumGrps = DB_QueryCOUNT ("can not check if you belong to a group type",
|
||||
"SELECT COUNT(grp_groups.GrpCod)"
|
||||
" FROM grp_groups,crs_grp_usr"
|
||||
" FROM grp_groups,"
|
||||
"grp_users"
|
||||
" WHERE grp_groups.GrpTypCod=%ld"
|
||||
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod=%ld", // I belong
|
||||
GrpTypCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
" AND grp_groups.GrpCod=grp_users.GrpCod"
|
||||
" AND grp_users.UsrCod=%ld", // I belong
|
||||
GrpTypCod,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
|
||||
return (NumGrps != 0);
|
||||
}
|
||||
|
@ -3406,9 +3415,12 @@ bool Grp_GetIfIBelongToGrp (long GrpCod)
|
|||
Gbl.Cache.IBelongToGrp.GrpCod = GrpCod;
|
||||
Gbl.Cache.IBelongToGrp.IBelong =
|
||||
(DB_QueryCOUNT ("can not check if you belong to a group",
|
||||
"SELECT COUNT(*) FROM crs_grp_usr"
|
||||
" WHERE GrpCod=%ld AND UsrCod=%ld",
|
||||
GrpCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
|
||||
"SELECT COUNT(*)"
|
||||
" FROM grp_users"
|
||||
" WHERE GrpCod=%ld"
|
||||
" AND UsrCod=%ld",
|
||||
GrpCod,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
|
||||
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"
|
||||
" in the current course with you",
|
||||
"SELECT COUNT(*)"
|
||||
" FROM crs_grp_usr"
|
||||
" FROM grp_users"
|
||||
" WHERE UsrCod=%ld"
|
||||
" AND GrpCod IN"
|
||||
" (SELECT crs_grp_usr.GrpCod"
|
||||
" FROM crs_grp_usr,"
|
||||
" (SELECT grp_users.GrpCod"
|
||||
" FROM grp_users,"
|
||||
"grp_groups,"
|
||||
"crs_grp_types"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND crs_grp_usr.GrpCod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" AND crs_grp_types.CrsCod=%ld)",
|
||||
"grp_types"
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND grp_users.GrpCod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
|
||||
" AND grp_types.CrsCod=%ld)",
|
||||
UsrDat->UsrCod,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
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 (asprintf (&SubQueryGrpTypes,"crs_grp_types.GrpTypCod=%ld",
|
||||
if (asprintf (&SubQueryGrpTypes,"grp_types.GrpTypCod=%ld",
|
||||
GrpTypCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
}
|
||||
else // all mandatory group types in the current course
|
||||
{
|
||||
if (asprintf (&SubQueryGrpTypes,"crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.Mandatory='Y'",
|
||||
if (asprintf (&SubQueryGrpTypes,"grp_types.CrsCod=%ld"
|
||||
" AND grp_types.Mandatory='Y'",
|
||||
Gbl.Hierarchy.Crs.CrsCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
}
|
||||
|
@ -3529,20 +3541,20 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod)
|
|||
// Available mandatory groups with students
|
||||
"SELECT GrpTypCod FROM"
|
||||
" ("
|
||||
"SELECT crs_grp_types.GrpTypCod AS GrpTypCod,"
|
||||
"SELECT grp_types.GrpTypCod AS GrpTypCod,"
|
||||
"COUNT(*) AS NumStudents,"
|
||||
"grp_groups.MaxStudents as MaxStudents"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups,"
|
||||
"crs_grp_usr,"
|
||||
"grp_users,"
|
||||
"crs_users"
|
||||
" 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.MaxStudents>0" // Admits students
|
||||
" AND crs_grp_types.CrsCod=crs_users.CrsCod"
|
||||
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod=crs_users.UsrCod"
|
||||
" AND grp_types.CrsCod=crs_users.CrsCod"
|
||||
" AND grp_groups.GrpCod=grp_users.GrpCod"
|
||||
" AND grp_users.UsrCod=crs_users.UsrCod"
|
||||
" AND crs_users.Role=%u" // Student
|
||||
" GROUP BY grp_groups.GrpCod"
|
||||
" HAVING NumStudents<MaxStudents" // Not full
|
||||
|
@ -3551,36 +3563,36 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod)
|
|||
" UNION "
|
||||
|
||||
// Available mandatory groups...
|
||||
"SELECT crs_grp_types.GrpTypCod AS GrpTypCod"
|
||||
" FROM crs_grp_types,"
|
||||
"SELECT grp_types.GrpTypCod AS GrpTypCod"
|
||||
" FROM grp_types,"
|
||||
"grp_groups"
|
||||
" 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.MaxStudents>0" // Admits students
|
||||
// ...without students
|
||||
" AND grp_groups.GrpCod NOT IN"
|
||||
" (SELECT crs_grp_usr.GrpCod"
|
||||
" (SELECT grp_users.GrpCod"
|
||||
" FROM crs_users,"
|
||||
"crs_grp_usr"
|
||||
"grp_users"
|
||||
" WHERE crs_users.CrsCod=%ld"
|
||||
" 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"
|
||||
|
||||
// ...to which I don't belong
|
||||
" WHERE GrpTypCod NOT IN"
|
||||
" (SELECT crs_grp_types.GrpTypCod"
|
||||
" FROM crs_grp_types,"
|
||||
" (SELECT grp_types.GrpTypCod"
|
||||
" FROM grp_types,"
|
||||
"grp_groups,"
|
||||
"crs_grp_usr"
|
||||
"grp_users"
|
||||
" 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.MaxStudents>0" // Admits students
|
||||
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod=%ld)", // I belong
|
||||
" AND grp_groups.GrpCod=grp_users.GrpCod"
|
||||
" AND grp_users.UsrCod=%ld)", // I belong
|
||||
|
||||
SubQueryGrpTypes,(unsigned) Rol_STD,
|
||||
SubQueryGrpTypes,
|
||||
|
@ -3612,7 +3624,7 @@ static void Grp_GetLstCodGrpsUsrBelongs (long CrsCod,long GrpTypCod,
|
|||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get the groups"
|
||||
" which a user belongs to",
|
||||
"SELECT GrpCod"
|
||||
" FROM crs_grp_usr"
|
||||
" FROM grp_users"
|
||||
" WHERE UsrCod=%ld", // Groups will be unordered
|
||||
UsrCod);
|
||||
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"
|
||||
" which a user belongs to",
|
||||
"SELECT grp_groups.GrpCod"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups,"
|
||||
"crs_grp_usr"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod=%ld"
|
||||
" ORDER BY crs_grp_types.GrpTypName,"
|
||||
"grp_users"
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=grp_users.GrpCod"
|
||||
" AND grp_users.UsrCod=%ld"
|
||||
" ORDER BY grp_types.GrpTypName,"
|
||||
"grp_groups.GrpName",
|
||||
Gbl.Hierarchy.Crs.CrsCod,
|
||||
UsrCod);
|
||||
|
@ -3636,14 +3648,14 @@ static void Grp_GetLstCodGrpsUsrBelongs (long CrsCod,long GrpTypCod,
|
|||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get the groups"
|
||||
" which a user belongs to",
|
||||
"SELECT grp_groups.GrpCod"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups,"
|
||||
"crs_grp_usr"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod=%ld"
|
||||
"grp_users"
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.GrpCod=grp_users.GrpCod"
|
||||
" AND grp_users.UsrCod=%ld"
|
||||
" ORDER BY grp_groups.GrpName",
|
||||
Gbl.Hierarchy.Crs.CrsCod,
|
||||
GrpTypCod,
|
||||
|
@ -3687,15 +3699,15 @@ void Grp_GetLstCodGrpsWithFileZonesIBelong (struct ListCodGrps *LstGrps)
|
|||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get the groups"
|
||||
" which you belong to",
|
||||
"SELECT grp_groups.GrpCod"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups,"
|
||||
"crs_grp_usr"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
"grp_users"
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND grp_groups.FileZones='Y'"
|
||||
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod=%ld"
|
||||
" ORDER BY crs_grp_types.GrpTypName,"
|
||||
" AND grp_groups.GrpCod=grp_users.GrpCod"
|
||||
" AND grp_users.UsrCod=%ld"
|
||||
" ORDER BY grp_types.GrpTypName,"
|
||||
"grp_groups.GrpName",
|
||||
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"
|
||||
" a user belongs to",
|
||||
"SELECT grp_groups.GrpName"
|
||||
" FROM grp_groups,crs_grp_usr"
|
||||
" FROM grp_groups,"
|
||||
"grp_users"
|
||||
" WHERE grp_groups.GrpTypCod=%ld"
|
||||
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod=%ld"
|
||||
" AND grp_groups.GrpCod=grp_users.GrpCod"
|
||||
" AND grp_users.UsrCod=%ld"
|
||||
" ORDER BY grp_groups.GrpName",
|
||||
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 *****/
|
||||
return (DB_QueryCOUNT ("can not check if the name of type of group"
|
||||
" already existed",
|
||||
"SELECT COUNT(*) FROM crs_grp_types"
|
||||
" WHERE CrsCod=%ld AND GrpTypName='%s'"
|
||||
" AND GrpTypCod<>%ld",
|
||||
"SELECT COUNT(*)"
|
||||
" FROM grp_types"
|
||||
" WHERE CrsCod=%ld"
|
||||
" AND GrpTypName='%s'"
|
||||
" AND GrpTypCod<>%ld",
|
||||
Gbl.Hierarchy.Crs.CrsCod,GrpTypName,GrpTypCod) != 0);
|
||||
}
|
||||
|
||||
|
@ -3963,7 +3978,7 @@ static void Grp_CreateGroupType (void)
|
|||
/***** Create a new group type *****/
|
||||
Gbl.Crs.Grps.GrpTyp.GrpTypCod =
|
||||
DB_QueryINSERTandReturnCode ("can not create type of group",
|
||||
"INSERT INTO crs_grp_types"
|
||||
"INSERT INTO grp_types"
|
||||
" (CrsCod,GrpTypName,Mandatory,Multiple,MustBeOpened,OpenTime)"
|
||||
" VALUES"
|
||||
" (%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 *****/
|
||||
DB_QueryDELETE ("can not remove users from all groups of a type",
|
||||
"DELETE FROM crs_grp_usr"
|
||||
"DELETE FROM grp_users"
|
||||
" WHERE GrpCod IN"
|
||||
" (SELECT GrpCod"
|
||||
" FROM grp_groups"
|
||||
|
@ -4193,7 +4208,7 @@ static void Grp_RemoveGroupTypeCompletely (void)
|
|||
|
||||
/***** Remove the group type *****/
|
||||
DB_QueryDELETE ("can not remove a type of group",
|
||||
"DELETE FROM crs_grp_types"
|
||||
"DELETE FROM grp_types"
|
||||
" WHERE GrpTypCod=%ld",
|
||||
Gbl.Crs.Grps.GrpTyp.GrpTypCod);
|
||||
|
||||
|
@ -4244,7 +4259,8 @@ static void Grp_RemoveGroupCompletely (void)
|
|||
|
||||
/***** Remove all the students in this 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);
|
||||
|
||||
/***** 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 *****/
|
||||
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",
|
||||
NewMandatoryEnrolment ? 'Y' :
|
||||
'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 *****/
|
||||
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",
|
||||
NewMultipleEnrolment ? 'Y' :
|
||||
'N',
|
||||
|
@ -4638,8 +4656,9 @@ void Grp_ChangeOpenTimeGrpTyp (void)
|
|||
/***** Update the table of types of group
|
||||
changing the old open time of enrolment by the new *****/
|
||||
DB_QueryUPDATE ("can not update enrolment type of a type of group",
|
||||
"UPDATE crs_grp_types"
|
||||
" SET MustBeOpened='%c',OpenTime=FROM_UNIXTIME(%ld)"
|
||||
"UPDATE grp_types"
|
||||
" SET MustBeOpened='%c',"
|
||||
"OpenTime=FROM_UNIXTIME(%ld)"
|
||||
" WHERE GrpTypCod=%ld",
|
||||
Gbl.Crs.Grps.GrpTyp.MustBeOpened ? 'Y' :
|
||||
'N',
|
||||
|
@ -4791,7 +4810,8 @@ void Grp_RenameGroupType (void)
|
|||
{
|
||||
/* Update the table changing old name by new name */
|
||||
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",
|
||||
NewNameGrpTyp,
|
||||
Gbl.Crs.Grps.GrpTyp.GrpTypCod);
|
||||
|
|
|
@ -1494,11 +1494,11 @@ static unsigned long Ind_GetNumFilesInDocumZonesOfCrsFromDB (long CrsCod)
|
|||
" FROM brw_sizes"
|
||||
" WHERE FileBrowser=%u AND Cod=%ld) +"
|
||||
" (SELECT COALESCE(SUM(brw_sizes.NumFiles),0)"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups,"
|
||||
"brw_sizes"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND brw_sizes.FileBrowser=%u"
|
||||
" AND brw_sizes.Cod=grp_groups.GrpCod)",
|
||||
(unsigned) Brw_FileBrowserForDB_files[Brw_ADMI_DOC_CRS],
|
||||
|
@ -1537,11 +1537,11 @@ static unsigned long Ind_GetNumFilesInShareZonesOfCrsFromDB (long CrsCod)
|
|||
" FROM brw_sizes"
|
||||
" WHERE FileBrowser=%u AND Cod=%ld) +"
|
||||
" (SELECT COALESCE(SUM(brw_sizes.NumFiles),0)"
|
||||
" FROM crs_grp_types,"
|
||||
" FROM grp_types,"
|
||||
"grp_groups,"
|
||||
"brw_sizes"
|
||||
" WHERE crs_grp_types.CrsCod=%ld"
|
||||
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" WHERE grp_types.CrsCod=%ld"
|
||||
" AND grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||
" AND brw_sizes.FileBrowser=%u"
|
||||
" AND brw_sizes.Cod=grp_groups.GrpCod)",
|
||||
(unsigned) Brw_FileBrowserForDB_files[Brw_ADMI_SHR_CRS],
|
||||
|
|
22
swad_match.c
22
swad_match.c
|
@ -310,9 +310,10 @@ void Mch_ListMatches (struct Gam_Games *Games,
|
|||
" OR"
|
||||
" MchCod IN"
|
||||
" (SELECT mch_groups.MchCod"
|
||||
" FROM mch_groups,crs_grp_usr"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND mch_groups.GrpCod=crs_grp_usr.GrpCod))",
|
||||
" FROM grp_users,"
|
||||
"mch_groups"
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND grp_users.GrpCod=mch_groups.GrpCod))",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
}
|
||||
|
@ -766,15 +767,15 @@ static void Mch_GetAndWriteNamesOfGrpsAssociatedToMatch (const struct Mch_Match
|
|||
|
||||
/***** Get groups associated to a match from database *****/
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get groups of a match",
|
||||
"SELECT crs_grp_types.GrpTypName,"
|
||||
"SELECT grp_types.GrpTypName,"
|
||||
"grp_groups.GrpName"
|
||||
" FROM mch_groups,"
|
||||
"grp_groups,"
|
||||
"crs_grp_types"
|
||||
"grp_types"
|
||||
" WHERE mch_groups.MchCod=%ld"
|
||||
" AND mch_groups.GrpCod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" ORDER BY crs_grp_types.GrpTypName,"
|
||||
" AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
|
||||
" ORDER BY grp_types.GrpTypName,"
|
||||
"grp_groups.GrpName",
|
||||
Match->MchCod);
|
||||
|
||||
|
@ -2524,9 +2525,10 @@ bool Mch_CheckIfICanPlayThisMatchBasedOnGrps (const struct Mch_Match *Match)
|
|||
" OR"
|
||||
" MchCod IN"
|
||||
" (SELECT mch_groups.MchCod"
|
||||
" FROM mch_groups,crs_grp_usr"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND crs_grp_usr.GrpCod=mch_groups.GrpCod))",
|
||||
" FROM grp_users,"
|
||||
"mch_groups"
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND grp_users.GrpCod=mch_groups.GrpCod))",
|
||||
Match->MchCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
|
||||
break;
|
||||
case Rol_NET:
|
||||
|
|
|
@ -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
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
|
||||
" to be notified",
|
||||
"SELECT UsrCod" // row[0]
|
||||
" FROM crs_grp_usr"
|
||||
" WHERE crs_grp_usr.GrpCod=%ld"
|
||||
" AND crs_grp_usr.UsrCod<>%ld",
|
||||
"SELECT UsrCod" // row[0]
|
||||
" FROM grp_users"
|
||||
" WHERE GrpCod=%ld"
|
||||
" AND 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" // row[0]
|
||||
" FROM crs_grp_usr,"
|
||||
"SELECT grp_users.UsrCod" // row[0]
|
||||
" FROM grp_users,"
|
||||
"grp_groups,"
|
||||
"crs_grp_types,"
|
||||
"grp_types,"
|
||||
"crs_users"
|
||||
" WHERE crs_grp_usr.GrpCod=%ld"
|
||||
" AND crs_grp_usr.UsrCod<>%ld"
|
||||
" AND crs_grp_usr.GrpCod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" AND crs_grp_types.CrsCod=crs_users.CrsCod"
|
||||
" WHERE grp_users.GrpCod=%ld"
|
||||
" AND grp_users.UsrCod<>%ld"
|
||||
" AND grp_users.GrpCod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
|
||||
" AND grp_types.CrsCod=crs_users.CrsCod"
|
||||
" AND crs_users.Role=%u", // Notify teachers only
|
||||
Gbl.Crs.Grps.GrpCod,
|
||||
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 crs_users.UsrCod<>%ld)"
|
||||
" UNION "
|
||||
"(SELECT DISTINCT crs_grp_usr.UsrCod"
|
||||
"(SELECT DISTINCT grp_users.UsrCod"
|
||||
" FROM asg_groups,"
|
||||
"crs_grp_usr"
|
||||
"grp_users"
|
||||
" WHERE asg_groups.AsgCod=%ld"
|
||||
" AND asg_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod<>%ld)",
|
||||
" AND asg_groups.GrpCod=grp_users.GrpCod"
|
||||
" AND grp_users.UsrCod<>%ld)",
|
||||
Cod,Cod,Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
Cod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
break;
|
||||
|
@ -1431,15 +1431,15 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
|
|||
" AND crs_users.UsrCod<>%ld"
|
||||
" AND (svy_surveys.Roles&(1<<crs_users.Role))<>0)"
|
||||
" UNION "
|
||||
"(SELECT DISTINCT crs_grp_usr.UsrCod"
|
||||
"(SELECT DISTINCT grp_users.UsrCod"
|
||||
" FROM svy_groups,"
|
||||
"crs_grp_usr,"
|
||||
"grp_users,"
|
||||
"svy_surveys,"
|
||||
"crs_users"
|
||||
" WHERE svy_groups.SvyCod=%ld"
|
||||
" AND svy_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod=crs_users.UsrCod"
|
||||
" AND crs_grp_usr.UsrCod<>%ld"
|
||||
" AND svy_groups.GrpCod=grp_users.GrpCod"
|
||||
" AND grp_users.UsrCod=crs_users.UsrCod"
|
||||
" AND grp_users.UsrCod<>%ld"
|
||||
" AND svy_groups.SvyCod=svy_surveys.SvyCod"
|
||||
" AND svy_surveys.Scope='%s'"
|
||||
" AND svy_surveys.Cod=crs_users.CrsCod"
|
||||
|
|
|
@ -879,10 +879,10 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
|
|||
" (FilCod INT NOT NULL,UNIQUE INDEX(FilCod))"
|
||||
" ENGINE=MEMORY"
|
||||
" SELECT brw_files.FilCod"
|
||||
" FROM crs_grp_usr,"
|
||||
" FROM grp_users,"
|
||||
"brw_files"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND crs_grp_usr.GrpCod=brw_files.Cod"
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND grp_users.GrpCod=brw_files.Cod"
|
||||
" AND brw_files.FileBrowser IN (%u,%u,%u,%u)",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Brw_ADMI_DOC_GRP,
|
||||
|
@ -935,7 +935,7 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
|
|||
"grp_groups.GrpCod"
|
||||
" FROM brw_files,"
|
||||
"grp_groups,"
|
||||
"crs_grp_types,"
|
||||
"grp_types,"
|
||||
"crs_courses,"
|
||||
"deg_degrees,"
|
||||
"ctr_centers,"
|
||||
|
@ -945,8 +945,8 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
|
|||
" AND %s"
|
||||
" AND brw_files.FileBrowser IN (%u,%u,%u,%u)"
|
||||
" AND brw_files.Cod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" AND crs_grp_types.CrsCod=crs_courses.CrsCod"
|
||||
" AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
|
||||
" AND grp_types.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"
|
||||
|
@ -1124,7 +1124,7 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
|
|||
"grp_groups.GrpCod"
|
||||
" FROM brw_files,"
|
||||
"grp_groups,"
|
||||
"crs_grp_types,"
|
||||
"grp_types,"
|
||||
"crs_courses,"
|
||||
"deg_degrees,"
|
||||
"ctr_centers,"
|
||||
|
@ -1134,8 +1134,8 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
|
|||
" AND %s"
|
||||
" AND brw_files.FileBrowser IN (%u,%u,%u,%u)"
|
||||
" AND brw_files.Cod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" AND crs_grp_types.CrsCod=crs_courses.CrsCod"
|
||||
" AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
|
||||
" AND grp_types.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"
|
||||
|
|
|
@ -997,9 +997,10 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
|
|||
" OR"
|
||||
" SvyCod IN"
|
||||
" (SELECT svy_groups.SvyCod"
|
||||
" FROM svy_groups,crs_grp_usr"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND svy_groups.GrpCod=crs_grp_usr.GrpCod))"
|
||||
" FROM grp_users,"
|
||||
"svy_groups"
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND grp_users.GrpCod=svy_groups.GrpCod))"
|
||||
")",
|
||||
SubQueryFilled ? " OR " :
|
||||
"",
|
||||
|
@ -2496,15 +2497,15 @@ static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Svy_Survey *Svy)
|
|||
|
||||
/***** Get groups associated to a survey from database *****/
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get groups of a survey",
|
||||
"SELECT crs_grp_types.GrpTypName,"
|
||||
"SELECT grp_types.GrpTypName,"
|
||||
"grp_groups.GrpName"
|
||||
" FROM svy_groups,"
|
||||
"grp_groups,"
|
||||
"crs_grp_types"
|
||||
"grp_types"
|
||||
" WHERE svy_groups.SvyCod=%ld"
|
||||
" AND svy_groups.GrpCod=grp_groups.GrpCod"
|
||||
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" ORDER BY crs_grp_types.GrpTypName,"
|
||||
" AND grp_groups.GrpTypCod=grp_types.GrpTypCod"
|
||||
" ORDER BY grp_types.GrpTypName,"
|
||||
"grp_groups.GrpName",
|
||||
Svy->SvyCod);
|
||||
|
||||
|
@ -2618,10 +2619,10 @@ static bool Svy_CheckIfICanDoThisSurveyBasedOnGrps (long SvyCod)
|
|||
" OR"
|
||||
" SvyCod IN"
|
||||
" (SELECT svy_groups.SvyCod"
|
||||
" FROM crs_grp_usr,"
|
||||
" FROM grp_users,"
|
||||
"svy_groups"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND svy_groups.GrpCod=crs_grp_usr.GrpCod))",
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND grp_users.GrpCod=svy_groups.GrpCod))",
|
||||
SvyCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
|
||||
}
|
||||
|
||||
|
|
|
@ -736,10 +736,10 @@ static void Tmt_FillTimeTableFromDB (struct Tmt_Timetable *Timetable,
|
|||
"tmt_courses.ClassType,"
|
||||
"tmt_courses.GrpCod,"
|
||||
"tmt_courses.CrsCod"
|
||||
" FROM tmt_courses,"
|
||||
"crs_grp_usr"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND tmt_courses.GrpCod=crs_grp_usr.GrpCod"
|
||||
" FROM grp_users,"
|
||||
"tmt_courses"
|
||||
" WHERE grp_users.UsrCod=%ld"
|
||||
" AND grp_users.GrpCod=tmt_courses.GrpCod"
|
||||
" UNION "
|
||||
"SELECT Weekday,"
|
||||
"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.ClassType," // row[4]
|
||||
"tmt_courses.GrpCod" // row[5]
|
||||
" FROM tmt_courses,crs_grp_usr"
|
||||
" FROM tmt_courses,"
|
||||
"grp_users"
|
||||
" WHERE tmt_courses.CrsCod=%ld"
|
||||
" AND crs_grp_usr.UsrCod=%ld"
|
||||
" AND tmt_courses.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND grp_users.UsrCod=%ld"
|
||||
" AND tmt_courses.GrpCod=grp_users.GrpCod"
|
||||
" ORDER BY Weekday,"
|
||||
"S,"
|
||||
"ClassType,"
|
||||
|
|
16
swad_user.c
16
swad_user.c
|
@ -4098,11 +4098,11 @@ long Usr_GetRamdomStdFromGrp (long GrpCod)
|
|||
|
||||
/***** Get a random student from a group from database *****/
|
||||
if (DB_QuerySELECT (&mysql_res,"can not get a random student from a group",
|
||||
"SELECT crs_grp_usr.UsrCod" // row[0]
|
||||
" FROM crs_grp_usr,"
|
||||
"SELECT grp_users.UsrCod" // row[0]
|
||||
" FROM grp_users,"
|
||||
"crs_users"
|
||||
" WHERE crs_grp_usr.GrpCod=%ld"
|
||||
" AND crs_grp_usr.UsrCod=crs_users.UsrCod"
|
||||
" WHERE grp_users.GrpCod=%ld"
|
||||
" AND grp_users.UsrCod=crs_users.UsrCod"
|
||||
" AND crs_users.Role=%u"
|
||||
" ORDER BY RAND()"
|
||||
" LIMIT 1",
|
||||
|
@ -4520,7 +4520,7 @@ static void Usr_BuildQueryToGetUsrsLstCrs (char **Query,Rol_Role_t Role)
|
|||
{
|
||||
Str_Concat (*Query," AND (crs_users.UsrCod IN"
|
||||
" (SELECT DISTINCT UsrCod"
|
||||
" FROM crs_grp_usr"
|
||||
" FROM grp_users"
|
||||
" WHERE",
|
||||
Usr_MAX_BYTES_QUERY_GET_LIST_USRS);
|
||||
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);
|
||||
/* 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"
|
||||
" (SELECT DISTINCT crs_grp_usr.UsrCod"
|
||||
" (SELECT DISTINCT grp_users.UsrCod"
|
||||
" FROM grp_groups,"
|
||||
"crs_grp_usr"
|
||||
"grp_users"
|
||||
" WHERE grp_groups.GrpTypCod='",
|
||||
Usr_MAX_BYTES_QUERY_GET_LIST_USRS);
|
||||
snprintf (LongStr,sizeof (LongStr),"%ld",
|
||||
Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod);
|
||||
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);
|
||||
NumNegativeCods++;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue