mirror of https://github.com/acanas/swad-core.git
Version 16.155.5
This commit is contained in:
parent
0056a531e2
commit
58cfa4c66c
|
@ -266,7 +266,7 @@ CREATE TABLE IF NOT EXISTS courses (
|
|||
CREATE TABLE IF NOT EXISTS crs_grp (
|
||||
GrpCod INT NOT NULL AUTO_INCREMENT,
|
||||
GrpTypCod INT NOT NULL,
|
||||
GrpName VARCHAR(255) NOT NULL,
|
||||
GrpName VARCHAR(2047) NOT NULL,
|
||||
MaxStudents INT NOT NULL,
|
||||
Open ENUM('N','Y') NOT NULL DEFAULT 'N',
|
||||
FileZones ENUM('N','Y') NOT NULL DEFAULT 'N',
|
||||
|
@ -278,7 +278,7 @@ CREATE TABLE IF NOT EXISTS crs_grp (
|
|||
CREATE TABLE IF NOT EXISTS crs_grp_types (
|
||||
GrpTypCod INT NOT NULL AUTO_INCREMENT,
|
||||
CrsCod INT NOT NULL DEFAULT -1,
|
||||
GrpTypName VARCHAR(255) NOT NULL,
|
||||
GrpTypName VARCHAR(2047) NOT NULL,
|
||||
Mandatory ENUM('N','Y') NOT NULL,
|
||||
Multiple ENUM('N','Y') NOT NULL,
|
||||
MustBeOpened ENUM('N','Y') NOT NULL DEFAULT 'N',
|
||||
|
|
|
@ -207,13 +207,18 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 16.155.4 (2017-03-10)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 16.155.5 (2017-03-11)"
|
||||
#define CSS_FILE "swad16.147.css"
|
||||
#define JS_FILE "swad16.144.js"
|
||||
|
||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
||||
/*
|
||||
Version 16.155.5: Mar 11, 2017 Adjusting size of database fields. (216663 lines)
|
||||
2 changes necessary in database:
|
||||
ALTER TABLE crs_grp CHANGE COLUMN GrpName GrpName VARCHAR(2047) NOT NULL;
|
||||
ALTER TABLE crs_grp_types CHANGE COLUMN GrpTypName GrpTypName VARCHAR(2047) NOT NULL;
|
||||
|
||||
Version 16.155.4: Mar 10, 2017 Adjusting size of database fields. (216626 lines)
|
||||
2 changes necessary in database:
|
||||
ALTER TABLE courses CHANGE COLUMN ShortName ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL;
|
||||
|
|
|
@ -588,20 +588,20 @@ mysql> DESCRIBE countries;
|
|||
/***** Table courses *****/
|
||||
/*
|
||||
mysql> DESCRIBE courses;
|
||||
+-----------------+--------------+------+-----+---------+----------------+
|
||||
| Field | Type | Null | Key | Default | Extra |
|
||||
+-----------------+--------------+------+-----+---------+----------------+
|
||||
| CrsCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||
| DegCod | int(11) | NO | MUL | -1 | |
|
||||
| Year | tinyint(4) | NO | | 0 | |
|
||||
| InsCrsCod | char(7) | NO | | NULL | |
|
||||
| Status | tinyint(4) | NO | MUL | 0 | |
|
||||
| RequesterUsrCod | int(11) | NO | | -1 | |
|
||||
| ShortName | varchar(32) | NO | | NULL | |
|
||||
| FullName | varchar(127) | NO | | NULL | |
|
||||
| NumIndicators | int(11) | NO | | -1 | |
|
||||
+-----------------+--------------+------+-----+---------+----------------+
|
||||
9 rows in set (0.00 sec)
|
||||
+-----------------+---------------+------+-----+---------+----------------+
|
||||
| Field | Type | Null | Key | Default | Extra |
|
||||
+-----------------+---------------+------+-----+---------+----------------+
|
||||
| CrsCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||
| DegCod | int(11) | NO | MUL | -1 | |
|
||||
| Year | tinyint(4) | NO | | 0 | |
|
||||
| InsCrsCod | char(7) | NO | | NULL | |
|
||||
| Status | tinyint(4) | NO | MUL | 0 | |
|
||||
| RequesterUsrCod | int(11) | NO | | -1 | |
|
||||
| ShortName | varchar(511) | NO | | NULL | |
|
||||
| FullName | varchar(2047) | NO | | NULL | |
|
||||
| NumIndicators | int(11) | NO | | -1 | |
|
||||
+-----------------+---------------+------+-----+---------+----------------+
|
||||
9 rows in set (0,00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS courses ("
|
||||
"CrsCod INT NOT NULL AUTO_INCREMENT,"
|
||||
|
@ -625,22 +625,22 @@ mysql> DESCRIBE crs_grp;
|
|||
+-------------+---------------+------+-----+---------+----------------+
|
||||
| GrpCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||
| GrpTypCod | int(11) | NO | MUL | NULL | |
|
||||
| GrpName | varchar(255) | NO | | NULL | |
|
||||
| GrpName | varchar(2047) | NO | | NULL | |
|
||||
| MaxStudents | int(11) | NO | | NULL | |
|
||||
| Open | enum('N','Y') | NO | | N | |
|
||||
| FileZones | enum('N','Y') | NO | | N | |
|
||||
+-------------+---------------+------+-----+---------+----------------+
|
||||
6 rows in set (0.01 sec)
|
||||
6 rows in set (0,00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS crs_grp ("
|
||||
"GrpCod INT NOT NULL AUTO_INCREMENT,"
|
||||
"GrpTypCod INT NOT NULL,"
|
||||
"GrpName VARCHAR(255) NOT NULL,"
|
||||
"MaxStudents INT NOT NULL,"
|
||||
"Open ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
||||
"FileZones ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
||||
"UNIQUE INDEX(GrpCod),"
|
||||
"INDEX(GrpTypCod))");
|
||||
"GrpCod INT NOT NULL AUTO_INCREMENT,"
|
||||
"GrpTypCod INT NOT NULL,"
|
||||
"GrpName VARCHAR(2047) NOT NULL," // Grp_MAX_BYTES_GROUP_NAME
|
||||
"MaxStudents INT NOT NULL,"
|
||||
"Open ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
||||
"FileZones ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
||||
"UNIQUE INDEX(GrpCod),"
|
||||
"INDEX(GrpTypCod))");
|
||||
|
||||
/***** Table crs_grp_types *****/
|
||||
/*
|
||||
|
@ -650,24 +650,24 @@ mysql> DESCRIBE crs_grp_types;
|
|||
+--------------+---------------+------+-----+---------+----------------+
|
||||
| GrpTypCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||
| CrsCod | int(11) | NO | MUL | -1 | |
|
||||
| GrpTypName | varchar(255) | NO | | NULL | |
|
||||
| GrpTypName | varchar(2047) | NO | | NULL | |
|
||||
| Mandatory | enum('N','Y') | NO | | NULL | |
|
||||
| Multiple | enum('N','Y') | NO | | NULL | |
|
||||
| MustBeOpened | enum('N','Y') | NO | | N | |
|
||||
| OpenTime | datetime | NO | | NULL | |
|
||||
+--------------+---------------+------+-----+---------+----------------+
|
||||
7 rows in set (0.01 sec)
|
||||
7 rows in set (0,00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS crs_grp_types ("
|
||||
"GrpTypCod INT NOT NULL AUTO_INCREMENT,"
|
||||
"CrsCod INT NOT NULL DEFAULT -1,"
|
||||
"GrpTypName VARCHAR(255) NOT NULL,"
|
||||
"Mandatory ENUM('N','Y') NOT NULL,"
|
||||
"Multiple ENUM('N','Y') NOT NULL,"
|
||||
"MustBeOpened ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
||||
"OpenTime DATETIME NOT NULL,"
|
||||
"UNIQUE INDEX(GrpTypCod),"
|
||||
"INDEX(CrsCod))");
|
||||
"GrpTypCod INT NOT NULL AUTO_INCREMENT,"
|
||||
"CrsCod INT NOT NULL DEFAULT -1,"
|
||||
"GrpTypName VARCHAR(2047) NOT NULL," // Grp_MAX_BYTES_GROUP_TYPE_NAME
|
||||
"Mandatory ENUM('N','Y') NOT NULL,"
|
||||
"Multiple ENUM('N','Y') NOT NULL,"
|
||||
"MustBeOpened ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
||||
"OpenTime DATETIME NOT NULL,"
|
||||
"UNIQUE INDEX(GrpTypCod),"
|
||||
"INDEX(CrsCod))");
|
||||
|
||||
/***** Table crs_grp_usr *****/
|
||||
/*
|
||||
|
|
123
swad_group.c
123
swad_group.c
|
@ -999,13 +999,14 @@ unsigned Grp_RemoveUsrFromGroups (struct UsrData *UsrDat,struct ListCodGrps *Lst
|
|||
void Grp_RemUsrFromAllGrpsInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_QuietOrVerbose_t QuietOrVerbose)
|
||||
{
|
||||
extern const char *Txt_THE_USER_X_has_been_removed_from_all_groups_of_the_course_Y;
|
||||
char Query[1024];
|
||||
char Query[512];
|
||||
|
||||
/***** Remove user from all the groups of the course *****/
|
||||
sprintf (Query,"DELETE FROM crs_grp_usr"
|
||||
" WHERE UsrCod='%ld' AND GrpCod IN"
|
||||
" (SELECT crs_grp.GrpCod FROM crs_grp_types,crs_grp"
|
||||
" WHERE crs_grp_types.CrsCod='%ld' AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod)",
|
||||
" WHERE crs_grp_types.CrsCod='%ld'"
|
||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod)",
|
||||
UsrDat->UsrCod,Crs->CrsCod);
|
||||
DB_QueryDELETE (Query,"can not remove a user from all groups of a course");
|
||||
|
||||
|
@ -1025,7 +1026,7 @@ void Grp_RemUsrFromAllGrpsInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_Q
|
|||
void Grp_RemUsrFromAllGrps (struct UsrData *UsrDat,Cns_QuietOrVerbose_t QuietOrVerbose)
|
||||
{
|
||||
extern const char *Txt_THE_USER_X_has_been_removed_from_all_groups_in_all_courses;
|
||||
char Query[512];
|
||||
char Query[128];
|
||||
|
||||
/***** Remove user from all groups *****/
|
||||
sprintf (Query,"DELETE FROM crs_grp_usr WHERE UsrCod='%ld'",
|
||||
|
@ -1047,11 +1048,11 @@ void Grp_RemUsrFromAllGrps (struct UsrData *UsrDat,Cns_QuietOrVerbose_t QuietOrV
|
|||
|
||||
static void Grp_RemoveUsrFromGroup (long UsrCod,long GrpCod)
|
||||
{
|
||||
char Query[512];
|
||||
char Query[256];
|
||||
|
||||
/***** Remove user from group *****/
|
||||
sprintf (Query,"DELETE FROM crs_grp_usr"
|
||||
" WHERE GrpCod='%ld' AND UsrCod='%ld'",
|
||||
" WHERE GrpCod='%ld' AND UsrCod='%ld'",
|
||||
GrpCod,UsrCod);
|
||||
DB_QueryDELETE (Query,"can not remove a user from a group");
|
||||
}
|
||||
|
@ -1062,7 +1063,7 @@ static void Grp_RemoveUsrFromGroup (long UsrCod,long GrpCod)
|
|||
|
||||
static void Grp_AddUsrToGroup (struct UsrData *UsrDat,long GrpCod)
|
||||
{
|
||||
char Query[512];
|
||||
char Query[256];
|
||||
|
||||
/***** Register in group *****/
|
||||
sprintf (Query,"INSERT INTO crs_grp_usr (GrpCod,UsrCod)"
|
||||
|
@ -1335,7 +1336,7 @@ static void Grp_ListGroupsForEdition (void)
|
|||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">");
|
||||
Act_FormStart (ActChgGrpTyp);
|
||||
Grp_PutParamGrpCod (Grp->GrpCod);
|
||||
fprintf (Gbl.F.Out,"<select name=\"GrpTypCod\""
|
||||
fprintf (Gbl.F.Out,"<select name=\"GrpTypCod\" style=\"width:150px;\""
|
||||
" onchange=\"document.getElementById('%s').submit();\">",
|
||||
Gbl.Form.Id);
|
||||
for (NumTipGrpAux = 0;
|
||||
|
@ -2207,7 +2208,7 @@ static void Grp_PutFormToCreateGroup (void)
|
|||
|
||||
/***** Group type *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
||||
"<select name=\"GrpTypCod\">");
|
||||
"<select name=\"GrpTypCod\" style=\"width:150px;\">");
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.CurrentCrs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp++)
|
||||
|
@ -2541,7 +2542,7 @@ unsigned Grp_CountNumGrpsInCurrentCrs (void)
|
|||
|
||||
static unsigned Grp_CountNumGrpsInThisCrsOfType (long GrpTypCod)
|
||||
{
|
||||
char Query[512];
|
||||
char Query[128];
|
||||
|
||||
/***** Get number of groups of a type from database *****/
|
||||
sprintf (Query,"SELECT COUNT(*) FROM crs_grp WHERE GrpTypCod='%ld'",
|
||||
|
@ -2608,7 +2609,7 @@ static void Grp_GetDataOfGroupTypeByCod (struct GroupType *GrpTyp)
|
|||
|
||||
static bool Grp_GetMultipleEnrollmentOfAGroupType (long GrpTypCod)
|
||||
{
|
||||
char Query[512];
|
||||
char Query[128];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
bool MultipleEnrollment;
|
||||
|
@ -2709,7 +2710,7 @@ void Grp_GetDataOfGroupByCod (struct GroupData *GrpDat)
|
|||
|
||||
static long Grp_GetTypeOfGroupOfAGroup (long GrpCod)
|
||||
{
|
||||
char Query[256];
|
||||
char Query[128];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
long GrpTypCod;
|
||||
|
@ -2797,9 +2798,12 @@ static unsigned Grp_CountNumStdsInNoGrpsOfType (long GrpTypCod)
|
|||
|
||||
/***** Get number of students not belonging to groups of a type from database ******/
|
||||
sprintf (Query,"SELECT COUNT(UsrCod) FROM crs_usr"
|
||||
" WHERE CrsCod='%ld' AND Role='%u' AND UsrCod NOT IN"
|
||||
" (SELECT DISTINCT crs_grp_usr.UsrCod FROM crs_grp,crs_grp_usr"
|
||||
" WHERE crs_grp.GrpTypCod='%ld' AND crs_grp.GrpCod=crs_grp_usr.GrpCod)",
|
||||
" WHERE CrsCod='%ld' AND Role='%u'"
|
||||
" AND UsrCod NOT IN"
|
||||
" (SELECT DISTINCT crs_grp_usr.UsrCod"
|
||||
" FROM crs_grp,crs_grp_usr"
|
||||
" WHERE crs_grp.GrpTypCod='%ld'"
|
||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod)",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,(unsigned) Rol_STUDENT,GrpTypCod);
|
||||
DB_QuerySELECT (Query,&mysql_res,"can not get the number of students not belonging to groups of a type");
|
||||
|
||||
|
@ -2821,15 +2825,17 @@ static unsigned Grp_CountNumStdsInNoGrpsOfType (long GrpTypCod)
|
|||
|
||||
static long Grp_GetFirstCodGrpStdBelongsTo (long GrpTypCod,long UsrCod)
|
||||
{
|
||||
char Query[1024];
|
||||
char Query[512];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned long NumRows;
|
||||
long CodGrpIBelong;
|
||||
|
||||
/***** Get a group which a user belong to from database *****/
|
||||
sprintf (Query,"SELECT crs_grp.GrpCod FROM crs_grp,crs_grp_usr WHERE crs_grp.GrpTypCod='%ld'"
|
||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod AND crs_grp_usr.UsrCod='%ld'",
|
||||
sprintf (Query,"SELECT crs_grp.GrpCod FROM crs_grp,crs_grp_usr"
|
||||
" WHERE crs_grp.GrpTypCod='%ld'"
|
||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod='%ld'",
|
||||
GrpTypCod,UsrCod);
|
||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get the group which a user belongs to");
|
||||
|
||||
|
@ -2880,17 +2886,28 @@ unsigned Grp_NumGrpTypesMandatIDontBelong (void)
|
|||
|
||||
/***** Get the number of types of groups with mandatory enrollment which I don't belong to, from database *****/
|
||||
sprintf (Query,"SELECT COUNT(DISTINCT GrpTypCod) FROM"
|
||||
" (SELECT crs_grp_types.GrpTypCod AS GrpTypCod,COUNT(*) AS NumStudents,crs_grp.MaxStudents as MaxStudents"
|
||||
" (SELECT crs_grp_types.GrpTypCod AS GrpTypCod,"
|
||||
"COUNT(*) AS NumStudents,"
|
||||
"crs_grp.MaxStudents as MaxStudents"
|
||||
" FROM crs_grp_types,crs_grp,crs_grp_usr,crs_usr"
|
||||
" WHERE crs_grp_types.CrsCod='%ld' AND crs_grp_types.Mandatory='Y'"
|
||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod AND crs_grp.Open='Y'"
|
||||
" WHERE crs_grp_types.CrsCod='%ld'"
|
||||
" AND crs_grp_types.Mandatory='Y'"
|
||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
||||
" AND crs_grp.Open='Y'"
|
||||
" AND crs_grp_types.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod AND crs_grp_usr.UsrCod=crs_usr.UsrCod AND crs_usr.Role='%u'"
|
||||
" GROUP BY crs_grp.GrpCod HAVING NumStudents<MaxStudents) AS grp_types_open_not_full"
|
||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" GROUP BY crs_grp.GrpCod"
|
||||
" HAVING NumStudents<MaxStudents) AS grp_types_open_not_full"
|
||||
" WHERE GrpTypCod NOT IN"
|
||||
" (SELECT DISTINCT crs_grp_types.GrpTypCod FROM crs_grp_types,crs_grp,crs_grp_usr"
|
||||
" WHERE crs_grp_types.CrsCod='%ld' AND crs_grp_types.Mandatory='Y' AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod AND crs_grp_usr.UsrCod='%ld')",
|
||||
" (SELECT DISTINCT crs_grp_types.GrpTypCod"
|
||||
" FROM crs_grp_types,crs_grp,crs_grp_usr"
|
||||
" WHERE crs_grp_types.CrsCod='%ld'"
|
||||
" AND crs_grp_types.Mandatory='Y'"
|
||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod='%ld')",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
(unsigned) Rol_STUDENT,
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
|
@ -2912,12 +2929,19 @@ static bool Grp_GetIfGrpIsAvailable (long GrpTypCod)
|
|||
/***** Get the number of types of group (0 or 1) of a type
|
||||
with one or more open groups with vacants, from database *****/
|
||||
sprintf (Query,"SELECT COUNT(DISTINCT GrpTypCod) FROM"
|
||||
" (SELECT crs_grp_types.GrpTypCod AS GrpTypCod,COUNT(*) AS NumStudents,crs_grp.MaxStudents as MaxStudents"
|
||||
" (SELECT crs_grp_types.GrpTypCod AS GrpTypCod,"
|
||||
"COUNT(*) AS NumStudents,"
|
||||
"crs_grp.MaxStudents as MaxStudents"
|
||||
" FROM crs_grp_types,crs_grp,crs_grp_usr,crs_usr"
|
||||
" WHERE crs_grp_types.GrpTypCod='%ld' AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
||||
" AND crs_grp.Open='Y' AND crs_grp_types.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod AND crs_grp_usr.UsrCod=crs_usr.UsrCod AND crs_usr.Role='%u'"
|
||||
" GROUP BY crs_grp.GrpCod HAVING NumStudents<MaxStudents) AS available_grp_types",
|
||||
" WHERE crs_grp_types.GrpTypCod='%ld'"
|
||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
||||
" AND crs_grp.Open='Y'"
|
||||
" AND crs_grp_types.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" GROUP BY crs_grp.GrpCod"
|
||||
" HAVING NumStudents<MaxStudents) AS available_grp_types",
|
||||
GrpTypCod,(unsigned) Rol_STUDENT);
|
||||
NumGrpTypes = DB_QueryCOUNT (Query,"can not check if a type of group has available groups");
|
||||
|
||||
|
@ -2940,19 +2964,27 @@ static void Grp_GetLstCodGrpsUsrBelongs (long CrsCod,long GrpTypCod,
|
|||
|
||||
/***** Get groups which a user belong to from database *****/
|
||||
if (CrsCod < 0) // Query the groups from all the user's courses
|
||||
sprintf (Query,"SELECT GrpCod FROM crs_grp_usr"
|
||||
sprintf (Query,"SELECT GrpCod"
|
||||
" FROM crs_grp_usr"
|
||||
" WHERE UsrCod='%ld'", // Groups will be unordered
|
||||
UsrCod);
|
||||
else if (GrpTypCod < 0) // Query the groups of any type in the course
|
||||
sprintf (Query,"SELECT crs_grp.GrpCod FROM crs_grp_types,crs_grp,crs_grp_usr"
|
||||
" WHERE crs_grp_types.CrsCod='%ld' AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod AND crs_grp_usr.UsrCod='%ld'"
|
||||
sprintf (Query,"SELECT crs_grp.GrpCod"
|
||||
" FROM crs_grp_types,crs_grp,crs_grp_usr"
|
||||
" WHERE crs_grp_types.CrsCod='%ld'"
|
||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod='%ld'"
|
||||
" ORDER BY crs_grp_types.GrpTypName,crs_grp.GrpName",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,UsrCod);
|
||||
else // Query only the groups of specified type in the course
|
||||
sprintf (Query,"SELECT crs_grp.GrpCod FROM crs_grp_types,crs_grp,crs_grp_usr"
|
||||
" WHERE crs_grp_types.CrsCod='%ld' AND crs_grp_types.GrpTypCod='%ld' AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod AND crs_grp_usr.UsrCod='%ld'"
|
||||
sprintf (Query,"SELECT crs_grp.GrpCod"
|
||||
" FROM crs_grp_types,crs_grp,crs_grp_usr"
|
||||
" WHERE crs_grp_types.CrsCod='%ld'"
|
||||
" AND crs_grp_types.GrpTypCod='%ld'"
|
||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
||||
" AND crs_grp.GrpCod=crs_grp_usr.GrpCod"
|
||||
" AND crs_grp_usr.UsrCod='%ld'"
|
||||
" ORDER BY crs_grp.GrpName",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,GrpTypCod,UsrCod);
|
||||
LstGrps->NumGrps = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get the groups which a user belongs to");
|
||||
|
@ -2991,7 +3023,8 @@ void Grp_GetLstCodGrpsWithFileZonesIBelong (struct ListCodGrps *LstGrps)
|
|||
unsigned NumGrp;
|
||||
|
||||
/***** Get groups which I belong to from database *****/
|
||||
sprintf (Query,"SELECT crs_grp.GrpCod FROM crs_grp_types,crs_grp,crs_grp_usr"
|
||||
sprintf (Query,"SELECT crs_grp.GrpCod"
|
||||
" FROM crs_grp_types,crs_grp,crs_grp_usr"
|
||||
" WHERE crs_grp_types.CrsCod='%ld'"
|
||||
" AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod"
|
||||
" AND crs_grp.FileZones='Y'"
|
||||
|
@ -3196,11 +3229,12 @@ void Grp_RecFormNewGrp (void)
|
|||
|
||||
static bool Grp_CheckIfGroupTypeNameExists (const char *GrpTypName,long GrpTypCod)
|
||||
{
|
||||
char Query[512];
|
||||
char Query[256 + Grp_MAX_BYTES_GROUP_TYPE_NAME];
|
||||
|
||||
/***** Get number of group types with a name from database *****/
|
||||
sprintf (Query,"SELECT COUNT(*) FROM crs_grp_types"
|
||||
" WHERE CrsCod='%ld' AND GrpTypName='%s' AND GrpTypCod<>'%ld'",
|
||||
" WHERE CrsCod='%ld' AND GrpTypName='%s'"
|
||||
" AND GrpTypCod<>'%ld'",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,GrpTypName,GrpTypCod);
|
||||
return (DB_QueryCOUNT (Query,"can not check if the name of type of group already existed") != 0);
|
||||
}
|
||||
|
@ -3211,7 +3245,7 @@ static bool Grp_CheckIfGroupTypeNameExists (const char *GrpTypName,long GrpTypCo
|
|||
|
||||
static bool Grp_CheckIfGroupNameExists (long GrpTypCod,const char *GrpName,long GrpCod)
|
||||
{
|
||||
char Query[512];
|
||||
char Query[256 + Grp_MAX_BYTES_GROUP_NAME];
|
||||
|
||||
/***** Get number of groups with a type and a name from database *****/
|
||||
sprintf (Query,"SELECT COUNT(*) FROM crs_grp"
|
||||
|
@ -3930,7 +3964,7 @@ void Grp_RenameGroupType (void)
|
|||
extern const char *Txt_The_type_of_group_X_already_exists;
|
||||
extern const char *Txt_The_type_of_group_X_has_been_renamed_as_Y;
|
||||
extern const char *Txt_The_name_of_the_type_of_group_X_has_not_changed;
|
||||
char Query[1024];
|
||||
char Query[128 + Grp_MAX_BYTES_GROUP_TYPE_NAME];
|
||||
char NewNameGrpTyp[Grp_MAX_BYTES_GROUP_TYPE_NAME + 1];
|
||||
|
||||
/***** Get parameters from form *****/
|
||||
|
@ -3966,8 +4000,7 @@ void Grp_RenameGroupType (void)
|
|||
else
|
||||
{
|
||||
/* Update the table changing old name by new name */
|
||||
sprintf (Query,"UPDATE crs_grp_types"
|
||||
" SET GrpTypName='%s'"
|
||||
sprintf (Query,"UPDATE crs_grp_types SET GrpTypName='%s'"
|
||||
" WHERE GrpTypCod='%ld'",
|
||||
NewNameGrpTyp,
|
||||
Gbl.CurrentCrs.Grps.GrpTyp.GrpTypCod);
|
||||
|
@ -4004,7 +4037,7 @@ void Grp_RenameGroup (void)
|
|||
extern const char *Txt_The_group_X_has_been_renamed_as_Y;
|
||||
extern const char *Txt_The_name_of_the_group_X_has_not_changed;
|
||||
struct GroupData GrpDat;
|
||||
char Query[512];
|
||||
char Query[128 + Grp_MAX_BYTES_GROUP_NAME];
|
||||
char NewNameGrp[Grp_MAX_BYTES_GROUP_NAME + 1];
|
||||
|
||||
/***** Get parameters from form *****/
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
#define Lay_MAX_BYTES_ALERT (16 * 1024 - 1) // Max. size for alert message
|
||||
// Important: the size of alert message must be enough large to store the longest message.
|
||||
|
||||
#define Lay_MAX_BYTES_TITLE (1024 - 1)
|
||||
#define Lay_MAX_BYTES_TITLE (4096 - 1)
|
||||
|
||||
#define Lay_HIDE_BOTH_COLUMNS 0 // 00
|
||||
#define Lay_SHOW_RIGHT_COLUMN 1 // 01
|
||||
|
|
Loading…
Reference in New Issue