mirror of https://github.com/acanas/swad-core.git
Version 20.51.33: Mar 23, 2021 Groups database table renamed.
This commit is contained in:
parent
1f2bd46bc2
commit
36365b0813
|
@ -279,9 +279,9 @@ CREATE TABLE IF NOT EXISTS crs_courses (
|
||||||
INDEX(DegCod,Year),
|
INDEX(DegCod,Year),
|
||||||
INDEX(Status));
|
INDEX(Status));
|
||||||
--
|
--
|
||||||
-- Table crs_grp: stores the groups in courses
|
-- Table grp_groups: stores the groups in courses
|
||||||
--
|
--
|
||||||
CREATE TABLE IF NOT EXISTS crs_grp (
|
CREATE TABLE IF NOT EXISTS grp_groups (
|
||||||
GrpCod INT NOT NULL AUTO_INCREMENT,
|
GrpCod INT NOT NULL AUTO_INCREMENT,
|
||||||
GrpTypCod INT NOT NULL,
|
GrpTypCod INT NOT NULL,
|
||||||
GrpName VARCHAR(2047) NOT NULL,
|
GrpName VARCHAR(2047) NOT NULL,
|
||||||
|
|
49
swad_API.c
49
swad_API.c
|
@ -509,10 +509,12 @@ 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(*) FROM crs_grp_types,crs_grp"
|
"SELECT COUNT(*)"
|
||||||
|
" FROM crs_grp_types,"
|
||||||
|
"grp_groups"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.GrpCod=%ld",
|
" AND grp_groups.GrpCod=%ld",
|
||||||
CrsCod,GrpCod) != 1)
|
CrsCod,GrpCod) != 1)
|
||||||
return soap_sender_fault (soap,
|
return soap_sender_fault (soap,
|
||||||
"Bad group code",
|
"Bad group code",
|
||||||
|
@ -2227,16 +2229,17 @@ int swad__getGroups (struct soap *soap,
|
||||||
(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 crs_grp_types.GrpTypCod,"
|
||||||
"crs_grp_types.GrpTypName,"
|
"crs_grp_types.GrpTypName,"
|
||||||
"crs_grp.GrpCod,"
|
"grp_groups.GrpCod,"
|
||||||
"crs_grp.GrpName,"
|
"grp_groups.GrpName,"
|
||||||
"crs_grp.MaxStudents,"
|
"grp_groups.MaxStudents,"
|
||||||
"crs_grp.Open,"
|
"grp_groups.Open,"
|
||||||
"crs_grp.FileZones"
|
"grp_groups.FileZones"
|
||||||
" FROM crs_grp_types,crs_grp"
|
" FROM crs_grp_types,"
|
||||||
|
"grp_groups"
|
||||||
" WHERE crs_grp_types.CrsCod=%d"
|
" WHERE crs_grp_types.CrsCod=%d"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" ORDER BY crs_grp_types.GrpTypName,"
|
" ORDER BY crs_grp_types.GrpTypName,"
|
||||||
"crs_grp.GrpName",
|
"grp_groups.GrpName",
|
||||||
courseCode);
|
courseCode);
|
||||||
|
|
||||||
getGroupsOut->numGroups = (int) NumRows;
|
getGroupsOut->numGroups = (int) NumRows;
|
||||||
|
@ -2400,15 +2403,17 @@ int swad__sendMyGroups (struct soap *soap,
|
||||||
(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 crs_grp_types.GrpTypCod,"
|
||||||
"crs_grp_types.GrpTypName,"
|
"crs_grp_types.GrpTypName,"
|
||||||
"crs_grp.GrpCod,"
|
"grp_groups.GrpCod,"
|
||||||
"crs_grp.GrpName,"
|
"grp_groups.GrpName,"
|
||||||
"crs_grp.MaxStudents,"
|
"grp_groups.MaxStudents,"
|
||||||
"crs_grp.Open,"
|
"grp_groups.Open,"
|
||||||
"crs_grp.FileZones"
|
"grp_groups.FileZones"
|
||||||
" FROM crs_grp_types,crs_grp"
|
" FROM crs_grp_types,"
|
||||||
|
"grp_groups"
|
||||||
" WHERE crs_grp_types.CrsCod=%d"
|
" WHERE crs_grp_types.CrsCod=%d"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" ORDER BY crs_grp_types.GrpTypName,crs_grp.GrpName",
|
" ORDER BY crs_grp_types.GrpTypName,"
|
||||||
|
"grp_groups.GrpName",
|
||||||
courseCode);
|
courseCode);
|
||||||
|
|
||||||
SendMyGroupsOut->numGroups = (int) NumRows;
|
SendMyGroupsOut->numGroups = (int) NumRows;
|
||||||
|
@ -3019,13 +3024,13 @@ int swad__getAttendanceUsers (struct soap *soap,
|
||||||
sprintf (SubQuery,"SELECT DISTINCT crs_grp_usr.UsrCod AS UsrCod,"
|
sprintf (SubQuery,"SELECT DISTINCT crs_grp_usr.UsrCod AS UsrCod,"
|
||||||
"'N' AS Present"
|
"'N' AS Present"
|
||||||
" FROM att_groups,"
|
" FROM att_groups,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"crs_grp_types,"
|
"crs_grp_types,"
|
||||||
"crs_users,"
|
"crs_users,"
|
||||||
"crs_grp_usr"
|
"crs_grp_usr"
|
||||||
" WHERE att_groups.AttCod=%ld"
|
" WHERE att_groups.AttCod=%ld"
|
||||||
" AND att_groups.GrpCod=crs_grp.GrpCod"
|
" AND att_groups.GrpCod=grp_groups.GrpCod"
|
||||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||||
" AND crs_grp_types.CrsCod=crs_users.CrsCod"
|
" AND crs_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=crs_grp_usr.UsrCod"
|
||||||
|
|
|
@ -1707,10 +1707,10 @@ void Asg_RemoveGroupsOfType (long GrpTypCod)
|
||||||
DB_QueryDELETE ("can not remove groups of a type from the associations"
|
DB_QueryDELETE ("can not remove groups of a type from the associations"
|
||||||
" between assignments and groups",
|
" between assignments and groups",
|
||||||
"DELETE FROM asg_groups"
|
"DELETE FROM asg_groups"
|
||||||
" USING crs_grp,"
|
" USING grp_groups,"
|
||||||
"asg_groups"
|
"asg_groups"
|
||||||
" WHERE crs_grp.GrpTypCod=%ld"
|
" WHERE grp_groups.GrpTypCod=%ld"
|
||||||
" AND crs_grp.GrpCod=asg_groups.GrpCod",
|
" AND grp_groups.GrpCod=asg_groups.GrpCod",
|
||||||
GrpTypCod);
|
GrpTypCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1753,15 +1753,16 @@ 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,crs_grp.GrpName"
|
"SELECT crs_grp_types.GrpTypName,"
|
||||||
|
"grp_groups.GrpName"
|
||||||
" FROM asg_groups,"
|
" FROM asg_groups,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"crs_grp_types"
|
"crs_grp_types"
|
||||||
" WHERE asg_groups.AsgCod=%ld"
|
" WHERE asg_groups.AsgCod=%ld"
|
||||||
" AND asg_groups.GrpCod=crs_grp.GrpCod"
|
" AND asg_groups.GrpCod=grp_groups.GrpCod"
|
||||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||||
" ORDER BY crs_grp_types.GrpTypName,"
|
" ORDER BY crs_grp_types.GrpTypName,"
|
||||||
"crs_grp.GrpName",
|
"grp_groups.GrpName",
|
||||||
Asg->AsgCod);
|
Asg->AsgCod);
|
||||||
|
|
||||||
/***** Write heading *****/
|
/***** Write heading *****/
|
||||||
|
|
|
@ -1497,10 +1497,10 @@ void Att_RemoveGroupsOfType (long GrpTypCod)
|
||||||
DB_QueryDELETE ("can not remove groups of a type from the associations"
|
DB_QueryDELETE ("can not remove groups of a type from the associations"
|
||||||
" between attendance events and groups",
|
" between attendance events and groups",
|
||||||
"DELETE FROM att_groups"
|
"DELETE FROM att_groups"
|
||||||
" USING crs_grp,"
|
" USING grp_groups,"
|
||||||
"att_groups"
|
"att_groups"
|
||||||
" WHERE crs_grp.GrpTypCod=%ld"
|
" WHERE grp_groups.GrpTypCod=%ld"
|
||||||
" AND crs_grp.GrpCod=att_groups.GrpCod",
|
" AND grp_groups.GrpCod=att_groups.GrpCod",
|
||||||
GrpTypCod);
|
GrpTypCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1544,18 +1544,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 crs_grp_types.GrpTypName,"
|
||||||
"crs_grp.GrpName,"
|
"grp_groups.GrpName,"
|
||||||
"roo_rooms.ShortName"
|
"roo_rooms.ShortName"
|
||||||
" FROM (att_groups,"
|
" FROM (att_groups,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"crs_grp_types)"
|
"crs_grp_types)"
|
||||||
" LEFT JOIN roo_rooms"
|
" LEFT JOIN roo_rooms"
|
||||||
" ON crs_grp.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=crs_grp.GrpCod"
|
" AND att_groups.GrpCod=grp_groups.GrpCod"
|
||||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||||
" ORDER BY crs_grp_types.GrpTypName,"
|
" ORDER BY crs_grp_types.GrpTypName,"
|
||||||
"crs_grp.GrpName",
|
"grp_groups.GrpName",
|
||||||
Event->AttCod);
|
Event->AttCod);
|
||||||
|
|
||||||
/***** Write heading *****/
|
/***** Write heading *****/
|
||||||
|
|
|
@ -600,13 +600,17 @@ 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.32 (2021-03-23)"
|
#define Log_PLATFORM_VERSION "SWAD 20.51.33 (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.33: Mar 23, 2021 Groups database table renamed. (308594 lines)
|
||||||
|
1 change necessary in database:
|
||||||
|
RENAME TABLE crs_grp TO grp_groups;
|
||||||
|
|
||||||
Version 20.51.32: Mar 23, 2021 Course users database table renamed. (308512 lines)
|
Version 20.51.32: Mar 23, 2021 Course users database table renamed. (308512 lines)
|
||||||
1 change necessary in database:
|
1 change necessary in database:
|
||||||
RENAME TABLE crs_usr TO crs_users;
|
RENAME TABLE crs_usr TO crs_users;
|
||||||
|
|
|
@ -2028,20 +2028,20 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
|
||||||
DB_QueryDELETE ("can not remove users from groups of a course",
|
DB_QueryDELETE ("can not remove users from groups of a course",
|
||||||
"DELETE FROM crs_grp_usr"
|
"DELETE FROM crs_grp_usr"
|
||||||
" USING crs_grp_types,"
|
" USING crs_grp_types,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"crs_grp_usr"
|
"crs_grp_usr"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod",
|
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod",
|
||||||
CrsCod);
|
CrsCod);
|
||||||
|
|
||||||
/* Remove all the groups in the course */
|
/* Remove all the groups in the course */
|
||||||
DB_QueryDELETE ("can not remove groups of a course",
|
DB_QueryDELETE ("can not remove groups of a course",
|
||||||
"DELETE FROM crs_grp"
|
"DELETE FROM grp_groups"
|
||||||
" USING crs_grp_types,"
|
" USING crs_grp_types,"
|
||||||
"crs_grp"
|
"grp_groups"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod",
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod",
|
||||||
CrsCod);
|
CrsCod);
|
||||||
|
|
||||||
/* Remove all the group types in the course */
|
/* Remove all the group types in the course */
|
||||||
|
|
|
@ -650,9 +650,9 @@ mysql> DESCRIBE crs_courses;
|
||||||
"INDEX(DegCod,Year),"
|
"INDEX(DegCod,Year),"
|
||||||
"INDEX(Status))");
|
"INDEX(Status))");
|
||||||
|
|
||||||
/***** Table crs_grp *****/
|
/***** Table grp_groups *****/
|
||||||
/*
|
/*
|
||||||
mysql> DESCRIBE crs_grp;
|
mysql> DESCRIBE grp_groups;
|
||||||
+-------------+---------------+------+-----+---------+----------------+
|
+-------------+---------------+------+-----+---------+----------------+
|
||||||
| Field | Type | Null | Key | Default | Extra |
|
| Field | Type | Null | Key | Default | Extra |
|
||||||
+-------------+---------------+------+-----+---------+----------------+
|
+-------------+---------------+------+-----+---------+----------------+
|
||||||
|
@ -666,7 +666,7 @@ mysql> DESCRIBE crs_grp;
|
||||||
+-------------+---------------+------+-----+---------+----------------+
|
+-------------+---------------+------+-----+---------+----------------+
|
||||||
7 rows in set (0.00 sec)
|
7 rows in set (0.00 sec)
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS crs_grp ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS grp_groups ("
|
||||||
"GrpCod INT NOT NULL AUTO_INCREMENT,"
|
"GrpCod INT NOT NULL AUTO_INCREMENT,"
|
||||||
"GrpTypCod INT NOT NULL,"
|
"GrpTypCod INT NOT NULL,"
|
||||||
"GrpName VARCHAR(2047) NOT NULL," // Grp_MAX_BYTES_GROUP_NAME
|
"GrpName VARCHAR(2047) NOT NULL," // Grp_MAX_BYTES_GROUP_NAME
|
||||||
|
|
|
@ -666,12 +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 crs_grp_types.GrpTypName," // row[0]
|
||||||
"crs_grp.GrpName" // row[1]
|
"grp_groups.GrpName" // row[1]
|
||||||
" FROM exa_groups,crs_grp,crs_grp_types"
|
" FROM exa_groups,"
|
||||||
|
"grp_groups,"
|
||||||
|
"crs_grp_types"
|
||||||
" WHERE exa_groups.SesCod=%ld"
|
" WHERE exa_groups.SesCod=%ld"
|
||||||
" AND exa_groups.GrpCod=crs_grp.GrpCod"
|
" AND exa_groups.GrpCod=grp_groups.GrpCod"
|
||||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||||
" ORDER BY crs_grp_types.GrpTypName,crs_grp.GrpName",
|
" ORDER BY crs_grp_types.GrpTypName,"
|
||||||
|
"grp_groups.GrpName",
|
||||||
Session->SesCod);
|
Session->SesCod);
|
||||||
|
|
||||||
/***** Write heading *****/
|
/***** Write heading *****/
|
||||||
|
@ -1661,9 +1664,10 @@ void ExaSes_RemoveGroupsOfType (long GrpTypCod)
|
||||||
DB_QueryDELETE ("can not remove groups of a type"
|
DB_QueryDELETE ("can not remove groups of a type"
|
||||||
" from the associations between sessions and groups",
|
" from the associations between sessions and groups",
|
||||||
"DELETE FROM exa_groups"
|
"DELETE FROM exa_groups"
|
||||||
" USING crs_grp,exa_groups"
|
" USING grp_groups,"
|
||||||
" WHERE crs_grp.GrpTypCod=%ld"
|
"exa_groups"
|
||||||
" AND crs_grp.GrpCod=exa_groups.GrpCod",
|
" WHERE grp_groups.GrpTypCod=%ld"
|
||||||
|
" AND grp_groups.GrpCod=exa_groups.GrpCod",
|
||||||
GrpTypCod);
|
GrpTypCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1710,10 +1710,10 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
||||||
"brw_sizes.NumFiles,"
|
"brw_sizes.NumFiles,"
|
||||||
"brw_sizes.TotalSize"
|
"brw_sizes.TotalSize"
|
||||||
" FROM crs_grp_types,"
|
" FROM crs_grp_types,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"brw_sizes"
|
"brw_sizes"
|
||||||
" WHERE crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" WHERE crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.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",
|
||||||
(unsigned) Brw_ADMI_DOC_CRS,
|
(unsigned) Brw_ADMI_DOC_CRS,
|
||||||
|
@ -1756,10 +1756,10 @@ 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_grp_types,"
|
" FROM crs_grp_types,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"brw_sizes"
|
"brw_sizes"
|
||||||
" WHERE crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" WHERE crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.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);
|
||||||
break;
|
break;
|
||||||
|
@ -1839,15 +1839,15 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
||||||
"deg_degrees,"
|
"deg_degrees,"
|
||||||
"crs_courses,"
|
"crs_courses,"
|
||||||
"crs_grp_types,"
|
"crs_grp_types,"
|
||||||
"crs_grp,"
|
"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=crs_grp_types.CrsCod"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.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",
|
||||||
Gbl.Hierarchy.Cty.CtyCod,
|
Gbl.Hierarchy.Cty.CtyCod,
|
||||||
|
@ -1906,15 +1906,15 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
||||||
"deg_degrees,"
|
"deg_degrees,"
|
||||||
"crs_courses,"
|
"crs_courses,"
|
||||||
"crs_grp_types,"
|
"crs_grp_types,"
|
||||||
"crs_grp,"
|
"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=crs_grp_types.CrsCod"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.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,
|
||||||
(unsigned) FileBrowser);
|
(unsigned) FileBrowser);
|
||||||
|
@ -2014,14 +2014,14 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
||||||
"deg_degrees,"
|
"deg_degrees,"
|
||||||
"crs_courses,"
|
"crs_courses,"
|
||||||
"crs_grp_types,"
|
"crs_grp_types,"
|
||||||
"crs_grp,"
|
"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=crs_grp_types.CrsCod"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.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",
|
||||||
Gbl.Hierarchy.Ins.InsCod,
|
Gbl.Hierarchy.Ins.InsCod,
|
||||||
|
@ -2077,14 +2077,14 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
||||||
"deg_degrees,"
|
"deg_degrees,"
|
||||||
"crs_courses,"
|
"crs_courses,"
|
||||||
"crs_grp_types,"
|
"crs_grp_types,"
|
||||||
"crs_grp,"
|
"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=crs_grp_types.CrsCod"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.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,
|
||||||
(unsigned) FileBrowser);
|
(unsigned) FileBrowser);
|
||||||
|
@ -2177,13 +2177,13 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
||||||
" FROM deg_degrees,"
|
" FROM deg_degrees,"
|
||||||
"crs_courses,"
|
"crs_courses,"
|
||||||
"crs_grp_types,"
|
"crs_grp_types,"
|
||||||
"crs_grp,"
|
"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=crs_grp_types.CrsCod"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.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",
|
||||||
Gbl.Hierarchy.Ctr.CtrCod,
|
Gbl.Hierarchy.Ctr.CtrCod,
|
||||||
|
@ -2236,13 +2236,13 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
||||||
" FROM deg_degrees,"
|
" FROM deg_degrees,"
|
||||||
"crs_courses,"
|
"crs_courses,"
|
||||||
"crs_grp_types,"
|
"crs_grp_types,"
|
||||||
"crs_grp,"
|
"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=crs_grp_types.CrsCod"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.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,
|
||||||
(unsigned) FileBrowser);
|
(unsigned) FileBrowser);
|
||||||
|
@ -2328,12 +2328,12 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
||||||
"brw_sizes.TotalSize"
|
"brw_sizes.TotalSize"
|
||||||
" FROM crs_courses,"
|
" FROM crs_courses,"
|
||||||
"crs_grp_types,"
|
"crs_grp_types,"
|
||||||
"crs_grp,"
|
"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=crs_grp_types.CrsCod"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.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",
|
||||||
Gbl.Hierarchy.Deg.DegCod,
|
Gbl.Hierarchy.Deg.DegCod,
|
||||||
|
@ -2383,12 +2383,12 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
||||||
"SUM(brw_sizes.TotalSize)" // row[6]
|
"SUM(brw_sizes.TotalSize)" // row[6]
|
||||||
" FROM crs_courses,"
|
" FROM crs_courses,"
|
||||||
"crs_grp_types,"
|
"crs_grp_types,"
|
||||||
"crs_grp,"
|
"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=crs_grp_types.CrsCod"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.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,
|
||||||
(unsigned) FileBrowser);
|
(unsigned) FileBrowser);
|
||||||
|
@ -2467,11 +2467,11 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
||||||
"brw_sizes.NumFiles,"
|
"brw_sizes.NumFiles,"
|
||||||
"brw_sizes.TotalSize"
|
"brw_sizes.TotalSize"
|
||||||
" FROM crs_grp_types,"
|
" FROM crs_grp_types,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"brw_sizes"
|
"brw_sizes"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.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",
|
||||||
Gbl.Hierarchy.Crs.CrsCod,
|
Gbl.Hierarchy.Crs.CrsCod,
|
||||||
|
@ -2518,11 +2518,11 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
|
||||||
"SUM(brw_sizes.NumFiles)," // row[5]
|
"SUM(brw_sizes.NumFiles)," // row[5]
|
||||||
"SUM(brw_sizes.TotalSize)" // row[6]
|
"SUM(brw_sizes.TotalSize)" // row[6]
|
||||||
" FROM crs_grp_types,"
|
" FROM crs_grp_types,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"brw_sizes"
|
"brw_sizes"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.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,
|
||||||
(unsigned) FileBrowser);
|
(unsigned) FileBrowser);
|
||||||
|
|
|
@ -4379,10 +4379,11 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod)
|
||||||
char SubqueryPrj[128];
|
char SubqueryPrj[128];
|
||||||
|
|
||||||
/***** Build subquery for groups *****/
|
/***** Build subquery for groups *****/
|
||||||
sprintf (SubqueryGrp,"(SELECT crs_grp.GrpCod"
|
sprintf (SubqueryGrp,"(SELECT grp_groups.GrpCod"
|
||||||
" FROM crs_grp_types,crs_grp"
|
" FROM crs_grp_types,"
|
||||||
|
"grp_groups"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod)",
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod)",
|
||||||
CrsCod);
|
CrsCod);
|
||||||
|
|
||||||
/***** Build subquery for projects *****/
|
/***** Build subquery for projects *****/
|
||||||
|
@ -4790,11 +4791,11 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long UsrCod,long CrsCod)
|
||||||
" OR "
|
" OR "
|
||||||
"(FileBrowser IN (%u,%u,%u,%u)"
|
"(FileBrowser IN (%u,%u,%u,%u)"
|
||||||
" AND Cod IN"
|
" AND Cod IN"
|
||||||
" (SELECT crs_grp.GrpCod"
|
" (SELECT grp_groups.GrpCod"
|
||||||
" FROM crs_grp_types,"
|
" FROM crs_grp_types,"
|
||||||
"crs_grp"
|
"grp_groups"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod))"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod))"
|
||||||
")",
|
")",
|
||||||
UsrCod,
|
UsrCod,
|
||||||
(unsigned) Brw_ADMI_DOC_CRS,
|
(unsigned) Brw_ADMI_DOC_CRS,
|
||||||
|
@ -4822,11 +4823,11 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long UsrCod,long CrsCod)
|
||||||
" OR "
|
" OR "
|
||||||
"(FileBrowser IN (%u,%u,%u,%u)"
|
"(FileBrowser IN (%u,%u,%u,%u)"
|
||||||
" AND Cod IN"
|
" AND Cod IN"
|
||||||
" (SELECT crs_grp.GrpCod"
|
" (SELECT grp_groups.GrpCod"
|
||||||
" FROM crs_grp_types,"
|
" FROM crs_grp_types,"
|
||||||
"crs_grp"
|
"grp_groups"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod))"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod))"
|
||||||
")",
|
")",
|
||||||
UsrCod,
|
UsrCod,
|
||||||
(unsigned) Brw_ADMI_DOC_CRS,
|
(unsigned) Brw_ADMI_DOC_CRS,
|
||||||
|
@ -4857,11 +4858,11 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long UsrCod,long CrsCod)
|
||||||
" OR "
|
" OR "
|
||||||
"(FileBrowser IN (%u,%u,%u,%u)"
|
"(FileBrowser IN (%u,%u,%u,%u)"
|
||||||
" AND Cod IN"
|
" AND Cod IN"
|
||||||
" (SELECT crs_grp.GrpCod"
|
" (SELECT grp_groups.GrpCod"
|
||||||
" FROM crs_grp_types,"
|
" FROM crs_grp_types,"
|
||||||
"crs_grp"
|
"grp_groups"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod))"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod))"
|
||||||
")",
|
")",
|
||||||
UsrCod,
|
UsrCod,
|
||||||
(unsigned) Brw_ADMI_DOC_CRS,
|
(unsigned) Brw_ADMI_DOC_CRS,
|
||||||
|
|
348
swad_group.c
348
swad_group.c
|
@ -978,7 +978,7 @@ static void Grp_LockTables (void)
|
||||||
DB_Query ("can not lock tables to change user's groups",
|
DB_Query ("can not lock tables to change user's groups",
|
||||||
"LOCK TABLES "
|
"LOCK TABLES "
|
||||||
"crs_grp_types WRITE,"
|
"crs_grp_types WRITE,"
|
||||||
"crs_grp WRITE,"
|
"grp_groups WRITE,"
|
||||||
"crs_grp_usr WRITE,"
|
"crs_grp_usr WRITE,"
|
||||||
"crs_users READ,"
|
"crs_users READ,"
|
||||||
"crs_usr_last READ,"
|
"crs_usr_last READ,"
|
||||||
|
@ -1225,10 +1225,13 @@ 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 crs_grp_usr"
|
||||||
" WHERE UsrCod=%ld AND GrpCod IN"
|
" WHERE UsrCod=%ld"
|
||||||
" (SELECT crs_grp.GrpCod FROM crs_grp_types,crs_grp"
|
" AND GrpCod IN"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" (SELECT grp_groups.GrpCod"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod)",
|
" FROM crs_grp_types,"
|
||||||
|
"grp_groups"
|
||||||
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod)",
|
||||||
UsrCod,CrsCod);
|
UsrCod,CrsCod);
|
||||||
|
|
||||||
/***** Flush caches *****/
|
/***** Flush caches *****/
|
||||||
|
@ -2759,14 +2762,17 @@ 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,crs_grp_types.GrpTypName,"
|
"SELECT crs_grp_types.GrpTypCod,"
|
||||||
"crs_grp_types.Mandatory,crs_grp_types.Multiple,"
|
"crs_grp_types.GrpTypName,"
|
||||||
"crs_grp_types.MustBeOpened,"
|
"crs_grp_types.Mandatory,"
|
||||||
"UNIX_TIMESTAMP(crs_grp_types.OpenTime),"
|
"crs_grp_types.Multiple,"
|
||||||
"COUNT(crs_grp.GrpCod)"
|
"crs_grp_types.MustBeOpened,"
|
||||||
" FROM crs_grp_types,crs_grp"
|
"UNIX_TIMESTAMP(crs_grp_types.OpenTime),"
|
||||||
|
"COUNT(grp_groups.GrpCod)"
|
||||||
|
" FROM crs_grp_types,"
|
||||||
|
"grp_groups"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" GROUP BY crs_grp_types.GrpTypCod"
|
" GROUP BY crs_grp_types.GrpTypCod"
|
||||||
" ORDER BY crs_grp_types.GrpTypName",
|
" ORDER BY crs_grp_types.GrpTypName",
|
||||||
Gbl.Hierarchy.Crs.CrsCod);
|
Gbl.Hierarchy.Crs.CrsCod);
|
||||||
|
@ -2775,23 +2781,31 @@ 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,crs_grp_types.GrpTypName AS GrpTypName,"
|
"(SELECT crs_grp_types.GrpTypCod,"
|
||||||
"crs_grp_types.Mandatory,crs_grp_types.Multiple,"
|
"crs_grp_types.GrpTypName AS GrpTypName,"
|
||||||
"crs_grp_types.MustBeOpened,"
|
"crs_grp_types.Mandatory,"
|
||||||
"UNIX_TIMESTAMP(crs_grp_types.OpenTime),"
|
"crs_grp_types.Multiple,"
|
||||||
"COUNT(crs_grp.GrpCod)"
|
"crs_grp_types.MustBeOpened,"
|
||||||
" FROM crs_grp_types,crs_grp"
|
"UNIX_TIMESTAMP(crs_grp_types.OpenTime),"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
"COUNT(grp_groups.GrpCod)"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" FROM crs_grp_types,"
|
||||||
" GROUP BY crs_grp_types.GrpTypCod)"
|
"grp_groups"
|
||||||
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
|
" GROUP BY crs_grp_types.GrpTypCod)"
|
||||||
" UNION "
|
" UNION "
|
||||||
"(SELECT GrpTypCod,GrpTypName,"
|
"(SELECT GrpTypCod,"
|
||||||
"Mandatory,Multiple,"
|
"GrpTypName,"
|
||||||
"MustBeOpened,"
|
"Mandatory,"
|
||||||
"UNIX_TIMESTAMP(OpenTime),"
|
"Multiple,"
|
||||||
"0"
|
"MustBeOpened,"
|
||||||
" FROM crs_grp_types WHERE CrsCod=%ld"
|
"UNIX_TIMESTAMP(OpenTime),"
|
||||||
" AND GrpTypCod NOT IN (SELECT GrpTypCod FROM crs_grp))"
|
"0"
|
||||||
|
" FROM crs_grp_types"
|
||||||
|
" WHERE CrsCod=%ld"
|
||||||
|
" AND GrpTypCod NOT IN"
|
||||||
|
" (SELECT GrpTypCod"
|
||||||
|
" FROM grp_groups))"
|
||||||
" ORDER BY GrpTypName",
|
" ORDER BY GrpTypName",
|
||||||
Gbl.Hierarchy.Crs.CrsCod,
|
Gbl.Hierarchy.Crs.CrsCod,
|
||||||
Gbl.Hierarchy.Crs.CrsCod);
|
Gbl.Hierarchy.Crs.CrsCod);
|
||||||
|
@ -2887,13 +2901,16 @@ void Grp_OpenGroupsAutomatically (void)
|
||||||
/***** Open all the closed groups in this course the must be opened
|
/***** Open all the closed groups in this course the must be opened
|
||||||
and with open time in the past ****/
|
and with open time in the past ****/
|
||||||
DB_QueryUPDATE ("can not open groups",
|
DB_QueryUPDATE ("can not open groups",
|
||||||
"UPDATE crs_grp SET Open='Y'"
|
"UPDATE grp_groups"
|
||||||
" WHERE GrpTypCod=%ld AND Open='N'",
|
" SET Open='Y'"
|
||||||
|
" WHERE GrpTypCod=%ld"
|
||||||
|
" AND Open='N'",
|
||||||
GrpTypCod);
|
GrpTypCod);
|
||||||
|
|
||||||
/***** 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 SET MustBeOpened='N'"
|
"UPDATE crs_grp_types"
|
||||||
|
" SET MustBeOpened='N'"
|
||||||
" WHERE GrpTypCod=%ld",
|
" WHERE GrpTypCod=%ld",
|
||||||
GrpTypCod);
|
GrpTypCod);
|
||||||
}
|
}
|
||||||
|
@ -3036,9 +3053,11 @@ unsigned Grp_CountNumGrpsInCurrentCrs (void)
|
||||||
/***** Get number of group in current course from database *****/
|
/***** Get number of group in current course from database *****/
|
||||||
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(*) FROM crs_grp_types,crs_grp"
|
"SELECT COUNT(*)"
|
||||||
|
" FROM crs_grp_types,"
|
||||||
|
"grp_groups"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod",
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod",
|
||||||
Gbl.Hierarchy.Crs.CrsCod);
|
Gbl.Hierarchy.Crs.CrsCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3051,7 +3070,8 @@ static unsigned Grp_CountNumGrpsInThisCrsOfType (long GrpTypCod)
|
||||||
/***** Get number of groups of a type from database *****/
|
/***** Get number of groups of a type from database *****/
|
||||||
return
|
return
|
||||||
(unsigned) DB_QueryCOUNT ("can not get number of groups of a type",
|
(unsigned) DB_QueryCOUNT ("can not get number of groups of a type",
|
||||||
"SELECT COUNT(*) FROM crs_grp"
|
"SELECT COUNT(*)"
|
||||||
|
" FROM grp_groups"
|
||||||
" WHERE GrpTypCod=%ld",
|
" WHERE GrpTypCod=%ld",
|
||||||
GrpTypCod);
|
GrpTypCod);
|
||||||
}
|
}
|
||||||
|
@ -3065,18 +3085,18 @@ unsigned long Grp_GetGrpsOfType (long GrpTypCod,MYSQL_RES **mysql_res)
|
||||||
/***** Get groups of a type from database *****/
|
/***** Get groups of a type from database *****/
|
||||||
// Don't use INNER JOIN because there are groups without assigned room
|
// Don't use INNER JOIN because there are groups without assigned room
|
||||||
return DB_QuerySELECT (mysql_res,"can not get groups of a type",
|
return DB_QuerySELECT (mysql_res,"can not get groups of a type",
|
||||||
"SELECT crs_grp.GrpCod,"
|
"SELECT grp_groups.GrpCod,"
|
||||||
"crs_grp.GrpName,"
|
"grp_groups.GrpName,"
|
||||||
"crs_grp.RooCod,"
|
"grp_groups.RooCod,"
|
||||||
"roo_rooms.ShortName,"
|
"roo_rooms.ShortName,"
|
||||||
"crs_grp.MaxStudents,"
|
"grp_groups.MaxStudents,"
|
||||||
"crs_grp.Open,"
|
"grp_groups.Open,"
|
||||||
"crs_grp.FileZones"
|
"grp_groups.FileZones"
|
||||||
" FROM crs_grp"
|
" FROM grp_groups"
|
||||||
" LEFT JOIN roo_rooms"
|
" LEFT JOIN roo_rooms"
|
||||||
" ON crs_grp.RooCod=roo_rooms.RooCod"
|
" ON grp_groups.RooCod=roo_rooms.RooCod"
|
||||||
" WHERE crs_grp.GrpTypCod=%ld"
|
" WHERE grp_groups.GrpTypCod=%ld"
|
||||||
" ORDER BY crs_grp.GrpName",
|
" ORDER BY grp_groups.GrpName",
|
||||||
GrpTypCod);
|
GrpTypCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3169,22 +3189,22 @@ 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 crs_grp.GrpTypCod," // row[0]
|
"SELECT grp_groups.GrpTypCod," // row[0]
|
||||||
"crs_grp_types.CrsCod," // row[1]
|
"crs_grp_types.CrsCod," // row[1]
|
||||||
"crs_grp_types.GrpTypName," // row[2]
|
"crs_grp_types.GrpTypName," // row[2]
|
||||||
"crs_grp_types.Multiple," // row[3]
|
"crs_grp_types.Multiple," // row[3]
|
||||||
"crs_grp.GrpName," // row[4]
|
"grp_groups.GrpName," // row[4]
|
||||||
"crs_grp.RooCod," // row[5]
|
"grp_groups.RooCod," // row[5]
|
||||||
"roo_rooms.ShortName," // row[6]
|
"roo_rooms.ShortName," // row[6]
|
||||||
"crs_grp.MaxStudents," // row[7]
|
"grp_groups.MaxStudents," // row[7]
|
||||||
"crs_grp.Open," // row[8]
|
"grp_groups.Open," // row[8]
|
||||||
"crs_grp.FileZones" // row[9]
|
"grp_groups.FileZones" // row[9]
|
||||||
" FROM (crs_grp,"
|
" FROM (grp_groups,"
|
||||||
"crs_grp_types)"
|
"crs_grp_types)"
|
||||||
" LEFT JOIN roo_rooms"
|
" LEFT JOIN roo_rooms"
|
||||||
" ON crs_grp.RooCod=roo_rooms.RooCod"
|
" ON grp_groups.RooCod=roo_rooms.RooCod"
|
||||||
" WHERE crs_grp.GrpCod=%ld"
|
" WHERE grp_groups.GrpCod=%ld"
|
||||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod",
|
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod",
|
||||||
GrpDat->GrpCod);
|
GrpDat->GrpCod);
|
||||||
|
|
||||||
if (NumRows == 1)
|
if (NumRows == 1)
|
||||||
|
@ -3247,7 +3267,7 @@ static long Grp_GetTypeOfGroupOfAGroup (long GrpCod)
|
||||||
/***** Get data of a group from database *****/
|
/***** Get data of a group from database *****/
|
||||||
if (DB_QuerySELECT (&mysql_res,"can not get the type of a group",
|
if (DB_QuerySELECT (&mysql_res,"can not get the type of a group",
|
||||||
"SELECT GrpTypCod"
|
"SELECT GrpTypCod"
|
||||||
" FROM crs_grp"
|
" FROM grp_groups"
|
||||||
" WHERE GrpCod=%ld",
|
" WHERE GrpCod=%ld",
|
||||||
GrpCod) != 1)
|
GrpCod) != 1)
|
||||||
Lay_ShowErrorAndExit ("Error when getting group.");
|
Lay_ShowErrorAndExit ("Error when getting group.");
|
||||||
|
@ -3272,7 +3292,8 @@ bool Grp_CheckIfGroupExists (long GrpCod)
|
||||||
{
|
{
|
||||||
/***** Get if a group exists from database *****/
|
/***** Get if a group exists from database *****/
|
||||||
return (DB_QueryCOUNT ("can not check if a group exists",
|
return (DB_QueryCOUNT ("can not check if a group exists",
|
||||||
"SELECT COUNT(*) FROM crs_grp"
|
"SELECT COUNT(*)"
|
||||||
|
" FROM grp_groups"
|
||||||
" WHERE GrpCod=%ld",
|
" WHERE GrpCod=%ld",
|
||||||
GrpCod) != 0);
|
GrpCod) != 0);
|
||||||
}
|
}
|
||||||
|
@ -3285,10 +3306,12 @@ bool Grp_CheckIfGroupBelongsToCourse (long GrpCod,long CrsCod)
|
||||||
{
|
{
|
||||||
/***** Get if a group exists from database *****/
|
/***** Get if a group exists from database *****/
|
||||||
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(*) FROM crs_grp,crs_grp_types"
|
"SELECT COUNT(*)"
|
||||||
" WHERE crs_grp.GrpCod=%ld"
|
" FROM grp_groups,"
|
||||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
"crs_grp_types"
|
||||||
" AND crs_grp_types.CrsCod=%ld",
|
" WHERE grp_groups.GrpCod=%ld"
|
||||||
|
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||||
|
" AND crs_grp_types.CrsCod=%ld",
|
||||||
GrpCod,CrsCod) != 0);
|
GrpCod,CrsCod) != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3303,12 +3326,12 @@ unsigned Grp_CountNumUsrsInGrp (Rol_Role_t Role,long GrpCod)
|
||||||
(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 crs_grp_usr,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"crs_grp_types,"
|
"crs_grp_types,"
|
||||||
"crs_users"
|
"crs_users"
|
||||||
" WHERE crs_grp_usr.GrpCod=%ld"
|
" WHERE crs_grp_usr.GrpCod=%ld"
|
||||||
" AND crs_grp_usr.GrpCod=crs_grp.GrpCod"
|
" AND crs_grp_usr.GrpCod=grp_groups.GrpCod"
|
||||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||||
" AND crs_grp_types.CrsCod=crs_users.CrsCod"
|
" AND crs_grp_types.CrsCod=crs_users.CrsCod"
|
||||||
" AND crs_grp_usr.UsrCod=crs_users.UsrCod"
|
" AND crs_grp_usr.UsrCod=crs_users.UsrCod"
|
||||||
" AND crs_users.Role=%u",
|
" AND crs_users.Role=%u",
|
||||||
|
@ -3330,10 +3353,10 @@ static unsigned long Grp_CountNumUsrsInNoGrpsOfType (Rol_Role_t Role,long GrpTyp
|
||||||
" AND Role=%u"
|
" AND Role=%u"
|
||||||
" AND UsrCod NOT IN"
|
" AND UsrCod NOT IN"
|
||||||
" (SELECT DISTINCT crs_grp_usr.UsrCod"
|
" (SELECT DISTINCT crs_grp_usr.UsrCod"
|
||||||
" FROM crs_grp,"
|
" FROM grp_groups,"
|
||||||
"crs_grp_usr"
|
"crs_grp_usr"
|
||||||
" WHERE crs_grp.GrpTypCod=%ld"
|
" WHERE grp_groups.GrpTypCod=%ld"
|
||||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod)",
|
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod)",
|
||||||
Gbl.Hierarchy.Crs.CrsCod,
|
Gbl.Hierarchy.Crs.CrsCod,
|
||||||
(unsigned) Role,GrpTypCod);
|
(unsigned) Role,GrpTypCod);
|
||||||
}
|
}
|
||||||
|
@ -3348,11 +3371,11 @@ 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(crs_grp.GrpCod)"
|
"SELECT COUNT(grp_groups.GrpCod)"
|
||||||
" FROM crs_grp,crs_grp_usr"
|
" FROM grp_groups,crs_grp_usr"
|
||||||
" WHERE crs_grp.GrpTypCod=%ld"
|
" WHERE grp_groups.GrpTypCod=%ld"
|
||||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
|
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||||
" AND crs_grp_usr.UsrCod=%ld", // I belong
|
" AND crs_grp_usr.UsrCod=%ld", // I belong
|
||||||
GrpTypCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
GrpTypCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
|
|
||||||
return (NumGrps != 0);
|
return (NumGrps != 0);
|
||||||
|
@ -3453,15 +3476,18 @@ bool Grp_CheckIfUsrSharesAnyOfMyGrpsInCurrentCrs (const struct UsrData *UsrDat)
|
||||||
Gbl.Cache.UsrSharesAnyOfMyGrpsInCurrentCrs.Shares =
|
Gbl.Cache.UsrSharesAnyOfMyGrpsInCurrentCrs.Shares =
|
||||||
(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(*) FROM crs_grp_usr"
|
"SELECT COUNT(*)"
|
||||||
|
" FROM crs_grp_usr"
|
||||||
" WHERE UsrCod=%ld"
|
" WHERE UsrCod=%ld"
|
||||||
" AND GrpCod IN"
|
" AND GrpCod IN"
|
||||||
" (SELECT crs_grp_usr.GrpCod"
|
" (SELECT crs_grp_usr.GrpCod"
|
||||||
" FROM crs_grp_usr,crs_grp,crs_grp_types"
|
" FROM crs_grp_usr,"
|
||||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
"grp_groups,"
|
||||||
" AND crs_grp_usr.GrpCod=crs_grp.GrpCod"
|
"crs_grp_types"
|
||||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||||
" AND crs_grp_types.CrsCod=%ld)",
|
" AND crs_grp_usr.GrpCod=grp_groups.GrpCod"
|
||||||
|
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||||
|
" AND crs_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);
|
||||||
|
@ -3505,20 +3531,20 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod)
|
||||||
" ("
|
" ("
|
||||||
"SELECT crs_grp_types.GrpTypCod AS GrpTypCod,"
|
"SELECT crs_grp_types.GrpTypCod AS GrpTypCod,"
|
||||||
"COUNT(*) AS NumStudents,"
|
"COUNT(*) AS NumStudents,"
|
||||||
"crs_grp.MaxStudents as MaxStudents"
|
"grp_groups.MaxStudents as MaxStudents"
|
||||||
" FROM crs_grp_types,"
|
" FROM crs_grp_types,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"crs_grp_usr,"
|
"crs_grp_usr,"
|
||||||
"crs_users"
|
"crs_users"
|
||||||
" WHERE %s" // Which group types?
|
" WHERE %s" // Which group types?
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.Open='Y'" // Open
|
" AND grp_groups.Open='Y'" // Open
|
||||||
" AND crs_grp.MaxStudents>0" // Admits students
|
" AND grp_groups.MaxStudents>0" // Admits students
|
||||||
" AND crs_grp_types.CrsCod=crs_users.CrsCod"
|
" AND crs_grp_types.CrsCod=crs_users.CrsCod"
|
||||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
|
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||||
" AND crs_grp_usr.UsrCod=crs_users.UsrCod"
|
" AND crs_grp_usr.UsrCod=crs_users.UsrCod"
|
||||||
" AND crs_users.Role=%u" // Student
|
" AND crs_users.Role=%u" // Student
|
||||||
" GROUP BY crs_grp.GrpCod"
|
" GROUP BY grp_groups.GrpCod"
|
||||||
" HAVING NumStudents<MaxStudents" // Not full
|
" HAVING NumStudents<MaxStudents" // Not full
|
||||||
") AS available_grp_types_with_stds"
|
") AS available_grp_types_with_stds"
|
||||||
|
|
||||||
|
@ -3527,13 +3553,13 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod)
|
||||||
// Available mandatory groups...
|
// Available mandatory groups...
|
||||||
"SELECT crs_grp_types.GrpTypCod AS GrpTypCod"
|
"SELECT crs_grp_types.GrpTypCod AS GrpTypCod"
|
||||||
" FROM crs_grp_types,"
|
" FROM crs_grp_types,"
|
||||||
"crs_grp"
|
"grp_groups"
|
||||||
" WHERE %s" // Which group types?
|
" WHERE %s" // Which group types?
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.Open='Y'" // Open
|
" AND grp_groups.Open='Y'" // Open
|
||||||
" AND crs_grp.MaxStudents>0" // Admits students
|
" AND grp_groups.MaxStudents>0" // Admits students
|
||||||
// ...without students
|
// ...without students
|
||||||
" AND crs_grp.GrpCod NOT IN"
|
" AND grp_groups.GrpCod NOT IN"
|
||||||
" (SELECT crs_grp_usr.GrpCod"
|
" (SELECT crs_grp_usr.GrpCod"
|
||||||
" FROM crs_users,"
|
" FROM crs_users,"
|
||||||
"crs_grp_usr"
|
"crs_grp_usr"
|
||||||
|
@ -3547,13 +3573,13 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod)
|
||||||
" WHERE GrpTypCod NOT IN"
|
" WHERE GrpTypCod NOT IN"
|
||||||
" (SELECT crs_grp_types.GrpTypCod"
|
" (SELECT crs_grp_types.GrpTypCod"
|
||||||
" FROM crs_grp_types,"
|
" FROM crs_grp_types,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"crs_grp_usr"
|
"crs_grp_usr"
|
||||||
" WHERE %s" // Which group types?
|
" WHERE %s" // Which group types?
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.Open='Y'" // Open
|
" AND grp_groups.Open='Y'" // Open
|
||||||
" AND crs_grp.MaxStudents>0" // Admits students
|
" AND grp_groups.MaxStudents>0" // Admits students
|
||||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
|
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||||
" AND crs_grp_usr.UsrCod=%ld)", // I belong
|
" AND crs_grp_usr.UsrCod=%ld)", // I belong
|
||||||
|
|
||||||
SubQueryGrpTypes,(unsigned) Rol_STD,
|
SubQueryGrpTypes,(unsigned) Rol_STD,
|
||||||
|
@ -3593,27 +3619,35 @@ static void Grp_GetLstCodGrpsUsrBelongs (long CrsCod,long GrpTypCod,
|
||||||
LstGrps->NumGrps =
|
LstGrps->NumGrps =
|
||||||
(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 crs_grp.GrpCod"
|
"SELECT grp_groups.GrpCod"
|
||||||
" FROM crs_grp_types,crs_grp,crs_grp_usr"
|
" FROM crs_grp_types,"
|
||||||
|
"grp_groups,"
|
||||||
|
"crs_grp_usr"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
|
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||||
" AND crs_grp_usr.UsrCod=%ld"
|
" AND crs_grp_usr.UsrCod=%ld"
|
||||||
" ORDER BY crs_grp_types.GrpTypName,crs_grp.GrpName",
|
" ORDER BY crs_grp_types.GrpTypName,"
|
||||||
Gbl.Hierarchy.Crs.CrsCod,UsrCod);
|
"grp_groups.GrpName",
|
||||||
|
Gbl.Hierarchy.Crs.CrsCod,
|
||||||
|
UsrCod);
|
||||||
else // Query only the groups of specified type in the course
|
else // Query only the groups of specified type in the course
|
||||||
LstGrps->NumGrps =
|
LstGrps->NumGrps =
|
||||||
(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 crs_grp.GrpCod"
|
"SELECT grp_groups.GrpCod"
|
||||||
" FROM crs_grp_types,crs_grp,crs_grp_usr"
|
" FROM crs_grp_types,"
|
||||||
|
"grp_groups,"
|
||||||
|
"crs_grp_usr"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=%ld"
|
" AND crs_grp_types.GrpTypCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
|
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||||
" AND crs_grp_usr.UsrCod=%ld"
|
" AND crs_grp_usr.UsrCod=%ld"
|
||||||
" ORDER BY crs_grp.GrpName",
|
" ORDER BY grp_groups.GrpName",
|
||||||
Gbl.Hierarchy.Crs.CrsCod,GrpTypCod,UsrCod);
|
Gbl.Hierarchy.Crs.CrsCod,
|
||||||
|
GrpTypCod,
|
||||||
|
UsrCod);
|
||||||
|
|
||||||
/***** Get the groups *****/
|
/***** Get the groups *****/
|
||||||
if (LstGrps->NumGrps)
|
if (LstGrps->NumGrps)
|
||||||
|
@ -3652,14 +3686,17 @@ void Grp_GetLstCodGrpsWithFileZonesIBelong (struct ListCodGrps *LstGrps)
|
||||||
LstGrps->NumGrps =
|
LstGrps->NumGrps =
|
||||||
(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 crs_grp.GrpCod"
|
"SELECT grp_groups.GrpCod"
|
||||||
" FROM crs_grp_types,crs_grp,crs_grp_usr"
|
" FROM crs_grp_types,"
|
||||||
|
"grp_groups,"
|
||||||
|
"crs_grp_usr"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND crs_grp.FileZones='Y'"
|
" AND grp_groups.FileZones='Y'"
|
||||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
|
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||||
" AND crs_grp_usr.UsrCod=%ld"
|
" AND crs_grp_usr.UsrCod=%ld"
|
||||||
" ORDER BY crs_grp_types.GrpTypName,crs_grp.GrpName",
|
" ORDER BY crs_grp_types.GrpTypName,"
|
||||||
|
"grp_groups.GrpName",
|
||||||
Gbl.Hierarchy.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
Gbl.Hierarchy.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
|
|
||||||
/***** Get the groups *****/
|
/***** Get the groups *****/
|
||||||
|
@ -3717,12 +3754,12 @@ void Grp_GetNamesGrpsStdBelongsTo (long GrpTypCod,long UsrCod,char *GroupNames)
|
||||||
/***** Get the names of groups which a user belongs to, from database *****/
|
/***** Get the names of groups which a user belongs to, from database *****/
|
||||||
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 crs_grp.GrpName"
|
"SELECT grp_groups.GrpName"
|
||||||
" FROM crs_grp,crs_grp_usr"
|
" FROM grp_groups,crs_grp_usr"
|
||||||
" WHERE crs_grp.GrpTypCod=%ld"
|
" WHERE grp_groups.GrpTypCod=%ld"
|
||||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
|
" AND grp_groups.GrpCod=crs_grp_usr.GrpCod"
|
||||||
" AND crs_grp_usr.UsrCod=%ld"
|
" AND crs_grp_usr.UsrCod=%ld"
|
||||||
" ORDER BY crs_grp.GrpName",
|
" ORDER BY grp_groups.GrpName",
|
||||||
GrpTypCod,UsrCod);
|
GrpTypCod,UsrCod);
|
||||||
|
|
||||||
/***** Get the groups *****/
|
/***** Get the groups *****/
|
||||||
|
@ -3909,10 +3946,11 @@ static bool Grp_CheckIfGroupNameExists (long GrpTypCod,const char *GrpName,long
|
||||||
{
|
{
|
||||||
/***** Get number of groups with a type and a name from database *****/
|
/***** Get number of groups with a type and a name from database *****/
|
||||||
return (DB_QueryCOUNT ("can not check if the name of group already existed",
|
return (DB_QueryCOUNT ("can not check if the name of group already existed",
|
||||||
"SELECT COUNT(*) FROM crs_grp"
|
"SELECT COUNT(*)"
|
||||||
|
" FROM grp_groups"
|
||||||
" WHERE GrpTypCod=%ld"
|
" WHERE GrpTypCod=%ld"
|
||||||
" AND GrpName='%s'"
|
" AND GrpName='%s'"
|
||||||
" AND GrpCod<>%ld",
|
" AND GrpCod<>%ld",
|
||||||
GrpTypCod,GrpName,GrpCod) != 0);
|
GrpTypCod,GrpName,GrpCod) != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3947,7 +3985,7 @@ static void Grp_CreateGroup (void)
|
||||||
{
|
{
|
||||||
/***** Create a new group *****/
|
/***** Create a new group *****/
|
||||||
DB_QueryINSERT ("can not create group",
|
DB_QueryINSERT ("can not create group",
|
||||||
"INSERT INTO crs_grp"
|
"INSERT INTO grp_groups"
|
||||||
" (GrpTypCod,GrpName,RooCod,MaxStudents,Open,FileZones)"
|
" (GrpTypCod,GrpName,RooCod,MaxStudents,Open,FileZones)"
|
||||||
" VALUES"
|
" VALUES"
|
||||||
" (%ld,'%s',%ld,%u,'N','N')",
|
" (%ld,'%s',%ld,%u,'N','N')",
|
||||||
|
@ -4134,24 +4172,29 @@ static void Grp_RemoveGroupTypeCompletely (void)
|
||||||
" SET GrpCod=-1"
|
" SET GrpCod=-1"
|
||||||
" WHERE GrpCod IN"
|
" WHERE GrpCod IN"
|
||||||
" (SELECT GrpCod"
|
" (SELECT GrpCod"
|
||||||
" FROM crs_grp"
|
" FROM grp_groups"
|
||||||
" WHERE GrpTypCod=%ld)",
|
" WHERE GrpTypCod=%ld)",
|
||||||
Gbl.Crs.Grps.GrpTyp.GrpTypCod);
|
Gbl.Crs.Grps.GrpTyp.GrpTypCod);
|
||||||
|
|
||||||
/***** 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 WHERE GrpCod IN"
|
"DELETE FROM crs_grp_usr"
|
||||||
" (SELECT GrpCod FROM crs_grp WHERE GrpTypCod=%ld)",
|
" WHERE GrpCod IN"
|
||||||
|
" (SELECT GrpCod"
|
||||||
|
" FROM grp_groups"
|
||||||
|
" WHERE GrpTypCod=%ld)",
|
||||||
Gbl.Crs.Grps.GrpTyp.GrpTypCod);
|
Gbl.Crs.Grps.GrpTyp.GrpTypCod);
|
||||||
|
|
||||||
/***** Remove all the groups of this type *****/
|
/***** Remove all the groups of this type *****/
|
||||||
DB_QueryDELETE ("can not remove groups of a type",
|
DB_QueryDELETE ("can not remove groups of a type",
|
||||||
"DELETE FROM crs_grp WHERE GrpTypCod=%ld",
|
"DELETE FROM grp_groups"
|
||||||
|
" WHERE GrpTypCod=%ld",
|
||||||
Gbl.Crs.Grps.GrpTyp.GrpTypCod);
|
Gbl.Crs.Grps.GrpTyp.GrpTypCod);
|
||||||
|
|
||||||
/***** 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 WHERE GrpTypCod=%ld",
|
"DELETE FROM crs_grp_types"
|
||||||
|
" WHERE GrpTypCod=%ld",
|
||||||
Gbl.Crs.Grps.GrpTyp.GrpTypCod);
|
Gbl.Crs.Grps.GrpTyp.GrpTypCod);
|
||||||
|
|
||||||
/***** Create message to show the change made *****/
|
/***** Create message to show the change made *****/
|
||||||
|
@ -4206,7 +4249,8 @@ static void Grp_RemoveGroupCompletely (void)
|
||||||
|
|
||||||
/***** Remove the group *****/
|
/***** Remove the group *****/
|
||||||
DB_QueryDELETE ("can not remove a group",
|
DB_QueryDELETE ("can not remove a group",
|
||||||
"DELETE FROM crs_grp WHERE GrpCod=%ld",
|
"DELETE FROM grp_groups"
|
||||||
|
" WHERE GrpCod=%ld",
|
||||||
Gbl.Crs.Grps.GrpCod);
|
Gbl.Crs.Grps.GrpCod);
|
||||||
|
|
||||||
/***** Create message to show the change made *****/
|
/***** Create message to show the change made *****/
|
||||||
|
@ -4238,7 +4282,9 @@ void Grp_OpenGroup (void)
|
||||||
|
|
||||||
/***** Update the table of groups changing open/close status *****/
|
/***** Update the table of groups changing open/close status *****/
|
||||||
DB_QueryUPDATE ("can not open a group",
|
DB_QueryUPDATE ("can not open a group",
|
||||||
"UPDATE crs_grp SET Open='Y' WHERE GrpCod=%ld",
|
"UPDATE grp_groups"
|
||||||
|
" SET Open='Y'"
|
||||||
|
" WHERE GrpCod=%ld",
|
||||||
Gbl.Crs.Grps.GrpCod);
|
Gbl.Crs.Grps.GrpCod);
|
||||||
|
|
||||||
/***** Create message to show the change made *****/
|
/***** Create message to show the change made *****/
|
||||||
|
@ -4271,7 +4317,9 @@ void Grp_CloseGroup (void)
|
||||||
|
|
||||||
/***** Update the table of groups changing open/close status *****/
|
/***** Update the table of groups changing open/close status *****/
|
||||||
DB_QueryUPDATE ("can not close a group",
|
DB_QueryUPDATE ("can not close a group",
|
||||||
"UPDATE crs_grp SET Open='N' WHERE GrpCod=%ld",
|
"UPDATE grp_groups"
|
||||||
|
" SET Open='N'"
|
||||||
|
" WHERE GrpCod=%ld",
|
||||||
Gbl.Crs.Grps.GrpCod);
|
Gbl.Crs.Grps.GrpCod);
|
||||||
|
|
||||||
/***** Create message to show the change made *****/
|
/***** Create message to show the change made *****/
|
||||||
|
@ -4304,7 +4352,9 @@ void Grp_EnableFileZonesGrp (void)
|
||||||
|
|
||||||
/***** Update the table of groups changing file zones status *****/
|
/***** Update the table of groups changing file zones status *****/
|
||||||
DB_QueryUPDATE ("can not enable file zones of a group",
|
DB_QueryUPDATE ("can not enable file zones of a group",
|
||||||
"UPDATE crs_grp SET FileZones='Y' WHERE GrpCod=%ld",
|
"UPDATE grp_groups"
|
||||||
|
" SET FileZones='Y'"
|
||||||
|
" WHERE GrpCod=%ld",
|
||||||
Gbl.Crs.Grps.GrpCod);
|
Gbl.Crs.Grps.GrpCod);
|
||||||
|
|
||||||
/***** Create message to show the change made *****/
|
/***** Create message to show the change made *****/
|
||||||
|
@ -4338,7 +4388,9 @@ void Grp_DisableFileZonesGrp (void)
|
||||||
|
|
||||||
/***** Update the table of groups changing file zones status *****/
|
/***** Update the table of groups changing file zones status *****/
|
||||||
DB_QueryUPDATE ("can not disable file zones of a group",
|
DB_QueryUPDATE ("can not disable file zones of a group",
|
||||||
"UPDATE crs_grp SET FileZones='N' WHERE GrpCod=%ld",
|
"UPDATE grp_groups"
|
||||||
|
" SET FileZones='N'"
|
||||||
|
" WHERE GrpCod=%ld",
|
||||||
Gbl.Crs.Grps.GrpCod);
|
Gbl.Crs.Grps.GrpCod);
|
||||||
|
|
||||||
/***** Create message to show the change made *****/
|
/***** Create message to show the change made *****/
|
||||||
|
@ -4389,7 +4441,9 @@ void Grp_ChangeGroupType (void)
|
||||||
{
|
{
|
||||||
/* Update the table of groups changing old type by new type */
|
/* Update the table of groups changing old type by new type */
|
||||||
DB_QueryUPDATE ("can not update the type of a group",
|
DB_QueryUPDATE ("can not update the type of a group",
|
||||||
"UPDATE crs_grp SET GrpTypCod=%ld WHERE GrpCod=%ld",
|
"UPDATE grp_groups"
|
||||||
|
" SET GrpTypCod=%ld"
|
||||||
|
" WHERE GrpCod=%ld",
|
||||||
NewGrpTypCod,Gbl.Crs.Grps.GrpCod);
|
NewGrpTypCod,Gbl.Crs.Grps.GrpCod);
|
||||||
|
|
||||||
/* Create message to show the change made */
|
/* Create message to show the change made */
|
||||||
|
@ -4431,7 +4485,9 @@ void Grp_ChangeGroupRoom (void)
|
||||||
|
|
||||||
/***** Update the table of groups changing old room by new room *****/
|
/***** Update the table of groups changing old room by new room *****/
|
||||||
DB_QueryUPDATE ("can not update the room of a group",
|
DB_QueryUPDATE ("can not update the room of a group",
|
||||||
"UPDATE crs_grp SET RooCod=%ld WHERE GrpCod=%ld",
|
"UPDATE grp_groups"
|
||||||
|
" SET RooCod=%ld"
|
||||||
|
" WHERE GrpCod=%ld",
|
||||||
NewRooCod,Gbl.Crs.Grps.GrpCod);
|
NewRooCod,Gbl.Crs.Grps.GrpCod);
|
||||||
|
|
||||||
/* Create message to show the change made */
|
/* Create message to show the change made */
|
||||||
|
@ -4642,7 +4698,9 @@ void Grp_ChangeMaxStdsGrp (void)
|
||||||
/***** Update the table of groups changing the old maximum of students to the new *****/
|
/***** Update the table of groups changing the old maximum of students to the new *****/
|
||||||
DB_QueryUPDATE ("can not update the maximum number of students"
|
DB_QueryUPDATE ("can not update the maximum number of students"
|
||||||
" in a group",
|
" in a group",
|
||||||
"UPDATE crs_grp SET MaxStudents=%u WHERE GrpCod=%ld",
|
"UPDATE grp_groups"
|
||||||
|
" SET MaxStudents=%u"
|
||||||
|
" WHERE GrpCod=%ld",
|
||||||
NewMaxStds,Gbl.Crs.Grps.GrpCod);
|
NewMaxStds,Gbl.Crs.Grps.GrpCod);
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
|
@ -4818,7 +4876,9 @@ void Grp_RenameGroup (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 name of a group",
|
DB_QueryUPDATE ("can not update the name of a group",
|
||||||
"UPDATE crs_grp SET GrpName='%s' WHERE GrpCod=%ld",
|
"UPDATE grp_groups"
|
||||||
|
" SET GrpName='%s'"
|
||||||
|
" WHERE GrpCod=%ld",
|
||||||
NewNameGrp,Gbl.Crs.Grps.GrpCod);
|
NewNameGrp,Gbl.Crs.Grps.GrpCod);
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
|
|
|
@ -1495,12 +1495,12 @@ static unsigned long Ind_GetNumFilesInDocumZonesOfCrsFromDB (long CrsCod)
|
||||||
" 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 crs_grp_types,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"brw_sizes"
|
"brw_sizes"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND brw_sizes.FileBrowser=%u"
|
" AND brw_sizes.FileBrowser=%u"
|
||||||
" AND brw_sizes.Cod=crs_grp.GrpCod)",
|
" AND brw_sizes.Cod=grp_groups.GrpCod)",
|
||||||
(unsigned) Brw_FileBrowserForDB_files[Brw_ADMI_DOC_CRS],
|
(unsigned) Brw_FileBrowserForDB_files[Brw_ADMI_DOC_CRS],
|
||||||
CrsCod,
|
CrsCod,
|
||||||
CrsCod,
|
CrsCod,
|
||||||
|
@ -1538,12 +1538,12 @@ static unsigned long Ind_GetNumFilesInShareZonesOfCrsFromDB (long CrsCod)
|
||||||
" 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 crs_grp_types,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"brw_sizes"
|
"brw_sizes"
|
||||||
" WHERE crs_grp_types.CrsCod=%ld"
|
" WHERE crs_grp_types.CrsCod=%ld"
|
||||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
" AND crs_grp_types.GrpTypCod=grp_groups.GrpTypCod"
|
||||||
" AND brw_sizes.FileBrowser=%u"
|
" AND brw_sizes.FileBrowser=%u"
|
||||||
" AND brw_sizes.Cod=crs_grp.GrpCod)",
|
" AND brw_sizes.Cod=grp_groups.GrpCod)",
|
||||||
(unsigned) Brw_FileBrowserForDB_files[Brw_ADMI_SHR_CRS],
|
(unsigned) Brw_FileBrowserForDB_files[Brw_ADMI_SHR_CRS],
|
||||||
CrsCod,
|
CrsCod,
|
||||||
CrsCod,
|
CrsCod,
|
||||||
|
|
21
swad_match.c
21
swad_match.c
|
@ -766,12 +766,16 @@ 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,crs_grp.GrpName"
|
"SELECT crs_grp_types.GrpTypName,"
|
||||||
" FROM mch_groups,crs_grp,crs_grp_types"
|
"grp_groups.GrpName"
|
||||||
|
" FROM mch_groups,"
|
||||||
|
"grp_groups,"
|
||||||
|
"crs_grp_types"
|
||||||
" WHERE mch_groups.MchCod=%ld"
|
" WHERE mch_groups.MchCod=%ld"
|
||||||
" AND mch_groups.GrpCod=crs_grp.GrpCod"
|
" AND mch_groups.GrpCod=grp_groups.GrpCod"
|
||||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||||
" ORDER BY crs_grp_types.GrpTypName,crs_grp.GrpName",
|
" ORDER BY crs_grp_types.GrpTypName,"
|
||||||
|
"grp_groups.GrpName",
|
||||||
Match->MchCod);
|
Match->MchCod);
|
||||||
|
|
||||||
/***** Write heading *****/
|
/***** Write heading *****/
|
||||||
|
@ -1970,9 +1974,10 @@ void Mch_RemoveGroupsOfType (long GrpTypCod)
|
||||||
DB_QueryDELETE ("can not remove groups of a type"
|
DB_QueryDELETE ("can not remove groups of a type"
|
||||||
" from the associations between matches and groups",
|
" from the associations between matches and groups",
|
||||||
"DELETE FROM mch_groups"
|
"DELETE FROM mch_groups"
|
||||||
" USING crs_grp,mch_groups"
|
" USING grp_groups,"
|
||||||
" WHERE crs_grp.GrpTypCod=%ld"
|
"mch_groups"
|
||||||
" AND crs_grp.GrpCod=mch_groups.GrpCod",
|
" WHERE grp_groups.GrpTypCod=%ld"
|
||||||
|
" AND grp_groups.GrpCod=mch_groups.GrpCod",
|
||||||
GrpTypCod);
|
GrpTypCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1256,13 +1256,13 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
|
||||||
" to be notified",
|
" to be notified",
|
||||||
"SELECT crs_grp_usr.UsrCod" // row[0]
|
"SELECT crs_grp_usr.UsrCod" // row[0]
|
||||||
" FROM crs_grp_usr,"
|
" FROM crs_grp_usr,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"crs_grp_types,"
|
"crs_grp_types,"
|
||||||
"crs_users"
|
"crs_users"
|
||||||
" WHERE crs_grp_usr.GrpCod=%ld"
|
" WHERE crs_grp_usr.GrpCod=%ld"
|
||||||
" AND crs_grp_usr.UsrCod<>%ld"
|
" AND crs_grp_usr.UsrCod<>%ld"
|
||||||
" AND crs_grp_usr.GrpCod=crs_grp.GrpCod"
|
" AND crs_grp_usr.GrpCod=grp_groups.GrpCod"
|
||||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||||
" AND crs_grp_types.CrsCod=crs_users.CrsCod"
|
" AND crs_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,
|
||||||
|
|
|
@ -1018,7 +1018,8 @@ void Roo_RemoveRoom (void)
|
||||||
|
|
||||||
/***** Update groups assigned to this room *****/
|
/***** Update groups assigned to this room *****/
|
||||||
DB_QueryUPDATE ("can not update room in groups",
|
DB_QueryUPDATE ("can not update room in groups",
|
||||||
"UPDATE crs_grp SET RooCod=0" // 0 means another room
|
"UPDATE grp_groups"
|
||||||
|
" SET RooCod=0" // 0 means another room
|
||||||
" WHERE RooCod=%ld",
|
" WHERE RooCod=%ld",
|
||||||
Roo_EditingRoom->RooCod);
|
Roo_EditingRoom->RooCod);
|
||||||
|
|
||||||
|
|
|
@ -932,9 +932,9 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
|
||||||
"deg_degrees.ShortName AS DegShortName,"
|
"deg_degrees.ShortName AS DegShortName,"
|
||||||
"crs_courses.CrsCod,"
|
"crs_courses.CrsCod,"
|
||||||
"crs_courses.ShortName AS CrsShortName,"
|
"crs_courses.ShortName AS CrsShortName,"
|
||||||
"crs_grp.GrpCod"
|
"grp_groups.GrpCod"
|
||||||
" FROM brw_files,"
|
" FROM brw_files,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"crs_grp_types,"
|
"crs_grp_types,"
|
||||||
"crs_courses,"
|
"crs_courses,"
|
||||||
"deg_degrees,"
|
"deg_degrees,"
|
||||||
|
@ -944,8 +944,8 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
|
||||||
" WHERE brw_files.FilCod IN (SELECT FilCod FROM my_files_grp)"
|
" WHERE brw_files.FilCod IN (SELECT FilCod FROM my_files_grp)"
|
||||||
" 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=crs_grp.GrpCod"
|
" AND brw_files.Cod=grp_groups.GrpCod"
|
||||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||||
" AND crs_grp_types.CrsCod=crs_courses.CrsCod"
|
" AND crs_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"
|
||||||
|
@ -1121,9 +1121,9 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
|
||||||
"deg_degrees.ShortName AS DegShortName,"
|
"deg_degrees.ShortName AS DegShortName,"
|
||||||
"crs_courses.CrsCod,"
|
"crs_courses.CrsCod,"
|
||||||
"crs_courses.ShortName AS CrsShortName,"
|
"crs_courses.ShortName AS CrsShortName,"
|
||||||
"crs_grp.GrpCod"
|
"grp_groups.GrpCod"
|
||||||
" FROM brw_files,"
|
" FROM brw_files,"
|
||||||
"crs_grp,"
|
"grp_groups,"
|
||||||
"crs_grp_types,"
|
"crs_grp_types,"
|
||||||
"crs_courses,"
|
"crs_courses,"
|
||||||
"deg_degrees,"
|
"deg_degrees,"
|
||||||
|
@ -1133,8 +1133,8 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
|
||||||
" WHERE brw_files.PublisherUsrCod=%ld"
|
" WHERE brw_files.PublisherUsrCod=%ld"
|
||||||
" 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=crs_grp.GrpCod"
|
" AND brw_files.Cod=grp_groups.GrpCod"
|
||||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||||
" AND crs_grp_types.CrsCod=crs_courses.CrsCod"
|
" AND crs_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"
|
||||||
|
|
|
@ -2451,10 +2451,10 @@ void Svy_RemoveGroupsOfType (long GrpTypCod)
|
||||||
DB_QueryDELETE ("can not remove groups of a type"
|
DB_QueryDELETE ("can not remove groups of a type"
|
||||||
" from the associations between surveys and groups",
|
" from the associations between surveys and groups",
|
||||||
"DELETE FROM svy_groups"
|
"DELETE FROM svy_groups"
|
||||||
" USING crs_grp,"
|
" USING grp_groups,"
|
||||||
"svy_groups"
|
"svy_groups"
|
||||||
" WHERE crs_grp.GrpTypCod=%ld"
|
" WHERE grp_groups.GrpTypCod=%ld"
|
||||||
" AND crs_grp.GrpCod=svy_groups.GrpCod",
|
" AND grp_groups.GrpCod=svy_groups.GrpCod",
|
||||||
GrpTypCod);
|
GrpTypCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2497,13 +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 crs_grp_types.GrpTypName,"
|
||||||
"crs_grp.GrpName"
|
"grp_groups.GrpName"
|
||||||
" FROM svy_groups,crs_grp,crs_grp_types"
|
" FROM svy_groups,"
|
||||||
|
"grp_groups,"
|
||||||
|
"crs_grp_types"
|
||||||
" WHERE svy_groups.SvyCod=%ld"
|
" WHERE svy_groups.SvyCod=%ld"
|
||||||
" AND svy_groups.GrpCod=crs_grp.GrpCod"
|
" AND svy_groups.GrpCod=grp_groups.GrpCod"
|
||||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
" AND grp_groups.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||||
" ORDER BY crs_grp_types.GrpTypName,"
|
" ORDER BY crs_grp_types.GrpTypName,"
|
||||||
"crs_grp.GrpName",
|
"grp_groups.GrpName",
|
||||||
Svy->SvyCod);
|
Svy->SvyCod);
|
||||||
|
|
||||||
/***** Write heading *****/
|
/***** Write heading *****/
|
||||||
|
|
|
@ -4554,14 +4554,14 @@ static void Usr_BuildQueryToGetUsrsLstCrs (char **Query,Rol_Role_t Role)
|
||||||
/* 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 crs_grp_usr.UsrCod"
|
||||||
" FROM crs_grp,"
|
" FROM grp_groups,"
|
||||||
"crs_grp_usr"
|
"crs_grp_usr"
|
||||||
" WHERE crs_grp.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 crs_grp.GrpCod=crs_grp_usr.GrpCod)",
|
Str_Concat (*Query,"' AND grp_groups.GrpCod=crs_grp_usr.GrpCod)",
|
||||||
Usr_MAX_BYTES_QUERY_GET_LIST_USRS);
|
Usr_MAX_BYTES_QUERY_GET_LIST_USRS);
|
||||||
NumNegativeCods++;
|
NumNegativeCods++;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue