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(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),
|
||||||
|
|
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 *****/
|
/***** 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 =
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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),"
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
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",
|
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);
|
||||||
|
|
|
@ -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],
|
||||||
|
|
22
swad_match.c
22
swad_match.c
|
@ -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:
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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,"
|
||||||
|
|
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 *****/
|
/***** 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++;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue