mirror of https://github.com/acanas/swad-core.git
Version 20.94.6: Jun 28, 2021 Fixed bug in removal of project.
This commit is contained in:
parent
6a8c7b9efe
commit
57456e7585
|
@ -1243,7 +1243,7 @@ static void Asg_ShowLstGrpsToEditAssignment (long AsgCod)
|
|||
/***** Get list of groups types and groups in this course *****/
|
||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||
|
||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
||||
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||
{
|
||||
/***** Begin box and table *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -1274,7 +1274,7 @@ static void Asg_ShowLstGrpsToEditAssignment (long AsgCod)
|
|||
|
||||
/***** List the groups for each group type *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||
Grp_ListGrpsToEditAsgAttSvyEvtMch (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||
|
|
|
@ -1136,7 +1136,7 @@ static void Att_ShowLstGrpsToEditAttEvent (long AttCod)
|
|||
/***** Get list of groups types and groups in this course *****/
|
||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||
|
||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
||||
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||
{
|
||||
/***** Begin box and table *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -1168,7 +1168,7 @@ static void Att_ShowLstGrpsToEditAttEvent (long AttCod)
|
|||
|
||||
/***** List the groups for each group type *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||
Grp_ListGrpsToEditAsgAttSvyEvtMch (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||
|
|
|
@ -602,13 +602,14 @@ TODO: FIX BUG, URGENT! En las fechas como par
|
|||
|
||||
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 20.94.5 (2021-06-25)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 20.94.6 (2021-06-28)"
|
||||
#define CSS_FILE "swad20.45.css"
|
||||
#define JS_FILE "swad20.69.1.js"
|
||||
/*
|
||||
TODO: Rename CENTRE to CENTER in help wiki.
|
||||
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
|
||||
|
||||
Version 20.94.6: Jun 28, 2021 Fixed bug in removal of project. (313688 lines)
|
||||
Version 20.94.5: Jun 25, 2021 Queries moved to module swad_group_database. (313686 lines)
|
||||
Version 20.94.4: Jun 24, 2021 Queries moved to module swad_group_database. (313637 lines)
|
||||
Version 20.94.3: Jun 18, 2021 Queries moved to module swad_group_database. (313602 lines)
|
||||
|
|
|
@ -1367,7 +1367,7 @@ static void ExaSes_ShowLstGrpsToCreateSession (long SesCod)
|
|||
/***** Get list of groups types and groups in this course *****/
|
||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||
|
||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
||||
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||
{
|
||||
/***** Begin box and table *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -1399,7 +1399,7 @@ static void ExaSes_ShowLstGrpsToCreateSession (long SesCod)
|
|||
|
||||
/***** List the groups for each group type *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||
Grp_ListGrpsToEditAsgAttSvyEvtMch (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||
|
|
|
@ -245,7 +245,7 @@ void Gbl_InitializeGlobals (void)
|
|||
Gbl.Crs.Grps.NumGrps = 0;
|
||||
Gbl.Crs.Grps.WhichGrps = Grp_WHICH_GROUPS_DEFAULT;
|
||||
Gbl.Crs.Grps.GrpTypes.LstGrpTypes = NULL;
|
||||
Gbl.Crs.Grps.GrpTypes.Num = 0;
|
||||
Gbl.Crs.Grps.GrpTypes.NumGrpTypes = 0;
|
||||
Gbl.Crs.Grps.GrpTypes.NestedCalls = 0;
|
||||
Gbl.Crs.Grps.GrpTyp.GrpTypName[0] = '\0';
|
||||
Gbl.Crs.Grps.GrpTyp.MandatoryEnrolment = true;
|
||||
|
|
63
swad_group.c
63
swad_group.c
|
@ -261,7 +261,7 @@ static void Grp_ReqEditGroupsInternal2 (Ale_AlertType_t AlertTypeGroups,
|
|||
Roo_GetListRooms (&Rooms,Roo_ONLY_SHRT_NAME);
|
||||
|
||||
/***** Put form to edit groups *****/
|
||||
if (Gbl.Crs.Grps.GrpTypes.Num) // If there are group types...
|
||||
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes) // If there are group types...
|
||||
Grp_EditGroups (&Rooms);
|
||||
|
||||
/***** End groups section *****/
|
||||
|
@ -293,7 +293,7 @@ static void Grp_EditGroupTypes (void)
|
|||
Grp_PutFormToCreateGroupType ();
|
||||
|
||||
/***** Forms to edit current group types *****/
|
||||
if (Gbl.Crs.Grps.GrpTypes.Num) // Group types found...
|
||||
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes) // Group types found...
|
||||
Grp_ListGroupTypesForEdition ();
|
||||
else // No group types found in this course
|
||||
Ale_ShowAlert (Ale_INFO,Txt_There_are_no_types_of_group_in_the_course_X,
|
||||
|
@ -403,7 +403,7 @@ void Grp_ShowFormToSelectSeveralGroups (void (*FuncParams) (void *Args),void *Ar
|
|||
/***** List the groups for each group type *****/
|
||||
HTM_TABLE_BeginWidePadding (2);
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||
Grp_ListGrpsForMultipleSelection (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||
|
@ -797,7 +797,8 @@ bool Grp_ChangeMyGrpsAtomically (struct ListCodGrps *LstGrpsIWant)
|
|||
if (RemoveMeFromThisGrp)
|
||||
/* Check if the group is closed */
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num && !ITryToLeaveAClosedGroup;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes &&
|
||||
!ITryToLeaveAClosedGroup;
|
||||
NumGrpTyp++)
|
||||
{
|
||||
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp];
|
||||
|
@ -827,7 +828,7 @@ bool Grp_ChangeMyGrpsAtomically (struct ListCodGrps *LstGrpsIWant)
|
|||
if (RegisterMeInThisGrp)
|
||||
/* Check if the group is closed or full */
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num &&
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes &&
|
||||
!ITryToRegisterInAClosedGroup &&
|
||||
!ITryToRegisterInFullGroup;
|
||||
NumGrpTyp++)
|
||||
|
@ -997,7 +998,7 @@ bool Grp_CheckIfSelectionGrpsSingleEnrolmentIsValid (Rol_Role_t Role,struct List
|
|||
|
||||
if (!MultipleEnrolment)
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
if (GrpTypCod == AlreadyExistsGroupOfType[NumGrpTyp].GrpTypCod)
|
||||
{
|
||||
|
@ -1030,13 +1031,13 @@ static void Grp_ConstructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **Al
|
|||
unsigned NumGrpTyp;
|
||||
|
||||
/***** Allocate memory to a list of booleanos that indica if already se ha selected a group of cada type *****/
|
||||
if ((*AlreadyExistsGroupOfType = calloc (Gbl.Crs.Grps.GrpTypes.Num,
|
||||
if ((*AlreadyExistsGroupOfType = calloc (Gbl.Crs.Grps.GrpTypes.NumGrpTypes,
|
||||
sizeof (**AlreadyExistsGroupOfType))) == NULL)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
|
||||
/***** Initialize the list *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
{
|
||||
(*AlreadyExistsGroupOfType)[NumGrpTyp].GrpTypCod = Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod;
|
||||
|
@ -1072,7 +1073,7 @@ void Grp_RegisterUsrIntoGroups (struct UsrData *UsrDat,struct ListCodGrps *LstGr
|
|||
|
||||
/***** For each existing type of group in the course... *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
{
|
||||
MultipleEnrolment = Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].MultipleEnrolment;
|
||||
|
@ -1251,7 +1252,7 @@ static void Grp_ListGroupTypesForEdition (void)
|
|||
|
||||
/***** List group types with forms for edition *****/
|
||||
for (NumGrpTyp = 0, UniqueId=1;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++, UniqueId++)
|
||||
{
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -1439,7 +1440,7 @@ static void Grp_ListGroupsForEdition (const struct Roo_Rooms *Rooms)
|
|||
|
||||
/***** List the groups *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
{
|
||||
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp];
|
||||
|
@ -1497,7 +1498,7 @@ static void Grp_ListGroupsForEdition (const struct Roo_Rooms *Rooms)
|
|||
|
||||
/* Options for group types */
|
||||
for (NumTipGrpAux = 0;
|
||||
NumTipGrpAux < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumTipGrpAux < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumTipGrpAux++)
|
||||
{
|
||||
GrpTypAux = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumTipGrpAux];
|
||||
|
@ -1752,7 +1753,7 @@ void Grp_ShowLstGrpsToChgMyGrps (void)
|
|||
/***** List the groups the user belongs to for change *****/
|
||||
HTM_TABLE_BeginWidePadding (2);
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) // If there are groups of this type
|
||||
{
|
||||
|
@ -1817,7 +1818,7 @@ static void Grp_ShowWarningToStdsToChangeGrps (void)
|
|||
struct GroupType *GrpTyp;
|
||||
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
{
|
||||
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp];
|
||||
|
@ -2035,7 +2036,7 @@ void Grp_ShowLstGrpsToChgOtherUsrsGrps (long UsrCod)
|
|||
|
||||
/***** List to select the groups the user belongs to *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||
Grp_ListGrpsToAddOrRemUsrs (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],UsrCod);
|
||||
|
@ -2563,7 +2564,7 @@ static void Grp_PutFormToCreateGroup (const struct Roo_Rooms *Rooms)
|
|||
|
||||
/* Options for group types */
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
HTM_OPTION (HTM_Type_LONG,&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod,
|
||||
Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod ==
|
||||
|
@ -2660,21 +2661,21 @@ void Grp_GetListGrpTypesInThisCrs (Grp_WhichGroupTypes_t WhichGroupTypes)
|
|||
Grp_OpenGroupsAutomatically ();
|
||||
|
||||
/***** Get group types from database *****/
|
||||
Gbl.Crs.Grps.GrpTypes.Num = Grp_DB_GetGrpTypesInCurrentCrs[WhichGroupTypes] (&mysql_res);
|
||||
Gbl.Crs.Grps.GrpTypes.NumGrpTypes = Grp_DB_GetGrpTypesInCurrentCrs[WhichGroupTypes] (&mysql_res);
|
||||
|
||||
/***** Get group types *****/
|
||||
Gbl.Crs.Grps.GrpTypes.NumGrpsTotal = 0;
|
||||
|
||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
||||
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||
{
|
||||
/***** Create a list of group types *****/
|
||||
if ((Gbl.Crs.Grps.GrpTypes.LstGrpTypes = calloc (Gbl.Crs.Grps.GrpTypes.Num,
|
||||
if ((Gbl.Crs.Grps.GrpTypes.LstGrpTypes = calloc (Gbl.Crs.Grps.GrpTypes.NumGrpTypes,
|
||||
sizeof (*Gbl.Crs.Grps.GrpTypes.LstGrpTypes))) == NULL)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
|
||||
/***** Get group types *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
{
|
||||
/* Get next group type */
|
||||
|
@ -2769,7 +2770,7 @@ void Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_WhichGroupTypes_t WhichGroupTypes)
|
|||
|
||||
/***** Then we get the list of groups for each group type *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
{
|
||||
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp];
|
||||
|
@ -2820,10 +2821,9 @@ void Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_WhichGroupTypes_t WhichGroupTypes)
|
|||
/* Get maximum number of students in group (row[4]) */
|
||||
Grp->MaxStudents = Grp_ConvertToNumMaxStdsGrp (row[4]);
|
||||
|
||||
/* Get whether group is open ('Y') or closed ('N') (row[5]) */
|
||||
/* Get whether group is open ('Y') or closed ('N') (row[5]),
|
||||
and whether group have file zones ('Y') or not ('N') (row[6]) */
|
||||
Grp->Open = (row[5][0] == 'Y');
|
||||
|
||||
/* Get whether group have file zones ('Y') or not ('N') (row[6]) */
|
||||
Grp->FileZones = (row[6][0] == 'Y');
|
||||
}
|
||||
}
|
||||
|
@ -2849,7 +2849,7 @@ void Grp_FreeListGrpTypesAndGrps (void)
|
|||
{
|
||||
/***** Free memory used for each list of groups (one list for each group type) *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
{
|
||||
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp];
|
||||
|
@ -2864,7 +2864,7 @@ void Grp_FreeListGrpTypesAndGrps (void)
|
|||
/***** Free memory used by the list of group types *****/
|
||||
free (Gbl.Crs.Grps.GrpTypes.LstGrpTypes);
|
||||
Gbl.Crs.Grps.GrpTypes.LstGrpTypes = NULL;
|
||||
Gbl.Crs.Grps.GrpTypes.Num = 0;
|
||||
Gbl.Crs.Grps.GrpTypes.NumGrpTypes = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3217,10 +3217,9 @@ void Grp_ReceiveFormNewGrpTyp (void)
|
|||
Par_GetParToText ("GrpTypName",Gbl.Crs.Grps.GrpTyp.GrpTypName,
|
||||
Grp_MAX_BYTES_GROUP_TYPE_NAME);
|
||||
|
||||
/* Get whether it is mandatory to regisrer in any group of this type */
|
||||
/* Get whether it is mandatory to regisrer in any group of this type
|
||||
and whether it is possible to register in multiple groups of this type */
|
||||
Gbl.Crs.Grps.GrpTyp.MandatoryEnrolment = Par_GetParToBool ("MandatoryEnrolment");
|
||||
|
||||
/* Get whether it is possible to register in multiple groups of this type */
|
||||
Gbl.Crs.Grps.GrpTyp.MultipleEnrolment = Par_GetParToBool ("MultipleEnrolment");
|
||||
|
||||
/* Get open time */
|
||||
|
@ -4294,14 +4293,14 @@ void Grp_GetLstCodsGrpWanted (struct ListCodGrps *LstGrpsWanted)
|
|||
unsigned NumGrpWanted;
|
||||
|
||||
/***** Allocate memory for the strings with group codes in each type *****/
|
||||
if ((LstStrCodGrps = calloc (Gbl.Crs.Grps.GrpTypes.Num,
|
||||
if ((LstStrCodGrps = calloc (Gbl.Crs.Grps.GrpTypes.NumGrpTypes,
|
||||
sizeof (*LstStrCodGrps))) == NULL)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
|
||||
/***** Get lists with the groups that I want in each type
|
||||
in order to count the total number of groups selected *****/
|
||||
for (NumGrpTyp = 0, LstGrpsWanted->NumGrps = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
{
|
||||
/***** Allocate memory for the list of group codes of this type *****/
|
||||
|
@ -4337,7 +4336,7 @@ void Grp_GetLstCodsGrpWanted (struct ListCodGrps *LstGrpsWanted)
|
|||
|
||||
/***** Get the groups *****/
|
||||
for (NumGrpTyp = 0, NumGrpWanted = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
{
|
||||
/* Add the groups selected of this type to the complete list of groups selected */
|
||||
|
|
|
@ -107,7 +107,7 @@ struct GroupType
|
|||
struct GroupTypes
|
||||
{
|
||||
struct GroupType *LstGrpTypes; // List of types of group
|
||||
unsigned Num; // Number of types of group
|
||||
unsigned NumGrpTypes; // Number of types of group
|
||||
unsigned NumGrpsTotal; // Number of groups of any type
|
||||
int NestedCalls; // Number of nested calls to the function that allocates memory for this list
|
||||
};
|
||||
|
|
|
@ -1572,7 +1572,7 @@ static void Mch_ShowLstGrpsToEditMatch (long MchCod)
|
|||
/***** Get list of groups types and groups in this course *****/
|
||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||
|
||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
||||
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||
{
|
||||
/***** Begin box and table *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -1605,7 +1605,7 @@ static void Mch_ShowLstGrpsToEditMatch (long MchCod)
|
|||
|
||||
/***** List the groups for each group type *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||
Grp_ListGrpsToEditAsgAttSvyEvtMch (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||
|
|
|
@ -3407,9 +3407,9 @@ void Prj_RemoveProject (void)
|
|||
"DELETE FROM prj_users"
|
||||
" USING prj_projects,"
|
||||
"prj_users"
|
||||
" WHERE projects.PrjCod=%ld"
|
||||
" AND projects.CrsCod=%ld"
|
||||
" AND projects.PrjCod=prj_users.PrjCod",
|
||||
" WHERE prj_projects.PrjCod=%ld"
|
||||
" AND prj_projects.CrsCod=%ld"
|
||||
" AND prj_projects.PrjCod=prj_users.PrjCod",
|
||||
Prj.PrjCod,
|
||||
Gbl.Hierarchy.Crs.CrsCod);
|
||||
|
||||
|
|
|
@ -2135,7 +2135,7 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
|
|||
/***** Get list of groups types and groups in this course *****/
|
||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||
|
||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
||||
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||
{
|
||||
/***** Begin box and table *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -2166,7 +2166,7 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
|
|||
|
||||
/***** List the groups for each group type *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||
Grp_ListGrpsToEditAsgAttSvyEvtMch (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||
|
|
|
@ -1755,7 +1755,7 @@ static void Tmt_TimeTableDrawCell (const struct Tmt_Timetable *Timetable,
|
|||
HTM_OPTION (HTM_Type_STRING,"-1",GrpCod <= 0,false,
|
||||
"%s",Txt_All_groups);
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
{
|
||||
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp];
|
||||
|
@ -1837,5 +1837,5 @@ void Tmt_DB_OrphanAllGrpsOfATypeInCrsTimeTable (long GrpTypCod)
|
|||
" (SELECT GrpCod"
|
||||
" FROM grp_groups"
|
||||
" WHERE GrpTypCod=%ld)",
|
||||
Gbl.Crs.Grps.GrpTyp.GrpTypCod);
|
||||
GrpTypCod);
|
||||
}
|
||||
|
|
16
swad_user.c
16
swad_user.c
|
@ -3896,7 +3896,7 @@ static void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames)
|
|||
{
|
||||
/***** Write the groups a the que pertenece the student *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) // If current course tiene groups of este type
|
||||
{
|
||||
|
@ -4553,14 +4553,14 @@ static void Usr_BuildQueryToGetUsrsLstCrs (char **Query,Rol_Role_t Role)
|
|||
Grp_GetListGrpTypesInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||
|
||||
/***** Allocate memory for list of booleans AddStdsWithoutGroupOf *****/
|
||||
if ((AddStdsWithoutGroupOf = calloc (Gbl.Crs.Grps.GrpTypes.Num,
|
||||
if ((AddStdsWithoutGroupOf = calloc (Gbl.Crs.Grps.GrpTypes.NumGrpTypes,
|
||||
sizeof (*AddStdsWithoutGroupOf))) == NULL)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
|
||||
/***** Initialize vector of booleans that indicates whether it's necessary add to the list
|
||||
the students who don't belong to any group of each type *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
AddStdsWithoutGroupOf[NumGrpTyp] = false;
|
||||
|
||||
|
@ -4575,7 +4575,7 @@ static void Usr_BuildQueryToGetUsrsLstCrs (char **Query,Rol_Role_t Role)
|
|||
NumPositiveCods++;
|
||||
else
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod == -GrpCod)
|
||||
{
|
||||
|
@ -4610,7 +4610,7 @@ static void Usr_BuildQueryToGetUsrsLstCrs (char **Query,Rol_Role_t Role)
|
|||
|
||||
/***** Create a query with the students who don't belong to any group *****/
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
if (AddStdsWithoutGroupOf[NumGrpTyp])
|
||||
{
|
||||
|
@ -7188,7 +7188,7 @@ void Usr_ListAllDataStds (void)
|
|||
NumColumnsCommonCard = Usr_NUM_ALL_FIELDS_DATA_STD;
|
||||
if (Gbl.Scope.Current == HieLvl_CRS)
|
||||
{
|
||||
NumColumnsCardAndGroups = NumColumnsCommonCard + Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumColumnsCardAndGroups = NumColumnsCommonCard + Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumColumnsTotal = NumColumnsCardAndGroups + Gbl.Crs.Records.LstFields.Num;
|
||||
}
|
||||
else
|
||||
|
@ -7227,9 +7227,9 @@ void Usr_ListAllDataStds (void)
|
|||
/* 2. Columns for the groups */
|
||||
if (Gbl.Scope.Current == HieLvl_CRS)
|
||||
{
|
||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
||||
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||
for (NumGrpTyp = 0;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) // If current course tiene groups of este type
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue