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 *****/
|
/***** Get list of groups types and groups in this course *****/
|
||||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||||
|
|
||||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||||
{
|
{
|
||||||
/***** Begin box and table *****/
|
/***** Begin box and table *****/
|
||||||
HTM_TR_Begin (NULL);
|
HTM_TR_Begin (NULL);
|
||||||
|
@ -1274,7 +1274,7 @@ static void Asg_ShowLstGrpsToEditAssignment (long AsgCod)
|
||||||
|
|
||||||
/***** List the groups for each group type *****/
|
/***** List the groups for each group type *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||||
Grp_ListGrpsToEditAsgAttSvyEvtMch (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
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 *****/
|
/***** Get list of groups types and groups in this course *****/
|
||||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||||
|
|
||||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||||
{
|
{
|
||||||
/***** Begin box and table *****/
|
/***** Begin box and table *****/
|
||||||
HTM_TR_Begin (NULL);
|
HTM_TR_Begin (NULL);
|
||||||
|
@ -1168,7 +1168,7 @@ static void Att_ShowLstGrpsToEditAttEvent (long AttCod)
|
||||||
|
|
||||||
/***** List the groups for each group type *****/
|
/***** List the groups for each group type *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||||
Grp_ListGrpsToEditAsgAttSvyEvtMch (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
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.
|
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 CSS_FILE "swad20.45.css"
|
||||||
#define JS_FILE "swad20.69.1.js"
|
#define JS_FILE "swad20.69.1.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.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.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.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)
|
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 *****/
|
/***** Get list of groups types and groups in this course *****/
|
||||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||||
|
|
||||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||||
{
|
{
|
||||||
/***** Begin box and table *****/
|
/***** Begin box and table *****/
|
||||||
HTM_TR_Begin (NULL);
|
HTM_TR_Begin (NULL);
|
||||||
|
@ -1399,7 +1399,7 @@ static void ExaSes_ShowLstGrpsToCreateSession (long SesCod)
|
||||||
|
|
||||||
/***** List the groups for each group type *****/
|
/***** List the groups for each group type *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||||
Grp_ListGrpsToEditAsgAttSvyEvtMch (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
Grp_ListGrpsToEditAsgAttSvyEvtMch (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||||
|
|
|
@ -245,7 +245,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.Crs.Grps.NumGrps = 0;
|
Gbl.Crs.Grps.NumGrps = 0;
|
||||||
Gbl.Crs.Grps.WhichGrps = Grp_WHICH_GROUPS_DEFAULT;
|
Gbl.Crs.Grps.WhichGrps = Grp_WHICH_GROUPS_DEFAULT;
|
||||||
Gbl.Crs.Grps.GrpTypes.LstGrpTypes = NULL;
|
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.GrpTypes.NestedCalls = 0;
|
||||||
Gbl.Crs.Grps.GrpTyp.GrpTypName[0] = '\0';
|
Gbl.Crs.Grps.GrpTyp.GrpTypName[0] = '\0';
|
||||||
Gbl.Crs.Grps.GrpTyp.MandatoryEnrolment = true;
|
Gbl.Crs.Grps.GrpTyp.MandatoryEnrolment = true;
|
||||||
|
|
89
swad_group.c
89
swad_group.c
|
@ -261,7 +261,7 @@ static void Grp_ReqEditGroupsInternal2 (Ale_AlertType_t AlertTypeGroups,
|
||||||
Roo_GetListRooms (&Rooms,Roo_ONLY_SHRT_NAME);
|
Roo_GetListRooms (&Rooms,Roo_ONLY_SHRT_NAME);
|
||||||
|
|
||||||
/***** Put form to edit groups *****/
|
/***** 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);
|
Grp_EditGroups (&Rooms);
|
||||||
|
|
||||||
/***** End groups section *****/
|
/***** End groups section *****/
|
||||||
|
@ -293,7 +293,7 @@ static void Grp_EditGroupTypes (void)
|
||||||
Grp_PutFormToCreateGroupType ();
|
Grp_PutFormToCreateGroupType ();
|
||||||
|
|
||||||
/***** Forms to edit current group types *****/
|
/***** 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 ();
|
Grp_ListGroupTypesForEdition ();
|
||||||
else // No group types found in this course
|
else // No group types found in this course
|
||||||
Ale_ShowAlert (Ale_INFO,Txt_There_are_no_types_of_group_in_the_course_X,
|
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 *****/
|
/***** List the groups for each group type *****/
|
||||||
HTM_TABLE_BeginWidePadding (2);
|
HTM_TABLE_BeginWidePadding (2);
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||||
Grp_ListGrpsForMultipleSelection (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
Grp_ListGrpsForMultipleSelection (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||||
|
@ -797,7 +797,8 @@ bool Grp_ChangeMyGrpsAtomically (struct ListCodGrps *LstGrpsIWant)
|
||||||
if (RemoveMeFromThisGrp)
|
if (RemoveMeFromThisGrp)
|
||||||
/* Check if the group is closed */
|
/* Check if the group is closed */
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num && !ITryToLeaveAClosedGroup;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes &&
|
||||||
|
!ITryToLeaveAClosedGroup;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
{
|
{
|
||||||
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp];
|
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp];
|
||||||
|
@ -827,7 +828,7 @@ bool Grp_ChangeMyGrpsAtomically (struct ListCodGrps *LstGrpsIWant)
|
||||||
if (RegisterMeInThisGrp)
|
if (RegisterMeInThisGrp)
|
||||||
/* Check if the group is closed or full */
|
/* Check if the group is closed or full */
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num &&
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes &&
|
||||||
!ITryToRegisterInAClosedGroup &&
|
!ITryToRegisterInAClosedGroup &&
|
||||||
!ITryToRegisterInFullGroup;
|
!ITryToRegisterInFullGroup;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
|
@ -997,7 +998,7 @@ bool Grp_CheckIfSelectionGrpsSingleEnrolmentIsValid (Rol_Role_t Role,struct List
|
||||||
|
|
||||||
if (!MultipleEnrolment)
|
if (!MultipleEnrolment)
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
if (GrpTypCod == AlreadyExistsGroupOfType[NumGrpTyp].GrpTypCod)
|
if (GrpTypCod == AlreadyExistsGroupOfType[NumGrpTyp].GrpTypCod)
|
||||||
{
|
{
|
||||||
|
@ -1030,13 +1031,13 @@ static void Grp_ConstructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **Al
|
||||||
unsigned NumGrpTyp;
|
unsigned NumGrpTyp;
|
||||||
|
|
||||||
/***** Allocate memory to a list of booleanos that indica if already se ha selected a group of cada type *****/
|
/***** 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)
|
sizeof (**AlreadyExistsGroupOfType))) == NULL)
|
||||||
Err_NotEnoughMemoryExit ();
|
Err_NotEnoughMemoryExit ();
|
||||||
|
|
||||||
/***** Initialize the list *****/
|
/***** Initialize the list *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
{
|
{
|
||||||
(*AlreadyExistsGroupOfType)[NumGrpTyp].GrpTypCod = Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod;
|
(*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 each existing type of group in the course... *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
{
|
{
|
||||||
MultipleEnrolment = Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].MultipleEnrolment;
|
MultipleEnrolment = Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].MultipleEnrolment;
|
||||||
|
@ -1251,7 +1252,7 @@ static void Grp_ListGroupTypesForEdition (void)
|
||||||
|
|
||||||
/***** List group types with forms for edition *****/
|
/***** List group types with forms for edition *****/
|
||||||
for (NumGrpTyp = 0, UniqueId=1;
|
for (NumGrpTyp = 0, UniqueId=1;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++, UniqueId++)
|
NumGrpTyp++, UniqueId++)
|
||||||
{
|
{
|
||||||
HTM_TR_Begin (NULL);
|
HTM_TR_Begin (NULL);
|
||||||
|
@ -1439,7 +1440,7 @@ static void Grp_ListGroupsForEdition (const struct Roo_Rooms *Rooms)
|
||||||
|
|
||||||
/***** List the groups *****/
|
/***** List the groups *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
{
|
{
|
||||||
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[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 */
|
/* Options for group types */
|
||||||
for (NumTipGrpAux = 0;
|
for (NumTipGrpAux = 0;
|
||||||
NumTipGrpAux < Gbl.Crs.Grps.GrpTypes.Num;
|
NumTipGrpAux < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumTipGrpAux++)
|
NumTipGrpAux++)
|
||||||
{
|
{
|
||||||
GrpTypAux = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[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 *****/
|
/***** List the groups the user belongs to for change *****/
|
||||||
HTM_TABLE_BeginWidePadding (2);
|
HTM_TABLE_BeginWidePadding (2);
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) // If there are groups of this type
|
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;
|
struct GroupType *GrpTyp;
|
||||||
|
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
{
|
{
|
||||||
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[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 *****/
|
/***** List to select the groups the user belongs to *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||||
Grp_ListGrpsToAddOrRemUsrs (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],UsrCod);
|
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 */
|
/* Options for group types */
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
HTM_OPTION (HTM_Type_LONG,&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod,
|
HTM_OPTION (HTM_Type_LONG,&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod,
|
||||||
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 ();
|
Grp_OpenGroupsAutomatically ();
|
||||||
|
|
||||||
/***** Get group types from database *****/
|
/***** 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 *****/
|
/***** Get group types *****/
|
||||||
Gbl.Crs.Grps.GrpTypes.NumGrpsTotal = 0;
|
Gbl.Crs.Grps.GrpTypes.NumGrpsTotal = 0;
|
||||||
|
|
||||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||||
{
|
{
|
||||||
/***** Create a list of group types *****/
|
/***** 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)
|
sizeof (*Gbl.Crs.Grps.GrpTypes.LstGrpTypes))) == NULL)
|
||||||
Err_NotEnoughMemoryExit ();
|
Err_NotEnoughMemoryExit ();
|
||||||
|
|
||||||
/***** Get group types *****/
|
/***** Get group types *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
{
|
{
|
||||||
/* Get next group type */
|
/* 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 *****/
|
/***** Then we get the list of groups for each group type *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
{
|
{
|
||||||
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[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]) */
|
/* Get maximum number of students in group (row[4]) */
|
||||||
Grp->MaxStudents = Grp_ConvertToNumMaxStdsGrp (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]),
|
||||||
Grp->Open = (row[5][0] == 'Y');
|
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');
|
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) *****/
|
/***** Free memory used for each list of groups (one list for each group type) *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
{
|
{
|
||||||
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[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 memory used by the list of group types *****/
|
||||||
free (Gbl.Crs.Grps.GrpTypes.LstGrpTypes);
|
free (Gbl.Crs.Grps.GrpTypes.LstGrpTypes);
|
||||||
Gbl.Crs.Grps.GrpTypes.LstGrpTypes = NULL;
|
Gbl.Crs.Grps.GrpTypes.LstGrpTypes = NULL;
|
||||||
Gbl.Crs.Grps.GrpTypes.Num = 0;
|
Gbl.Crs.Grps.GrpTypes.NumGrpTypes = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2928,17 +2928,17 @@ void Grp_GetDataOfGroupByCod (struct GroupData *GrpDat)
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
|
|
||||||
/***** Reset values *****/
|
/***** Reset values *****/
|
||||||
GrpDat->GrpTypCod = -1L;
|
GrpDat->GrpTypCod = -1L;
|
||||||
GrpDat->CrsCod = -1L;
|
GrpDat->CrsCod = -1L;
|
||||||
GrpDat->GrpTypName[0] = '\0';
|
GrpDat->GrpTypName[0] = '\0';
|
||||||
GrpDat->GrpName[0] = '\0';
|
GrpDat->GrpName[0] = '\0';
|
||||||
GrpDat->Room.RooCod = -1L;
|
GrpDat->Room.RooCod = -1L;
|
||||||
GrpDat->Room.ShrtName[0] = '\0';
|
GrpDat->Room.ShrtName[0] = '\0';
|
||||||
GrpDat->MaxStudents = 0;
|
GrpDat->MaxStudents = 0;
|
||||||
GrpDat->Vacant = 0;
|
GrpDat->Vacant = 0;
|
||||||
GrpDat->Open = false;
|
GrpDat->Open = false;
|
||||||
GrpDat->FileZones = false;
|
GrpDat->FileZones = false;
|
||||||
GrpDat->MultipleEnrolment = false;
|
GrpDat->MultipleEnrolment = false;
|
||||||
|
|
||||||
if (GrpDat->GrpCod > 0)
|
if (GrpDat->GrpCod > 0)
|
||||||
{
|
{
|
||||||
|
@ -3217,11 +3217,10 @@ void Grp_ReceiveFormNewGrpTyp (void)
|
||||||
Par_GetParToText ("GrpTypName",Gbl.Crs.Grps.GrpTyp.GrpTypName,
|
Par_GetParToText ("GrpTypName",Gbl.Crs.Grps.GrpTyp.GrpTypName,
|
||||||
Grp_MAX_BYTES_GROUP_TYPE_NAME);
|
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");
|
Gbl.Crs.Grps.GrpTyp.MandatoryEnrolment = Par_GetParToBool ("MandatoryEnrolment");
|
||||||
|
Gbl.Crs.Grps.GrpTyp.MultipleEnrolment = Par_GetParToBool ("MultipleEnrolment");
|
||||||
/* Get whether it is possible to register in multiple groups of this type */
|
|
||||||
Gbl.Crs.Grps.GrpTyp.MultipleEnrolment = Par_GetParToBool ("MultipleEnrolment");
|
|
||||||
|
|
||||||
/* Get open time */
|
/* Get open time */
|
||||||
Gbl.Crs.Grps.GrpTyp.OpenTimeUTC = Dat_GetTimeUTCFromForm ("OpenTimeUTC");
|
Gbl.Crs.Grps.GrpTyp.OpenTimeUTC = Dat_GetTimeUTCFromForm ("OpenTimeUTC");
|
||||||
|
@ -4294,14 +4293,14 @@ void Grp_GetLstCodsGrpWanted (struct ListCodGrps *LstGrpsWanted)
|
||||||
unsigned NumGrpWanted;
|
unsigned NumGrpWanted;
|
||||||
|
|
||||||
/***** Allocate memory for the strings with group codes in each type *****/
|
/***** 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)
|
sizeof (*LstStrCodGrps))) == NULL)
|
||||||
Err_NotEnoughMemoryExit ();
|
Err_NotEnoughMemoryExit ();
|
||||||
|
|
||||||
/***** Get lists with the groups that I want in each type
|
/***** Get lists with the groups that I want in each type
|
||||||
in order to count the total number of groups selected *****/
|
in order to count the total number of groups selected *****/
|
||||||
for (NumGrpTyp = 0, LstGrpsWanted->NumGrps = 0;
|
for (NumGrpTyp = 0, LstGrpsWanted->NumGrps = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
{
|
{
|
||||||
/***** Allocate memory for the list of group codes of this type *****/
|
/***** Allocate memory for the list of group codes of this type *****/
|
||||||
|
@ -4337,7 +4336,7 @@ void Grp_GetLstCodsGrpWanted (struct ListCodGrps *LstGrpsWanted)
|
||||||
|
|
||||||
/***** Get the groups *****/
|
/***** Get the groups *****/
|
||||||
for (NumGrpTyp = 0, NumGrpWanted = 0;
|
for (NumGrpTyp = 0, NumGrpWanted = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
{
|
{
|
||||||
/* Add the groups selected of this type to the complete list of groups selected */
|
/* Add the groups selected of this type to the complete list of groups selected */
|
||||||
|
|
|
@ -107,7 +107,7 @@ struct GroupType
|
||||||
struct GroupTypes
|
struct GroupTypes
|
||||||
{
|
{
|
||||||
struct GroupType *LstGrpTypes; // List of types of group
|
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
|
unsigned NumGrpsTotal; // Number of groups of any type
|
||||||
int NestedCalls; // Number of nested calls to the function that allocates memory for this list
|
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 *****/
|
/***** Get list of groups types and groups in this course *****/
|
||||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||||
|
|
||||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||||
{
|
{
|
||||||
/***** Begin box and table *****/
|
/***** Begin box and table *****/
|
||||||
HTM_TR_Begin (NULL);
|
HTM_TR_Begin (NULL);
|
||||||
|
@ -1605,7 +1605,7 @@ static void Mch_ShowLstGrpsToEditMatch (long MchCod)
|
||||||
|
|
||||||
/***** List the groups for each group type *****/
|
/***** List the groups for each group type *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||||
Grp_ListGrpsToEditAsgAttSvyEvtMch (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
Grp_ListGrpsToEditAsgAttSvyEvtMch (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||||
|
|
|
@ -3407,9 +3407,9 @@ void Prj_RemoveProject (void)
|
||||||
"DELETE FROM prj_users"
|
"DELETE FROM prj_users"
|
||||||
" USING prj_projects,"
|
" USING prj_projects,"
|
||||||
"prj_users"
|
"prj_users"
|
||||||
" WHERE projects.PrjCod=%ld"
|
" WHERE prj_projects.PrjCod=%ld"
|
||||||
" AND projects.CrsCod=%ld"
|
" AND prj_projects.CrsCod=%ld"
|
||||||
" AND projects.PrjCod=prj_users.PrjCod",
|
" AND prj_projects.PrjCod=prj_users.PrjCod",
|
||||||
Prj.PrjCod,
|
Prj.PrjCod,
|
||||||
Gbl.Hierarchy.Crs.CrsCod);
|
Gbl.Hierarchy.Crs.CrsCod);
|
||||||
|
|
||||||
|
|
|
@ -2135,7 +2135,7 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
|
||||||
/***** Get list of groups types and groups in this course *****/
|
/***** Get list of groups types and groups in this course *****/
|
||||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||||
|
|
||||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||||
{
|
{
|
||||||
/***** Begin box and table *****/
|
/***** Begin box and table *****/
|
||||||
HTM_TR_Begin (NULL);
|
HTM_TR_Begin (NULL);
|
||||||
|
@ -2166,7 +2166,7 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
|
||||||
|
|
||||||
/***** List the groups for each group type *****/
|
/***** List the groups for each group type *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||||
Grp_ListGrpsToEditAsgAttSvyEvtMch (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
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,
|
HTM_OPTION (HTM_Type_STRING,"-1",GrpCod <= 0,false,
|
||||||
"%s",Txt_All_groups);
|
"%s",Txt_All_groups);
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
{
|
{
|
||||||
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp];
|
GrpTyp = &Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp];
|
||||||
|
@ -1837,5 +1837,5 @@ void Tmt_DB_OrphanAllGrpsOfATypeInCrsTimeTable (long GrpTypCod)
|
||||||
" (SELECT GrpCod"
|
" (SELECT GrpCod"
|
||||||
" FROM grp_groups"
|
" FROM grp_groups"
|
||||||
" WHERE GrpTypCod=%ld)",
|
" 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 *****/
|
/***** Write the groups a the que pertenece the student *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) // If current course tiene groups of este type
|
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);
|
Grp_GetListGrpTypesInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||||
|
|
||||||
/***** Allocate memory for list of booleans AddStdsWithoutGroupOf *****/
|
/***** 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)
|
sizeof (*AddStdsWithoutGroupOf))) == NULL)
|
||||||
Err_NotEnoughMemoryExit ();
|
Err_NotEnoughMemoryExit ();
|
||||||
|
|
||||||
/***** Initialize vector of booleans that indicates whether it's necessary add to the list
|
/***** 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 *****/
|
the students who don't belong to any group of each type *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
AddStdsWithoutGroupOf[NumGrpTyp] = false;
|
AddStdsWithoutGroupOf[NumGrpTyp] = false;
|
||||||
|
|
||||||
|
@ -4575,7 +4575,7 @@ static void Usr_BuildQueryToGetUsrsLstCrs (char **Query,Rol_Role_t Role)
|
||||||
NumPositiveCods++;
|
NumPositiveCods++;
|
||||||
else
|
else
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod == -GrpCod)
|
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 *****/
|
/***** Create a query with the students who don't belong to any group *****/
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
if (AddStdsWithoutGroupOf[NumGrpTyp])
|
if (AddStdsWithoutGroupOf[NumGrpTyp])
|
||||||
{
|
{
|
||||||
|
@ -7188,7 +7188,7 @@ void Usr_ListAllDataStds (void)
|
||||||
NumColumnsCommonCard = Usr_NUM_ALL_FIELDS_DATA_STD;
|
NumColumnsCommonCard = Usr_NUM_ALL_FIELDS_DATA_STD;
|
||||||
if (Gbl.Scope.Current == HieLvl_CRS)
|
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;
|
NumColumnsTotal = NumColumnsCardAndGroups + Gbl.Crs.Records.LstFields.Num;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -7227,9 +7227,9 @@ void Usr_ListAllDataStds (void)
|
||||||
/* 2. Columns for the groups */
|
/* 2. Columns for the groups */
|
||||||
if (Gbl.Scope.Current == HieLvl_CRS)
|
if (Gbl.Scope.Current == HieLvl_CRS)
|
||||||
{
|
{
|
||||||
if (Gbl.Crs.Grps.GrpTypes.Num)
|
if (Gbl.Crs.Grps.GrpTypes.NumGrpTypes)
|
||||||
for (NumGrpTyp = 0;
|
for (NumGrpTyp = 0;
|
||||||
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.Num;
|
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
|
||||||
NumGrpTyp++)
|
NumGrpTyp++)
|
||||||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) // If current course tiene groups of este type
|
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) // If current course tiene groups of este type
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue