mirror of https://github.com/acanas/swad-core.git
Version 16.131
This commit is contained in:
parent
4b8bf39c6c
commit
c428ea015a
|
@ -296,7 +296,8 @@ void ID_GetParamOtherUsrIDPlain (void)
|
||||||
ID_ReallocateListIDs (&Gbl.Usrs.Other.UsrDat,1);
|
ID_ReallocateListIDs (&Gbl.Usrs.Other.UsrDat,1);
|
||||||
|
|
||||||
/***** Get parameter *****/
|
/***** Get parameter *****/
|
||||||
Par_GetParToText ("OtherUsrID",Gbl.Usrs.Other.UsrDat.IDs.List[0].ID,ID_MAX_LENGTH_USR_ID);
|
Par_GetParToText ("OtherUsrID",Gbl.Usrs.Other.UsrDat.IDs.List[0].ID,
|
||||||
|
ID_MAX_LENGTH_USR_ID);
|
||||||
// Users' IDs are always stored internally in capitals and without leading zeros
|
// Users' IDs are always stored internally in capitals and without leading zeros
|
||||||
Str_RemoveLeadingZeros (Gbl.Usrs.Other.UsrDat.IDs.List[0].ID);
|
Str_RemoveLeadingZeros (Gbl.Usrs.Other.UsrDat.IDs.List[0].ID);
|
||||||
Str_ConvertToUpperText (Gbl.Usrs.Other.UsrDat.IDs.List[0].ID);
|
Str_ConvertToUpperText (Gbl.Usrs.Other.UsrDat.IDs.List[0].ID);
|
||||||
|
|
|
@ -90,7 +90,7 @@ static void Agd_PutIconsOtherPublicAgenda (void);
|
||||||
static void Agd_PutButtonToCreateNewEvent (void);
|
static void Agd_PutButtonToCreateNewEvent (void);
|
||||||
static void Agd_PutParamsToCreateNewEvent (void);
|
static void Agd_PutParamsToCreateNewEvent (void);
|
||||||
static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod);
|
static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod);
|
||||||
static void Agd_GetParamEventOrderType (void);
|
static void Agd_GetParamEventOrder (void);
|
||||||
|
|
||||||
static void Agd_PutFormsToRemEditOneEvent (struct AgendaEvent *AgdEvent);
|
static void Agd_PutFormsToRemEditOneEvent (struct AgendaEvent *AgdEvent);
|
||||||
static void Agd_PutParams (void);
|
static void Agd_PutParams (void);
|
||||||
|
@ -279,7 +279,7 @@ static void Agd_ShowEvents (Agd_AgendaType_t AgendaType)
|
||||||
};
|
};
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Agd_GetParamEventOrderType ();
|
Agd_GetParamEventOrder ();
|
||||||
Pag_GetParamPagNum (WhatPaginate[AgendaType]);
|
Pag_GetParamPagNum (WhatPaginate[AgendaType]);
|
||||||
|
|
||||||
/***** Get list of events *****/
|
/***** Get list of events *****/
|
||||||
|
@ -342,7 +342,7 @@ static void Agd_ShowEventsToday (Agd_AgendaType_t AgendaType)
|
||||||
unsigned NumEvent;
|
unsigned NumEvent;
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Agd_GetParamEventOrderType ();
|
Agd_GetParamEventOrder ();
|
||||||
|
|
||||||
/***** Get list of events *****/
|
/***** Get list of events *****/
|
||||||
Agd_GetListEvents (AgendaType);
|
Agd_GetListEvents (AgendaType);
|
||||||
|
@ -424,10 +424,10 @@ static void Agd_WriteHeaderListEvents (Agd_AgendaType_t AgendaType)
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Agenda.SelectedOrderType)
|
if (Order == Gbl.Agenda.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
|
||||||
if (Order == Gbl.Agenda.SelectedOrderType)
|
if (Order == Gbl.Agenda.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -567,7 +567,7 @@ static void Agd_PutButtonToCreateNewEvent (void)
|
||||||
|
|
||||||
static void Agd_PutParamsToCreateNewEvent (void)
|
static void Agd_PutParamsToCreateNewEvent (void)
|
||||||
{
|
{
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -691,20 +691,16 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
|
||||||
/********** Get parameter with the type or order in list of events ***********/
|
/********** Get parameter with the type or order in list of events ***********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Agd_GetParamEventOrderType (void)
|
static void Agd_GetParamEventOrder (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned UnsignedNum;
|
|
||||||
static bool AlreadyGot = false;
|
static bool AlreadyGot = false;
|
||||||
|
|
||||||
if (!AlreadyGot)
|
if (!AlreadyGot)
|
||||||
{
|
{
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
Gbl.Agenda.SelectedOrder = (Agd_Order_t) Par_GetParToUnsigned ("Order",
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
(unsigned) Agd_ORDER_BY_START_DATE,
|
||||||
Gbl.Agenda.SelectedOrderType = (Agd_Order_t) UnsignedNum;
|
(unsigned) Agd_ORDER_BY_END_DATE,
|
||||||
else
|
(unsigned) Agd_ORDER_DEFAULT);
|
||||||
Gbl.Agenda.SelectedOrderType = Agd_DEFAULT_ORDER_TYPE;
|
|
||||||
|
|
||||||
AlreadyGot = true;
|
AlreadyGot = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -713,9 +709,9 @@ static void Agd_GetParamEventOrderType (void)
|
||||||
/****** Put a hidden parameter with the type of order in list of events ******/
|
/****** Put a hidden parameter with the type of order in list of events ******/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Agd_PutHiddenParamEventsOrderType (void)
|
void Agd_PutHiddenParamEventsOrder (void)
|
||||||
{
|
{
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Agenda.SelectedOrderType);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Agenda.SelectedOrder);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -777,7 +773,7 @@ static void Agd_PutFormsToRemEditOneEvent (struct AgendaEvent *AgdEvent)
|
||||||
static void Agd_PutParams (void)
|
static void Agd_PutParams (void)
|
||||||
{
|
{
|
||||||
Agd_PutParamAgdCod (Gbl.Agenda.AgdCodToEdit);
|
Agd_PutParamAgdCod (Gbl.Agenda.AgdCodToEdit);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -798,7 +794,7 @@ static void Agd_GetListEvents (Agd_AgendaType_t AgendaType)
|
||||||
Agd_FreeListEvents ();
|
Agd_FreeListEvents ();
|
||||||
|
|
||||||
/***** Get list of events from database *****/
|
/***** Get list of events from database *****/
|
||||||
switch (Gbl.Agenda.SelectedOrderType)
|
switch (Gbl.Agenda.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Agd_ORDER_BY_START_DATE:
|
case Agd_ORDER_BY_START_DATE:
|
||||||
sprintf (OrderBySubQuery,"StartTime,"
|
sprintf (OrderBySubQuery,"StartTime,"
|
||||||
|
@ -1054,7 +1050,7 @@ void Agd_AskRemEvent (void)
|
||||||
struct AgendaEvent AgdEvent;
|
struct AgendaEvent AgdEvent;
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Agd_GetParamEventOrderType ();
|
Agd_GetParamEventOrder ();
|
||||||
Pag_GetParamPagNum (Pag_MY_FULL_AGENDA);
|
Pag_GetParamPagNum (Pag_MY_FULL_AGENDA);
|
||||||
|
|
||||||
/***** Get event code *****/
|
/***** Get event code *****/
|
||||||
|
@ -1068,7 +1064,7 @@ void Agd_AskRemEvent (void)
|
||||||
/***** Button of confirmation of removing *****/
|
/***** Button of confirmation of removing *****/
|
||||||
Act_FormStart (ActRemEvtMyAgd);
|
Act_FormStart (ActRemEvtMyAgd);
|
||||||
Agd_PutParamAgdCod (AgdEvent.AgdCod);
|
Agd_PutParamAgdCod (AgdEvent.AgdCod);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
|
|
||||||
/***** Ask for confirmation of removing *****/
|
/***** Ask for confirmation of removing *****/
|
||||||
|
@ -1265,7 +1261,7 @@ void Agd_RequestCreatOrEditEvent (void)
|
||||||
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Agd_GetParamEventOrderType ();
|
Agd_GetParamEventOrder ();
|
||||||
Pag_GetParamPagNum (Pag_MY_FULL_AGENDA);
|
Pag_GetParamPagNum (Pag_MY_FULL_AGENDA);
|
||||||
|
|
||||||
/***** Get the code of the event *****/
|
/***** Get the code of the event *****/
|
||||||
|
@ -1300,7 +1296,7 @@ void Agd_RequestCreatOrEditEvent (void)
|
||||||
Act_FormStart (ActChgEvtMyAgd);
|
Act_FormStart (ActChgEvtMyAgd);
|
||||||
Agd_PutParamAgdCod (AgdEvent.AgdCod);
|
Agd_PutParamAgdCod (AgdEvent.AgdCod);
|
||||||
}
|
}
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
|
|
||||||
/***** Table start *****/
|
/***** Table start *****/
|
||||||
|
|
|
@ -67,8 +67,7 @@ typedef enum
|
||||||
Agd_ORDER_BY_START_DATE = 0,
|
Agd_ORDER_BY_START_DATE = 0,
|
||||||
Agd_ORDER_BY_END_DATE = 1,
|
Agd_ORDER_BY_END_DATE = 1,
|
||||||
} Agd_Order_t;
|
} Agd_Order_t;
|
||||||
|
#define Agd_ORDER_DEFAULT Agd_ORDER_BY_START_DATE
|
||||||
#define Agd_DEFAULT_ORDER_TYPE Agd_ORDER_BY_START_DATE
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
|
@ -82,7 +81,7 @@ void Agd_ShowMyPublicAgenda (void);
|
||||||
void Agd_ShowUsrAgenda (void);
|
void Agd_ShowUsrAgenda (void);
|
||||||
void Agd_ShowOtherAgendaAfterLogIn (void);
|
void Agd_ShowOtherAgendaAfterLogIn (void);
|
||||||
|
|
||||||
void Agd_PutHiddenParamEventsOrderType (void);
|
void Agd_PutHiddenParamEventsOrder (void);
|
||||||
void Agd_RequestCreatOrEditEvent (void);
|
void Agd_RequestCreatOrEditEvent (void);
|
||||||
void Agd_FreeListEvents (void);
|
void Agd_FreeListEvents (void);
|
||||||
|
|
||||||
|
|
|
@ -73,7 +73,7 @@ static void Asg_ParamsWhichGroupsToShow (void);
|
||||||
static void Asg_ShowOneAssignment (long AsgCod);
|
static void Asg_ShowOneAssignment (long AsgCod);
|
||||||
static void Asg_WriteAsgAuthor (struct Assignment *Asg);
|
static void Asg_WriteAsgAuthor (struct Assignment *Asg);
|
||||||
static void Asg_WriteAssignmentFolder (struct Assignment *Asg);
|
static void Asg_WriteAssignmentFolder (struct Assignment *Asg);
|
||||||
static void Asg_GetParamAsgOrderType (void);
|
static void Asg_GetParamAsgOrder (void);
|
||||||
|
|
||||||
static void Asg_PutFormsToRemEditOneAsg (long AsgCod,bool Hidden);
|
static void Asg_PutFormsToRemEditOneAsg (long AsgCod,bool Hidden);
|
||||||
static void Asg_PutParams (void);
|
static void Asg_PutParams (void);
|
||||||
|
@ -99,7 +99,7 @@ static bool Asg_CheckIfIBelongToCrsOrGrpsThisAssignment (long AsgCod);
|
||||||
void Asg_SeeAssignments (void)
|
void Asg_SeeAssignments (void)
|
||||||
{
|
{
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Asg_GetParamAsgOrderType ();
|
Asg_GetParamAsgOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Pag_GetParamPagNum (Pag_ASSIGNMENTS);
|
Pag_GetParamPagNum (Pag_ASSIGNMENTS);
|
||||||
|
|
||||||
|
@ -161,10 +161,10 @@ static void Asg_ShowAllAssignments (void)
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Asgs.SelectedOrderType)
|
if (Order == Gbl.Asgs.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
|
||||||
if (Order == Gbl.Asgs.SelectedOrderType)
|
if (Order == Gbl.Asgs.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -271,7 +271,7 @@ static void Asg_PutButtonToCreateNewAsg (void)
|
||||||
|
|
||||||
static void Asg_PutParamsToCreateNewAsg (void)
|
static void Asg_PutParamsToCreateNewAsg (void)
|
||||||
{
|
{
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
}
|
}
|
||||||
|
@ -289,7 +289,7 @@ static void Asg_PutFormToSelectWhichGroupsToShow (void)
|
||||||
|
|
||||||
static void Asg_ParamsWhichGroupsToShow (void)
|
static void Asg_ParamsWhichGroupsToShow (void)
|
||||||
{
|
{
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,25 +521,21 @@ static void Asg_WriteAssignmentFolder (struct Assignment *Asg)
|
||||||
/******* Get parameter with the type or order in list of assignments *********/
|
/******* Get parameter with the type or order in list of assignments *********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Asg_GetParamAsgOrderType (void)
|
static void Asg_GetParamAsgOrder (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
Gbl.Asgs.SelectedOrder = (Dat_StartEndTime_t) Par_GetParToUnsigned ("Order",
|
||||||
unsigned UnsignedNum;
|
(unsigned) Dat_START_TIME,
|
||||||
|
(unsigned) Dat_END_TIME,
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
(unsigned) Asg_ORDER_DEFAULT);
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
|
||||||
Gbl.Asgs.SelectedOrderType = (Dat_StartEndTime_t) UnsignedNum;
|
|
||||||
else
|
|
||||||
Gbl.Asgs.SelectedOrderType = Asg_DEFAULT_ORDER_TYPE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*** Put a hidden parameter with the type of order in list of assignments ****/
|
/*** Put a hidden parameter with the type of order in list of assignments ****/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Asg_PutHiddenParamAsgOrderType (void)
|
void Asg_PutHiddenParamAsgOrder (void)
|
||||||
{
|
{
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Asgs.SelectedOrderType);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Asgs.SelectedOrder);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -591,7 +587,7 @@ static void Asg_PutFormsToRemEditOneAsg (long AsgCod,bool Hidden)
|
||||||
static void Asg_PutParams (void)
|
static void Asg_PutParams (void)
|
||||||
{
|
{
|
||||||
Asg_PutParamAsgCod (Gbl.Asgs.AsgCodToEdit);
|
Asg_PutParamAsgCod (Gbl.Asgs.AsgCodToEdit);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
}
|
}
|
||||||
|
@ -624,7 +620,7 @@ void Asg_GetListAssignments (void)
|
||||||
sprintf (HiddenSubQuery,"AND Hidden='N'");
|
sprintf (HiddenSubQuery,"AND Hidden='N'");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch (Gbl.Asgs.SelectedOrderType)
|
switch (Gbl.Asgs.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Dat_START_TIME:
|
case Dat_START_TIME:
|
||||||
sprintf (OrderBySubQuery,"StartTime DESC,EndTime DESC,Title DESC");
|
sprintf (OrderBySubQuery,"StartTime DESC,EndTime DESC,Title DESC");
|
||||||
|
@ -944,7 +940,7 @@ void Asg_ReqRemAssignment (void)
|
||||||
struct Assignment Asg;
|
struct Assignment Asg;
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Asg_GetParamAsgOrderType ();
|
Asg_GetParamAsgOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Pag_GetParamPagNum (Pag_ASSIGNMENTS);
|
Pag_GetParamPagNum (Pag_ASSIGNMENTS);
|
||||||
|
|
||||||
|
@ -958,7 +954,7 @@ void Asg_ReqRemAssignment (void)
|
||||||
/***** Button of confirmation of removing *****/
|
/***** Button of confirmation of removing *****/
|
||||||
Act_FormStart (ActRemAsg);
|
Act_FormStart (ActRemAsg);
|
||||||
Asg_PutParamAsgCod (Asg.AsgCod);
|
Asg_PutParamAsgCod (Asg.AsgCod);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
|
|
||||||
|
@ -1116,7 +1112,7 @@ void Asg_RequestCreatOrEditAsg (void)
|
||||||
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Asg_GetParamAsgOrderType ();
|
Asg_GetParamAsgOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Pag_GetParamPagNum (Pag_ASSIGNMENTS);
|
Pag_GetParamPagNum (Pag_ASSIGNMENTS);
|
||||||
|
|
||||||
|
@ -1153,7 +1149,7 @@ void Asg_RequestCreatOrEditAsg (void)
|
||||||
Act_FormStart (ActChgAsg);
|
Act_FormStart (ActChgAsg);
|
||||||
Asg_PutParamAsgCod (Asg.AsgCod);
|
Asg_PutParamAsgCod (Asg.AsgCod);
|
||||||
}
|
}
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
|
|
||||||
|
|
|
@ -61,14 +61,14 @@ struct Assignment
|
||||||
// I belong to any of the groups)
|
// I belong to any of the groups)
|
||||||
};
|
};
|
||||||
|
|
||||||
#define Asg_DEFAULT_ORDER_TYPE Dat_START_TIME
|
#define Asg_ORDER_DEFAULT Dat_START_TIME
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Asg_SeeAssignments (void);
|
void Asg_SeeAssignments (void);
|
||||||
void Asg_PutHiddenParamAsgOrderType (void);
|
void Asg_PutHiddenParamAsgOrder (void);
|
||||||
void Asg_RequestCreatOrEditAsg (void);
|
void Asg_RequestCreatOrEditAsg (void);
|
||||||
void Asg_GetListAssignments (void);
|
void Asg_GetListAssignments (void);
|
||||||
void Asg_GetDataOfAssignmentByCod (struct Assignment *Asg);
|
void Asg_GetDataOfAssignmentByCod (struct Assignment *Asg);
|
||||||
|
|
|
@ -78,7 +78,7 @@ static void Att_PutButtonToCreateNewAttEvent (void);
|
||||||
static void Att_PutParamsToCreateNewAttEvent (void);
|
static void Att_PutParamsToCreateNewAttEvent (void);
|
||||||
static void Att_ShowOneAttEvent (struct AttendanceEvent *Att,bool ShowOnlyThisAttEventComplete);
|
static void Att_ShowOneAttEvent (struct AttendanceEvent *Att,bool ShowOnlyThisAttEventComplete);
|
||||||
static void Att_WriteAttEventAuthor (struct AttendanceEvent *Att);
|
static void Att_WriteAttEventAuthor (struct AttendanceEvent *Att);
|
||||||
static void Att_GetParamAttOrderType (void);
|
static void Att_GetParamAttOrder (void);
|
||||||
|
|
||||||
static void Att_PutFormToListMyAttendance (void);
|
static void Att_PutFormToListMyAttendance (void);
|
||||||
static void Att_PutFormToListStdsAttendance (void);
|
static void Att_PutFormToListStdsAttendance (void);
|
||||||
|
@ -146,7 +146,7 @@ void Att_SeeAttEvents (void)
|
||||||
char NicknameWithArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
|
char NicknameWithArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Att_GetParamAttOrderType ();
|
Att_GetParamAttOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Pag_GetParamPagNum (Pag_ATT_EVENTS);
|
Pag_GetParamPagNum (Pag_ATT_EVENTS);
|
||||||
|
|
||||||
|
@ -243,10 +243,10 @@ static void Att_ShowAllAttEvents (void)
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.AttEvents.SelectedOrderType)
|
if (Order == Gbl.AttEvents.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
|
||||||
if (Order == Gbl.AttEvents.SelectedOrderType)
|
if (Order == Gbl.AttEvents.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -302,7 +302,7 @@ static void Att_PutFormToSelectWhichGroupsToShow (void)
|
||||||
|
|
||||||
static void Att_ParamsWhichGroupsToShow (void)
|
static void Att_ParamsWhichGroupsToShow (void)
|
||||||
{
|
{
|
||||||
Att_PutHiddenParamAttOrderType ();
|
Att_PutHiddenParamAttOrder ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -341,7 +341,7 @@ static void Att_PutButtonToCreateNewAttEvent (void)
|
||||||
|
|
||||||
static void Att_PutParamsToCreateNewAttEvent (void)
|
static void Att_PutParamsToCreateNewAttEvent (void)
|
||||||
{
|
{
|
||||||
Att_PutHiddenParamAttOrderType ();
|
Att_PutHiddenParamAttOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
}
|
}
|
||||||
|
@ -520,25 +520,21 @@ static void Att_WriteAttEventAuthor (struct AttendanceEvent *Att)
|
||||||
/**** Get parameter with the type or order in list of attendance events ******/
|
/**** Get parameter with the type or order in list of attendance events ******/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Att_GetParamAttOrderType (void)
|
static void Att_GetParamAttOrder (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
Gbl.AttEvents.SelectedOrder = (Dat_StartEndTime_t) Par_GetParToUnsigned ("Order",
|
||||||
unsigned UnsignedNum;
|
(unsigned) Dat_START_TIME,
|
||||||
|
(unsigned) Dat_END_TIME,
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
(unsigned) Att_ORDER_DEFAULT);
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
|
||||||
Gbl.AttEvents.SelectedOrderType = (Dat_StartEndTime_t) UnsignedNum;
|
|
||||||
else
|
|
||||||
Gbl.AttEvents.SelectedOrderType = Att_DEFAULT_ORDER_TYPE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*** Put a hidden parameter with the type of order in list of att. events ****/
|
/*** Put a hidden parameter with the type of order in list of att. events ****/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Att_PutHiddenParamAttOrderType (void)
|
void Att_PutHiddenParamAttOrder (void)
|
||||||
{
|
{
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.AttEvents.SelectedOrderType);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.AttEvents.SelectedOrder);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -571,7 +567,7 @@ static void Att_PutFormToListStdsAttendance (void)
|
||||||
|
|
||||||
static void Att_PutFormToListStdsParams (void)
|
static void Att_PutFormToListStdsParams (void)
|
||||||
{
|
{
|
||||||
Att_PutHiddenParamAttOrderType ();
|
Att_PutHiddenParamAttOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
}
|
}
|
||||||
|
@ -624,7 +620,7 @@ static void Att_PutFormsToRemEditOneAttEvent (long AttCod,bool Hidden)
|
||||||
static void Att_PutParams (void)
|
static void Att_PutParams (void)
|
||||||
{
|
{
|
||||||
Att_PutParamAttCod (Gbl.AttEvents.AttCodToEdit);
|
Att_PutParamAttCod (Gbl.AttEvents.AttCodToEdit);
|
||||||
Att_PutHiddenParamAttOrderType ();
|
Att_PutHiddenParamAttOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
}
|
}
|
||||||
|
@ -657,7 +653,7 @@ static void Att_GetListAttEvents (Att_OrderTime_t Order)
|
||||||
sprintf (HiddenSubQuery,"AND Hidden='N'");
|
sprintf (HiddenSubQuery,"AND Hidden='N'");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch (Gbl.AttEvents.SelectedOrderType)
|
switch (Gbl.AttEvents.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Dat_START_TIME:
|
case Dat_START_TIME:
|
||||||
if (Order == Att_NEWEST_FIRST)
|
if (Order == Att_NEWEST_FIRST)
|
||||||
|
@ -908,7 +904,7 @@ void Att_AskRemAttEvent (void)
|
||||||
struct AttendanceEvent Att;
|
struct AttendanceEvent Att;
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Att_GetParamAttOrderType ();
|
Att_GetParamAttOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Pag_GetParamPagNum (Pag_ATT_EVENTS);
|
Pag_GetParamPagNum (Pag_ATT_EVENTS);
|
||||||
|
|
||||||
|
@ -922,7 +918,7 @@ void Att_AskRemAttEvent (void)
|
||||||
/***** Button of confirmation of removing *****/
|
/***** Button of confirmation of removing *****/
|
||||||
Act_FormStart (ActRemAtt);
|
Act_FormStart (ActRemAtt);
|
||||||
Att_PutParamAttCod (Att.AttCod);
|
Att_PutParamAttCod (Att.AttCod);
|
||||||
Att_PutHiddenParamAttOrderType ();
|
Att_PutHiddenParamAttOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
|
|
||||||
|
@ -1083,7 +1079,7 @@ void Att_RequestCreatOrEditAttEvent (void)
|
||||||
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Att_GetParamAttOrderType ();
|
Att_GetParamAttOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Pag_GetParamPagNum (Pag_ATT_EVENTS);
|
Pag_GetParamPagNum (Pag_ATT_EVENTS);
|
||||||
|
|
||||||
|
@ -1122,7 +1118,7 @@ void Att_RequestCreatOrEditAttEvent (void)
|
||||||
Act_FormStart (ActChgAtt);
|
Act_FormStart (ActChgAtt);
|
||||||
Att_PutParamAttCod (Att.AttCod);
|
Att_PutParamAttCod (Att.AttCod);
|
||||||
}
|
}
|
||||||
Att_PutHiddenParamAttOrderType ();
|
Att_PutHiddenParamAttOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
|
|
||||||
|
@ -1845,7 +1841,7 @@ void Att_SeeOneAttEvent (void)
|
||||||
Lay_ShowErrorAndExit ("Code of attendance event is missing.");
|
Lay_ShowErrorAndExit ("Code of attendance event is missing.");
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Att_GetParamAttOrderType ();
|
Att_GetParamAttOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Pag_GetParamPagNum (Pag_ATT_EVENTS);
|
Pag_GetParamPagNum (Pag_ATT_EVENTS);
|
||||||
|
|
||||||
|
|
|
@ -67,14 +67,14 @@ typedef enum
|
||||||
Att_OLDEST_FIRST,
|
Att_OLDEST_FIRST,
|
||||||
} Att_OrderTime_t;
|
} Att_OrderTime_t;
|
||||||
|
|
||||||
#define Att_DEFAULT_ORDER_TYPE Dat_START_TIME
|
#define Att_ORDER_DEFAULT Dat_START_TIME
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Att_SeeAttEvents (void);
|
void Att_SeeAttEvents (void);
|
||||||
void Att_PutHiddenParamAttOrderType (void);
|
void Att_PutHiddenParamAttOrder (void);
|
||||||
void Att_RequestCreatOrEditAttEvent (void);
|
void Att_RequestCreatOrEditAttEvent (void);
|
||||||
bool Att_GetDataOfAttEventByCod (struct AttendanceEvent *Att);
|
bool Att_GetDataOfAttEventByCod (struct AttendanceEvent *Att);
|
||||||
void Att_FreeListAttEvents (void);
|
void Att_FreeListAttEvents (void);
|
||||||
|
|
|
@ -160,14 +160,12 @@ void Cal_ChangeFirstDayOfWeek (void)
|
||||||
|
|
||||||
static unsigned Cal_GetParamFirstDayOfWeek (void)
|
static unsigned Cal_GetParamFirstDayOfWeek (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
unsigned FirstDayOfWeek;
|
||||||
unsigned UnsignedNum;
|
|
||||||
unsigned FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT;
|
|
||||||
|
|
||||||
Par_GetParToText ("FirstDayOfWeek",UnsignedStr,10);
|
FirstDayOfWeek = Par_GetParToUnsigned ("FirstDayOfWeek",0,6,
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
Cal_FIRST_DAY_OF_WEEK_DEFAULT);
|
||||||
if (Cal_DayIsValidAsFirstDayOfWeek[UnsignedNum])
|
if (!Cal_DayIsValidAsFirstDayOfWeek[FirstDayOfWeek])
|
||||||
FirstDayOfWeek = UnsignedNum;
|
FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT;
|
||||||
|
|
||||||
return FirstDayOfWeek;
|
return FirstDayOfWeek;
|
||||||
}
|
}
|
||||||
|
@ -184,7 +182,7 @@ void Cal_DrawCurrentMonth (void)
|
||||||
/***** Get list of holidays *****/
|
/***** Get list of holidays *****/
|
||||||
if (!Gbl.Hlds.LstIsRead)
|
if (!Gbl.Hlds.LstIsRead)
|
||||||
{
|
{
|
||||||
Gbl.Hlds.SelectedOrderType = Hld_ORDER_BY_START_DATE;
|
Gbl.Hlds.SelectedOrder = Hld_ORDER_BY_START_DATE;
|
||||||
Hld_GetListHolidays ();
|
Hld_GetListHolidays ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,7 +238,7 @@ void Cal_DrawCalendar (void)
|
||||||
/***** Get list of holidays *****/
|
/***** Get list of holidays *****/
|
||||||
if (!Gbl.Hlds.LstIsRead)
|
if (!Gbl.Hlds.LstIsRead)
|
||||||
{
|
{
|
||||||
Gbl.Hlds.SelectedOrderType = Hld_ORDER_BY_START_DATE;
|
Gbl.Hlds.SelectedOrder = Hld_ORDER_BY_START_DATE;
|
||||||
Hld_GetListHolidays ();
|
Hld_GetListHolidays ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,7 @@ static bool Ctr_CheckIfICanCreateCentres (void);
|
||||||
static void Ctr_PutIconsListCentres (void);
|
static void Ctr_PutIconsListCentres (void);
|
||||||
static void Ctr_PutIconToEditCentres (void);
|
static void Ctr_PutIconToEditCentres (void);
|
||||||
static void Ctr_ListOneCentreForSeeing (struct Centre *Ctr,unsigned NumCtr);
|
static void Ctr_ListOneCentreForSeeing (struct Centre *Ctr,unsigned NumCtr);
|
||||||
static void Ctr_GetParamCtrOrderType (void);
|
static void Ctr_GetParamCtrOrder (void);
|
||||||
static void Ctr_GetPhotoAttribution (long CtrCod,char **PhotoAttribution);
|
static void Ctr_GetPhotoAttribution (long CtrCod,char **PhotoAttribution);
|
||||||
static void Ctr_FreePhotoAttribution (char **PhotoAttribution);
|
static void Ctr_FreePhotoAttribution (char **PhotoAttribution);
|
||||||
static void Ctr_ListCentresForEdition (void);
|
static void Ctr_ListCentresForEdition (void);
|
||||||
|
@ -718,7 +718,7 @@ void Ctr_ShowCtrsOfCurrentIns (void)
|
||||||
if (Gbl.CurrentIns.Ins.InsCod > 0)
|
if (Gbl.CurrentIns.Ins.InsCod > 0)
|
||||||
{
|
{
|
||||||
/***** Get parameter with the type of order in the list of centres *****/
|
/***** Get parameter with the type of order in the list of centres *****/
|
||||||
Ctr_GetParamCtrOrderType ();
|
Ctr_GetParamCtrOrder ();
|
||||||
|
|
||||||
/***** Get list of centres *****/
|
/***** Get list of centres *****/
|
||||||
Ctr_GetListCentres (Gbl.CurrentIns.Ins.InsCod);
|
Ctr_GetListCentres (Gbl.CurrentIns.Ins.InsCod);
|
||||||
|
@ -916,16 +916,12 @@ static void Ctr_ListOneCentreForSeeing (struct Centre *Ctr,unsigned NumCtr)
|
||||||
/********** Get parameter with the type or order in list of centres **********/
|
/********** Get parameter with the type or order in list of centres **********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Ctr_GetParamCtrOrderType (void)
|
static void Ctr_GetParamCtrOrder (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
Gbl.Ctrs.SelectedOrder = (Ctr_Order_t) Par_GetParToUnsigned ("Order",
|
||||||
unsigned UnsignedNum;
|
(unsigned) Ctr_ORDER_BY_CENTRE,
|
||||||
|
(unsigned) Ctr_ORDER_BY_NUM_TCHS,
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
(unsigned) Ctr_ORDER_DEFAULT);
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
|
||||||
Gbl.Ctrs.SelectedOrderType = (tCtrsOrderType) UnsignedNum;
|
|
||||||
else
|
|
||||||
Gbl.Ctrs.SelectedOrderType = Ctr_DEFAULT_ORDER_TYPE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -971,7 +967,7 @@ void Ctr_GetListCentres (long InsCod)
|
||||||
struct Centre *Ctr;
|
struct Centre *Ctr;
|
||||||
|
|
||||||
/***** Get centres from database *****/
|
/***** Get centres from database *****/
|
||||||
switch (Gbl.Ctrs.SelectedOrderType)
|
switch (Gbl.Ctrs.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Ctr_ORDER_BY_CENTRE:
|
case Ctr_ORDER_BY_CENTRE:
|
||||||
sprintf (OrderBySubQuery,"FullName");
|
sprintf (OrderBySubQuery,"FullName");
|
||||||
|
@ -2073,7 +2069,6 @@ void Ctr_ChangeCtrStatus (void)
|
||||||
extern const char *Txt_The_status_of_the_centre_X_has_changed;
|
extern const char *Txt_The_status_of_the_centre_X_has_changed;
|
||||||
struct Centre *Ctr;
|
struct Centre *Ctr;
|
||||||
char Query[256];
|
char Query[256];
|
||||||
char UnsignedNum[10 + 1];
|
|
||||||
Ctr_Status_t Status;
|
Ctr_Status_t Status;
|
||||||
Ctr_StatusTxt_t StatusTxt;
|
Ctr_StatusTxt_t StatusTxt;
|
||||||
|
|
||||||
|
@ -2084,8 +2079,9 @@ void Ctr_ChangeCtrStatus (void)
|
||||||
Ctr->CtrCod = Ctr_GetAndCheckParamOtherCtrCod ();
|
Ctr->CtrCod = Ctr_GetAndCheckParamOtherCtrCod ();
|
||||||
|
|
||||||
/* Get parameter with status */
|
/* Get parameter with status */
|
||||||
Par_GetParToText ("Status",UnsignedNum,1);
|
Status = (Ctr_Status_t) Par_GetParToUnsigned ("Status",0,UINT_MAX,
|
||||||
if (sscanf (UnsignedNum,"%u",&Status) != 1)
|
(unsigned) Ctr_WRONG_STATUS);
|
||||||
|
if (Status == Ctr_WRONG_STATUS)
|
||||||
Lay_ShowErrorAndExit ("Wrong status.");
|
Lay_ShowErrorAndExit ("Wrong status.");
|
||||||
StatusTxt = Ctr_GetStatusTxtFromStatusBits (Status);
|
StatusTxt = Ctr_GetStatusTxtFromStatusBits (Status);
|
||||||
Status = Ctr_GetStatusBitsFromStatusTxt (StatusTxt); // New status
|
Status = Ctr_GetStatusBitsFromStatusTxt (StatusTxt); // New status
|
||||||
|
@ -2516,7 +2512,7 @@ static void Ctr_PutHeadCentresForSeeing (bool OrderSelectable)
|
||||||
extern const char *Txt_Teachers_ABBREVIATION;
|
extern const char *Txt_Teachers_ABBREVIATION;
|
||||||
extern const char *Txt_Students_ABBREVIATION;
|
extern const char *Txt_Students_ABBREVIATION;
|
||||||
extern const char *Txt_Status;
|
extern const char *Txt_Status;
|
||||||
tCtrsOrderType Order;
|
Ctr_Order_t Order;
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<th></th>");
|
"<th></th>");
|
||||||
|
@ -2532,13 +2528,13 @@ static void Ctr_PutHeadCentresForSeeing (bool OrderSelectable)
|
||||||
Act_FormStart (ActSeeCtr);
|
Act_FormStart (ActSeeCtr);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_CENTRES_HELP_ORDER[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_CENTRES_HELP_ORDER[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Ctrs.SelectedOrderType)
|
if (Order == Gbl.Ctrs.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_CENTRES_ORDER[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_CENTRES_ORDER[Order]);
|
||||||
if (OrderSelectable)
|
if (OrderSelectable)
|
||||||
{
|
{
|
||||||
if (Order == Gbl.Ctrs.SelectedOrderType)
|
if (Order == Gbl.Ctrs.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
|
|
@ -41,7 +41,9 @@ typedef enum
|
||||||
Ctr_STATUS_BIT_PENDING = (1 << 0), // Centre is requested, but not yet activated
|
Ctr_STATUS_BIT_PENDING = (1 << 0), // Centre is requested, but not yet activated
|
||||||
Ctr_STATUS_BIT_REMOVED = (1 << 1), // Centre has been removed
|
Ctr_STATUS_BIT_REMOVED = (1 << 1), // Centre has been removed
|
||||||
} Ctr_Status_Bits_t;
|
} Ctr_Status_Bits_t;
|
||||||
|
|
||||||
typedef unsigned Ctr_Status_t;
|
typedef unsigned Ctr_Status_t;
|
||||||
|
#define Ctr_WRONG_STATUS ((Ctr_Status_t) UINT_MAX)
|
||||||
|
|
||||||
#define Ctr_NUM_STATUS_TXT 4
|
#define Ctr_NUM_STATUS_TXT 4
|
||||||
typedef enum
|
typedef enum
|
||||||
|
@ -78,9 +80,9 @@ typedef enum
|
||||||
{
|
{
|
||||||
Ctr_ORDER_BY_CENTRE = 0,
|
Ctr_ORDER_BY_CENTRE = 0,
|
||||||
Ctr_ORDER_BY_NUM_TCHS = 1,
|
Ctr_ORDER_BY_NUM_TCHS = 1,
|
||||||
} tCtrsOrderType;
|
} Ctr_Order_t;
|
||||||
|
|
||||||
#define Ctr_DEFAULT_ORDER_TYPE Ctr_ORDER_BY_CENTRE
|
#define Ctr_ORDER_DEFAULT Ctr_ORDER_BY_CENTRE
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************************** Public prototypes ****************************/
|
/****************************** Public prototypes ****************************/
|
||||||
|
|
|
@ -191,13 +191,15 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 16.129 (2017-01-28)"
|
#define Log_PLATFORM_VERSION "SWAD 16.131 (2017-01-29)"
|
||||||
#define CSS_FILE "swad16.123.css"
|
#define CSS_FILE "swad16.123.css"
|
||||||
#define JS_FILE "swad16.123.js"
|
#define JS_FILE "swad16.123.js"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// 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
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 16.131: Jan 29, 2017 Code refactoring in unsigned parameters. Not finished. (211856 lines)
|
||||||
|
Version 16.130: Jan 29, 2017 Code refactoring in unsigned parameters. Not finished. (211843 lines)
|
||||||
Version 16.129: Jan 28, 2017 Code refactoring in Y/N parameters. (211974 lines)
|
Version 16.129: Jan 28, 2017 Code refactoring in Y/N parameters. (211974 lines)
|
||||||
Version 16.128: Jan 28, 2017 Code refactoring in long parameters. (212037 lines)
|
Version 16.128: Jan 28, 2017 Code refactoring in long parameters. (212037 lines)
|
||||||
Version 16.127.3: Jan 28, 2017 Fixed bug in permissions to change another user's data. (212127 lines)
|
Version 16.127.3: Jan 28, 2017 Fixed bug in permissions to change another user's data. (212127 lines)
|
||||||
|
|
|
@ -72,7 +72,7 @@ static void Cty_PutIconsListCountries (void);
|
||||||
static void Cty_PutIconToEditCountries (void);
|
static void Cty_PutIconToEditCountries (void);
|
||||||
|
|
||||||
static unsigned Cty_GetNumUsrsWhoClaimToBelongToCty (long CtyCod);
|
static unsigned Cty_GetNumUsrsWhoClaimToBelongToCty (long CtyCod);
|
||||||
static void Cty_GetParamCtyOrderType (void);
|
static void Cty_GetParamCtyOrder (void);
|
||||||
static void Cty_GetMapAttribution (long CtyCod,char **MapAttribution);
|
static void Cty_GetMapAttribution (long CtyCod,char **MapAttribution);
|
||||||
static void Cty_FreeMapAttribution (char **MapAttribution);
|
static void Cty_FreeMapAttribution (char **MapAttribution);
|
||||||
static void Cty_ListCountriesForEdition (void);
|
static void Cty_ListCountriesForEdition (void);
|
||||||
|
@ -498,7 +498,7 @@ void Cty_ListCountries (void)
|
||||||
void Cty_ListCountries1 (void)
|
void Cty_ListCountries1 (void)
|
||||||
{
|
{
|
||||||
/***** Get parameter with the type of order in the list of countries *****/
|
/***** Get parameter with the type of order in the list of countries *****/
|
||||||
Cty_GetParamCtyOrderType ();
|
Cty_GetParamCtyOrder ();
|
||||||
|
|
||||||
/***** Get list of countries *****/
|
/***** Get list of countries *****/
|
||||||
Cty_GetListCountries (Cty_GET_EXTRA_DATA);
|
Cty_GetListCountries (Cty_GET_EXTRA_DATA);
|
||||||
|
@ -518,7 +518,7 @@ void Cty_ListCountries2 (void)
|
||||||
extern const char *Txt_Students_ABBREVIATION;
|
extern const char *Txt_Students_ABBREVIATION;
|
||||||
extern const char *Txt_Other_countries;
|
extern const char *Txt_Other_countries;
|
||||||
extern const char *Txt_Country_unspecified;
|
extern const char *Txt_Country_unspecified;
|
||||||
Cty_CtysOrderType_t Order;
|
Cty_Order_t Order;
|
||||||
unsigned NumCty;
|
unsigned NumCty;
|
||||||
const char *BgColor;
|
const char *BgColor;
|
||||||
|
|
||||||
|
@ -536,10 +536,10 @@ void Cty_ListCountries2 (void)
|
||||||
Act_FormStart (ActSeeCty);
|
Act_FormStart (ActSeeCty);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_COUNTRIES_HELP_ORDER[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_COUNTRIES_HELP_ORDER[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Ctys.SelectedOrderType)
|
if (Order == Gbl.Ctys.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_COUNTRIES_ORDER[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_COUNTRIES_ORDER[Order]);
|
||||||
if (Order == Gbl.Ctys.SelectedOrderType)
|
if (Order == Gbl.Ctys.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -887,16 +887,12 @@ void Cty_WriteScriptGoogleGeochart (void)
|
||||||
/******** Get parameter with the type or order in list of countries **********/
|
/******** Get parameter with the type or order in list of countries **********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Cty_GetParamCtyOrderType (void)
|
static void Cty_GetParamCtyOrder (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
Gbl.Ctys.SelectedOrder = (Cty_Order_t) Par_GetParToUnsigned ("Order",
|
||||||
unsigned UnsignedNum;
|
(unsigned) Cty_ORDER_BY_COUNTRY,
|
||||||
|
(unsigned) Cty_ORDER_BY_NUM_USRS,
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
(unsigned) Cty_ORDER_DEFAULT);
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
|
||||||
Gbl.Ctys.SelectedOrderType = (Cty_CtysOrderType_t) UnsignedNum;
|
|
||||||
else
|
|
||||||
Gbl.Ctys.SelectedOrderType = Cty_DEFAULT_ORDER_TYPE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -908,7 +904,7 @@ void Cty_EditCountries (void)
|
||||||
extern const char *Txt_No_countries_have_been_created;
|
extern const char *Txt_No_countries_have_been_created;
|
||||||
|
|
||||||
/***** Get list of countries *****/
|
/***** Get list of countries *****/
|
||||||
Gbl.Ctys.SelectedOrderType = Cty_ORDER_BY_COUNTRY;
|
Gbl.Ctys.SelectedOrder = Cty_ORDER_BY_COUNTRY;
|
||||||
Cty_GetListCountries (Cty_GET_EXTRA_DATA);
|
Cty_GetListCountries (Cty_GET_EXTRA_DATA);
|
||||||
|
|
||||||
if (!Gbl.Ctys.Num)
|
if (!Gbl.Ctys.Num)
|
||||||
|
@ -986,7 +982,7 @@ void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData)
|
||||||
Cty_MAX_LENGTH_SUBQUERY_CTYS);
|
Cty_MAX_LENGTH_SUBQUERY_CTYS);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (Gbl.Ctys.SelectedOrderType)
|
switch (Gbl.Ctys.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Cty_ORDER_BY_COUNTRY:
|
case Cty_ORDER_BY_COUNTRY:
|
||||||
sprintf (OrderBySubQuery,"Name_%s",
|
sprintf (OrderBySubQuery,"Name_%s",
|
||||||
|
|
|
@ -60,9 +60,9 @@ typedef enum
|
||||||
{
|
{
|
||||||
Cty_ORDER_BY_COUNTRY = 0,
|
Cty_ORDER_BY_COUNTRY = 0,
|
||||||
Cty_ORDER_BY_NUM_USRS = 1,
|
Cty_ORDER_BY_NUM_USRS = 1,
|
||||||
} Cty_CtysOrderType_t;
|
} Cty_Order_t;
|
||||||
|
|
||||||
#define Cty_DEFAULT_ORDER_TYPE Cty_ORDER_BY_NUM_USRS
|
#define Cty_ORDER_DEFAULT Cty_ORDER_BY_NUM_USRS
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
@ -89,7 +89,7 @@ void Cty_DrawCountryMap (struct Country *Cty,const char *Class);
|
||||||
bool Cty_CheckIfCountryMapExists (struct Country *Cty);
|
bool Cty_CheckIfCountryMapExists (struct Country *Cty);
|
||||||
|
|
||||||
void Cty_WriteScriptGoogleGeochart (void);
|
void Cty_WriteScriptGoogleGeochart (void);
|
||||||
void Cty_PutHiddenParamCtyOrderType (void);
|
void Cty_PutHiddenParamCtyOrder (void);
|
||||||
void Cty_EditCountries (void);
|
void Cty_EditCountries (void);
|
||||||
void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData);
|
void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData);
|
||||||
void Cty_FreeListCountries (void);
|
void Cty_FreeListCountries (void);
|
||||||
|
|
|
@ -2763,7 +2763,6 @@ void Crs_ChangeCrsStatus (void)
|
||||||
extern const char *Txt_The_status_of_the_course_X_has_changed;
|
extern const char *Txt_The_status_of_the_course_X_has_changed;
|
||||||
struct Course *Crs;
|
struct Course *Crs;
|
||||||
char Query[256];
|
char Query[256];
|
||||||
char UnsignedNum[10 + 1];
|
|
||||||
Crs_Status_t Status;
|
Crs_Status_t Status;
|
||||||
Crs_StatusTxt_t StatusTxt;
|
Crs_StatusTxt_t StatusTxt;
|
||||||
|
|
||||||
|
@ -2774,8 +2773,9 @@ void Crs_ChangeCrsStatus (void)
|
||||||
Crs->CrsCod = Crs_GetAndCheckParamOtherCrsCod ();
|
Crs->CrsCod = Crs_GetAndCheckParamOtherCrsCod ();
|
||||||
|
|
||||||
/* Get parameter with status */
|
/* Get parameter with status */
|
||||||
Par_GetParToText ("Status",UnsignedNum,1);
|
Status = (Crs_Status_t) Par_GetParToUnsigned ("Status",0,UINT_MAX,
|
||||||
if (sscanf (UnsignedNum,"%u",&Status) != 1)
|
(unsigned) Crs_WRONG_STATUS);
|
||||||
|
if (Status == Crs_WRONG_STATUS)
|
||||||
Lay_ShowErrorAndExit ("Wrong status.");
|
Lay_ShowErrorAndExit ("Wrong status.");
|
||||||
StatusTxt = Crs_GetStatusTxtFromStatusBits (Status);
|
StatusTxt = Crs_GetStatusTxtFromStatusBits (Status);
|
||||||
Status = Crs_GetStatusBitsFromStatusTxt (StatusTxt); // New status
|
Status = Crs_GetStatusBitsFromStatusTxt (StatusTxt); // New status
|
||||||
|
@ -3363,7 +3363,6 @@ void Crs_RemoveOldCrss (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Eliminating_X_courses_whithout_users_and_with_more_than_Y_months_without_access;
|
extern const char *Txt_Eliminating_X_courses_whithout_users_and_with_more_than_Y_months_without_access;
|
||||||
extern const char *Txt_X_courses_have_been_eliminated;
|
extern const char *Txt_X_courses_have_been_eliminated;
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned MonthsWithoutAccess;
|
unsigned MonthsWithoutAccess;
|
||||||
unsigned long SecondsWithoutAccess;
|
unsigned long SecondsWithoutAccess;
|
||||||
char Query[1024];
|
char Query[1024];
|
||||||
|
@ -3375,11 +3374,11 @@ void Crs_RemoveOldCrss (void)
|
||||||
long CrsCod;
|
long CrsCod;
|
||||||
|
|
||||||
/***** Get parameter with number of months without access *****/
|
/***** Get parameter with number of months without access *****/
|
||||||
Par_GetParToText ("Months",UnsignedStr,10);
|
MonthsWithoutAccess = Par_GetParToUnsigned ("Months",
|
||||||
if (sscanf (UnsignedStr,"%u",&MonthsWithoutAccess) != 1)
|
Crs_MIN_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS,
|
||||||
Lay_ShowErrorAndExit ("Number of months without clicks is missing.");
|
Crs_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS,
|
||||||
if (MonthsWithoutAccess < Crs_MIN_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS ||
|
UINT_MAX);
|
||||||
MonthsWithoutAccess > Crs_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS)
|
if (MonthsWithoutAccess == UINT_MAX)
|
||||||
Lay_ShowErrorAndExit ("Wrong number of months without clicks.");
|
Lay_ShowErrorAndExit ("Wrong number of months without clicks.");
|
||||||
SecondsWithoutAccess = (unsigned long) MonthsWithoutAccess * Dat_SECONDS_IN_ONE_MONTH;
|
SecondsWithoutAccess = (unsigned long) MonthsWithoutAccess * Dat_SECONDS_IN_ONE_MONTH;
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,9 @@ typedef enum
|
||||||
Crs_STATUS_BIT_PENDING = (1 << 0), // Course is requested, but not yet activated
|
Crs_STATUS_BIT_PENDING = (1 << 0), // Course is requested, but not yet activated
|
||||||
Crs_STATUS_BIT_REMOVED = (1 << 1), // Course has been removed
|
Crs_STATUS_BIT_REMOVED = (1 << 1), // Course has been removed
|
||||||
} Crs_Status_Bits_t;
|
} Crs_Status_Bits_t;
|
||||||
|
|
||||||
typedef unsigned Crs_Status_t;
|
typedef unsigned Crs_Status_t;
|
||||||
|
#define Crs_WRONG_STATUS ((Crs_Status_t) UINT_MAX)
|
||||||
|
|
||||||
#define Crs_NUM_STATUS_TXT 4
|
#define Crs_NUM_STATUS_TXT 4
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|
14
swad_date.c
14
swad_date.c
|
@ -723,22 +723,14 @@ void Dat_WriteFormDate (unsigned FirstYear,unsigned LastYear,
|
||||||
void Dat_GetDateFromForm (const char *ParamNameDay,const char *ParamNameMonth,const char *ParamNameYear,
|
void Dat_GetDateFromForm (const char *ParamNameDay,const char *ParamNameMonth,const char *ParamNameYear,
|
||||||
unsigned *Day,unsigned *Month,unsigned *Year)
|
unsigned *Day,unsigned *Month,unsigned *Year)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
|
|
||||||
/**** Get day ****/
|
/**** Get day ****/
|
||||||
Par_GetParToText (ParamNameDay,UnsignedStr,10);
|
*Day = Par_GetParToUnsigned (ParamNameDay ,1,31,0);
|
||||||
if (sscanf (UnsignedStr,"%u",Day) != 1)
|
|
||||||
*Day = 0;
|
|
||||||
|
|
||||||
/**** Get month ****/
|
/**** Get month ****/
|
||||||
Par_GetParToText (ParamNameMonth,UnsignedStr,10);
|
*Month = Par_GetParToUnsigned (ParamNameMonth,1,12,0);
|
||||||
if (sscanf (UnsignedStr,"%u",Month) != 1)
|
|
||||||
*Month = 0;
|
|
||||||
|
|
||||||
/**** Get year ****/
|
/**** Get year ****/
|
||||||
Par_GetParToText (ParamNameYear,UnsignedStr,10);
|
*Year = Par_GetParToUnsigned (ParamNameYear ,0,UINT_MAX,0);
|
||||||
if (sscanf (UnsignedStr,"%u",Year) != 1)
|
|
||||||
*Year = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -2202,7 +2202,6 @@ void Deg_ChangeDegStatus (void)
|
||||||
extern const char *Txt_The_status_of_the_degree_X_has_changed;
|
extern const char *Txt_The_status_of_the_degree_X_has_changed;
|
||||||
struct Degree *Deg;
|
struct Degree *Deg;
|
||||||
char Query[256];
|
char Query[256];
|
||||||
char UnsignedNum[10 + 1];
|
|
||||||
Deg_Status_t Status;
|
Deg_Status_t Status;
|
||||||
Deg_StatusTxt_t StatusTxt;
|
Deg_StatusTxt_t StatusTxt;
|
||||||
|
|
||||||
|
@ -2213,8 +2212,9 @@ void Deg_ChangeDegStatus (void)
|
||||||
Deg->DegCod = Deg_GetAndCheckParamOtherDegCod ();
|
Deg->DegCod = Deg_GetAndCheckParamOtherDegCod ();
|
||||||
|
|
||||||
/* Get parameter with status */
|
/* Get parameter with status */
|
||||||
Par_GetParToText ("Status",UnsignedNum,1);
|
Status = (Deg_Status_t) Par_GetParToUnsigned ("Status",0,UINT_MAX,
|
||||||
if (sscanf (UnsignedNum,"%u",&Status) != 1)
|
(unsigned) Deg_WRONG_STATUS);
|
||||||
|
if (Status == Deg_WRONG_STATUS)
|
||||||
Lay_ShowErrorAndExit ("Wrong status.");
|
Lay_ShowErrorAndExit ("Wrong status.");
|
||||||
StatusTxt = Deg_GetStatusTxtFromStatusBits (Status);
|
StatusTxt = Deg_GetStatusTxtFromStatusBits (Status);
|
||||||
Status = Deg_GetStatusBitsFromStatusTxt (StatusTxt); // New status
|
Status = Deg_GetStatusBitsFromStatusTxt (StatusTxt); // New status
|
||||||
|
|
|
@ -52,7 +52,9 @@ typedef enum
|
||||||
Deg_STATUS_BIT_PENDING = (1 << 0), // Degree is requested, but not yet activated
|
Deg_STATUS_BIT_PENDING = (1 << 0), // Degree is requested, but not yet activated
|
||||||
Deg_STATUS_BIT_REMOVED = (1 << 1), // Degree has been removed
|
Deg_STATUS_BIT_REMOVED = (1 << 1), // Degree has been removed
|
||||||
} Deg_Status_Bits_t;
|
} Deg_Status_Bits_t;
|
||||||
|
|
||||||
typedef unsigned Deg_Status_t;
|
typedef unsigned Deg_Status_t;
|
||||||
|
#define Deg_WRONG_STATUS ((Deg_Status_t) UINT_MAX)
|
||||||
|
|
||||||
#define Deg_NUM_STATUS_TXT 4
|
#define Deg_NUM_STATUS_TXT 4
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|
|
@ -61,7 +61,7 @@ extern struct Globals Gbl;
|
||||||
/***************************** Private prototypes ****************************/
|
/***************************** Private prototypes ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Dpt_GetParamDptOrderType (void);
|
static void Dpt_GetParamDptOrder (void);
|
||||||
static void Dpt_PutIconToEditDpts (void);
|
static void Dpt_PutIconToEditDpts (void);
|
||||||
static void Dpt_ListDepartmentsForEdition (void);
|
static void Dpt_ListDepartmentsForEdition (void);
|
||||||
static void Dpt_PutParamDptCod (long DptCod);
|
static void Dpt_PutParamDptCod (long DptCod);
|
||||||
|
@ -83,7 +83,7 @@ void Dpt_SeeDepts (void)
|
||||||
extern const char *Txt_DEPARTMENTS_ORDER[2];
|
extern const char *Txt_DEPARTMENTS_ORDER[2];
|
||||||
extern const char *Txt_Other_departments;
|
extern const char *Txt_Other_departments;
|
||||||
extern const char *Txt_Department_unspecified;
|
extern const char *Txt_Department_unspecified;
|
||||||
tDptsOrderType Order;
|
Dpt_Order_t Order;
|
||||||
unsigned NumDpt;
|
unsigned NumDpt;
|
||||||
unsigned NumTchsInsWithDpt = 0; // Number of teachers from the current institution with department
|
unsigned NumTchsInsWithDpt = 0; // Number of teachers from the current institution with department
|
||||||
unsigned NumTchsInOtherDpts;
|
unsigned NumTchsInOtherDpts;
|
||||||
|
@ -91,7 +91,7 @@ void Dpt_SeeDepts (void)
|
||||||
if (Gbl.CurrentIns.Ins.InsCod > 0) // Institution selected
|
if (Gbl.CurrentIns.Ins.InsCod > 0) // Institution selected
|
||||||
{
|
{
|
||||||
/***** Get parameter with the type of order in the list of departments *****/
|
/***** Get parameter with the type of order in the list of departments *****/
|
||||||
Dpt_GetParamDptOrderType ();
|
Dpt_GetParamDptOrder ();
|
||||||
|
|
||||||
/***** Get list of departments *****/
|
/***** Get list of departments *****/
|
||||||
Dpt_GetListDepartments (Gbl.CurrentIns.Ins.InsCod);
|
Dpt_GetListDepartments (Gbl.CurrentIns.Ins.InsCod);
|
||||||
|
@ -110,10 +110,10 @@ void Dpt_SeeDepts (void)
|
||||||
Act_FormStart (ActSeeDpt);
|
Act_FormStart (ActSeeDpt);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_DEPARTMENTS_HELP_ORDER[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_DEPARTMENTS_HELP_ORDER[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Dpts.SelectedOrderType)
|
if (Order == Gbl.Dpts.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_DEPARTMENTS_ORDER[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_DEPARTMENTS_ORDER[Order]);
|
||||||
if (Order == Gbl.Dpts.SelectedOrderType)
|
if (Order == Gbl.Dpts.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -191,16 +191,12 @@ void Dpt_SeeDepts (void)
|
||||||
/******** Get parameter with the type or order in list of departments ********/
|
/******** Get parameter with the type or order in list of departments ********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Dpt_GetParamDptOrderType (void)
|
static void Dpt_GetParamDptOrder (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
Gbl.Dpts.SelectedOrder = (Dpt_Order_t) Par_GetParToUnsigned ("Order",
|
||||||
unsigned UnsignedNum;
|
(unsigned) Dpt_ORDER_BY_DEPARTMENT,
|
||||||
|
(unsigned) Dpt_ORDER_BY_NUM_TCHS,
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
(unsigned) Dpt_ORDER_DEFAULT);
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
|
||||||
Gbl.Dpts.SelectedOrderType = (tDptsOrderType) UnsignedNum;
|
|
||||||
else
|
|
||||||
Gbl.Dpts.SelectedOrderType = Dpt_DEFAULT_ORDER_TYPE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -273,7 +269,7 @@ void Dpt_GetListDepartments (long InsCod)
|
||||||
struct Department *Dpt;
|
struct Department *Dpt;
|
||||||
|
|
||||||
/***** Get departments from database *****/
|
/***** Get departments from database *****/
|
||||||
switch (Gbl.Dpts.SelectedOrderType)
|
switch (Gbl.Dpts.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Dpt_ORDER_BY_DEPARTMENT:
|
case Dpt_ORDER_BY_DEPARTMENT:
|
||||||
sprintf (OrderBySubQuery,"FullName");
|
sprintf (OrderBySubQuery,"FullName");
|
||||||
|
|
|
@ -48,9 +48,9 @@ typedef enum
|
||||||
{
|
{
|
||||||
Dpt_ORDER_BY_DEPARTMENT = 0,
|
Dpt_ORDER_BY_DEPARTMENT = 0,
|
||||||
Dpt_ORDER_BY_NUM_TCHS = 1,
|
Dpt_ORDER_BY_NUM_TCHS = 1,
|
||||||
} tDptsOrderType;
|
} Dpt_Order_t;
|
||||||
|
|
||||||
#define Dpt_DEFAULT_ORDER_TYPE Dpt_ORDER_BY_DEPARTMENT
|
#define Dpt_ORDER_DEFAULT Dpt_ORDER_BY_DEPARTMENT
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
|
|
|
@ -52,14 +52,14 @@
|
||||||
/****************************** Internal types *******************************/
|
/****************************** Internal types *******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Enr_NUM_ACTIONS_REG_REM_USRS 5
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Enr_REGISTER_SPECIFIED_USRS_IN_CRS = 0,
|
Enr_USRS_UNKNOWN_ACTION = 0,
|
||||||
Enr_REMOVE_SPECIFIED_USRS_FROM_CRS = 1,
|
Enr_REGISTER_SPECIFIED_USRS_IN_CRS = 1,
|
||||||
Enr_REMOVE_NOT_SPECIFIED_USRS_FROM_CRS = 2,
|
Enr_REMOVE_SPECIFIED_USRS_FROM_CRS = 2,
|
||||||
Enr_UPDATE_USRS_IN_CRS = 3,
|
Enr_REMOVE_NOT_SPECIFIED_USRS_FROM_CRS = 3,
|
||||||
Enr_ELIMINATE_USRS_FROM_PLATFORM = 4,
|
Enr_UPDATE_USRS_IN_CRS = 4,
|
||||||
|
Enr_ELIMINATE_USRS_FROM_PLATFORM = 5,
|
||||||
} Enr_RegRemUsrsAction_t;
|
} Enr_RegRemUsrsAction_t;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
@ -711,7 +711,6 @@ void Enr_RemoveOldUsrs (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Eliminating_X_users_who_were_not_enrolled_in_any_course_and_with_more_than_Y_months_without_access_to_Z;
|
extern const char *Txt_Eliminating_X_users_who_were_not_enrolled_in_any_course_and_with_more_than_Y_months_without_access_to_Z;
|
||||||
extern const char *Txt_X_users_have_been_eliminated;
|
extern const char *Txt_X_users_have_been_eliminated;
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned MonthsWithoutAccess;
|
unsigned MonthsWithoutAccess;
|
||||||
time_t SecondsWithoutAccess;
|
time_t SecondsWithoutAccess;
|
||||||
char Query[1024];
|
char Query[1024];
|
||||||
|
@ -723,11 +722,11 @@ void Enr_RemoveOldUsrs (void)
|
||||||
struct UsrData UsrDat;
|
struct UsrData UsrDat;
|
||||||
|
|
||||||
/***** Get parameter with number of months without access *****/
|
/***** Get parameter with number of months without access *****/
|
||||||
Par_GetParToText ("Months",UnsignedStr,10);
|
MonthsWithoutAccess = Par_GetParToUnsigned ("Months",
|
||||||
if (sscanf (UnsignedStr,"%u",&MonthsWithoutAccess) != 1)
|
Usr_MIN_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS,
|
||||||
Lay_ShowErrorAndExit ("Number of months is missing.");
|
Usr_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS,
|
||||||
if (MonthsWithoutAccess < Usr_MIN_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS ||
|
UINT_MAX);
|
||||||
MonthsWithoutAccess > Usr_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS)
|
if (MonthsWithoutAccess == UINT_MAX)
|
||||||
Lay_ShowErrorAndExit ("Wrong number of months.");
|
Lay_ShowErrorAndExit ("Wrong number of months.");
|
||||||
SecondsWithoutAccess = (time_t) MonthsWithoutAccess * Dat_SECONDS_IN_ONE_MONTH;
|
SecondsWithoutAccess = (time_t) MonthsWithoutAccess * Dat_SECONDS_IN_ONE_MONTH;
|
||||||
|
|
||||||
|
@ -1235,7 +1234,6 @@ void Enr_ReceiveFormAdminTchs (void)
|
||||||
|
|
||||||
static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
|
static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
|
||||||
{
|
{
|
||||||
extern const char *Txt_You_must_specify_in_step_2_the_action_to_perform;
|
|
||||||
extern const char *Txt_In_a_type_of_group_with_single_enrollment_students_can_not_be_registered_in_more_than_one_group;
|
extern const char *Txt_In_a_type_of_group_with_single_enrollment_students_can_not_be_registered_in_more_than_one_group;
|
||||||
extern const char *Txt_No_user_has_been_eliminated;
|
extern const char *Txt_No_user_has_been_eliminated;
|
||||||
extern const char *Txt_One_user_has_been_eliminated;
|
extern const char *Txt_One_user_has_been_eliminated;
|
||||||
|
@ -1246,8 +1244,6 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
|
||||||
extern const char *Txt_No_user_has_been_enrolled;
|
extern const char *Txt_No_user_has_been_enrolled;
|
||||||
extern const char *Txt_One_user_has_been_enrolled;
|
extern const char *Txt_One_user_has_been_enrolled;
|
||||||
extern const char *Txt_X_users_have_been_enrolled_including_possible_repetitions;
|
extern const char *Txt_X_users_have_been_enrolled_including_possible_repetitions;
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned UnsignedNum;
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
bool RemoveUsrs;
|
bool RemoveUsrs;
|
||||||
|
@ -1267,7 +1263,6 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
|
||||||
struct UsrData UsrDat;
|
struct UsrData UsrDat;
|
||||||
bool ItLooksLikeAUsrID;
|
bool ItLooksLikeAUsrID;
|
||||||
Enr_RegRemUsrsAction_t RegRemUsrsAction;
|
Enr_RegRemUsrsAction_t RegRemUsrsAction;
|
||||||
bool ErrorInForm = false;
|
|
||||||
|
|
||||||
/***** Check the role of users to register / remove *****/
|
/***** Check the role of users to register / remove *****/
|
||||||
switch (Role)
|
switch (Role)
|
||||||
|
@ -1294,243 +1289,110 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
|
||||||
WhatToDo.EliminateUsrs = false;
|
WhatToDo.EliminateUsrs = false;
|
||||||
WhatToDo.RegisterUsrs = false;
|
WhatToDo.RegisterUsrs = false;
|
||||||
|
|
||||||
Par_GetParToText ("RegRemAction",UnsignedStr,1);
|
RegRemUsrsAction = (Enr_RegRemUsrsAction_t) Par_GetParToUnsigned ("RegRemAction",
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
(unsigned) Enr_REGISTER_SPECIFIED_USRS_IN_CRS,
|
||||||
if (UnsignedNum < Enr_NUM_ACTIONS_REG_REM_USRS)
|
(unsigned) Enr_ELIMINATE_USRS_FROM_PLATFORM,
|
||||||
switch (RegRemUsrsAction = (Enr_RegRemUsrsAction_t) UnsignedNum)
|
(unsigned) Enr_USRS_UNKNOWN_ACTION);
|
||||||
{
|
switch (RegRemUsrsAction)
|
||||||
case Enr_REGISTER_SPECIFIED_USRS_IN_CRS:
|
|
||||||
WhatToDo.RemoveUsrs = false;
|
|
||||||
WhatToDo.RemoveSpecifiedUsrs = false; // Ignored
|
|
||||||
WhatToDo.EliminateUsrs = false; // Ignored
|
|
||||||
WhatToDo.RegisterUsrs = true;
|
|
||||||
break;
|
|
||||||
case Enr_REMOVE_SPECIFIED_USRS_FROM_CRS:
|
|
||||||
WhatToDo.RemoveUsrs = true;
|
|
||||||
WhatToDo.RemoveSpecifiedUsrs = true;
|
|
||||||
WhatToDo.EliminateUsrs = false;
|
|
||||||
WhatToDo.RegisterUsrs = false;
|
|
||||||
break;
|
|
||||||
case Enr_REMOVE_NOT_SPECIFIED_USRS_FROM_CRS:
|
|
||||||
WhatToDo.RemoveUsrs = true;
|
|
||||||
WhatToDo.RemoveSpecifiedUsrs = false;
|
|
||||||
WhatToDo.EliminateUsrs = false;
|
|
||||||
WhatToDo.RegisterUsrs = false;
|
|
||||||
break;
|
|
||||||
case Enr_UPDATE_USRS_IN_CRS:
|
|
||||||
WhatToDo.RemoveUsrs = true;
|
|
||||||
WhatToDo.RemoveSpecifiedUsrs = false;
|
|
||||||
WhatToDo.EliminateUsrs = false;
|
|
||||||
WhatToDo.RegisterUsrs = true;
|
|
||||||
break;
|
|
||||||
case Enr_ELIMINATE_USRS_FROM_PLATFORM:
|
|
||||||
if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)
|
|
||||||
{
|
|
||||||
WhatToDo.RemoveUsrs = true;
|
|
||||||
WhatToDo.RemoveSpecifiedUsrs = true;
|
|
||||||
WhatToDo.EliminateUsrs = true;
|
|
||||||
WhatToDo.RegisterUsrs = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Lay_ShowErrorAndExit ("You are not allowed to perform this action.");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Lay_ShowErrorAndExit ("Wrong registering / removing specification.");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Lay_ShowErrorAndExit ("Wrong registering / removing specification.");
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
Lay_ShowAlert (Lay_WARNING,Txt_You_must_specify_in_step_2_the_action_to_perform);
|
case Enr_REGISTER_SPECIFIED_USRS_IN_CRS:
|
||||||
|
WhatToDo.RemoveUsrs = false;
|
||||||
/* Show form again */
|
WhatToDo.RemoveSpecifiedUsrs = false; // Ignored
|
||||||
Enr_ShowFormRegRemSeveralUsrs (Role);
|
WhatToDo.EliminateUsrs = false; // Ignored
|
||||||
ErrorInForm = true;
|
WhatToDo.RegisterUsrs = true;
|
||||||
|
break;
|
||||||
|
case Enr_REMOVE_SPECIFIED_USRS_FROM_CRS:
|
||||||
|
WhatToDo.RemoveUsrs = true;
|
||||||
|
WhatToDo.RemoveSpecifiedUsrs = true;
|
||||||
|
WhatToDo.EliminateUsrs = false;
|
||||||
|
WhatToDo.RegisterUsrs = false;
|
||||||
|
break;
|
||||||
|
case Enr_REMOVE_NOT_SPECIFIED_USRS_FROM_CRS:
|
||||||
|
WhatToDo.RemoveUsrs = true;
|
||||||
|
WhatToDo.RemoveSpecifiedUsrs = false;
|
||||||
|
WhatToDo.EliminateUsrs = false;
|
||||||
|
WhatToDo.RegisterUsrs = false;
|
||||||
|
break;
|
||||||
|
case Enr_UPDATE_USRS_IN_CRS:
|
||||||
|
WhatToDo.RemoveUsrs = true;
|
||||||
|
WhatToDo.RemoveSpecifiedUsrs = false;
|
||||||
|
WhatToDo.EliminateUsrs = false;
|
||||||
|
WhatToDo.RegisterUsrs = true;
|
||||||
|
break;
|
||||||
|
case Enr_ELIMINATE_USRS_FROM_PLATFORM:
|
||||||
|
if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)
|
||||||
|
{
|
||||||
|
WhatToDo.RemoveUsrs = true;
|
||||||
|
WhatToDo.RemoveSpecifiedUsrs = true;
|
||||||
|
WhatToDo.EliminateUsrs = true;
|
||||||
|
WhatToDo.RegisterUsrs = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Lay_ShowErrorAndExit ("You are not allowed to perform this action.");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Lay_ShowErrorAndExit ("Wrong registering / removing specification.");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ErrorInForm)
|
/***** Get groups to which register/remove users *****/
|
||||||
|
LstGrps.NumGrps = 0;
|
||||||
|
if (Gbl.CurrentCrs.Grps.NumGrps) // This course has groups?
|
||||||
{
|
{
|
||||||
/***** Get groups to which register/remove users *****/
|
/***** Get list of groups types and groups in current course *****/
|
||||||
LstGrps.NumGrps = 0;
|
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||||
if (Gbl.CurrentCrs.Grps.NumGrps) // This course has groups?
|
|
||||||
{
|
|
||||||
/***** Get list of groups types and groups in current course *****/
|
|
||||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
|
||||||
|
|
||||||
/***** Get the list of groups to which register/remove students *****/
|
/***** Get the list of groups to which register/remove students *****/
|
||||||
LstGrps.GrpCods = NULL; // Initialized to avoid bug reported by Coverity
|
LstGrps.GrpCods = NULL; // Initialized to avoid bug reported by Coverity
|
||||||
LstGrps.NumGrps = 0; // Initialized to avoid bug reported by Coverity
|
LstGrps.NumGrps = 0; // Initialized to avoid bug reported by Coverity
|
||||||
Grp_GetLstCodsGrpWanted (&LstGrps);
|
Grp_GetLstCodsGrpWanted (&LstGrps);
|
||||||
|
|
||||||
/***** A student can't belong to more than one group when the type of group only allows to register in one group *****/
|
/***** A student can't belong to more than one group when the type of group only allows to register in one group *****/
|
||||||
if (WhatToDo.RegisterUsrs &&
|
if (WhatToDo.RegisterUsrs &&
|
||||||
Role == Rol_STUDENT &&
|
Role == Rol_STUDENT &&
|
||||||
LstGrps.NumGrps >= 2)
|
LstGrps.NumGrps >= 2)
|
||||||
/* Check if I have selected more than one group of single enrollment */
|
/* Check if I have selected more than one group of single enrollment */
|
||||||
if (!Grp_CheckIfSelectionGrpsIsValid (&LstGrps))
|
if (!Grp_CheckIfSelectionGrpsIsValid (&LstGrps))
|
||||||
{
|
|
||||||
/* Show warning message and exit */
|
|
||||||
Lay_ShowAlert (Lay_WARNING,Txt_In_a_type_of_group_with_single_enrollment_students_can_not_be_registered_in_more_than_one_group);
|
|
||||||
|
|
||||||
/* Free memory used by lists of groups and abort */
|
|
||||||
Grp_FreeListCodGrp (&LstGrps);
|
|
||||||
Grp_FreeListGrpTypesAndGrps ();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** Get list of users' IDs *****/
|
|
||||||
if ((ListUsrsIDs = (char *) malloc (ID_MAX_BYTES_LIST_USRS_IDS + 1)) == NULL)
|
|
||||||
Lay_ShowErrorAndExit ("Not enough memory to store users' IDs.");
|
|
||||||
Par_GetParToText ("UsrsIDs",ListUsrsIDs,ID_MAX_BYTES_LIST_USRS_IDS);
|
|
||||||
|
|
||||||
/***** Initialize structure with user's data *****/
|
|
||||||
Usr_UsrDataConstructor (&UsrDat);
|
|
||||||
|
|
||||||
/***** Remove users *****/
|
|
||||||
if (WhatToDo.RemoveUsrs)
|
|
||||||
{
|
|
||||||
/***** Get list of users in current course *****/
|
|
||||||
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
|
||||||
|
|
||||||
if (Gbl.Usrs.LstUsrs[Role].NumUsrs)
|
|
||||||
{
|
{
|
||||||
/***** Initialize list of users to remove *****/
|
/* Show warning message and exit */
|
||||||
for (NumCurrentUsr = 0;
|
Lay_ShowAlert (Lay_WARNING,Txt_In_a_type_of_group_with_single_enrollment_students_can_not_be_registered_in_more_than_one_group);
|
||||||
NumCurrentUsr < Gbl.Usrs.LstUsrs[Role].NumUsrs;
|
|
||||||
NumCurrentUsr++)
|
|
||||||
Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].Remove = !WhatToDo.RemoveSpecifiedUsrs;
|
|
||||||
|
|
||||||
/***** Loop 1: go through form list setting if a student must be removed *****/
|
/* Free memory used by lists of groups and abort */
|
||||||
/* Get users from a list of users' IDs */
|
Grp_FreeListCodGrp (&LstGrps);
|
||||||
Ptr = ListUsrsIDs;
|
Grp_FreeListGrpTypesAndGrps ();
|
||||||
while (*Ptr)
|
return;
|
||||||
{
|
|
||||||
/* Reset user */
|
|
||||||
UsrDat.UsrCod = -1L;
|
|
||||||
|
|
||||||
/* Find next string in text */
|
|
||||||
Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail,Usr_MAX_BYTES_USR_LOGIN);
|
|
||||||
|
|
||||||
/* Reset default list of users' codes */
|
|
||||||
ListUsrCods.NumUsrs = 0;
|
|
||||||
ListUsrCods.Lst = NULL;
|
|
||||||
|
|
||||||
/* Check if string is a user's ID, user's nickname or user's email address */
|
|
||||||
if (Nck_CheckIfNickWithArrobaIsValid (UsrDat.UsrIDNickOrEmail)) // 1: It's a nickname
|
|
||||||
{
|
|
||||||
if ((UsrDat.UsrCod = Nck_GetUsrCodFromNickname (UsrDat.UsrIDNickOrEmail)) > 0)
|
|
||||||
{
|
|
||||||
ListUsrCods.NumUsrs = 1;
|
|
||||||
Usr_AllocateListUsrCods (&ListUsrCods);
|
|
||||||
ListUsrCods.Lst[0] = UsrDat.UsrCod;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (Mai_CheckIfEmailIsValid (UsrDat.UsrIDNickOrEmail)) // 2: It's an email
|
|
||||||
{
|
|
||||||
if ((UsrDat.UsrCod = Mai_GetUsrCodFromEmail (UsrDat.UsrIDNickOrEmail)) > 0)
|
|
||||||
{
|
|
||||||
ListUsrCods.NumUsrs = 1;
|
|
||||||
Usr_AllocateListUsrCods (&ListUsrCods);
|
|
||||||
ListUsrCods.Lst[0] = UsrDat.UsrCod;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else // 3: It looks like a user's ID
|
|
||||||
{
|
|
||||||
// Users' IDs are always stored internally in capitals and without leading zeros
|
|
||||||
Str_RemoveLeadingZeros (UsrDat.UsrIDNickOrEmail);
|
|
||||||
if (ID_CheckIfUsrIDSeemsAValidID (UsrDat.UsrIDNickOrEmail))
|
|
||||||
{
|
|
||||||
/***** Find users for this user's ID *****/
|
|
||||||
ID_ReallocateListIDs (&UsrDat,1); // Only one user's ID
|
|
||||||
Str_Copy (UsrDat.IDs.List[0].ID,UsrDat.UsrIDNickOrEmail,
|
|
||||||
ID_MAX_LENGTH_USR_ID);
|
|
||||||
Str_ConvertToUpperText (UsrDat.IDs.List[0].ID);
|
|
||||||
ID_GetListUsrCodsFromUsrID (&UsrDat,NULL,&ListUsrCods,false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (WhatToDo.RemoveSpecifiedUsrs) // Remove the specified users (of the role)
|
|
||||||
{
|
|
||||||
if (ListUsrCods.NumUsrs == 1) // If more than one user found ==> do not remove
|
|
||||||
for (NumCurrentUsr = 0;
|
|
||||||
NumCurrentUsr < Gbl.Usrs.LstUsrs[Role].NumUsrs;
|
|
||||||
NumCurrentUsr++)
|
|
||||||
if (Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].UsrCod == ListUsrCods.Lst[0]) // User found
|
|
||||||
Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].Remove = true; // Mark as removable
|
|
||||||
}
|
|
||||||
else // Remove all the users (of the role) except these specified
|
|
||||||
{
|
|
||||||
for (NumCurrentUsr = 0;
|
|
||||||
NumCurrentUsr < Gbl.Usrs.LstUsrs[Role].NumUsrs;
|
|
||||||
NumCurrentUsr++)
|
|
||||||
for (NumUsrFound = 0;
|
|
||||||
NumUsrFound < ListUsrCods.NumUsrs;
|
|
||||||
NumUsrFound++)
|
|
||||||
if (Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].UsrCod == ListUsrCods.Lst[NumUsrFound]) // User found
|
|
||||||
Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].Remove = false; // Mark as not removable
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Free memory used for list of users' codes found for this ID */
|
|
||||||
Usr_FreeListUsrCods (&ListUsrCods);
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** Loop 2: go through users list removing users *****/
|
|
||||||
for (NumCurrentUsr = 0;
|
|
||||||
NumCurrentUsr < Gbl.Usrs.LstUsrs[Role].NumUsrs;
|
|
||||||
NumCurrentUsr++)
|
|
||||||
if (Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].Remove) // If this student must be removed
|
|
||||||
{
|
|
||||||
UsrDat.UsrCod = Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].UsrCod;
|
|
||||||
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // If user's data exist...
|
|
||||||
{
|
|
||||||
if (WhatToDo.EliminateUsrs) // Eliminate user completely from the platform
|
|
||||||
{
|
|
||||||
Acc_CompletelyEliminateAccount (&UsrDat,Cns_QUIET); // Remove definitely the user from the platform
|
|
||||||
NumUsrsEliminated++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (Gbl.CurrentCrs.Grps.NumGrps) // If there are groups in the course
|
|
||||||
{
|
|
||||||
if (LstGrps.NumGrps) // If the teacher has selected groups
|
|
||||||
{
|
|
||||||
if (Grp_RemoveUsrFromGroups (&UsrDat,&LstGrps)) // Remove user from the selected groups, not from the whole course
|
|
||||||
NumUsrsRemoved++;
|
|
||||||
}
|
|
||||||
else // The teacher has not selected groups
|
|
||||||
{
|
|
||||||
Enr_EffectivelyRemUsrFromCrs (&UsrDat,&Gbl.CurrentCrs.Crs,
|
|
||||||
Enr_DO_NOT_REMOVE_WORKS,Cns_QUIET); // Remove user from the course
|
|
||||||
NumUsrsRemoved++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else // No groups
|
|
||||||
{
|
|
||||||
Enr_EffectivelyRemUsrFromCrs (&UsrDat,&Gbl.CurrentCrs.Crs,
|
|
||||||
Enr_DO_NOT_REMOVE_WORKS,Cns_QUIET); // Remove user from the course
|
|
||||||
NumUsrsRemoved++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/***** Free memory for users list *****/
|
/***** Get list of users' IDs *****/
|
||||||
Usr_FreeUsrsList (Role);
|
if ((ListUsrsIDs = (char *) malloc (ID_MAX_BYTES_LIST_USRS_IDS + 1)) == NULL)
|
||||||
}
|
Lay_ShowErrorAndExit ("Not enough memory to store users' IDs.");
|
||||||
|
Par_GetParToText ("UsrsIDs",ListUsrsIDs,ID_MAX_BYTES_LIST_USRS_IDS);
|
||||||
|
|
||||||
/***** Register users *****/
|
/***** Initialize structure with user's data *****/
|
||||||
if (WhatToDo.RegisterUsrs) // TODO: !!!!! NO CAMBIAR EL ROL DE LOS USUARIOS QUE YA ESTÉN EN LA ASIGNATURA SI HAY MÁS DE UN USUARIO ENCONTRADO PARA EL MISMO DNI !!!!!!
|
Usr_UsrDataConstructor (&UsrDat);
|
||||||
|
|
||||||
|
/***** Remove users *****/
|
||||||
|
if (WhatToDo.RemoveUsrs)
|
||||||
|
{
|
||||||
|
/***** Get list of users in current course *****/
|
||||||
|
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
||||||
|
|
||||||
|
if (Gbl.Usrs.LstUsrs[Role].NumUsrs)
|
||||||
{
|
{
|
||||||
/***** Get users from a list of users' IDs ******/
|
/***** Initialize list of users to remove *****/
|
||||||
|
for (NumCurrentUsr = 0;
|
||||||
|
NumCurrentUsr < Gbl.Usrs.LstUsrs[Role].NumUsrs;
|
||||||
|
NumCurrentUsr++)
|
||||||
|
Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].Remove = !WhatToDo.RemoveSpecifiedUsrs;
|
||||||
|
|
||||||
|
/***** Loop 1: go through form list setting if a student must be removed *****/
|
||||||
|
/* Get users from a list of users' IDs */
|
||||||
Ptr = ListUsrsIDs;
|
Ptr = ListUsrsIDs;
|
||||||
while (*Ptr)
|
while (*Ptr)
|
||||||
{
|
{
|
||||||
/* Reset user */
|
/* Reset user */
|
||||||
UsrDat.UsrCod = -1L;
|
UsrDat.UsrCod = -1L;
|
||||||
ItLooksLikeAUsrID = false;
|
|
||||||
|
|
||||||
/* Find next string in text */
|
/* Find next string in text */
|
||||||
Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail,Usr_MAX_BYTES_USR_LOGIN);
|
Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail,Usr_MAX_BYTES_USR_LOGIN);
|
||||||
|
@ -1539,7 +1401,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
|
||||||
ListUsrCods.NumUsrs = 0;
|
ListUsrCods.NumUsrs = 0;
|
||||||
ListUsrCods.Lst = NULL;
|
ListUsrCods.Lst = NULL;
|
||||||
|
|
||||||
/* Check if the string is a user's ID, a user's nickname or a user's email address */
|
/* Check if string is a user's ID, user's nickname or user's email address */
|
||||||
if (Nck_CheckIfNickWithArrobaIsValid (UsrDat.UsrIDNickOrEmail)) // 1: It's a nickname
|
if (Nck_CheckIfNickWithArrobaIsValid (UsrDat.UsrIDNickOrEmail)) // 1: It's a nickname
|
||||||
{
|
{
|
||||||
if ((UsrDat.UsrCod = Nck_GetUsrCodFromNickname (UsrDat.UsrIDNickOrEmail)) > 0)
|
if ((UsrDat.UsrCod = Nck_GetUsrCodFromNickname (UsrDat.UsrIDNickOrEmail)) > 0)
|
||||||
|
@ -1549,7 +1411,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
|
||||||
ListUsrCods.Lst[0] = UsrDat.UsrCod;
|
ListUsrCods.Lst[0] = UsrDat.UsrCod;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (Mai_CheckIfEmailIsValid (UsrDat.UsrIDNickOrEmail)) // 2: It's an email
|
else if (Mai_CheckIfEmailIsValid (UsrDat.UsrIDNickOrEmail)) // 2: It's an email
|
||||||
{
|
{
|
||||||
if ((UsrDat.UsrCod = Mai_GetUsrCodFromEmail (UsrDat.UsrIDNickOrEmail)) > 0)
|
if ((UsrDat.UsrCod = Mai_GetUsrCodFromEmail (UsrDat.UsrIDNickOrEmail)) > 0)
|
||||||
{
|
{
|
||||||
|
@ -1564,100 +1426,221 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
|
||||||
Str_RemoveLeadingZeros (UsrDat.UsrIDNickOrEmail);
|
Str_RemoveLeadingZeros (UsrDat.UsrIDNickOrEmail);
|
||||||
if (ID_CheckIfUsrIDSeemsAValidID (UsrDat.UsrIDNickOrEmail))
|
if (ID_CheckIfUsrIDSeemsAValidID (UsrDat.UsrIDNickOrEmail))
|
||||||
{
|
{
|
||||||
ItLooksLikeAUsrID = true;
|
/***** Find users for this user's ID *****/
|
||||||
|
|
||||||
/* Find users for this user's ID */
|
|
||||||
ID_ReallocateListIDs (&UsrDat,1); // Only one user's ID
|
ID_ReallocateListIDs (&UsrDat,1); // Only one user's ID
|
||||||
Str_Copy (UsrDat.IDs.List[0].ID,UsrDat.UsrIDNickOrEmail,
|
Str_Copy (UsrDat.IDs.List[0].ID,UsrDat.UsrIDNickOrEmail,
|
||||||
ID_MAX_LENGTH_USR_ID);
|
ID_MAX_LENGTH_USR_ID);
|
||||||
Str_ConvertToUpperText (UsrDat.IDs.List[0].ID);
|
Str_ConvertToUpperText (UsrDat.IDs.List[0].ID);
|
||||||
ID_GetListUsrCodsFromUsrID (&UsrDat,NULL,&ListUsrCods,false);
|
ID_GetListUsrCodsFromUsrID (&UsrDat,NULL,&ListUsrCods,false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Register user(s) */
|
if (WhatToDo.RemoveSpecifiedUsrs) // Remove the specified users (of the role)
|
||||||
if (ListUsrCods.NumUsrs) // User(s) found
|
{
|
||||||
for (NumUsrFound = 0;
|
if (ListUsrCods.NumUsrs == 1) // If more than one user found ==> do not remove
|
||||||
NumUsrFound < ListUsrCods.NumUsrs;
|
for (NumCurrentUsr = 0;
|
||||||
NumUsrFound++)
|
NumCurrentUsr < Gbl.Usrs.LstUsrs[Role].NumUsrs;
|
||||||
{
|
NumCurrentUsr++)
|
||||||
UsrDat.UsrCod = ListUsrCods.Lst[NumUsrFound];
|
if (Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].UsrCod == ListUsrCods.Lst[0]) // User found
|
||||||
Enr_RegisterUsr (&UsrDat,Role,&LstGrps,&NumUsrsRegistered);
|
Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].Remove = true; // Mark as removable
|
||||||
}
|
}
|
||||||
else if (ItLooksLikeAUsrID) // User not found. He/she is a new user. Register him/her using ID
|
else // Remove all the users (of the role) except these specified
|
||||||
Enr_RegisterUsr (&UsrDat,Role,&LstGrps,&NumUsrsRegistered);
|
{
|
||||||
|
for (NumCurrentUsr = 0;
|
||||||
|
NumCurrentUsr < Gbl.Usrs.LstUsrs[Role].NumUsrs;
|
||||||
|
NumCurrentUsr++)
|
||||||
|
for (NumUsrFound = 0;
|
||||||
|
NumUsrFound < ListUsrCods.NumUsrs;
|
||||||
|
NumUsrFound++)
|
||||||
|
if (Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].UsrCod == ListUsrCods.Lst[NumUsrFound]) // User found
|
||||||
|
Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].Remove = false; // Mark as not removable
|
||||||
|
}
|
||||||
|
|
||||||
/* Free memory used for list of users' codes found for this ID */
|
/* Free memory used for list of users' codes found for this ID */
|
||||||
Usr_FreeListUsrCods (&ListUsrCods);
|
Usr_FreeListUsrCods (&ListUsrCods);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***** Loop 2: go through users list removing users *****/
|
||||||
|
for (NumCurrentUsr = 0;
|
||||||
|
NumCurrentUsr < Gbl.Usrs.LstUsrs[Role].NumUsrs;
|
||||||
|
NumCurrentUsr++)
|
||||||
|
if (Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].Remove) // If this student must be removed
|
||||||
|
{
|
||||||
|
UsrDat.UsrCod = Gbl.Usrs.LstUsrs[Role].Lst[NumCurrentUsr].UsrCod;
|
||||||
|
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // If user's data exist...
|
||||||
|
{
|
||||||
|
if (WhatToDo.EliminateUsrs) // Eliminate user completely from the platform
|
||||||
|
{
|
||||||
|
Acc_CompletelyEliminateAccount (&UsrDat,Cns_QUIET); // Remove definitely the user from the platform
|
||||||
|
NumUsrsEliminated++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (Gbl.CurrentCrs.Grps.NumGrps) // If there are groups in the course
|
||||||
|
{
|
||||||
|
if (LstGrps.NumGrps) // If the teacher has selected groups
|
||||||
|
{
|
||||||
|
if (Grp_RemoveUsrFromGroups (&UsrDat,&LstGrps)) // Remove user from the selected groups, not from the whole course
|
||||||
|
NumUsrsRemoved++;
|
||||||
|
}
|
||||||
|
else // The teacher has not selected groups
|
||||||
|
{
|
||||||
|
Enr_EffectivelyRemUsrFromCrs (&UsrDat,&Gbl.CurrentCrs.Crs,
|
||||||
|
Enr_DO_NOT_REMOVE_WORKS,Cns_QUIET); // Remove user from the course
|
||||||
|
NumUsrsRemoved++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else // No groups
|
||||||
|
{
|
||||||
|
Enr_EffectivelyRemUsrFromCrs (&UsrDat,&Gbl.CurrentCrs.Crs,
|
||||||
|
Enr_DO_NOT_REMOVE_WORKS,Cns_QUIET); // Remove user from the course
|
||||||
|
NumUsrsRemoved++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Free memory used for user's data *****/
|
/***** Free memory for users list *****/
|
||||||
Usr_UsrDataDestructor (&UsrDat);
|
Usr_FreeUsrsList (Role);
|
||||||
|
}
|
||||||
|
|
||||||
if (NumUsrsEliminated)
|
/***** Register users *****/
|
||||||
/***** Move unused contents of messages to table of deleted contents of messages *****/
|
if (WhatToDo.RegisterUsrs) // TODO: !!!!! NO CAMBIAR EL ROL DE LOS USUARIOS QUE YA ESTÉN EN LA ASIGNATURA SI HAY MÁS DE UN USUARIO ENCONTRADO PARA EL MISMO DNI !!!!!!
|
||||||
Msg_MoveUnusedMsgsContentToDeleted ();
|
{
|
||||||
|
/***** Get users from a list of users' IDs ******/
|
||||||
/***** Write messages with the number of users enrolled/removed *****/
|
Ptr = ListUsrsIDs;
|
||||||
if (WhatToDo.RemoveUsrs)
|
while (*Ptr)
|
||||||
{
|
{
|
||||||
if (WhatToDo.EliminateUsrs) // Eliminate completely from the platform
|
/* Reset user */
|
||||||
switch (NumUsrsEliminated)
|
UsrDat.UsrCod = -1L;
|
||||||
|
ItLooksLikeAUsrID = false;
|
||||||
|
|
||||||
|
/* Find next string in text */
|
||||||
|
Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail,Usr_MAX_BYTES_USR_LOGIN);
|
||||||
|
|
||||||
|
/* Reset default list of users' codes */
|
||||||
|
ListUsrCods.NumUsrs = 0;
|
||||||
|
ListUsrCods.Lst = NULL;
|
||||||
|
|
||||||
|
/* Check if the string is a user's ID, a user's nickname or a user's email address */
|
||||||
|
if (Nck_CheckIfNickWithArrobaIsValid (UsrDat.UsrIDNickOrEmail)) // 1: It's a nickname
|
||||||
|
{
|
||||||
|
if ((UsrDat.UsrCod = Nck_GetUsrCodFromNickname (UsrDat.UsrIDNickOrEmail)) > 0)
|
||||||
{
|
{
|
||||||
case 0:
|
ListUsrCods.NumUsrs = 1;
|
||||||
Lay_ShowAlert (Lay_INFO,Txt_No_user_has_been_eliminated);
|
Usr_AllocateListUsrCods (&ListUsrCods);
|
||||||
break;
|
ListUsrCods.Lst[0] = UsrDat.UsrCod;
|
||||||
case 1:
|
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Txt_One_user_has_been_eliminated);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sprintf (Gbl.Message,Txt_X_users_have_been_eliminated,
|
|
||||||
NumUsrsEliminated);
|
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
else // Only remove from course / groups
|
}
|
||||||
switch (NumUsrsRemoved)
|
else if (Mai_CheckIfEmailIsValid (UsrDat.UsrIDNickOrEmail)) // 2: It's an email
|
||||||
|
{
|
||||||
|
if ((UsrDat.UsrCod = Mai_GetUsrCodFromEmail (UsrDat.UsrIDNickOrEmail)) > 0)
|
||||||
{
|
{
|
||||||
case 0:
|
ListUsrCods.NumUsrs = 1;
|
||||||
Lay_ShowAlert (Lay_INFO,Txt_No_user_has_been_removed);
|
Usr_AllocateListUsrCods (&ListUsrCods);
|
||||||
break;
|
ListUsrCods.Lst[0] = UsrDat.UsrCod;
|
||||||
case 1:
|
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Txt_One_user_has_been_removed);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sprintf (Gbl.Message,Txt_X_users_have_been_removed,
|
|
||||||
NumUsrsRemoved);
|
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else // 3: It looks like a user's ID
|
||||||
|
{
|
||||||
|
// Users' IDs are always stored internally in capitals and without leading zeros
|
||||||
|
Str_RemoveLeadingZeros (UsrDat.UsrIDNickOrEmail);
|
||||||
|
if (ID_CheckIfUsrIDSeemsAValidID (UsrDat.UsrIDNickOrEmail))
|
||||||
|
{
|
||||||
|
ItLooksLikeAUsrID = true;
|
||||||
|
|
||||||
|
/* Find users for this user's ID */
|
||||||
|
ID_ReallocateListIDs (&UsrDat,1); // Only one user's ID
|
||||||
|
Str_Copy (UsrDat.IDs.List[0].ID,UsrDat.UsrIDNickOrEmail,
|
||||||
|
ID_MAX_LENGTH_USR_ID);
|
||||||
|
Str_ConvertToUpperText (UsrDat.IDs.List[0].ID);
|
||||||
|
ID_GetListUsrCodsFromUsrID (&UsrDat,NULL,&ListUsrCods,false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Register user(s) */
|
||||||
|
if (ListUsrCods.NumUsrs) // User(s) found
|
||||||
|
for (NumUsrFound = 0;
|
||||||
|
NumUsrFound < ListUsrCods.NumUsrs;
|
||||||
|
NumUsrFound++)
|
||||||
|
{
|
||||||
|
UsrDat.UsrCod = ListUsrCods.Lst[NumUsrFound];
|
||||||
|
Enr_RegisterUsr (&UsrDat,Role,&LstGrps,&NumUsrsRegistered);
|
||||||
|
}
|
||||||
|
else if (ItLooksLikeAUsrID) // User not found. He/she is a new user. Register him/her using ID
|
||||||
|
Enr_RegisterUsr (&UsrDat,Role,&LstGrps,&NumUsrsRegistered);
|
||||||
|
|
||||||
|
/* Free memory used for list of users' codes found for this ID */
|
||||||
|
Usr_FreeListUsrCods (&ListUsrCods);
|
||||||
}
|
}
|
||||||
if (WhatToDo.RegisterUsrs)
|
}
|
||||||
switch (NumUsrsRegistered)
|
|
||||||
|
/***** Free memory used for user's data *****/
|
||||||
|
Usr_UsrDataDestructor (&UsrDat);
|
||||||
|
|
||||||
|
if (NumUsrsEliminated)
|
||||||
|
/***** Move unused contents of messages to table of deleted contents of messages *****/
|
||||||
|
Msg_MoveUnusedMsgsContentToDeleted ();
|
||||||
|
|
||||||
|
/***** Write messages with the number of users enrolled/removed *****/
|
||||||
|
if (WhatToDo.RemoveUsrs)
|
||||||
|
{
|
||||||
|
if (WhatToDo.EliminateUsrs) // Eliminate completely from the platform
|
||||||
|
switch (NumUsrsEliminated)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
Lay_ShowAlert (Lay_INFO,Txt_No_user_has_been_enrolled);
|
Lay_ShowAlert (Lay_INFO,Txt_No_user_has_been_eliminated);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Txt_One_user_has_been_enrolled);
|
Lay_ShowAlert (Lay_SUCCESS,Txt_One_user_has_been_eliminated);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
sprintf (Gbl.Message,Txt_X_users_have_been_enrolled_including_possible_repetitions,
|
sprintf (Gbl.Message,Txt_X_users_have_been_eliminated,
|
||||||
NumUsrsRegistered);
|
NumUsrsEliminated);
|
||||||
|
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else // Only remove from course / groups
|
||||||
|
switch (NumUsrsRemoved)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Lay_ShowAlert (Lay_INFO,Txt_No_user_has_been_removed);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Lay_ShowAlert (Lay_SUCCESS,Txt_One_user_has_been_removed);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sprintf (Gbl.Message,Txt_X_users_have_been_removed,
|
||||||
|
NumUsrsRemoved);
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Free memory used by the list of user's IDs *****/
|
|
||||||
free (ListUsrsIDs);
|
|
||||||
|
|
||||||
/***** Free memory with the list of groups to/from which register/remove users *****/
|
|
||||||
Grp_FreeListCodGrp (&LstGrps);
|
|
||||||
|
|
||||||
/***** Free list of groups types and groups in current course *****/
|
|
||||||
Grp_FreeListGrpTypesAndGrps ();
|
|
||||||
}
|
}
|
||||||
|
if (WhatToDo.RegisterUsrs)
|
||||||
|
switch (NumUsrsRegistered)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Lay_ShowAlert (Lay_INFO,Txt_No_user_has_been_enrolled);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Lay_ShowAlert (Lay_SUCCESS,Txt_One_user_has_been_enrolled);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sprintf (Gbl.Message,Txt_X_users_have_been_enrolled_including_possible_repetitions,
|
||||||
|
NumUsrsRegistered);
|
||||||
|
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***** Free memory used by the list of user's IDs *****/
|
||||||
|
free (ListUsrsIDs);
|
||||||
|
|
||||||
|
/***** Free memory with the list of groups to/from which register/remove users *****/
|
||||||
|
Grp_FreeListCodGrp (&LstGrps);
|
||||||
|
|
||||||
|
/***** Free list of groups types and groups in current course *****/
|
||||||
|
Grp_FreeListGrpTypesAndGrps ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1854,7 +1837,6 @@ void Enr_SignUpInCrs (void)
|
||||||
char Query[512];
|
char Query[512];
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
Rol_Role_t RoleFromForm;
|
Rol_Role_t RoleFromForm;
|
||||||
long ReqCod = -1L;
|
long ReqCod = -1L;
|
||||||
unsigned NumUsrsToBeNotifiedByEMail;
|
unsigned NumUsrsToBeNotifiedByEMail;
|
||||||
|
@ -1870,8 +1852,10 @@ void Enr_SignUpInCrs (void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Get new role from record form *****/
|
/***** Get new role from record form *****/
|
||||||
Par_GetParToText ("Role",UnsignedStr,10);
|
RoleFromForm = (Rol_Role_t) Par_GetParToUnsigned ("Role",
|
||||||
RoleFromForm = Rol_ConvertUnsignedStrToRole (UnsignedStr);
|
0,
|
||||||
|
Rol_NUM_ROLES - 1,
|
||||||
|
(unsigned) Rol_UNKNOWN);
|
||||||
|
|
||||||
/* Check if role is correct */
|
/* Check if role is correct */
|
||||||
if (!(RoleFromForm == Rol_STUDENT ||
|
if (!(RoleFromForm == Rol_STUDENT ||
|
||||||
|
@ -3642,8 +3626,6 @@ void Enr_ModifyUsr1 (void)
|
||||||
extern const char *Txt_The_role_of_THE_USER_X_in_the_course_Y_has_changed_from_A_to_B;
|
extern const char *Txt_The_role_of_THE_USER_X_in_the_course_Y_has_changed_from_A_to_B;
|
||||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||||
extern const char *Txt_THE_USER_X_has_been_enrolled_in_the_course_Y;
|
extern const char *Txt_THE_USER_X_has_been_enrolled_in_the_course_Y;
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned UnsignedNum;
|
|
||||||
bool ItsMe;
|
bool ItsMe;
|
||||||
Rol_Role_t OldRole;
|
Rol_Role_t OldRole;
|
||||||
Rol_Role_t NewRole;
|
Rol_Role_t NewRole;
|
||||||
|
@ -3658,106 +3640,107 @@ void Enr_ModifyUsr1 (void)
|
||||||
ItsMe = (Gbl.Usrs.Other.UsrDat.UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod);
|
ItsMe = (Gbl.Usrs.Other.UsrDat.UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
|
|
||||||
/***** Get the action to do *****/
|
/***** Get the action to do *****/
|
||||||
Par_GetParToText ("RegRemAction",UnsignedStr,1);
|
Gbl.Usrs.RegRemAction = (Enr_RegRemOneUsrAction_t)
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
Par_GetParToUnsigned ("RegRemAction",
|
||||||
if (UnsignedNum < Enr_NUM_ACTIONS_REG_REM_ONE_USR)
|
(unsigned) Enr_REGISTER_MODIFY_ONE_USR_IN_CRS,
|
||||||
switch ((Gbl.Usrs.RegRemAction = (Enr_RegRemOneUsrAction_t) UnsignedNum))
|
(unsigned) Enr_ELIMINATE_ONE_USR_FROM_PLATFORM,
|
||||||
|
(unsigned) Enr_ONE_USR_UNKNOWN_ACTION);
|
||||||
|
switch (Gbl.Usrs.RegRemAction)
|
||||||
|
{
|
||||||
|
case Enr_REGISTER_MODIFY_ONE_USR_IN_CRS:
|
||||||
|
if (ItsMe || Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER)
|
||||||
{
|
{
|
||||||
case Enr_REGISTER_MODIFY_ONE_USR_IN_CRS:
|
/***** Get user's name from record form *****/
|
||||||
if (ItsMe || Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER)
|
if (Usr_ICanChangeOtherUsrData (&Gbl.Usrs.Other.UsrDat))
|
||||||
|
Rec_GetUsrNameFromRecordForm (&Gbl.Usrs.Other.UsrDat);
|
||||||
|
|
||||||
|
/***** Update user's data in database *****/
|
||||||
|
Enr_UpdateUsrData (&Gbl.Usrs.Other.UsrDat);
|
||||||
|
|
||||||
|
if (Gbl.CurrentCrs.Crs.CrsCod > 0)
|
||||||
|
{
|
||||||
|
/***** Get new role from record form *****/
|
||||||
|
NewRole = Rec_GetRoleFromRecordForm ();
|
||||||
|
|
||||||
|
/***** Register user in current course in database *****/
|
||||||
|
if (Usr_CheckIfUsrBelongsToCrs (Gbl.Usrs.Other.UsrDat.UsrCod,
|
||||||
|
Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
|
false)) // User does belong to current course
|
||||||
{
|
{
|
||||||
/***** Get user's name from record form *****/
|
OldRole = Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB; // Remember old role before changing it
|
||||||
if (Usr_ICanChangeOtherUsrData (&Gbl.Usrs.Other.UsrDat))
|
if (NewRole != OldRole) // The role must be updated
|
||||||
Rec_GetUsrNameFromRecordForm (&Gbl.Usrs.Other.UsrDat);
|
|
||||||
|
|
||||||
/***** Update user's data in database *****/
|
|
||||||
Enr_UpdateUsrData (&Gbl.Usrs.Other.UsrDat);
|
|
||||||
|
|
||||||
if (Gbl.CurrentCrs.Crs.CrsCod > 0)
|
|
||||||
{
|
{
|
||||||
/***** Get new role from record form *****/
|
/* Modify role */
|
||||||
NewRole = Rec_GetRoleFromRecordForm ();
|
Enr_ModifyRoleInCurrentCrs (&Gbl.Usrs.Other.UsrDat,NewRole);
|
||||||
|
|
||||||
/***** Register user in current course in database *****/
|
/* Show success message */
|
||||||
if (Usr_CheckIfUsrBelongsToCrs (Gbl.Usrs.Other.UsrDat.UsrCod,
|
sprintf (Gbl.Message,Txt_The_role_of_THE_USER_X_in_the_course_Y_has_changed_from_A_to_B,
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
Gbl.Usrs.Other.UsrDat.FullName,Gbl.CurrentCrs.Crs.FullName,
|
||||||
false)) // User does belong to current course
|
Txt_ROLES_SINGUL_abc[OldRole][Gbl.Usrs.Other.UsrDat.Sex],
|
||||||
{
|
Txt_ROLES_SINGUL_abc[NewRole][Gbl.Usrs.Other.UsrDat.Sex]);
|
||||||
OldRole = Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB; // Remember old role before changing it
|
|
||||||
if (NewRole != OldRole) // The role must be updated
|
|
||||||
{
|
|
||||||
/* Modify role */
|
|
||||||
Enr_ModifyRoleInCurrentCrs (&Gbl.Usrs.Other.UsrDat,NewRole);
|
|
||||||
|
|
||||||
/* Show success message */
|
|
||||||
sprintf (Gbl.Message,Txt_The_role_of_THE_USER_X_in_the_course_Y_has_changed_from_A_to_B,
|
|
||||||
Gbl.Usrs.Other.UsrDat.FullName,Gbl.CurrentCrs.Crs.FullName,
|
|
||||||
Txt_ROLES_SINGUL_abc[OldRole][Gbl.Usrs.Other.UsrDat.Sex],
|
|
||||||
Txt_ROLES_SINGUL_abc[NewRole][Gbl.Usrs.Other.UsrDat.Sex]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Register user */
|
|
||||||
Enr_RegisterUsrInCurrentCrs (&Gbl.Usrs.Other.UsrDat,NewRole,
|
|
||||||
Enr_SET_ACCEPTED_TO_FALSE);
|
|
||||||
|
|
||||||
/* Show success message */
|
|
||||||
sprintf (Gbl.Message,Txt_THE_USER_X_has_been_enrolled_in_the_course_Y,
|
|
||||||
Gbl.Usrs.Other.UsrDat.FullName,Gbl.CurrentCrs.Crs.FullName);
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** Change current action *****/
|
|
||||||
Gbl.Action.Act = (NewRole == Rol_STUDENT) ? ActUpdStd :
|
|
||||||
((NewRole == Rol_TEACHER) ? ActUpdTch :
|
|
||||||
ActUpdOth);
|
|
||||||
Tab_SetCurrentTab ();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Gbl.Error = true;
|
{
|
||||||
break;
|
/* Register user */
|
||||||
case Enr_REGISTER_ONE_DEGREE_ADMIN:
|
Enr_RegisterUsrInCurrentCrs (&Gbl.Usrs.Other.UsrDat,NewRole,
|
||||||
if (Gbl.Usrs.Me.LoggedRole < Rol_CTR_ADM)
|
Enr_SET_ACCEPTED_TO_FALSE);
|
||||||
Gbl.Error = true;
|
|
||||||
break;
|
/* Show success message */
|
||||||
case Enr_REGISTER_ONE_CENTRE_ADMIN:
|
sprintf (Gbl.Message,Txt_THE_USER_X_has_been_enrolled_in_the_course_Y,
|
||||||
if (Gbl.Usrs.Me.LoggedRole < Rol_INS_ADM)
|
Gbl.Usrs.Other.UsrDat.FullName,Gbl.CurrentCrs.Crs.FullName);
|
||||||
Gbl.Error = true;
|
}
|
||||||
break;
|
|
||||||
case Enr_REGISTER_ONE_INSTITUTION_ADMIN:
|
/***** Change current action *****/
|
||||||
if (Gbl.Usrs.Me.LoggedRole != Rol_SYS_ADM)
|
Gbl.Action.Act = (NewRole == Rol_STUDENT) ? ActUpdStd :
|
||||||
Gbl.Error = true;
|
((NewRole == Rol_TEACHER) ? ActUpdTch :
|
||||||
break;
|
ActUpdOth);
|
||||||
case Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE:
|
Tab_SetCurrentTab ();
|
||||||
if (ItsMe || Gbl.Usrs.Me.LoggedRole < Rol_TEACHER)
|
}
|
||||||
Gbl.Error = true;
|
|
||||||
break;
|
|
||||||
case Enr_REMOVE_ONE_USR_FROM_CRS:
|
|
||||||
if (!ItsMe && Gbl.Usrs.Me.LoggedRole < Rol_TEACHER)
|
|
||||||
Gbl.Error = true;
|
|
||||||
break;
|
|
||||||
case Enr_REMOVE_ONE_DEGREE_ADMIN:
|
|
||||||
if (!ItsMe && Gbl.Usrs.Me.LoggedRole < Rol_CTR_ADM)
|
|
||||||
Gbl.Error = true;
|
|
||||||
break;
|
|
||||||
case Enr_REMOVE_ONE_CENTRE_ADMIN:
|
|
||||||
if (!ItsMe && Gbl.Usrs.Me.LoggedRole < Rol_INS_ADM)
|
|
||||||
Gbl.Error = true;
|
|
||||||
break;
|
|
||||||
case Enr_REMOVE_ONE_INSTITUTION_ADMIN:
|
|
||||||
if (!ItsMe && Gbl.Usrs.Me.LoggedRole != Rol_SYS_ADM)
|
|
||||||
Gbl.Error = true;
|
|
||||||
break;
|
|
||||||
case Enr_ELIMINATE_ONE_USR_FROM_PLATFORM:
|
|
||||||
if (!Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod))
|
|
||||||
Gbl.Error = true;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Gbl.Error = true;
|
||||||
|
break;
|
||||||
|
case Enr_REGISTER_ONE_DEGREE_ADMIN:
|
||||||
|
if (Gbl.Usrs.Me.LoggedRole < Rol_CTR_ADM)
|
||||||
|
Gbl.Error = true;
|
||||||
|
break;
|
||||||
|
case Enr_REGISTER_ONE_CENTRE_ADMIN:
|
||||||
|
if (Gbl.Usrs.Me.LoggedRole < Rol_INS_ADM)
|
||||||
|
Gbl.Error = true;
|
||||||
|
break;
|
||||||
|
case Enr_REGISTER_ONE_INSTITUTION_ADMIN:
|
||||||
|
if (Gbl.Usrs.Me.LoggedRole != Rol_SYS_ADM)
|
||||||
|
Gbl.Error = true;
|
||||||
|
break;
|
||||||
|
case Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE:
|
||||||
|
if (ItsMe || Gbl.Usrs.Me.LoggedRole < Rol_TEACHER)
|
||||||
|
Gbl.Error = true;
|
||||||
|
break;
|
||||||
|
case Enr_REMOVE_ONE_USR_FROM_CRS:
|
||||||
|
if (!ItsMe && Gbl.Usrs.Me.LoggedRole < Rol_TEACHER)
|
||||||
|
Gbl.Error = true;
|
||||||
|
break;
|
||||||
|
case Enr_REMOVE_ONE_DEGREE_ADMIN:
|
||||||
|
if (!ItsMe && Gbl.Usrs.Me.LoggedRole < Rol_CTR_ADM)
|
||||||
|
Gbl.Error = true;
|
||||||
|
break;
|
||||||
|
case Enr_REMOVE_ONE_CENTRE_ADMIN:
|
||||||
|
if (!ItsMe && Gbl.Usrs.Me.LoggedRole < Rol_INS_ADM)
|
||||||
|
Gbl.Error = true;
|
||||||
|
break;
|
||||||
|
case Enr_REMOVE_ONE_INSTITUTION_ADMIN:
|
||||||
|
if (!ItsMe && Gbl.Usrs.Me.LoggedRole != Rol_SYS_ADM)
|
||||||
|
Gbl.Error = true;
|
||||||
|
break;
|
||||||
|
case Enr_ELIMINATE_ONE_USR_FROM_PLATFORM:
|
||||||
|
if (!Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod))
|
||||||
|
Gbl.Error = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
Gbl.Error = true;
|
Gbl.Error = true;
|
||||||
else
|
break;
|
||||||
Gbl.Error = true;
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Gbl.Error = true;
|
Gbl.Error = true;
|
||||||
|
@ -3822,6 +3805,8 @@ void Enr_ModifyUsr2 (void)
|
||||||
case Enr_ELIMINATE_ONE_USR_FROM_PLATFORM:
|
case Enr_ELIMINATE_ONE_USR_FROM_PLATFORM:
|
||||||
Acc_ReqRemAccountOrRemAccount (Acc_REQUEST_REMOVE_USR);
|
Acc_ReqRemAccountOrRemAccount (Acc_REQUEST_REMOVE_USR);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,19 +49,19 @@ typedef enum
|
||||||
Enr_SET_ACCEPTED_TO_TRUE,
|
Enr_SET_ACCEPTED_TO_TRUE,
|
||||||
} Enr_KeepOrSetAccepted_t;
|
} Enr_KeepOrSetAccepted_t;
|
||||||
|
|
||||||
#define Enr_NUM_ACTIONS_REG_REM_ONE_USR 10
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Enr_REGISTER_MODIFY_ONE_USR_IN_CRS = 0,
|
Enr_ONE_USR_UNKNOWN_ACTION = 0,
|
||||||
Enr_REGISTER_ONE_DEGREE_ADMIN = 1,
|
Enr_REGISTER_MODIFY_ONE_USR_IN_CRS = 1,
|
||||||
Enr_REGISTER_ONE_CENTRE_ADMIN = 2,
|
Enr_REGISTER_ONE_DEGREE_ADMIN = 2,
|
||||||
Enr_REGISTER_ONE_INSTITUTION_ADMIN = 3,
|
Enr_REGISTER_ONE_CENTRE_ADMIN = 3,
|
||||||
Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE = 4,
|
Enr_REGISTER_ONE_INSTITUTION_ADMIN = 4,
|
||||||
Enr_REMOVE_ONE_USR_FROM_CRS = 5,
|
Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE = 5,
|
||||||
Enr_REMOVE_ONE_DEGREE_ADMIN = 6,
|
Enr_REMOVE_ONE_USR_FROM_CRS = 6,
|
||||||
Enr_REMOVE_ONE_CENTRE_ADMIN = 7,
|
Enr_REMOVE_ONE_DEGREE_ADMIN = 7,
|
||||||
Enr_REMOVE_ONE_INSTITUTION_ADMIN = 8,
|
Enr_REMOVE_ONE_CENTRE_ADMIN = 8,
|
||||||
Enr_ELIMINATE_ONE_USR_FROM_PLATFORM = 9,
|
Enr_REMOVE_ONE_INSTITUTION_ADMIN = 9,
|
||||||
|
Enr_ELIMINATE_ONE_USR_FROM_PLATFORM = 10,
|
||||||
} Enr_RegRemOneUsrAction_t;
|
} Enr_RegRemOneUsrAction_t;
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
38
swad_exam.c
38
swad_exam.c
|
@ -116,7 +116,6 @@ void Exa_PutFrmEditAExamAnnouncement (void)
|
||||||
|
|
||||||
static long Exa_GetParamsExamAnnouncement (void)
|
static long Exa_GetParamsExamAnnouncement (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
long ExaCod;
|
long ExaCod;
|
||||||
|
|
||||||
/***** Get the code of the exam announcement *****/
|
/***** Get the code of the exam announcement *****/
|
||||||
|
@ -130,11 +129,10 @@ static long Exa_GetParamsExamAnnouncement (void)
|
||||||
Crs_MAX_LENGTH_COURSE_FULL_NAME);
|
Crs_MAX_LENGTH_COURSE_FULL_NAME);
|
||||||
|
|
||||||
/***** Get the year *****/
|
/***** Get the year *****/
|
||||||
Par_GetParToText ("Year",UnsignedStr,10);
|
Gbl.ExamAnns.ExaDat.Year = Par_GetParToUnsigned ("Year",
|
||||||
if (sscanf (UnsignedStr,"%u",&Gbl.ExamAnns.ExaDat.Year) != 1)
|
0, // N.A.
|
||||||
Gbl.ExamAnns.ExaDat.Year = Gbl.CurrentCrs.Crs.Year;
|
Deg_MAX_YEARS_PER_DEGREE,
|
||||||
if (Gbl.ExamAnns.ExaDat.Year > Deg_MAX_YEARS_PER_DEGREE)
|
Gbl.CurrentCrs.Crs.Year);
|
||||||
Gbl.ExamAnns.ExaDat.Year = Gbl.CurrentCrs.Crs.Year;
|
|
||||||
|
|
||||||
/***** Get the type of exam announcement *****/
|
/***** Get the type of exam announcement *****/
|
||||||
Par_GetParToText ("ExamSession",Gbl.ExamAnns.ExaDat.Session,Cns_MAX_BYTES_STRING);
|
Par_GetParToText ("ExamSession",Gbl.ExamAnns.ExaDat.Session,Cns_MAX_BYTES_STRING);
|
||||||
|
@ -154,28 +152,16 @@ static long Exa_GetParamsExamAnnouncement (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Get the hour of the exam *****/
|
/***** Get the hour of the exam *****/
|
||||||
Par_GetParToText ("ExamHour",UnsignedStr,10);
|
Gbl.ExamAnns.ExaDat.StartTime.Hour = Par_GetParToUnsigned ("ExamHour",
|
||||||
if (sscanf (UnsignedStr,"%u",&Gbl.ExamAnns.ExaDat.StartTime.Hour) != 1)
|
0,23,0);
|
||||||
Gbl.ExamAnns.ExaDat.StartTime.Hour = 0;
|
Gbl.ExamAnns.ExaDat.StartTime.Minute = Par_GetParToUnsigned ("ExamMinute",
|
||||||
if (Gbl.ExamAnns.ExaDat.StartTime.Hour > 23)
|
0,59,0);
|
||||||
Gbl.ExamAnns.ExaDat.StartTime.Hour = 0;
|
|
||||||
Par_GetParToText ("ExamMinute",UnsignedStr,10);
|
|
||||||
if (sscanf (UnsignedStr,"%u",&Gbl.ExamAnns.ExaDat.StartTime.Minute) != 1)
|
|
||||||
Gbl.ExamAnns.ExaDat.StartTime.Minute = 0;
|
|
||||||
if (Gbl.ExamAnns.ExaDat.StartTime.Minute > 59)
|
|
||||||
Gbl.ExamAnns.ExaDat.StartTime.Minute = 0;
|
|
||||||
|
|
||||||
/***** Get the duration of the exam *****/
|
/***** Get the duration of the exam *****/
|
||||||
Par_GetParToText ("DurationHour",UnsignedStr,10);
|
Gbl.ExamAnns.ExaDat.Duration.Hour = Par_GetParToUnsigned ("DurationHour",
|
||||||
if (sscanf (UnsignedStr,"%u",&Gbl.ExamAnns.ExaDat.Duration.Hour) != 1)
|
0,23,0);
|
||||||
Gbl.ExamAnns.ExaDat.Duration.Hour = 0;
|
Gbl.ExamAnns.ExaDat.Duration.Minute = Par_GetParToUnsigned ("DurationMinute",
|
||||||
if (Gbl.ExamAnns.ExaDat.Duration.Hour > 23)
|
0,59,0);
|
||||||
Gbl.ExamAnns.ExaDat.Duration.Hour = 0;
|
|
||||||
Par_GetParToText ("DurationMinute",UnsignedStr,10);
|
|
||||||
if (sscanf (UnsignedStr,"%u",&Gbl.ExamAnns.ExaDat.Duration.Minute) != 1)
|
|
||||||
Gbl.ExamAnns.ExaDat.Duration.Minute = 0;
|
|
||||||
if (Gbl.ExamAnns.ExaDat.Duration.Minute > 59)
|
|
||||||
Gbl.ExamAnns.ExaDat.Duration.Minute = 0;
|
|
||||||
|
|
||||||
/***** Get the place where the exam will happen *****/
|
/***** Get the place where the exam will happen *****/
|
||||||
Par_GetParToHTML ("Place",Gbl.ExamAnns.ExaDat.Place,Cns_MAX_BYTES_TEXT);
|
Par_GetParToHTML ("Place",Gbl.ExamAnns.ExaDat.Place,Cns_MAX_BYTES_TEXT);
|
||||||
|
|
|
@ -2296,17 +2296,11 @@ void Brw_GetParAndInitFileBrowser (void)
|
||||||
|
|
||||||
static long Brw_GetGrpSettings (void)
|
static long Brw_GetGrpSettings (void)
|
||||||
{
|
{
|
||||||
char LongStr[1 + 10 + 1];
|
|
||||||
long GrpCod;
|
long GrpCod;
|
||||||
|
|
||||||
/***** Get parameter with group code *****/
|
if ((GrpCod = Par_GetParToLong ("GrpCod")) > 0)
|
||||||
if (Par_GetParToText ("GrpCod",LongStr,1 + 10))
|
|
||||||
{
|
|
||||||
if ((GrpCod = Str_ConvertStrCodToLongCod (LongStr)) <= 0)
|
|
||||||
GrpCod = -1L;
|
|
||||||
return GrpCod;
|
return GrpCod;
|
||||||
}
|
else
|
||||||
else // Parameter GrpCod not found!
|
|
||||||
/***** Try to get group code from database *****/
|
/***** Try to get group code from database *****/
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
|
@ -9870,19 +9864,10 @@ static bool Brw_GetParamPublicFile (void)
|
||||||
|
|
||||||
static Brw_License_t Brw_GetParLicense (void)
|
static Brw_License_t Brw_GetParLicense (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
return (Brw_License_t) Par_GetParToUnsigned ("License",
|
||||||
unsigned UnsignedNum;
|
(unsigned) Brw_LICENSE_UNKNOWN,
|
||||||
|
(unsigned) Brw_LICENSE_CC_BY_NC_ND,
|
||||||
/* Get file license from form */
|
(unsigned) Brw_LICENSE_UNKNOWN);
|
||||||
Par_GetParToText ("License",UnsignedStr,10);
|
|
||||||
|
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
|
|
||||||
return Brw_LICENSE_UNKNOWN;
|
|
||||||
|
|
||||||
if (UnsignedNum < Brw_NUM_LICENSES)
|
|
||||||
return (Brw_License_t) UnsignedNum;
|
|
||||||
|
|
||||||
return Brw_LICENSE_UNKNOWN;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -11603,8 +11588,8 @@ void Brw_AskRemoveOldFiles (void)
|
||||||
The_ClassForm[Gbl.Prefs.Theme],
|
The_ClassForm[Gbl.Prefs.Theme],
|
||||||
Txt_Remove_files_older_than_PART_1_OF_2);
|
Txt_Remove_files_older_than_PART_1_OF_2);
|
||||||
fprintf (Gbl.F.Out,"<select name=\"Months\">");
|
fprintf (Gbl.F.Out,"<select name=\"Months\">");
|
||||||
for (Months = Brw_MIN_MONTHS_TO_REMOVE_OLD_FILES;
|
for (Months = Brw_MIN_MONTHS_TO_REMOVE_OLD_FILES;
|
||||||
Months < Brw_MAX_MONTHS_IN_BRIEFCASE;
|
Months <= Brw_MAX_MONTHS_IN_BRIEFCASE;
|
||||||
Months++)
|
Months++)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<option");
|
fprintf (Gbl.F.Out,"<option");
|
||||||
|
@ -11636,7 +11621,6 @@ void Brw_RemoveOldFilesBriefcase (void)
|
||||||
extern const char *Txt_Files_removed;
|
extern const char *Txt_Files_removed;
|
||||||
extern const char *Txt_Links_removed;
|
extern const char *Txt_Links_removed;
|
||||||
extern const char *Txt_Folders_removed;
|
extern const char *Txt_Folders_removed;
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned Months;
|
unsigned Months;
|
||||||
struct Brw_NumObjects Removed;
|
struct Brw_NumObjects Removed;
|
||||||
|
|
||||||
|
@ -11646,12 +11630,10 @@ void Brw_RemoveOldFilesBriefcase (void)
|
||||||
if (Brw_GetIfCrsAssigWorksFileBrowser ())
|
if (Brw_GetIfCrsAssigWorksFileBrowser ())
|
||||||
{
|
{
|
||||||
/***** Get parameter with number of months without access *****/
|
/***** Get parameter with number of months without access *****/
|
||||||
Par_GetParToText ("Months",UnsignedStr,10);
|
Months = Par_GetParToUnsigned ("Months",
|
||||||
if (sscanf (UnsignedStr,"%u",&Months) != 1)
|
Brw_MIN_MONTHS_TO_REMOVE_OLD_FILES,
|
||||||
Lay_ShowErrorAndExit ("Number of months is missing.");
|
Brw_MAX_MONTHS_IN_BRIEFCASE,
|
||||||
if (Months < Brw_MIN_MONTHS_TO_REMOVE_OLD_FILES ||
|
Brw_DEF_MONTHS_TO_REMOVE_OLD_FILES);
|
||||||
Months >= Brw_MAX_MONTHS_IN_BRIEFCASE)
|
|
||||||
Lay_ShowErrorAndExit ("Wrong number of months.");
|
|
||||||
|
|
||||||
/***** Remove old files *****/
|
/***** Remove old files *****/
|
||||||
Brw_RemoveOldFilesInBrowser (Months,&Removed);
|
Brw_RemoveOldFilesInBrowser (Months,&Removed);
|
||||||
|
|
37
swad_forum.c
37
swad_forum.c
|
@ -1536,7 +1536,7 @@ static void For_PutParamWhichForum (void)
|
||||||
|
|
||||||
static void For_PutParamForumOrder (void)
|
static void For_PutParamForumOrder (void)
|
||||||
{
|
{
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Forum.SelectedOrderType);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Forum.SelectedOrder);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2545,7 +2545,7 @@ void For_ShowForumThrs (void)
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned NumThr,NumThrs;
|
unsigned NumThr,NumThrs;
|
||||||
unsigned NumThrInScreen; // From 0 to Pag_ITEMS_PER_PAGE-1
|
unsigned NumThrInScreen; // From 0 to Pag_ITEMS_PER_PAGE-1
|
||||||
For_ForumOrderType_t Order;
|
For_Order_t Order;
|
||||||
long ThrCods[Pag_ITEMS_PER_PAGE];
|
long ThrCods[Pag_ITEMS_PER_PAGE];
|
||||||
struct Pagination PaginationThrs;
|
struct Pagination PaginationThrs;
|
||||||
bool ICanMoveThreads = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM); // If I have permission to move threads...
|
bool ICanMoveThreads = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM); // If I have permission to move threads...
|
||||||
|
@ -2590,7 +2590,7 @@ void For_ShowForumThrs (void)
|
||||||
SubQuery[0] = '\0';
|
SubQuery[0] = '\0';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch (Gbl.Forum.SelectedOrderType)
|
switch (Gbl.Forum.SelectedOrder)
|
||||||
{
|
{
|
||||||
case For_FIRST_MSG:
|
case For_FIRST_MSG:
|
||||||
sprintf (Query,"SELECT forum_thread.ThrCod"
|
sprintf (Query,"SELECT forum_thread.ThrCod"
|
||||||
|
@ -2685,10 +2685,10 @@ void For_ShowForumThrs (void)
|
||||||
For_PutParamsForumInsDegCrs ();
|
For_PutParamsForumInsDegCrs ();
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_FORUM_THREAD_HELP_ORDER[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_FORUM_THREAD_HELP_ORDER[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Forum.SelectedOrderType)
|
if (Order == Gbl.Forum.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_FORUM_THREAD_ORDER[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_FORUM_THREAD_ORDER[Order]);
|
||||||
if (Order == Gbl.Forum.SelectedOrderType)
|
if (Order == Gbl.Forum.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -3392,7 +3392,7 @@ void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],struct Pagination *Pagi
|
||||||
unsigned UniqueId;
|
unsigned UniqueId;
|
||||||
struct ForumThread Thr;
|
struct ForumThread Thr;
|
||||||
struct UsrData UsrDat;
|
struct UsrData UsrDat;
|
||||||
For_ForumOrderType_t Order;
|
For_Order_t Order;
|
||||||
time_t TimeUTC;
|
time_t TimeUTC;
|
||||||
struct Pagination PaginationPsts;
|
struct Pagination PaginationPsts;
|
||||||
const char *Style;
|
const char *Style;
|
||||||
|
@ -3580,7 +3580,7 @@ void For_GetThrData (struct ForumThread *Thr)
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned long NumRows;
|
unsigned long NumRows;
|
||||||
For_ForumOrderType_t Order;
|
For_Order_t Order;
|
||||||
|
|
||||||
/***** Get data of a thread from database *****/
|
/***** Get data of a thread from database *****/
|
||||||
sprintf (Query,"SELECT m0.PstCod,m1.PstCod,m0.UsrCod,m1.UsrCod,"
|
sprintf (Query,"SELECT m0.PstCod,m1.PstCod,m0.UsrCod,m1.UsrCod,"
|
||||||
|
@ -3727,22 +3727,19 @@ void For_ShowThrPsts (void)
|
||||||
|
|
||||||
void For_GetParamsForum (void)
|
void For_GetParamsForum (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned UnsignedNum;
|
|
||||||
|
|
||||||
/***** Get which forums I want to see *****/
|
/***** Get which forums I want to see *****/
|
||||||
Par_GetParToText ("WhichForum",UnsignedStr,10);
|
Gbl.Forum.WhichForums = (For_WhichForums_t)
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
Par_GetParToUnsigned ("WhichForum",
|
||||||
Gbl.Forum.WhichForums = (For_ForumOrderType_t) UnsignedNum;
|
(unsigned) For_ONLY_CURRENT_FORUMS,
|
||||||
else
|
(unsigned) For_ALL_MY_FORUMS,
|
||||||
Gbl.Forum.WhichForums = For_DEFAULT_WHICH_FORUMS;
|
(unsigned) For_DEFAULT_WHICH_FORUMS);
|
||||||
|
|
||||||
/***** Get order type *****/
|
/***** Get order type *****/
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
Gbl.Forum.SelectedOrder = (For_Order_t)
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
Par_GetParToUnsigned ("Order",
|
||||||
Gbl.Forum.SelectedOrderType = (For_ForumOrderType_t) UnsignedNum;
|
(unsigned) For_FIRST_MSG,
|
||||||
else
|
(unsigned) For_LAST_MSG,
|
||||||
Gbl.Forum.SelectedOrderType = For_DEFAULT_ORDER;
|
(unsigned) For_DEFAULT_ORDER);
|
||||||
|
|
||||||
/***** Get parameter with code of institution *****/
|
/***** Get parameter with code of institution *****/
|
||||||
Gbl.Forum.Ins.InsCod = Par_GetParToLong ("ForInsCod");
|
Gbl.Forum.Ins.InsCod = Par_GetParToLong ("ForInsCod");
|
||||||
|
|
|
@ -81,7 +81,7 @@ typedef enum
|
||||||
{
|
{
|
||||||
For_FIRST_MSG = 0,
|
For_FIRST_MSG = 0,
|
||||||
For_LAST_MSG = 1,
|
For_LAST_MSG = 1,
|
||||||
} For_ForumOrderType_t;
|
} For_Order_t;
|
||||||
#define For_DEFAULT_ORDER For_LAST_MSG
|
#define For_DEFAULT_ORDER For_LAST_MSG
|
||||||
|
|
||||||
#define For_MAX_BYTES_FORUM_NAME (512 - 1)
|
#define For_MAX_BYTES_FORUM_NAME (512 - 1)
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
/********************************* Headers ***********************************/
|
/********************************* Headers ***********************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#include <limits.h> // For INT_MAX, LONG_MAX
|
|
||||||
#include <linux/stddef.h> // For NULL
|
#include <linux/stddef.h> // For NULL
|
||||||
#include <locale.h> // For setlocale
|
#include <locale.h> // For setlocale
|
||||||
#include <stdlib.h> // For exit, system, malloc, calloc, free, etc
|
#include <stdlib.h> // For exit, system, malloc, calloc, free, etc
|
||||||
|
@ -237,7 +236,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
|
|
||||||
Gbl.Inss.Num = 0;
|
Gbl.Inss.Num = 0;
|
||||||
Gbl.Inss.Lst = NULL;
|
Gbl.Inss.Lst = NULL;
|
||||||
Gbl.Inss.SelectedOrderType = Ins_DEFAULT_ORDER_TYPE;
|
Gbl.Inss.SelectedOrder = Ins_ORDER_DEFAULT;
|
||||||
Gbl.Inss.EditingIns.InsCod = -1L;
|
Gbl.Inss.EditingIns.InsCod = -1L;
|
||||||
Gbl.Inss.EditingIns.CtyCod = -1L;
|
Gbl.Inss.EditingIns.CtyCod = -1L;
|
||||||
Gbl.Inss.EditingIns.ShrtName[0] = '\0';
|
Gbl.Inss.EditingIns.ShrtName[0] = '\0';
|
||||||
|
@ -248,7 +247,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
|
|
||||||
Gbl.Ctys.Num = 0;
|
Gbl.Ctys.Num = 0;
|
||||||
Gbl.Ctys.Lst = NULL;
|
Gbl.Ctys.Lst = NULL;
|
||||||
Gbl.Ctys.SelectedOrderType = Cty_DEFAULT_ORDER_TYPE;
|
Gbl.Ctys.SelectedOrder = Cty_ORDER_DEFAULT;
|
||||||
Gbl.Ctys.EditingCty.CtyCod = -1L;
|
Gbl.Ctys.EditingCty.CtyCod = -1L;
|
||||||
for (Lan = (Txt_Language_t) 1;
|
for (Lan = (Txt_Language_t) 1;
|
||||||
Lan <= Txt_NUM_LANGUAGES;
|
Lan <= Txt_NUM_LANGUAGES;
|
||||||
|
@ -257,7 +256,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
|
|
||||||
Gbl.Ctrs.Num = 0;
|
Gbl.Ctrs.Num = 0;
|
||||||
Gbl.Ctrs.Lst = NULL;
|
Gbl.Ctrs.Lst = NULL;
|
||||||
Gbl.Ctrs.SelectedOrderType = Ctr_DEFAULT_ORDER_TYPE;
|
Gbl.Ctrs.SelectedOrder = Ctr_ORDER_DEFAULT;
|
||||||
Gbl.Ctrs.EditingCtr.CtrCod = -1L;
|
Gbl.Ctrs.EditingCtr.CtrCod = -1L;
|
||||||
Gbl.Ctrs.EditingCtr.InsCod = -1L;
|
Gbl.Ctrs.EditingCtr.InsCod = -1L;
|
||||||
Gbl.Ctrs.EditingCtr.CtrCod = -1L;
|
Gbl.Ctrs.EditingCtr.CtrCod = -1L;
|
||||||
|
@ -267,7 +266,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
|
|
||||||
Gbl.Dpts.Num = 0;
|
Gbl.Dpts.Num = 0;
|
||||||
Gbl.Dpts.Lst = NULL;
|
Gbl.Dpts.Lst = NULL;
|
||||||
Gbl.Dpts.SelectedOrderType = Dpt_DEFAULT_ORDER_TYPE;
|
Gbl.Dpts.SelectedOrder = Dpt_ORDER_DEFAULT;
|
||||||
Gbl.Dpts.EditingDpt.DptCod = -1L;
|
Gbl.Dpts.EditingDpt.DptCod = -1L;
|
||||||
Gbl.Dpts.EditingDpt.ShrtName[0] = '\0';
|
Gbl.Dpts.EditingDpt.ShrtName[0] = '\0';
|
||||||
Gbl.Dpts.EditingDpt.FullName[0] = '\0';
|
Gbl.Dpts.EditingDpt.FullName[0] = '\0';
|
||||||
|
@ -275,7 +274,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
|
|
||||||
Gbl.Plcs.Num = 0;
|
Gbl.Plcs.Num = 0;
|
||||||
Gbl.Plcs.Lst = NULL;
|
Gbl.Plcs.Lst = NULL;
|
||||||
Gbl.Plcs.SelectedOrderType = Plc_DEFAULT_ORDER_TYPE;
|
Gbl.Plcs.SelectedOrder = Plc_ORDER_DEFAULT;
|
||||||
Gbl.Plcs.EditingPlc.PlcCod = -1L;
|
Gbl.Plcs.EditingPlc.PlcCod = -1L;
|
||||||
Gbl.Plcs.EditingPlc.ShrtName[0] = '\0';
|
Gbl.Plcs.EditingPlc.ShrtName[0] = '\0';
|
||||||
Gbl.Plcs.EditingPlc.FullName[0] = '\0';
|
Gbl.Plcs.EditingPlc.FullName[0] = '\0';
|
||||||
|
@ -283,7 +282,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.Hlds.LstIsRead = false; // List is not read
|
Gbl.Hlds.LstIsRead = false; // List is not read
|
||||||
Gbl.Hlds.Num = 0;
|
Gbl.Hlds.Num = 0;
|
||||||
Gbl.Hlds.Lst = NULL;
|
Gbl.Hlds.Lst = NULL;
|
||||||
Gbl.Hlds.SelectedOrderType = Hld_DEFAULT_ORDER_TYPE;
|
Gbl.Hlds.SelectedOrder = Hld_DEFAULT_ORDER_TYPE;
|
||||||
Gbl.Hlds.EditingHld.HldCod = -1L;
|
Gbl.Hlds.EditingHld.HldCod = -1L;
|
||||||
Gbl.Hlds.EditingHld.PlcCod = -1L;
|
Gbl.Hlds.EditingHld.PlcCod = -1L;
|
||||||
Gbl.Hlds.EditingHld.HldTyp = Hld_HOLIDAY;
|
Gbl.Hlds.EditingHld.HldTyp = Hld_HOLIDAY;
|
||||||
|
@ -311,7 +310,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.Degs.EditingCrs.FullName[0] = '\0';
|
Gbl.Degs.EditingCrs.FullName[0] = '\0';
|
||||||
|
|
||||||
Gbl.CurrentCrs.Grps.NumGrps = 0;
|
Gbl.CurrentCrs.Grps.NumGrps = 0;
|
||||||
Gbl.CurrentCrs.Grps.WhichGrps = Grp_ALL_GROUPS;
|
Gbl.CurrentCrs.Grps.WhichGrps = Grp_WHICH_GROUPS_DEFAULT;
|
||||||
Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes = NULL;
|
Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes = NULL;
|
||||||
Gbl.CurrentCrs.Grps.GrpTypes.Num = 0;
|
Gbl.CurrentCrs.Grps.GrpTypes.Num = 0;
|
||||||
Gbl.CurrentCrs.Grps.GrpTypes.NestedCalls = 0;
|
Gbl.CurrentCrs.Grps.GrpTypes.NestedCalls = 0;
|
||||||
|
@ -322,7 +321,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.CurrentCrs.Grps.GrpTyp.OpenTimeUTC = (time_t) 0;
|
Gbl.CurrentCrs.Grps.GrpTyp.OpenTimeUTC = (time_t) 0;
|
||||||
Gbl.CurrentCrs.Grps.GrpCod = -1L; // -1L stands for the whole course
|
Gbl.CurrentCrs.Grps.GrpCod = -1L; // -1L stands for the whole course
|
||||||
Gbl.CurrentCrs.Grps.GrpName[0] = '\0';
|
Gbl.CurrentCrs.Grps.GrpName[0] = '\0';
|
||||||
Gbl.CurrentCrs.Grps.MaxStudents = INT_MAX;
|
Gbl.CurrentCrs.Grps.MaxStudents = Grp_NUM_STUDENTS_NOT_LIMITED;
|
||||||
Gbl.CurrentCrs.Grps.Open = false;
|
Gbl.CurrentCrs.Grps.Open = false;
|
||||||
Gbl.CurrentCrs.Grps.LstGrpsSel.GrpCods = NULL;
|
Gbl.CurrentCrs.Grps.LstGrpsSel.GrpCods = NULL;
|
||||||
Gbl.CurrentCrs.Grps.LstGrpsSel.NumGrps = 0;
|
Gbl.CurrentCrs.Grps.LstGrpsSel.NumGrps = 0;
|
||||||
|
@ -341,23 +340,23 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.Syllabus.EditionIsActive = false;
|
Gbl.Syllabus.EditionIsActive = false;
|
||||||
Gbl.Syllabus.WhichSyllabus = Syl_DEFAULT_WHICH_SYLLABUS;
|
Gbl.Syllabus.WhichSyllabus = Syl_DEFAULT_WHICH_SYLLABUS;
|
||||||
|
|
||||||
Gbl.Search.WhatToSearch = Sch_SEARCH_ALL;
|
Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
||||||
Gbl.Search.Str[0] = '\0';
|
Gbl.Search.Str[0] = '\0';
|
||||||
|
|
||||||
Gbl.Asgs.LstIsRead = false; // List is not read
|
Gbl.Asgs.LstIsRead = false; // List is not read
|
||||||
Gbl.Asgs.Num = 0;
|
Gbl.Asgs.Num = 0;
|
||||||
Gbl.Asgs.LstAsgCods = NULL;
|
Gbl.Asgs.LstAsgCods = NULL;
|
||||||
Gbl.Asgs.SelectedOrderType = Asg_DEFAULT_ORDER_TYPE;
|
Gbl.Asgs.SelectedOrder = Asg_ORDER_DEFAULT;
|
||||||
|
|
||||||
Gbl.AttEvents.LstIsRead = false; // List is not read
|
Gbl.AttEvents.LstIsRead = false; // List is not read
|
||||||
Gbl.AttEvents.Num = 0;
|
Gbl.AttEvents.Num = 0;
|
||||||
Gbl.AttEvents.Lst = NULL;
|
Gbl.AttEvents.Lst = NULL;
|
||||||
Gbl.AttEvents.SelectedOrderType = Att_DEFAULT_ORDER_TYPE;
|
Gbl.AttEvents.SelectedOrder = Att_ORDER_DEFAULT;
|
||||||
Gbl.AttEvents.AttCod = -1L;
|
Gbl.AttEvents.AttCod = -1L;
|
||||||
|
|
||||||
Gbl.Mails.Num = 0;
|
Gbl.Mails.Num = 0;
|
||||||
Gbl.Mails.Lst = NULL;
|
Gbl.Mails.Lst = NULL;
|
||||||
Gbl.Mails.SelectedOrderType = Mai_DEFAULT_ORDER_TYPE;
|
Gbl.Mails.SelectedOrder = Mai_ORDER_DEFAULT;
|
||||||
|
|
||||||
Gbl.Banners.Num = 0;
|
Gbl.Banners.Num = 0;
|
||||||
Gbl.Banners.Lst = NULL;
|
Gbl.Banners.Lst = NULL;
|
||||||
|
@ -375,7 +374,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.Links.EditingLnk.WWW[0] = '\0';
|
Gbl.Links.EditingLnk.WWW[0] = '\0';
|
||||||
|
|
||||||
Gbl.Usrs.Listing.RecsUsrs = Rec_RECORD_USERS_UNKNOWN;
|
Gbl.Usrs.Listing.RecsUsrs = Rec_RECORD_USERS_UNKNOWN;
|
||||||
Gbl.Usrs.Listing.RecsPerPag = 1;
|
Gbl.Usrs.Listing.RecsPerPag = Rec_DEF_RECORDS_PER_PAGE;
|
||||||
Gbl.Usrs.Listing.WithPhotos = true;
|
Gbl.Usrs.Listing.WithPhotos = true;
|
||||||
|
|
||||||
Gbl.Usrs.ClassPhoto.Cols = Usr_CLASS_PHOTO_COLS_DEF;
|
Gbl.Usrs.ClassPhoto.Cols = Usr_CLASS_PHOTO_COLS_DEF;
|
||||||
|
@ -406,7 +405,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
/* Forums */
|
/* Forums */
|
||||||
Gbl.Forum.ForumType = (For_ForumType_t) 0;
|
Gbl.Forum.ForumType = (For_ForumType_t) 0;
|
||||||
Gbl.Forum.WhichForums = For_DEFAULT_WHICH_FORUMS;
|
Gbl.Forum.WhichForums = For_DEFAULT_WHICH_FORUMS;
|
||||||
Gbl.Forum.SelectedOrderType = For_DEFAULT_ORDER;
|
Gbl.Forum.SelectedOrder = For_DEFAULT_ORDER;
|
||||||
Gbl.Forum.ThreadToMove = -1L;
|
Gbl.Forum.ThreadToMove = -1L;
|
||||||
|
|
||||||
/* User nickname */
|
/* User nickname */
|
||||||
|
|
|
@ -192,35 +192,35 @@ struct Globals
|
||||||
unsigned Num; // Number of institutions
|
unsigned Num; // Number of institutions
|
||||||
struct Instit *Lst; // List of institutions
|
struct Instit *Lst; // List of institutions
|
||||||
struct Instit EditingIns;
|
struct Instit EditingIns;
|
||||||
Ins_InssOrderType_t SelectedOrderType;
|
Ins_Order_t SelectedOrder;
|
||||||
} Inss;
|
} Inss;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
unsigned Num; // Number of centres
|
unsigned Num; // Number of centres
|
||||||
struct Centre *Lst; // List of centres
|
struct Centre *Lst; // List of centres
|
||||||
struct Centre EditingCtr;
|
struct Centre EditingCtr;
|
||||||
tCtrsOrderType SelectedOrderType;
|
Ctr_Order_t SelectedOrder;
|
||||||
} Ctrs;
|
} Ctrs;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
unsigned Num; // Number of countries
|
unsigned Num; // Number of countries
|
||||||
struct Country *Lst; // List of countries
|
struct Country *Lst; // List of countries
|
||||||
struct Country EditingCty;
|
struct Country EditingCty;
|
||||||
Cty_CtysOrderType_t SelectedOrderType;
|
Cty_Order_t SelectedOrder;
|
||||||
} Ctys;
|
} Ctys;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
unsigned Num; // Number of departments
|
unsigned Num; // Number of departments
|
||||||
struct Department *Lst; // List of departments
|
struct Department *Lst; // List of departments
|
||||||
struct Department EditingDpt;
|
struct Department EditingDpt;
|
||||||
tDptsOrderType SelectedOrderType;
|
Dpt_Order_t SelectedOrder;
|
||||||
} Dpts;
|
} Dpts;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
unsigned Num; // Number of places
|
unsigned Num; // Number of places
|
||||||
struct Place *Lst; // List of places
|
struct Place *Lst; // List of places
|
||||||
struct Place EditingPlc;
|
struct Place EditingPlc;
|
||||||
Plc_PlcsOrderType_t SelectedOrderType;
|
Plc_Order_t SelectedOrder;
|
||||||
} Plcs;
|
} Plcs;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
@ -228,14 +228,14 @@ struct Globals
|
||||||
unsigned Num; // Number of holidays
|
unsigned Num; // Number of holidays
|
||||||
struct Holiday *Lst; // List of holidays
|
struct Holiday *Lst; // List of holidays
|
||||||
struct Holiday EditingHld;
|
struct Holiday EditingHld;
|
||||||
Hld_OrderType_t SelectedOrderType;
|
Hld_Order_t SelectedOrder;
|
||||||
} Hlds;
|
} Hlds;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
unsigned Num; // Number of mail domains
|
unsigned Num; // Number of mail domains
|
||||||
struct Mail *Lst; // List of mail domains
|
struct Mail *Lst; // List of mail domains
|
||||||
struct Mail EditingMai;
|
struct Mail EditingMai;
|
||||||
Mai_MailDomainsOrderType_t SelectedOrderType;
|
Mai_DomainsOrder_t SelectedOrder;
|
||||||
} Mails;
|
} Mails;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
@ -411,7 +411,7 @@ struct Globals
|
||||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||||
unsigned Num; // Number of events
|
unsigned Num; // Number of events
|
||||||
long *LstAgdCods; // List of agenda codes
|
long *LstAgdCods; // List of agenda codes
|
||||||
Agd_Order_t SelectedOrderType;
|
Agd_Order_t SelectedOrder;
|
||||||
long AgdCodToEdit; // Used as parameter in contextual links
|
long AgdCodToEdit; // Used as parameter in contextual links
|
||||||
} Agenda;
|
} Agenda;
|
||||||
struct
|
struct
|
||||||
|
@ -454,7 +454,7 @@ struct Globals
|
||||||
struct GroupType GrpTyp;
|
struct GroupType GrpTyp;
|
||||||
long GrpCod;
|
long GrpCod;
|
||||||
char GrpName[Grp_MAX_LENGTH_GROUP_NAME + 1];
|
char GrpName[Grp_MAX_LENGTH_GROUP_NAME + 1];
|
||||||
int MaxStudents;
|
unsigned MaxStudents;
|
||||||
bool Open;
|
bool Open;
|
||||||
bool FileZones;
|
bool FileZones;
|
||||||
struct ListCodGrps LstGrpsSel;
|
struct ListCodGrps LstGrpsSel;
|
||||||
|
@ -552,7 +552,7 @@ struct Globals
|
||||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||||
unsigned Num; // Number of assignments
|
unsigned Num; // Number of assignments
|
||||||
long *LstAsgCods; // List of assigment codes
|
long *LstAsgCods; // List of assigment codes
|
||||||
Dat_StartEndTime_t SelectedOrderType;
|
Dat_StartEndTime_t SelectedOrder;
|
||||||
long AsgCodToEdit; // Used as parameter in contextual links
|
long AsgCodToEdit; // Used as parameter in contextual links
|
||||||
} Asgs;
|
} Asgs;
|
||||||
struct
|
struct
|
||||||
|
@ -560,7 +560,7 @@ struct Globals
|
||||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||||
unsigned Num; // Number of attendance events
|
unsigned Num; // Number of attendance events
|
||||||
struct AttendanceEvent *Lst; // List of attendance events
|
struct AttendanceEvent *Lst; // List of attendance events
|
||||||
Dat_StartEndTime_t SelectedOrderType;
|
Dat_StartEndTime_t SelectedOrder;
|
||||||
long AttCod;
|
long AttCod;
|
||||||
bool ShowDetails;
|
bool ShowDetails;
|
||||||
char *StrAttCodsSelected;
|
char *StrAttCodsSelected;
|
||||||
|
@ -575,7 +575,7 @@ struct Globals
|
||||||
struct Degree Deg;
|
struct Degree Deg;
|
||||||
struct Course Crs;
|
struct Course Crs;
|
||||||
int Level;
|
int Level;
|
||||||
For_ForumOrderType_t SelectedOrderType;
|
For_Order_t SelectedOrder;
|
||||||
char PathRelOld[PATH_MAX + 1];
|
char PathRelOld[PATH_MAX + 1];
|
||||||
long ThreadToMove;
|
long ThreadToMove;
|
||||||
} Forum;
|
} Forum;
|
||||||
|
@ -672,7 +672,7 @@ struct Globals
|
||||||
double FloatingPoint[2];
|
double FloatingPoint[2];
|
||||||
} Answer;
|
} Answer;
|
||||||
char ListAnsTypes[Tst_MAX_BYTES_LIST_ANSWER_TYPES + 1];
|
char ListAnsTypes[Tst_MAX_BYTES_LIST_ANSWER_TYPES + 1];
|
||||||
Tst_QuestionsOrder_t SelectedOrderType;
|
Tst_QuestionsOrder_t SelectedOrder;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
bool CreateXML; // Create an XML file and Export questions into it?
|
bool CreateXML; // Create an XML file and Export questions into it?
|
||||||
|
@ -690,7 +690,7 @@ struct Globals
|
||||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||||
unsigned Num; // Number of surveys
|
unsigned Num; // Number of surveys
|
||||||
long *LstSvyCods; // List of survey codes
|
long *LstSvyCods; // List of survey codes
|
||||||
tSvysOrderType SelectedOrderType;
|
Svy_Order_t SelectedOrder;
|
||||||
long SvyCodToEdit; // Used as parameter in contextual links
|
long SvyCodToEdit; // Used as parameter in contextual links
|
||||||
long SvyQstCodToEdit; // Used as parameter in contextual links
|
long SvyQstCodToEdit; // Used as parameter in contextual links
|
||||||
} Svys;
|
} Svys;
|
||||||
|
|
92
swad_group.c
92
swad_group.c
|
@ -25,7 +25,6 @@
|
||||||
/*********************************** Headers *********************************/
|
/*********************************** Headers *********************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#include <limits.h> // For INT_MAX
|
|
||||||
#include <linux/stddef.h> // For NULL
|
#include <linux/stddef.h> // For NULL
|
||||||
#include <stdlib.h> // For exit, system, malloc, free, rand, etc.
|
#include <stdlib.h> // For exit, system, malloc, free, rand, etc.
|
||||||
#include <string.h> // For string functions
|
#include <string.h> // For string functions
|
||||||
|
@ -3085,7 +3084,8 @@ void Grp_RecFormNewGrpTyp (void)
|
||||||
|
|
||||||
/***** Get parameters from form *****/
|
/***** Get parameters from form *****/
|
||||||
/* Get the name of group type */
|
/* Get the name of group type */
|
||||||
Par_GetParToText ("GrpTypName",Gbl.CurrentCrs.Grps.GrpTyp.GrpTypName,Grp_MAX_LENGTH_GROUP_TYPE_NAME);
|
Par_GetParToText ("GrpTypName",Gbl.CurrentCrs.Grps.GrpTyp.GrpTypName,
|
||||||
|
Grp_MAX_LENGTH_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 */
|
||||||
Gbl.CurrentCrs.Grps.GrpTyp.MandatoryEnrollment = Par_GetParToBool ("MandatoryEnrollment");
|
Gbl.CurrentCrs.Grps.GrpTyp.MandatoryEnrollment = Par_GetParToBool ("MandatoryEnrollment");
|
||||||
|
@ -3141,17 +3141,19 @@ void Grp_RecFormNewGrp (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_group_X_already_exists;
|
extern const char *Txt_The_group_X_already_exists;
|
||||||
extern const char *Txt_You_must_specify_the_name_of_the_new_group;
|
extern const char *Txt_You_must_specify_the_name_of_the_new_group;
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
|
|
||||||
/***** Get parameters from form *****/
|
/***** Get parameters from form *****/
|
||||||
if ((Gbl.CurrentCrs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) > 0) // Group type valid
|
if ((Gbl.CurrentCrs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) > 0) // Group type valid
|
||||||
{
|
{
|
||||||
/* Get group name */
|
/* Get group name */
|
||||||
Par_GetParToText ("GrpName",Gbl.CurrentCrs.Grps.GrpName,Grp_MAX_LENGTH_GROUP_NAME);
|
Par_GetParToText ("GrpName",Gbl.CurrentCrs.Grps.GrpName,
|
||||||
|
Grp_MAX_LENGTH_GROUP_NAME);
|
||||||
|
|
||||||
/* Get maximum number of students */
|
/* Get maximum number of students */
|
||||||
Par_GetParToText ("MaxStudents",UnsignedStr,10);
|
Gbl.CurrentCrs.Grps.MaxStudents = Par_GetParToUnsigned ("MaxStudents",
|
||||||
Gbl.CurrentCrs.Grps.MaxStudents = Grp_ConvertToNumMaxStdsGrp (UnsignedStr);
|
0,
|
||||||
|
Grp_MAX_STUDENTS_IN_A_GROUP,
|
||||||
|
Grp_NUM_STUDENTS_NOT_LIMITED);
|
||||||
|
|
||||||
if (Gbl.CurrentCrs.Grps.GrpName[0]) // If there's a group name
|
if (Gbl.CurrentCrs.Grps.GrpName[0]) // If there's a group name
|
||||||
{
|
{
|
||||||
|
@ -3249,7 +3251,9 @@ static void Grp_CreateGroup (void)
|
||||||
/***** Create a new group *****/
|
/***** Create a new group *****/
|
||||||
sprintf (Query,"INSERT INTO crs_grp (GrpTypCod,GrpName,MaxStudents,Open,FileZones)"
|
sprintf (Query,"INSERT INTO crs_grp (GrpTypCod,GrpName,MaxStudents,Open,FileZones)"
|
||||||
" VALUES ('%ld','%s','%u','N','N')",
|
" VALUES ('%ld','%s','%u','N','N')",
|
||||||
Gbl.CurrentCrs.Grps.GrpTyp.GrpTypCod,Gbl.CurrentCrs.Grps.GrpName,Gbl.CurrentCrs.Grps.MaxStudents);
|
Gbl.CurrentCrs.Grps.GrpTyp.GrpTypCod,
|
||||||
|
Gbl.CurrentCrs.Grps.GrpName,
|
||||||
|
Gbl.CurrentCrs.Grps.MaxStudents);
|
||||||
DB_QueryINSERT (Query,"can not create group");
|
DB_QueryINSERT (Query,"can not create group");
|
||||||
|
|
||||||
/***** Write success message *****/
|
/***** Write success message *****/
|
||||||
|
@ -3833,7 +3837,6 @@ void Grp_ChangeMaxStdsGrp (void)
|
||||||
struct GroupData GrpDat;
|
struct GroupData GrpDat;
|
||||||
char Query[1024];
|
char Query[1024];
|
||||||
unsigned NewMaxStds;
|
unsigned NewMaxStds;
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
|
|
||||||
/***** Get parameters of the form *****/
|
/***** Get parameters of the form *****/
|
||||||
/* Get group code */
|
/* Get group code */
|
||||||
|
@ -3841,8 +3844,10 @@ void Grp_ChangeMaxStdsGrp (void)
|
||||||
Lay_ShowErrorAndExit ("Code of group is missing.");
|
Lay_ShowErrorAndExit ("Code of group is missing.");
|
||||||
|
|
||||||
/* Get the new maximum number of students of the group */
|
/* Get the new maximum number of students of the group */
|
||||||
Par_GetParToText ("MaxStudents",UnsignedStr,10);
|
NewMaxStds = Par_GetParToUnsigned ("MaxStudents",
|
||||||
NewMaxStds = Grp_ConvertToNumMaxStdsGrp (UnsignedStr);
|
0,
|
||||||
|
Grp_MAX_STUDENTS_IN_A_GROUP,
|
||||||
|
Grp_NUM_STUDENTS_NOT_LIMITED);
|
||||||
|
|
||||||
/* Get from the database the type, name, and antiguo maximum of students of the group */
|
/* Get from the database the type, name, and antiguo maximum of students of the group */
|
||||||
GrpDat.GrpCod = Gbl.CurrentCrs.Grps.GrpCod;
|
GrpDat.GrpCod = Gbl.CurrentCrs.Grps.GrpCod;
|
||||||
|
@ -3863,7 +3868,7 @@ void Grp_ChangeMaxStdsGrp (void)
|
||||||
DB_QueryUPDATE (Query,"can not update the maximum number of students in a group");
|
DB_QueryUPDATE (Query,"can not update the maximum number of students in a group");
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
if (NewMaxStds == (unsigned) INT_MAX)
|
if (NewMaxStds > Grp_MAX_STUDENTS_IN_A_GROUP)
|
||||||
sprintf (Gbl.Message,Txt_The_group_X_now_has_no_limit_of_students,
|
sprintf (Gbl.Message,Txt_The_group_X_now_has_no_limit_of_students,
|
||||||
GrpDat.GrpName);
|
GrpDat.GrpName);
|
||||||
else
|
else
|
||||||
|
@ -3898,9 +3903,9 @@ unsigned Grp_ConvertToNumMaxStdsGrp (const char *StrMaxStudents)
|
||||||
unsigned MaxStudents;
|
unsigned MaxStudents;
|
||||||
|
|
||||||
if (sscanf (StrMaxStudents,"%u",&MaxStudents) != 1)
|
if (sscanf (StrMaxStudents,"%u",&MaxStudents) != 1)
|
||||||
return INT_MAX;
|
return Grp_NUM_STUDENTS_NOT_LIMITED;
|
||||||
else if (MaxStudents > Grp_MAX_STUDENTS_IN_A_GROUP)
|
else if (MaxStudents > Grp_MAX_STUDENTS_IN_A_GROUP)
|
||||||
return INT_MAX;
|
return Grp_NUM_STUDENTS_NOT_LIMITED;
|
||||||
return MaxStudents;
|
return MaxStudents;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4245,43 +4250,40 @@ void Grp_ShowFormToSelWhichGrps (Act_Action_t Action,void (*FuncParams) ())
|
||||||
void Grp_GetParamWhichGrps (void)
|
void Grp_GetParamWhichGrps (void)
|
||||||
{
|
{
|
||||||
static bool FirstTime = true;
|
static bool FirstTime = true;
|
||||||
char UnsignedStr[10 + 1];
|
Grp_WhichGroups_t WhichGroupsDefault;
|
||||||
unsigned UnsignedNum;
|
|
||||||
|
|
||||||
if (FirstTime)
|
if (FirstTime)
|
||||||
{
|
{
|
||||||
FirstTime = false;
|
FirstTime = false;
|
||||||
|
|
||||||
/***** Get which grous (my groups or all groups) *****/
|
/***** Get which grous (my groups or all groups) *****/
|
||||||
Par_GetParToText ("WhichGrps",UnsignedStr,1);
|
/* Set default */
|
||||||
if (UnsignedStr[0])
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
|
case ActSeeCrsTT:
|
||||||
Lay_ShowErrorAndExit ("Which groups to show is missing.");
|
case ActPrnCrsTT:
|
||||||
if (UnsignedNum >= 2)
|
case ActChgCrsTT1stDay:
|
||||||
Lay_ShowErrorAndExit ("Wrong parameter with which groups to show.");
|
case ActSeeAsg:
|
||||||
Gbl.CurrentCrs.Grps.WhichGrps = (Grp_WhichGroups_t) UnsignedNum;
|
case ActSeeAtt:
|
||||||
}
|
case ActSeeAllSvy:
|
||||||
else // This parameter does not exist ==> set default value
|
WhichGroupsDefault = Gbl.Usrs.Me.IBelongToCurrentCrs ? Grp_ONLY_MY_GROUPS : // If I belong to this course ==> see only my groups
|
||||||
switch (Gbl.Action.Act)
|
Grp_ALL_GROUPS; // If I don't belong to this course ==> see all groups
|
||||||
{
|
break;
|
||||||
case ActSeeCrsTT:
|
case ActSeeMyTT:
|
||||||
case ActPrnCrsTT:
|
case ActPrnMyTT:
|
||||||
case ActChgCrsTT1stDay:
|
case ActChgMyTT1stDay:
|
||||||
case ActSeeAsg:
|
WhichGroupsDefault = Grp_ONLY_MY_GROUPS; // By default, see only my groups
|
||||||
case ActSeeAtt:
|
break;
|
||||||
case ActSeeAllSvy:
|
default: // Control never should enter here
|
||||||
Gbl.CurrentCrs.Grps.WhichGrps = Gbl.Usrs.Me.IBelongToCurrentCrs ? Grp_ONLY_MY_GROUPS : // If I belong to this course ==> see only my groups
|
WhichGroupsDefault = Grp_WHICH_GROUPS_DEFAULT;
|
||||||
Grp_ALL_GROUPS; // If I don't belong to this course ==> see all groups
|
break;
|
||||||
break;
|
}
|
||||||
case ActSeeMyTT:
|
|
||||||
case ActPrnMyTT:
|
/* Get parameter */
|
||||||
case ActChgMyTT1stDay:
|
Gbl.CurrentCrs.Grps.WhichGrps = (Grp_WhichGroups_t)
|
||||||
Gbl.CurrentCrs.Grps.WhichGrps = Grp_ONLY_MY_GROUPS; // By default, see only my groups
|
Par_GetParToUnsigned ("WhichGrps",
|
||||||
break;
|
(unsigned) Grp_ONLY_MY_GROUPS,
|
||||||
default: // Control never should enter here
|
(unsigned) Grp_ALL_GROUPS,
|
||||||
Gbl.CurrentCrs.Grps.WhichGrps = Grp_ALL_GROUPS;
|
(unsigned) WhichGroupsDefault);
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#define Grp_MAX_LENGTH_GROUP_NAME (256 - 1)
|
#define Grp_MAX_LENGTH_GROUP_NAME (256 - 1)
|
||||||
|
|
||||||
#define Grp_MAX_STUDENTS_IN_A_GROUP 10000 // If max of students in a group is greater than this, it is considered infinite
|
#define Grp_MAX_STUDENTS_IN_A_GROUP 10000 // If max of students in a group is greater than this, it is considered infinite
|
||||||
|
#define Grp_NUM_STUDENTS_NOT_LIMITED INT_MAX // This number can be stored in database and means that a group has no limit of students
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************************* Public types ********************************/
|
/******************************* Public types ********************************/
|
||||||
|
@ -63,6 +64,7 @@ struct GroupData
|
||||||
bool FileZones; // Group has file zones?
|
bool FileZones; // Group has file zones?
|
||||||
bool MultipleEnrollment;
|
bool MultipleEnrollment;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Group
|
struct Group
|
||||||
{
|
{
|
||||||
long GrpCod; // Code of group
|
long GrpCod; // Code of group
|
||||||
|
@ -73,6 +75,7 @@ struct Group
|
||||||
bool FileZones; // Group has file zones?
|
bool FileZones; // Group has file zones?
|
||||||
bool ShowFileZone; // Show file zone of this group?
|
bool ShowFileZone; // Show file zone of this group?
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GroupType
|
struct GroupType
|
||||||
{
|
{
|
||||||
long GrpTypCod; // Code of type of group
|
long GrpTypCod; // Code of type of group
|
||||||
|
@ -84,6 +87,7 @@ struct GroupType
|
||||||
unsigned NumGrps; // Number of groups of this type
|
unsigned NumGrps; // Number of groups of this type
|
||||||
struct Group *LstGrps; // List of groups of this type
|
struct Group *LstGrps; // List of groups of this type
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GroupTypes
|
struct GroupTypes
|
||||||
{
|
{
|
||||||
struct GroupType *LstGrpTypes; // List of types of group
|
struct GroupType *LstGrpTypes; // List of types of group
|
||||||
|
@ -91,22 +95,27 @@ struct GroupTypes
|
||||||
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
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ListCodGrps
|
struct ListCodGrps
|
||||||
{
|
{
|
||||||
long *GrpCods;
|
long *GrpCods;
|
||||||
unsigned NumGrps;
|
unsigned NumGrps;
|
||||||
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
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ListGrpsAlreadySelec
|
struct ListGrpsAlreadySelec
|
||||||
{
|
{
|
||||||
long GrpTypCod;
|
long GrpTypCod;
|
||||||
bool AlreadySelected;
|
bool AlreadySelected;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Grp_ONLY_MY_GROUPS,
|
Grp_ONLY_MY_GROUPS,
|
||||||
Grp_ALL_GROUPS,
|
Grp_ALL_GROUPS,
|
||||||
} Grp_WhichGroups_t;
|
} Grp_WhichGroups_t;
|
||||||
|
#define Grp_WHICH_GROUPS_DEFAULT Grp_ALL_GROUPS
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Grp_ASSIGNMENT,
|
Grp_ASSIGNMENT,
|
||||||
|
|
|
@ -57,7 +57,7 @@ extern struct Globals Gbl;
|
||||||
/***************************** Private prototypes ****************************/
|
/***************************** Private prototypes ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Hld_GetParamHldOrderType (void);
|
static void Hld_GetParamHldOrder (void);
|
||||||
static void Hld_PutIconToEditHlds (void);
|
static void Hld_PutIconToEditHlds (void);
|
||||||
|
|
||||||
static void Hld_GetDataOfHolidayByCod (struct Holiday *Hld);
|
static void Hld_GetDataOfHolidayByCod (struct Holiday *Hld);
|
||||||
|
@ -84,13 +84,13 @@ void Hld_SeeHolidays (void)
|
||||||
extern const char *Txt_End_date;
|
extern const char *Txt_End_date;
|
||||||
extern const char *Txt_Holiday;
|
extern const char *Txt_Holiday;
|
||||||
extern const char *Txt_All_places;
|
extern const char *Txt_All_places;
|
||||||
Hld_OrderType_t Order;
|
Hld_Order_t Order;
|
||||||
unsigned NumHld;
|
unsigned NumHld;
|
||||||
|
|
||||||
if (Gbl.CurrentIns.Ins.InsCod > 0)
|
if (Gbl.CurrentIns.Ins.InsCod > 0)
|
||||||
{
|
{
|
||||||
/***** Get parameter with the type of order in the list of holidays *****/
|
/***** Get parameter with the type of order in the list of holidays *****/
|
||||||
Hld_GetParamHldOrderType ();
|
Hld_GetParamHldOrder ();
|
||||||
|
|
||||||
/***** Get list of holidays *****/
|
/***** Get list of holidays *****/
|
||||||
Hld_GetListHolidays ();
|
Hld_GetListHolidays ();
|
||||||
|
@ -109,10 +109,10 @@ void Hld_SeeHolidays (void)
|
||||||
Act_FormStart (ActSeeHld);
|
Act_FormStart (ActSeeHld);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_HOLIDAYS_HELP_ORDER[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_HOLIDAYS_HELP_ORDER[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Hlds.SelectedOrderType)
|
if (Order == Gbl.Hlds.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_HOLIDAYS_ORDER[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_HOLIDAYS_ORDER[Order]);
|
||||||
if (Order == Gbl.Hlds.SelectedOrderType)
|
if (Order == Gbl.Hlds.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -179,16 +179,13 @@ void Hld_SeeHolidays (void)
|
||||||
/********* Get parameter with the type or order in list of holidays **********/
|
/********* Get parameter with the type or order in list of holidays **********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Hld_GetParamHldOrderType (void)
|
static void Hld_GetParamHldOrder (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
Gbl.Hlds.SelectedOrder = (Hld_Order_t)
|
||||||
unsigned UnsignedNum;
|
Par_GetParToUnsigned ("Order",
|
||||||
|
(unsigned) Hld_ORDER_BY_PLACE,
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
(unsigned) Hld_ORDER_BY_START_DATE,
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
(unsigned) Hld_DEFAULT_ORDER_TYPE);
|
||||||
Gbl.Hlds.SelectedOrderType = (Hld_OrderType_t) UnsignedNum;
|
|
||||||
else
|
|
||||||
Gbl.Hlds.SelectedOrderType = Hld_DEFAULT_ORDER_TYPE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -256,7 +253,7 @@ void Hld_GetListHolidays (void)
|
||||||
Hld_FreeListHolidays ();
|
Hld_FreeListHolidays ();
|
||||||
|
|
||||||
/***** Get holidays from database *****/
|
/***** Get holidays from database *****/
|
||||||
switch (Gbl.Hlds.SelectedOrderType)
|
switch (Gbl.Hlds.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Hld_ORDER_BY_PLACE:
|
case Hld_ORDER_BY_PLACE:
|
||||||
sprintf (OrderBySubQuery,"Place,StartDate");
|
sprintf (OrderBySubQuery,"Place,StartDate");
|
||||||
|
@ -443,10 +440,10 @@ static void Hld_GetDataOfHolidayByCod (struct Holiday *Hld)
|
||||||
|
|
||||||
static Hld_HolidayType_t Hld_GetParamHldType (void)
|
static Hld_HolidayType_t Hld_GetParamHldType (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
return (Hld_HolidayType_t) Par_GetParToUnsigned ("HldTyp",
|
||||||
|
(unsigned) Hld_HOLIDAY,
|
||||||
Par_GetParToText ("HldTyp",UnsignedStr,10);
|
(unsigned) Hld_NON_SCHOOL_PERIOD,
|
||||||
return Hld_GetTypeOfHoliday (UnsignedStr);
|
(unsigned) Hld_HOLIDAY_TYPE_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -42,6 +42,7 @@ typedef enum
|
||||||
Hld_HOLIDAY = 0,
|
Hld_HOLIDAY = 0,
|
||||||
Hld_NON_SCHOOL_PERIOD = 1,
|
Hld_NON_SCHOOL_PERIOD = 1,
|
||||||
} Hld_HolidayType_t;
|
} Hld_HolidayType_t;
|
||||||
|
#define Hld_HOLIDAY_TYPE_DEFAULT Hld_HOLIDAY
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
@ -64,7 +65,7 @@ typedef enum
|
||||||
{
|
{
|
||||||
Hld_ORDER_BY_PLACE = 0,
|
Hld_ORDER_BY_PLACE = 0,
|
||||||
Hld_ORDER_BY_START_DATE = 1,
|
Hld_ORDER_BY_START_DATE = 1,
|
||||||
} Hld_OrderType_t;
|
} Hld_Order_t;
|
||||||
|
|
||||||
#define Hld_DEFAULT_ORDER_TYPE Hld_ORDER_BY_START_DATE
|
#define Hld_DEFAULT_ORDER_TYPE Hld_ORDER_BY_START_DATE
|
||||||
|
|
||||||
|
|
15
swad_image.c
15
swad_image.c
|
@ -374,18 +374,11 @@ void Img_SetParamNames (struct ParamUploadImg *ParamUploadImg,int NumImgInForm)
|
||||||
|
|
||||||
Img_Action_t Img_GetImageActionFromForm (const char *ParamAction)
|
Img_Action_t Img_GetImageActionFromForm (const char *ParamAction)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned UnsignedNum;
|
|
||||||
|
|
||||||
/***** Get parameter with the action to perform on image *****/
|
/***** Get parameter with the action to perform on image *****/
|
||||||
Par_GetParToText (ParamAction,UnsignedStr,10);
|
return (Img_Action_t) Par_GetParToUnsigned (ParamAction,
|
||||||
if (UnsignedStr[0])
|
(unsigned) Img_ACTION_NEW_IMAGE,
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
(unsigned) Img_ACTION_NO_IMAGE,
|
||||||
if (UnsignedNum < Img_NUM_ACTIONS)
|
(unsigned) Img_ACTION_NO_IMAGE); // Default action if none supplied
|
||||||
return (Img_Action_t) UnsignedNum;
|
|
||||||
|
|
||||||
/***** Default action if none supplied *****/
|
|
||||||
return Img_ACTION_NO_IMAGE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
13
swad_info.c
13
swad_info.c
|
@ -1440,17 +1440,12 @@ static Inf_InfoType_t Inf_AsignInfoType (void)
|
||||||
|
|
||||||
Inf_InfoSrc_t Inf_GetInfoSrcFromForm (void)
|
Inf_InfoSrc_t Inf_GetInfoSrcFromForm (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
int InfoSrcInt;
|
|
||||||
Inf_InfoSrc_t InfoSrc;
|
|
||||||
|
|
||||||
/***** Get info source for a specific type of course information
|
/***** Get info source for a specific type of course information
|
||||||
(introduction, teaching guide, bibliography, FAQ, links or evaluation) *****/
|
(introduction, teaching guide, bibliography, FAQ, links or evaluation) *****/
|
||||||
Par_GetParToText ("InfoSrc",UnsignedStr,2);
|
return (Inf_InfoSrc_t) Par_GetParToUnsigned ("InfoSrc",
|
||||||
if (sscanf (UnsignedStr,"%d",&InfoSrcInt) != 1)
|
(unsigned) Inf_INFO_SRC_NONE,
|
||||||
return Inf_INFO_SRC_NONE;
|
(unsigned) Inf_INFO_SRC_URL,
|
||||||
InfoSrc = (Inf_InfoSrc_t) InfoSrcInt;
|
(unsigned) Inf_INFO_SRC_NONE);
|
||||||
return InfoSrc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -73,7 +73,7 @@ static void Ins_PutIconsListInstitutions (void);
|
||||||
static void Ins_PutIconToEditInstitutions (void);
|
static void Ins_PutIconToEditInstitutions (void);
|
||||||
static void Ins_ListOneInstitutionForSeeing (struct Instit *Ins,unsigned NumIns);
|
static void Ins_ListOneInstitutionForSeeing (struct Instit *Ins,unsigned NumIns);
|
||||||
static void Ins_PutHeadInstitutionsForSeeing (bool OrderSelectable);
|
static void Ins_PutHeadInstitutionsForSeeing (bool OrderSelectable);
|
||||||
static void Ins_GetParamInsOrderType (void);
|
static void Ins_GetParamInsOrder (void);
|
||||||
static void Ins_ListInstitutionsForEdition (void);
|
static void Ins_ListInstitutionsForEdition (void);
|
||||||
static bool Ins_CheckIfICanEdit (struct Instit *Ins);
|
static bool Ins_CheckIfICanEdit (struct Instit *Ins);
|
||||||
static Ins_StatusTxt_t Ins_GetStatusTxtFromStatusBits (Ins_Status_t Status);
|
static Ins_StatusTxt_t Ins_GetStatusTxtFromStatusBits (Ins_Status_t Status);
|
||||||
|
@ -642,7 +642,7 @@ void Ins_ShowInssOfCurrentCty (void)
|
||||||
if (Gbl.CurrentCty.Cty.CtyCod > 0)
|
if (Gbl.CurrentCty.Cty.CtyCod > 0)
|
||||||
{
|
{
|
||||||
/***** Get parameter with the type of order in the list of institutions *****/
|
/***** Get parameter with the type of order in the list of institutions *****/
|
||||||
Ins_GetParamInsOrderType ();
|
Ins_GetParamInsOrder ();
|
||||||
|
|
||||||
/***** Get list of institutions *****/
|
/***** Get list of institutions *****/
|
||||||
Ins_GetListInstitutions (Gbl.CurrentCty.Cty.CtyCod,Ins_GET_EXTRA_DATA);
|
Ins_GetListInstitutions (Gbl.CurrentCty.Cty.CtyCod,Ins_GET_EXTRA_DATA);
|
||||||
|
@ -846,7 +846,7 @@ static void Ins_PutHeadInstitutionsForSeeing (bool OrderSelectable)
|
||||||
extern const char *Txt_Courses_ABBREVIATION;
|
extern const char *Txt_Courses_ABBREVIATION;
|
||||||
extern const char *Txt_Departments_ABBREVIATION;
|
extern const char *Txt_Departments_ABBREVIATION;
|
||||||
extern const char *Txt_Status;
|
extern const char *Txt_Status;
|
||||||
Ins_InssOrderType_t Order;
|
Ins_Order_t Order;
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<th></th>");
|
"<th></th>");
|
||||||
|
@ -862,13 +862,13 @@ static void Ins_PutHeadInstitutionsForSeeing (bool OrderSelectable)
|
||||||
Act_FormStart (ActSeeIns);
|
Act_FormStart (ActSeeIns);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_INSTITUTIONS_HELP_ORDER[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_INSTITUTIONS_HELP_ORDER[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Inss.SelectedOrderType)
|
if (Order == Gbl.Inss.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_INSTITUTIONS_ORDER[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_INSTITUTIONS_ORDER[Order]);
|
||||||
if (OrderSelectable)
|
if (OrderSelectable)
|
||||||
{
|
{
|
||||||
if (Order == Gbl.Inss.SelectedOrderType)
|
if (Order == Gbl.Inss.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -906,16 +906,13 @@ static void Ins_PutHeadInstitutionsForSeeing (bool OrderSelectable)
|
||||||
/******* Get parameter with the type or order in list of institutions ********/
|
/******* Get parameter with the type or order in list of institutions ********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Ins_GetParamInsOrderType (void)
|
static void Ins_GetParamInsOrder (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
Gbl.Inss.SelectedOrder = (Ins_Order_t)
|
||||||
unsigned UnsignedNum;
|
Par_GetParToUnsigned ("Order",
|
||||||
|
(unsigned) Ins_ORDER_BY_INSTITUTION,
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
(unsigned) Ins_ORDER_BY_NUM_USRS,
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
(unsigned) Ins_ORDER_DEFAULT);
|
||||||
Gbl.Inss.SelectedOrderType = (Ins_InssOrderType_t) UnsignedNum;
|
|
||||||
else
|
|
||||||
Gbl.Inss.SelectedOrderType = Ins_DEFAULT_ORDER_TYPE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -964,7 +961,7 @@ void Ins_GetListInstitutions (long CtyCod,Ins_GetExtraData_t GetExtraData)
|
||||||
CtyCod);
|
CtyCod);
|
||||||
break;
|
break;
|
||||||
case Ins_GET_EXTRA_DATA:
|
case Ins_GET_EXTRA_DATA:
|
||||||
switch (Gbl.Inss.SelectedOrderType)
|
switch (Gbl.Inss.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Ins_ORDER_BY_INSTITUTION:
|
case Ins_ORDER_BY_INSTITUTION:
|
||||||
sprintf (OrderBySubQuery,"FullName");
|
sprintf (OrderBySubQuery,"FullName");
|
||||||
|
@ -1928,7 +1925,6 @@ void Ins_ChangeInsStatus (void)
|
||||||
extern const char *Txt_The_status_of_the_institution_X_has_changed;
|
extern const char *Txt_The_status_of_the_institution_X_has_changed;
|
||||||
struct Instit *Ins;
|
struct Instit *Ins;
|
||||||
char Query[256];
|
char Query[256];
|
||||||
char UnsignedNum[10 + 1];
|
|
||||||
Ins_Status_t Status;
|
Ins_Status_t Status;
|
||||||
Ins_StatusTxt_t StatusTxt;
|
Ins_StatusTxt_t StatusTxt;
|
||||||
|
|
||||||
|
@ -1939,8 +1935,9 @@ void Ins_ChangeInsStatus (void)
|
||||||
Ins->InsCod = Ins_GetAndCheckParamOtherInsCod ();
|
Ins->InsCod = Ins_GetAndCheckParamOtherInsCod ();
|
||||||
|
|
||||||
/* Get parameter with status */
|
/* Get parameter with status */
|
||||||
Par_GetParToText ("Status",UnsignedNum,1);
|
Status = (Ins_Status_t) Par_GetParToUnsigned ("Status",0,UINT_MAX,
|
||||||
if (sscanf (UnsignedNum,"%u",&Status) != 1)
|
(unsigned) Ins_WRONG_STATUS);
|
||||||
|
if (Status == Ctr_WRONG_STATUS)
|
||||||
Lay_ShowErrorAndExit ("Wrong status.");
|
Lay_ShowErrorAndExit ("Wrong status.");
|
||||||
StatusTxt = Ins_GetStatusTxtFromStatusBits (Status);
|
StatusTxt = Ins_GetStatusTxtFromStatusBits (Status);
|
||||||
Status = Ins_GetStatusBitsFromStatusTxt (StatusTxt); // New status
|
Status = Ins_GetStatusBitsFromStatusTxt (StatusTxt); // New status
|
||||||
|
|
|
@ -39,7 +39,9 @@ typedef enum
|
||||||
Ins_STATUS_BIT_PENDING = (1 << 0), // Institution is requested, but not yet activated
|
Ins_STATUS_BIT_PENDING = (1 << 0), // Institution is requested, but not yet activated
|
||||||
Ins_STATUS_BIT_REMOVED = (1 << 1), // Institution has been removed
|
Ins_STATUS_BIT_REMOVED = (1 << 1), // Institution has been removed
|
||||||
} Ins_Status_Bits_t;
|
} Ins_Status_Bits_t;
|
||||||
|
|
||||||
typedef unsigned Ins_Status_t;
|
typedef unsigned Ins_Status_t;
|
||||||
|
#define Ins_WRONG_STATUS ((Ins_Status_t) UINT_MAX)
|
||||||
|
|
||||||
#define Ins_NUM_STATUS_TXT 4
|
#define Ins_NUM_STATUS_TXT 4
|
||||||
typedef enum
|
typedef enum
|
||||||
|
@ -76,9 +78,9 @@ typedef enum
|
||||||
{
|
{
|
||||||
Ins_ORDER_BY_INSTITUTION = 0,
|
Ins_ORDER_BY_INSTITUTION = 0,
|
||||||
Ins_ORDER_BY_NUM_USRS = 1,
|
Ins_ORDER_BY_NUM_USRS = 1,
|
||||||
} Ins_InssOrderType_t;
|
} Ins_Order_t;
|
||||||
|
|
||||||
#define Ins_DEFAULT_ORDER_TYPE Ins_ORDER_BY_NUM_USRS
|
#define Ins_ORDER_DEFAULT Ins_ORDER_BY_NUM_USRS
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
|
|
@ -497,7 +497,7 @@ static void Lay_WriteScripts (void)
|
||||||
/***** Get list of holidays *****/
|
/***** Get list of holidays *****/
|
||||||
if (!Gbl.Hlds.LstIsRead)
|
if (!Gbl.Hlds.LstIsRead)
|
||||||
{
|
{
|
||||||
Gbl.Hlds.SelectedOrderType = Hld_ORDER_BY_START_DATE;
|
Gbl.Hlds.SelectedOrder = Hld_ORDER_BY_START_DATE;
|
||||||
Hld_GetListHolidays ();
|
Hld_GetListHolidays ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
27
swad_mail.c
27
swad_mail.c
|
@ -64,7 +64,7 @@ extern struct Globals Gbl;
|
||||||
/***************************** Private prototypes ****************************/
|
/***************************** Private prototypes ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Mai_GetParamMaiOrderType (void);
|
static void Mai_GetParamMaiOrder (void);
|
||||||
static void Mai_PutIconToEditMailDomains (void);
|
static void Mai_PutIconToEditMailDomains (void);
|
||||||
static void Mai_GetListMailDomainsAllowedForNotif (void);
|
static void Mai_GetListMailDomainsAllowedForNotif (void);
|
||||||
static void Mai_GetMailBox (const char *Email,char MailBox[Usr_MAX_BYTES_USR_EMAIL + 1]);
|
static void Mai_GetMailBox (const char *Email,char MailBox[Usr_MAX_BYTES_USR_EMAIL + 1]);
|
||||||
|
@ -94,11 +94,11 @@ void Mai_SeeMailDomains (void)
|
||||||
extern const char *Txt_Email_domains_allowed_for_notifications;
|
extern const char *Txt_Email_domains_allowed_for_notifications;
|
||||||
extern const char *Txt_EMAIL_DOMAIN_HELP_ORDER[3];
|
extern const char *Txt_EMAIL_DOMAIN_HELP_ORDER[3];
|
||||||
extern const char *Txt_EMAIL_DOMAIN_ORDER[3];
|
extern const char *Txt_EMAIL_DOMAIN_ORDER[3];
|
||||||
Mai_MailDomainsOrderType_t Order;
|
Mai_DomainsOrder_t Order;
|
||||||
unsigned NumMai;
|
unsigned NumMai;
|
||||||
|
|
||||||
/***** Get parameter with the type of order in the list of mail domains *****/
|
/***** Get parameter with the type of order in the list of mail domains *****/
|
||||||
Mai_GetParamMaiOrderType ();
|
Mai_GetParamMaiOrder ();
|
||||||
|
|
||||||
/***** Get list of mail domains *****/
|
/***** Get list of mail domains *****/
|
||||||
Mai_GetListMailDomainsAllowedForNotif ();
|
Mai_GetListMailDomainsAllowedForNotif ();
|
||||||
|
@ -117,10 +117,10 @@ void Mai_SeeMailDomains (void)
|
||||||
Act_FormStart (ActSeeMai);
|
Act_FormStart (ActSeeMai);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_EMAIL_DOMAIN_HELP_ORDER[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_EMAIL_DOMAIN_HELP_ORDER[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Mails.SelectedOrderType)
|
if (Order == Gbl.Mails.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_EMAIL_DOMAIN_ORDER[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_EMAIL_DOMAIN_ORDER[Order]);
|
||||||
if (Order == Gbl.Mails.SelectedOrderType)
|
if (Order == Gbl.Mails.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -159,16 +159,13 @@ void Mai_SeeMailDomains (void)
|
||||||
/******* Get parameter with the type or order in list of mail domains ********/
|
/******* Get parameter with the type or order in list of mail domains ********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Mai_GetParamMaiOrderType (void)
|
static void Mai_GetParamMaiOrder (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
Gbl.Mails.SelectedOrder = (Mai_DomainsOrder_t)
|
||||||
unsigned UnsignedNum;
|
Par_GetParToUnsigned ("Order",
|
||||||
|
(unsigned) Mai_ORDER_BY_DOMAIN,
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
(unsigned) Mai_ORDER_BY_INFO,
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
(unsigned) Mai_ORDER_DEFAULT);
|
||||||
Gbl.Mails.SelectedOrderType = (Mai_MailDomainsOrderType_t) UnsignedNum;
|
|
||||||
else
|
|
||||||
Gbl.Mails.SelectedOrderType = Mai_DEFAULT_ORDER_TYPE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -245,7 +242,7 @@ static void Mai_GetListMailDomainsAllowedForNotif (void)
|
||||||
DB_ExitOnMySQLError ("can not create temporary table");
|
DB_ExitOnMySQLError ("can not create temporary table");
|
||||||
|
|
||||||
/***** Get mail domains from database *****/
|
/***** Get mail domains from database *****/
|
||||||
switch (Gbl.Mails.SelectedOrderType)
|
switch (Gbl.Mails.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Mai_ORDER_BY_DOMAIN:
|
case Mai_ORDER_BY_DOMAIN:
|
||||||
sprintf (OrderBySubQuery,"Domain,Info,N DESC");
|
sprintf (OrderBySubQuery,"Domain,Info,N DESC");
|
||||||
|
|
|
@ -41,9 +41,9 @@ typedef enum
|
||||||
Mai_ORDER_BY_DOMAIN = 0,
|
Mai_ORDER_BY_DOMAIN = 0,
|
||||||
Mai_ORDER_BY_INFO = 1,
|
Mai_ORDER_BY_INFO = 1,
|
||||||
Mai_ORDER_BY_USERS = 2,
|
Mai_ORDER_BY_USERS = 2,
|
||||||
} Mai_MailDomainsOrderType_t;
|
} Mai_DomainsOrder_t;
|
||||||
|
|
||||||
#define Mai_DEFAULT_ORDER_TYPE Mai_ORDER_BY_USERS
|
#define Mai_ORDER_DEFAULT Mai_ORDER_BY_USERS
|
||||||
|
|
||||||
struct Mail
|
struct Mail
|
||||||
{
|
{
|
||||||
|
|
13
swad_menu.c
13
swad_menu.c
|
@ -435,13 +435,8 @@ void Mnu_ChangeMenu (void)
|
||||||
|
|
||||||
Mnu_Menu_t Mnu_GetParamMenu (void)
|
Mnu_Menu_t Mnu_GetParamMenu (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[1 + 10 + 1];
|
return (Mnu_Menu_t) Par_GetParToUnsigned ("Menu",
|
||||||
unsigned UnsignedNum;
|
(unsigned) Mnu_MENU_HORIZONTAL,
|
||||||
|
(unsigned) Mnu_MENU_VERTICAL,
|
||||||
Par_GetParToText ("Menu",UnsignedStr,1 + 10);
|
(unsigned) Mnu_MENU_DEFAULT);
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
|
||||||
if (UnsignedNum < Mnu_NUM_MENUS)
|
|
||||||
return (Mnu_Menu_t) UnsignedNum;
|
|
||||||
|
|
||||||
return Mnu_MENU_DEFAULT;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -393,18 +393,14 @@ void Net_UpdateMyWebsAndSocialNets (void)
|
||||||
static void Net_GetMyWebsAndSocialNetsFromForm (void)
|
static void Net_GetMyWebsAndSocialNetsFromForm (void)
|
||||||
{
|
{
|
||||||
char Query[256 + Cns_MAX_LENGTH_WWW];
|
char Query[256 + Cns_MAX_LENGTH_WWW];
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned UnsignedNum;
|
|
||||||
Net_WebsAndSocialNetworks_t Web;
|
Net_WebsAndSocialNetworks_t Web;
|
||||||
char URL[Cns_MAX_LENGTH_WWW + 1];
|
char URL[Cns_MAX_LENGTH_WWW + 1];
|
||||||
|
|
||||||
/***** Get parameter with the type of web / social network *****/
|
/***** Get parameter with the type of web / social network *****/
|
||||||
Par_GetParToText ("Web",UnsignedStr,10);
|
Web = (Net_WebsAndSocialNetworks_t) Par_GetParToUnsigned ("Web",
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
|
(unsigned) Net_WWW,
|
||||||
Lay_ShowErrorAndExit ("Web / social network is missing.");
|
(unsigned) Net_YOUTUBE,
|
||||||
if (UnsignedNum >= Net_NUM_WEBS_AND_SOCIAL_NETWORKS)
|
(unsigned) Net_WWW);
|
||||||
Lay_ShowErrorAndExit ("Wrong web / social network.");
|
|
||||||
Web = (Net_WebsAndSocialNetworks_t) UnsignedNum;
|
|
||||||
|
|
||||||
/***** Get URL *****/
|
/***** Get URL *****/
|
||||||
Par_GetParToText ("URL",URL,Cns_MAX_LENGTH_WWW);
|
Par_GetParToText ("URL",URL,Cns_MAX_LENGTH_WWW);
|
||||||
|
|
|
@ -823,18 +823,10 @@ static void Ntf_PutHiddenParamNotifyEvent (Ntf_NotifyEvent_t NotifyEvent)
|
||||||
|
|
||||||
Ntf_NotifyEvent_t Ntf_GetParamNotifyEvent (void)
|
Ntf_NotifyEvent_t Ntf_GetParamNotifyEvent (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
return (Ntf_NotifyEvent_t) Par_GetParToUnsigned ("NotifyEvent",
|
||||||
unsigned UnsignedNum;
|
(unsigned) Ntf_EVENT_UNKNOWN,
|
||||||
|
(unsigned) Ntf_EVENT_SURVEY,
|
||||||
Par_GetParToText ("NotifyEvent",UnsignedStr,10);
|
(unsigned) Ntf_EVENT_UNKNOWN);
|
||||||
if (UnsignedStr[0])
|
|
||||||
{
|
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
|
||||||
if (UnsignedNum < Ntf_NUM_NOTIFY_EVENTS)
|
|
||||||
return (Ntf_NotifyEvent_t) UnsignedNum;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Ntf_EVENT_UNKNOWN;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -128,13 +128,13 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
||||||
case Pag_ASSIGNMENTS:
|
case Pag_ASSIGNMENTS:
|
||||||
Act_FormStart (ActSeeAsg);
|
Act_FormStart (ActSeeAsg);
|
||||||
Pag_PutHiddenParamPagNum (1);
|
Pag_PutHiddenParamPagNum (1);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_ATT_EVENTS:
|
case Pag_ATT_EVENTS:
|
||||||
Act_FormStart (ActSeeAtt);
|
Act_FormStart (ActSeeAtt);
|
||||||
Pag_PutHiddenParamPagNum (1);
|
Pag_PutHiddenParamPagNum (1);
|
||||||
Att_PutHiddenParamAttOrderType ();
|
Att_PutHiddenParamAttOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_MESSAGES_RECEIVED:
|
case Pag_MESSAGES_RECEIVED:
|
||||||
|
@ -161,23 +161,23 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
||||||
case Pag_SURVEYS:
|
case Pag_SURVEYS:
|
||||||
Act_FormStart (ActSeeAllSvy);
|
Act_FormStart (ActSeeAllSvy);
|
||||||
Pag_PutHiddenParamPagNum (1);
|
Pag_PutHiddenParamPagNum (1);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_MY_FULL_AGENDA:
|
case Pag_MY_FULL_AGENDA:
|
||||||
Act_FormStart (ActSeeMyAgd);
|
Act_FormStart (ActSeeMyAgd);
|
||||||
Pag_PutHiddenParamPagNum (1);
|
Pag_PutHiddenParamPagNum (1);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
break;
|
break;
|
||||||
case Pag_MY_PUBLIC_AGENDA:
|
case Pag_MY_PUBLIC_AGENDA:
|
||||||
Act_FormStart (ActSeeMyPubAgd);
|
Act_FormStart (ActSeeMyPubAgd);
|
||||||
Pag_PutHiddenParamPagNum (1);
|
Pag_PutHiddenParamPagNum (1);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
break;
|
break;
|
||||||
case Pag_OTHER_PUBLIC_AGENDA:
|
case Pag_OTHER_PUBLIC_AGENDA:
|
||||||
Act_FormStart (ActSeeUsrAgd);
|
Act_FormStart (ActSeeUsrAgd);
|
||||||
Pag_PutHiddenParamPagNum (1);
|
Pag_PutHiddenParamPagNum (1);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
Usr_PutParamOtherUsrCodEncrypted ();
|
Usr_PutParamOtherUsrCodEncrypted ();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -221,13 +221,13 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
||||||
case Pag_ASSIGNMENTS:
|
case Pag_ASSIGNMENTS:
|
||||||
Act_FormStart (ActSeeAsg);
|
Act_FormStart (ActSeeAsg);
|
||||||
Pag_PutHiddenParamPagNum (1);
|
Pag_PutHiddenParamPagNum (1);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_ATT_EVENTS:
|
case Pag_ATT_EVENTS:
|
||||||
Act_FormStart (ActSeeAtt);
|
Act_FormStart (ActSeeAtt);
|
||||||
Pag_PutHiddenParamPagNum (1);
|
Pag_PutHiddenParamPagNum (1);
|
||||||
Att_PutHiddenParamAttOrderType ();
|
Att_PutHiddenParamAttOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_MESSAGES_RECEIVED:
|
case Pag_MESSAGES_RECEIVED:
|
||||||
|
@ -254,23 +254,23 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
||||||
case Pag_SURVEYS:
|
case Pag_SURVEYS:
|
||||||
Act_FormStart (ActSeeAllSvy);
|
Act_FormStart (ActSeeAllSvy);
|
||||||
Pag_PutHiddenParamPagNum (1);
|
Pag_PutHiddenParamPagNum (1);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_MY_FULL_AGENDA:
|
case Pag_MY_FULL_AGENDA:
|
||||||
Act_FormStart (ActSeeMyAgd);
|
Act_FormStart (ActSeeMyAgd);
|
||||||
Pag_PutHiddenParamPagNum (1);
|
Pag_PutHiddenParamPagNum (1);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
break;
|
break;
|
||||||
case Pag_MY_PUBLIC_AGENDA:
|
case Pag_MY_PUBLIC_AGENDA:
|
||||||
Act_FormStart (ActSeeMyPubAgd);
|
Act_FormStart (ActSeeMyPubAgd);
|
||||||
Pag_PutHiddenParamPagNum (1);
|
Pag_PutHiddenParamPagNum (1);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
break;
|
break;
|
||||||
case Pag_OTHER_PUBLIC_AGENDA:
|
case Pag_OTHER_PUBLIC_AGENDA:
|
||||||
Act_FormStart (ActSeeUsrAgd);
|
Act_FormStart (ActSeeUsrAgd);
|
||||||
Pag_PutHiddenParamPagNum (1);
|
Pag_PutHiddenParamPagNum (1);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
Usr_PutParamOtherUsrCodEncrypted ();
|
Usr_PutParamOtherUsrCodEncrypted ();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -297,13 +297,13 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
||||||
case Pag_ASSIGNMENTS:
|
case Pag_ASSIGNMENTS:
|
||||||
Act_FormStart (ActSeeAsg);
|
Act_FormStart (ActSeeAsg);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_ATT_EVENTS:
|
case Pag_ATT_EVENTS:
|
||||||
Act_FormStart (ActSeeAtt);
|
Act_FormStart (ActSeeAtt);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
||||||
Att_PutHiddenParamAttOrderType ();
|
Att_PutHiddenParamAttOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_MESSAGES_RECEIVED:
|
case Pag_MESSAGES_RECEIVED:
|
||||||
|
@ -330,23 +330,23 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
||||||
case Pag_SURVEYS:
|
case Pag_SURVEYS:
|
||||||
Act_FormStart (ActSeeAllSvy);
|
Act_FormStart (ActSeeAllSvy);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_MY_FULL_AGENDA:
|
case Pag_MY_FULL_AGENDA:
|
||||||
Act_FormStart (ActSeeMyAgd);
|
Act_FormStart (ActSeeMyAgd);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
break;
|
break;
|
||||||
case Pag_MY_PUBLIC_AGENDA:
|
case Pag_MY_PUBLIC_AGENDA:
|
||||||
Act_FormStart (ActSeeMyPubAgd);
|
Act_FormStart (ActSeeMyPubAgd);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
break;
|
break;
|
||||||
case Pag_OTHER_PUBLIC_AGENDA:
|
case Pag_OTHER_PUBLIC_AGENDA:
|
||||||
Act_FormStart (ActSeeUsrAgd);
|
Act_FormStart (ActSeeUsrAgd);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
Usr_PutParamOtherUsrCodEncrypted ();
|
Usr_PutParamOtherUsrCodEncrypted ();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -380,13 +380,13 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
||||||
case Pag_ASSIGNMENTS:
|
case Pag_ASSIGNMENTS:
|
||||||
Act_FormStart (ActSeeAsg);
|
Act_FormStart (ActSeeAsg);
|
||||||
Pag_PutHiddenParamPagNum (NumPage);
|
Pag_PutHiddenParamPagNum (NumPage);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_ATT_EVENTS:
|
case Pag_ATT_EVENTS:
|
||||||
Act_FormStart (ActSeeAtt);
|
Act_FormStart (ActSeeAtt);
|
||||||
Pag_PutHiddenParamPagNum (NumPage);
|
Pag_PutHiddenParamPagNum (NumPage);
|
||||||
Att_PutHiddenParamAttOrderType ();
|
Att_PutHiddenParamAttOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_MESSAGES_RECEIVED:
|
case Pag_MESSAGES_RECEIVED:
|
||||||
|
@ -413,23 +413,23 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
||||||
case Pag_SURVEYS:
|
case Pag_SURVEYS:
|
||||||
Act_FormStart (ActSeeAllSvy);
|
Act_FormStart (ActSeeAllSvy);
|
||||||
Pag_PutHiddenParamPagNum (NumPage);
|
Pag_PutHiddenParamPagNum (NumPage);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_MY_FULL_AGENDA:
|
case Pag_MY_FULL_AGENDA:
|
||||||
Act_FormStart (ActSeeMyAgd);
|
Act_FormStart (ActSeeMyAgd);
|
||||||
Pag_PutHiddenParamPagNum (NumPage);
|
Pag_PutHiddenParamPagNum (NumPage);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
break;
|
break;
|
||||||
case Pag_MY_PUBLIC_AGENDA:
|
case Pag_MY_PUBLIC_AGENDA:
|
||||||
Act_FormStart (ActSeeMyPubAgd);
|
Act_FormStart (ActSeeMyPubAgd);
|
||||||
Pag_PutHiddenParamPagNum (NumPage);
|
Pag_PutHiddenParamPagNum (NumPage);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
break;
|
break;
|
||||||
case Pag_OTHER_PUBLIC_AGENDA:
|
case Pag_OTHER_PUBLIC_AGENDA:
|
||||||
Act_FormStart (ActSeeUsrAgd);
|
Act_FormStart (ActSeeUsrAgd);
|
||||||
Pag_PutHiddenParamPagNum (NumPage);
|
Pag_PutHiddenParamPagNum (NumPage);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
Usr_PutParamOtherUsrCodEncrypted ();
|
Usr_PutParamOtherUsrCodEncrypted ();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -459,13 +459,13 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
||||||
case Pag_ASSIGNMENTS:
|
case Pag_ASSIGNMENTS:
|
||||||
Act_FormStart (ActSeeAsg);
|
Act_FormStart (ActSeeAsg);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_ATT_EVENTS:
|
case Pag_ATT_EVENTS:
|
||||||
Act_FormStart (ActSeeAtt);
|
Act_FormStart (ActSeeAtt);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
||||||
Att_PutHiddenParamAttOrderType ();
|
Att_PutHiddenParamAttOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_MESSAGES_RECEIVED:
|
case Pag_MESSAGES_RECEIVED:
|
||||||
|
@ -492,23 +492,23 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
||||||
case Pag_SURVEYS:
|
case Pag_SURVEYS:
|
||||||
Act_FormStart (ActSeeAllSvy);
|
Act_FormStart (ActSeeAllSvy);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_MY_FULL_AGENDA:
|
case Pag_MY_FULL_AGENDA:
|
||||||
Act_FormStart (ActSeeMyAgd);
|
Act_FormStart (ActSeeMyAgd);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
break;
|
break;
|
||||||
case Pag_MY_PUBLIC_AGENDA:
|
case Pag_MY_PUBLIC_AGENDA:
|
||||||
Act_FormStart (ActSeeMyPubAgd);
|
Act_FormStart (ActSeeMyPubAgd);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
break;
|
break;
|
||||||
case Pag_OTHER_PUBLIC_AGENDA:
|
case Pag_OTHER_PUBLIC_AGENDA:
|
||||||
Act_FormStart (ActSeeUsrAgd);
|
Act_FormStart (ActSeeUsrAgd);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
Usr_PutParamOtherUsrCodEncrypted ();
|
Usr_PutParamOtherUsrCodEncrypted ();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -535,13 +535,13 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
||||||
case Pag_ASSIGNMENTS:
|
case Pag_ASSIGNMENTS:
|
||||||
Act_FormStart (ActSeeAsg);
|
Act_FormStart (ActSeeAsg);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_ATT_EVENTS:
|
case Pag_ATT_EVENTS:
|
||||||
Act_FormStart (ActSeeAtt);
|
Act_FormStart (ActSeeAtt);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
||||||
Att_PutHiddenParamAttOrderType ();
|
Att_PutHiddenParamAttOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_MESSAGES_RECEIVED:
|
case Pag_MESSAGES_RECEIVED:
|
||||||
|
@ -568,23 +568,23 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
||||||
case Pag_SURVEYS:
|
case Pag_SURVEYS:
|
||||||
Act_FormStart (ActSeeAllSvy);
|
Act_FormStart (ActSeeAllSvy);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
||||||
Asg_PutHiddenParamAsgOrderType ();
|
Asg_PutHiddenParamAsgOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
break;
|
break;
|
||||||
case Pag_MY_FULL_AGENDA:
|
case Pag_MY_FULL_AGENDA:
|
||||||
Act_FormStart (ActSeeMyAgd);
|
Act_FormStart (ActSeeMyAgd);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
break;
|
break;
|
||||||
case Pag_MY_PUBLIC_AGENDA:
|
case Pag_MY_PUBLIC_AGENDA:
|
||||||
Act_FormStart (ActSeeMyPubAgd);
|
Act_FormStart (ActSeeMyPubAgd);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
break;
|
break;
|
||||||
case Pag_OTHER_PUBLIC_AGENDA:
|
case Pag_OTHER_PUBLIC_AGENDA:
|
||||||
Act_FormStart (ActSeeUsrAgd);
|
Act_FormStart (ActSeeUsrAgd);
|
||||||
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
||||||
Agd_PutHiddenParamEventsOrderType ();
|
Agd_PutHiddenParamEventsOrder ();
|
||||||
Usr_PutParamOtherUsrCodEncrypted ();
|
Usr_PutParamOtherUsrCodEncrypted ();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -616,18 +616,15 @@ void Pag_PutHiddenParamPagNum (unsigned NumPage)
|
||||||
void Pag_GetParamPagNum (Pag_WhatPaginate_t WhatPaginate)
|
void Pag_GetParamPagNum (Pag_WhatPaginate_t WhatPaginate)
|
||||||
{
|
{
|
||||||
static bool FirstCall = true;
|
static bool FirstCall = true;
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned NumPage;
|
|
||||||
|
|
||||||
if (FirstCall)
|
if (FirstCall)
|
||||||
{
|
{
|
||||||
FirstCall = false;
|
FirstCall = false;
|
||||||
|
|
||||||
/***** Try to get parameter with the number of page *****/
|
/***** Try to get parameter with the number of page *****/
|
||||||
Par_GetParToText ("NumPage",UnsignedStr,10);
|
Gbl.Pag.CurrentPage = Par_GetParToUnsigned ("NumPage",
|
||||||
if (sscanf (UnsignedStr,"%u",&NumPage) == 1)
|
1,UINT_MAX,0);
|
||||||
Gbl.Pag.CurrentPage = NumPage;
|
if (Gbl.Pag.CurrentPage == 0)
|
||||||
else
|
|
||||||
/***** If there's no parameter page, return a default value *****/
|
/***** If there's no parameter page, return a default value *****/
|
||||||
switch (WhatPaginate)
|
switch (WhatPaginate)
|
||||||
{
|
{
|
||||||
|
|
|
@ -651,8 +651,7 @@ void Par_GetMainParameters (void)
|
||||||
extern Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD];
|
extern Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD];
|
||||||
extern const char *The_ThemeId[The_NUM_THEMES];
|
extern const char *The_ThemeId[The_NUM_THEMES];
|
||||||
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
|
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
|
||||||
char UnsignedStr[10 + 1];
|
unsigned ActCod;
|
||||||
unsigned UnsignedNum;
|
|
||||||
char Nickname[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
|
char Nickname[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
|
||||||
char LongStr[1 + 10 + 1];
|
char LongStr[1 + 10 + 1];
|
||||||
|
|
||||||
|
@ -713,22 +712,17 @@ void Par_GetMainParameters (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Get action to perform *****/
|
/***** Get action to perform *****/
|
||||||
Par_GetParToText ("act",UnsignedStr,10);
|
ActCod = Par_GetParToUnsigned ("act",
|
||||||
if (UnsignedStr[0])
|
ActUnk,
|
||||||
{
|
Act_MAX_ACTION_COD,
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
ActUnk);
|
||||||
if (UnsignedNum <= Act_MAX_ACTION_COD)
|
if (ActCod == ActUnk)
|
||||||
Gbl.Action.Act = Act_FromActCodToAction[UnsignedNum];
|
ActCod = Par_GetParToUnsigned ("ActCod",
|
||||||
}
|
ActUnk,
|
||||||
else
|
Act_MAX_ACTION_COD,
|
||||||
{
|
ActUnk);
|
||||||
// Try old parameter "ActCod" (allowed for compatibility, to be removed soon)
|
if (ActCod != ActUnk)
|
||||||
Par_GetParToText ("ActCod",UnsignedStr,10);
|
Gbl.Action.Act = Act_FromActCodToAction[ActCod];
|
||||||
if (UnsignedStr[0])
|
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
|
||||||
if (UnsignedNum <= Act_MAX_ACTION_COD)
|
|
||||||
Gbl.Action.Act = Act_FromActCodToAction[UnsignedNum];
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** Some preliminary adjusts depending on action *****/
|
/***** Some preliminary adjusts depending on action *****/
|
||||||
if (Gbl.Action.Act == ActRefCon ||
|
if (Gbl.Action.Act == ActRefCon ||
|
||||||
|
@ -848,14 +842,11 @@ void Par_GetMainParameters (void)
|
||||||
Gbl.Action.Tab = TabUnk;
|
Gbl.Action.Tab = TabUnk;
|
||||||
if (Gbl.Action.Act == ActMnu)
|
if (Gbl.Action.Act == ActMnu)
|
||||||
{
|
{
|
||||||
Par_GetParToText ("NxtTab",UnsignedStr,10);
|
Gbl.Action.Tab = (Tab_Tab_t) Par_GetParToUnsigned ("NxtTab",
|
||||||
if (UnsignedStr[0])
|
(unsigned) TabUnk,
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
Tab_NUM_TABS - 1,
|
||||||
if (UnsignedNum < Tab_NUM_TABS)
|
(unsigned) TabUnk);
|
||||||
{
|
Tab_DisableIncompatibleTabs ();
|
||||||
Gbl.Action.Tab = (Tab_Tab_t) UnsignedNum;
|
|
||||||
Tab_DisableIncompatibleTabs ();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else // Set tab depending on current action
|
else // Set tab depending on current action
|
||||||
Tab_SetCurrentTab ();
|
Tab_SetCurrentTab ();
|
||||||
|
@ -872,6 +863,27 @@ unsigned Par_GetParToText (const char *ParamName,char *ParamValue,size_t MaxByte
|
||||||
Str_TO_TEXT,true);
|
Str_TO_TEXT,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/****************** Get the unsigned value of a parameter ********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
unsigned Par_GetParToUnsigned (const char *ParamName,
|
||||||
|
unsigned Min,
|
||||||
|
unsigned Max,
|
||||||
|
unsigned Default)
|
||||||
|
{
|
||||||
|
char UnsignedStr[10 + 1];
|
||||||
|
unsigned UnsignedNum;
|
||||||
|
|
||||||
|
/***** Get parameter with unsigned number *****/
|
||||||
|
Par_GetParToText (ParamName,UnsignedStr,10);
|
||||||
|
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
||||||
|
if (UnsignedNum >= Min && UnsignedNum <= Max)
|
||||||
|
return UnsignedNum;
|
||||||
|
|
||||||
|
return Default;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************** Get the long value of a parameter **********************/
|
/******************** Get the long value of a parameter **********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -72,6 +72,10 @@ unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
|
||||||
void Par_GetMainParameters (void);
|
void Par_GetMainParameters (void);
|
||||||
|
|
||||||
unsigned Par_GetParToText (const char *ParamName,char *ParamValue,size_t MaxBytes);
|
unsigned Par_GetParToText (const char *ParamName,char *ParamValue,size_t MaxBytes);
|
||||||
|
unsigned Par_GetParToUnsigned (const char *ParamName,
|
||||||
|
unsigned Min,
|
||||||
|
unsigned Max,
|
||||||
|
unsigned Default);
|
||||||
long Par_GetParToLong (const char *ParamName);
|
long Par_GetParToLong (const char *ParamName);
|
||||||
bool Par_GetParToBool (const char *ParamName);
|
bool Par_GetParToBool (const char *ParamName);
|
||||||
unsigned Par_GetParToHTML (const char *ParamName,char *ParamValue,size_t MaxBytes);
|
unsigned Par_GetParToHTML (const char *ParamName,char *ParamValue,size_t MaxBytes);
|
||||||
|
|
|
@ -922,7 +922,6 @@ bool Pwd_GetConfirmationOnDangerousAction (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_You_have_not_confirmed_the_action;
|
extern const char *Txt_You_have_not_confirmed_the_action;
|
||||||
extern const char *Txt_You_have_not_entered_your_password_correctly;
|
extern const char *Txt_You_have_not_entered_your_password_correctly;
|
||||||
char YN[1 + 1];
|
|
||||||
char PlainPassword[Pwd_MAX_LENGTH_PLAIN_PASSWORD + 1];
|
char PlainPassword[Pwd_MAX_LENGTH_PLAIN_PASSWORD + 1];
|
||||||
char EncryptedPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64 + 1];
|
char EncryptedPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64 + 1];
|
||||||
|
|
||||||
|
|
60
swad_photo.c
60
swad_photo.c
|
@ -1706,19 +1706,11 @@ void Pho_PutHiddenParamTypeOfAvg (void)
|
||||||
|
|
||||||
static Pho_AvgPhotoTypeOfAverage_t Pho_GetPhotoAvgTypeFromForm (void)
|
static Pho_AvgPhotoTypeOfAverage_t Pho_GetPhotoAvgTypeFromForm (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
return (Pho_AvgPhotoTypeOfAverage_t)
|
||||||
unsigned UnsignedNum;
|
Par_GetParToUnsigned ("AvgType",
|
||||||
|
(unsigned) Pho_PHOTO_MEDIAN_ALL,
|
||||||
Par_GetParToText ("AvgType",UnsignedStr,10);
|
(unsigned) Pho_PHOTO_AVERAGE_ALL,
|
||||||
if (UnsignedStr[0])
|
(unsigned) Pho_PHOTO_AVG_DEFAULT);
|
||||||
{
|
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
|
|
||||||
Lay_ShowErrorAndExit ("Type of average is missing.");
|
|
||||||
if (UnsignedNum >= Pho_NUM_AVERAGE_PHOTO_TYPES)
|
|
||||||
Lay_ShowErrorAndExit ("Type of average is missing.");
|
|
||||||
return (Pho_AvgPhotoTypeOfAverage_t) UnsignedNum;
|
|
||||||
}
|
|
||||||
return (Pho_AvgPhotoTypeOfAverage_t) 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1775,19 +1767,11 @@ void Pho_PutHiddenParamPhotoSize (void)
|
||||||
|
|
||||||
static Pho_HowComputePhotoSize_t Pho_GetHowComputePhotoSizeFromForm (void)
|
static Pho_HowComputePhotoSize_t Pho_GetHowComputePhotoSizeFromForm (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
return (Pho_HowComputePhotoSize_t)
|
||||||
unsigned UnsignedNum;
|
Par_GetParToUnsigned ("PhotoSize",
|
||||||
|
(unsigned) Pho_PROPORTIONAL_TO_NUMBER_OF_STUDENTS,
|
||||||
Par_GetParToText ("PhotoSize",UnsignedStr,10);
|
(unsigned) Pho_UNIQUE_SIZE,
|
||||||
if (UnsignedStr[0])
|
(unsigned) Pho_PHOTO_SIZE_DEFAULT);
|
||||||
{
|
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
|
|
||||||
Lay_ShowErrorAndExit ("Size of photo is missing.");
|
|
||||||
if (UnsignedNum >= Pho_NUM_HOW_COMPUTE_PHOTO_SIZES)
|
|
||||||
Lay_ShowErrorAndExit ("Size of photo is missing.");
|
|
||||||
return (Pho_HowComputePhotoSize_t) UnsignedNum;
|
|
||||||
}
|
|
||||||
return (Pho_HowComputePhotoSize_t) 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1803,7 +1787,7 @@ static void Pho_PutSelectorForHowOrderDegrees (void)
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"RIGHT_MIDDLE\">"
|
"<td class=\"RIGHT_MIDDLE\">"
|
||||||
"<label for=\"OrdDeg\" class=\"%s\">%s:</label>"
|
"<label for=\"Order\" class=\"%s\">%s:</label>"
|
||||||
"</td>"
|
"</td>"
|
||||||
"<td class=\"LEFT_MIDDLE\">",
|
"<td class=\"LEFT_MIDDLE\">",
|
||||||
The_ClassForm[Gbl.Prefs.Theme],Txt_Sort_degrees_by);
|
The_ClassForm[Gbl.Prefs.Theme],Txt_Sort_degrees_by);
|
||||||
|
@ -1811,7 +1795,7 @@ static void Pho_PutSelectorForHowOrderDegrees (void)
|
||||||
Pho_PutHiddenParamTypeOfAvg ();
|
Pho_PutHiddenParamTypeOfAvg ();
|
||||||
Pho_PutHiddenParamPhotoSize ();
|
Pho_PutHiddenParamPhotoSize ();
|
||||||
Usr_PutParamColsClassPhoto ();
|
Usr_PutParamColsClassPhoto ();
|
||||||
fprintf (Gbl.F.Out,"<select id=\"OrdDeg\" name=\"OrdDeg\""
|
fprintf (Gbl.F.Out,"<select id=\"Order\" name=\"Order\""
|
||||||
" onchange=\"document.getElementById('%s').submit();\">",
|
" onchange=\"document.getElementById('%s').submit();\">",
|
||||||
Gbl.Form.Id);
|
Gbl.Form.Id);
|
||||||
for (Order = (Pho_HowOrderDegrees_t) 0;
|
for (Order = (Pho_HowOrderDegrees_t) 0;
|
||||||
|
@ -1835,7 +1819,7 @@ static void Pho_PutSelectorForHowOrderDegrees (void)
|
||||||
|
|
||||||
void Pho_PutHiddenParamOrderDegrees (void)
|
void Pho_PutHiddenParamOrderDegrees (void)
|
||||||
{
|
{
|
||||||
Par_PutHiddenParamUnsigned ("OrdDeg",(unsigned) Gbl.Stat.DegPhotos.HowOrderDegrees);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Stat.DegPhotos.HowOrderDegrees);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1844,19 +1828,11 @@ void Pho_PutHiddenParamOrderDegrees (void)
|
||||||
|
|
||||||
static Pho_HowOrderDegrees_t Pho_GetHowOrderDegreesFromForm (void)
|
static Pho_HowOrderDegrees_t Pho_GetHowOrderDegreesFromForm (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
return (Pho_HowOrderDegrees_t)
|
||||||
unsigned UnsignedNum;
|
Par_GetParToUnsigned ("Order",
|
||||||
|
(unsigned) Pho_NUMBER_OF_STUDENTS,
|
||||||
Par_GetParToText ("OrdDeg",UnsignedStr,10);
|
(unsigned) Pho_DEGREE_NAME,
|
||||||
if (UnsignedStr[0])
|
(unsigned) Pho_ORDER_DEFAULT);
|
||||||
{
|
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
|
|
||||||
Lay_ShowErrorAndExit ("Sort order is missing.");
|
|
||||||
if (UnsignedNum >= Pho_NUM_HOW_ORDER_DEGREES)
|
|
||||||
Lay_ShowErrorAndExit ("Sort order is missing.");
|
|
||||||
return (Pho_HowOrderDegrees_t) UnsignedNum;
|
|
||||||
}
|
|
||||||
return (Pho_HowOrderDegrees_t) 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -55,6 +55,7 @@ typedef enum
|
||||||
Pho_PHOTO_MEDIAN_ALL = 0,
|
Pho_PHOTO_MEDIAN_ALL = 0,
|
||||||
Pho_PHOTO_AVERAGE_ALL = 1,
|
Pho_PHOTO_AVERAGE_ALL = 1,
|
||||||
} Pho_AvgPhotoTypeOfAverage_t;
|
} Pho_AvgPhotoTypeOfAverage_t;
|
||||||
|
#define Pho_PHOTO_AVG_DEFAULT Pho_PHOTO_MEDIAN_ALL
|
||||||
|
|
||||||
#define Pho_NUM_HOW_COMPUTE_PHOTO_SIZES 4
|
#define Pho_NUM_HOW_COMPUTE_PHOTO_SIZES 4
|
||||||
typedef enum
|
typedef enum
|
||||||
|
@ -64,6 +65,7 @@ typedef enum
|
||||||
Pho_PROPORTIONAL_TO_PERCENT = 2,
|
Pho_PROPORTIONAL_TO_PERCENT = 2,
|
||||||
Pho_UNIQUE_SIZE = 3,
|
Pho_UNIQUE_SIZE = 3,
|
||||||
} Pho_HowComputePhotoSize_t;
|
} Pho_HowComputePhotoSize_t;
|
||||||
|
#define Pho_PHOTO_SIZE_DEFAULT Pho_PROPORTIONAL_TO_NUMBER_OF_STUDENTS
|
||||||
|
|
||||||
#define Pho_NUM_HOW_ORDER_DEGREES 4
|
#define Pho_NUM_HOW_ORDER_DEGREES 4
|
||||||
typedef enum
|
typedef enum
|
||||||
|
@ -73,6 +75,7 @@ typedef enum
|
||||||
Pho_PERCENT = 2,
|
Pho_PERCENT = 2,
|
||||||
Pho_DEGREE_NAME = 3,
|
Pho_DEGREE_NAME = 3,
|
||||||
} Pho_HowOrderDegrees_t;
|
} Pho_HowOrderDegrees_t;
|
||||||
|
#define Pho_ORDER_DEFAULT Pho_NUMBER_OF_STUDENTS
|
||||||
|
|
||||||
#define Pho_MAX_CLICKS_WITHOUT_PHOTO 50
|
#define Pho_MAX_CLICKS_WITHOUT_PHOTO 50
|
||||||
|
|
||||||
|
|
27
swad_place.c
27
swad_place.c
|
@ -58,7 +58,7 @@ extern struct Globals Gbl;
|
||||||
/***************************** Private prototypes ****************************/
|
/***************************** Private prototypes ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Plc_GetParamPlcOrderType (void);
|
static void Plc_GetParamPlcOrder (void);
|
||||||
static void Plc_PutIconToEditPlaces (void);
|
static void Plc_PutIconToEditPlaces (void);
|
||||||
static void Plc_ListPlacesForEdition (void);
|
static void Plc_ListPlacesForEdition (void);
|
||||||
static void Plc_PutParamPlcCod (long PlcCod);
|
static void Plc_PutParamPlcCod (long PlcCod);
|
||||||
|
@ -80,7 +80,7 @@ void Plc_SeePlaces (void)
|
||||||
extern const char *Txt_PLACES_ORDER[2];
|
extern const char *Txt_PLACES_ORDER[2];
|
||||||
extern const char *Txt_Other_places;
|
extern const char *Txt_Other_places;
|
||||||
extern const char *Txt_Place_unspecified;
|
extern const char *Txt_Place_unspecified;
|
||||||
Plc_PlcsOrderType_t Order;
|
Plc_Order_t Order;
|
||||||
unsigned NumPlc;
|
unsigned NumPlc;
|
||||||
unsigned NumCtrsWithPlc = 0;
|
unsigned NumCtrsWithPlc = 0;
|
||||||
unsigned NumCtrsInOtherPlcs;
|
unsigned NumCtrsInOtherPlcs;
|
||||||
|
@ -88,7 +88,7 @@ void Plc_SeePlaces (void)
|
||||||
if (Gbl.CurrentIns.Ins.InsCod > 0)
|
if (Gbl.CurrentIns.Ins.InsCod > 0)
|
||||||
{
|
{
|
||||||
/***** Get parameter with the type of order in the list of places *****/
|
/***** Get parameter with the type of order in the list of places *****/
|
||||||
Plc_GetParamPlcOrderType ();
|
Plc_GetParamPlcOrder ();
|
||||||
|
|
||||||
/***** Get list of places *****/
|
/***** Get list of places *****/
|
||||||
Plc_GetListPlaces ();
|
Plc_GetListPlaces ();
|
||||||
|
@ -107,10 +107,10 @@ void Plc_SeePlaces (void)
|
||||||
Act_FormStart (ActSeePlc);
|
Act_FormStart (ActSeePlc);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_PLACES_HELP_ORDER[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_PLACES_HELP_ORDER[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Plcs.SelectedOrderType)
|
if (Order == Gbl.Plcs.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_PLACES_ORDER[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_PLACES_ORDER[Order]);
|
||||||
if (Order == Gbl.Plcs.SelectedOrderType)
|
if (Order == Gbl.Plcs.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -182,16 +182,13 @@ void Plc_SeePlaces (void)
|
||||||
/********** Get parameter with the type or order in list of places ***********/
|
/********** Get parameter with the type or order in list of places ***********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Plc_GetParamPlcOrderType (void)
|
static void Plc_GetParamPlcOrder (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
Gbl.Plcs.SelectedOrder = (Plc_Order_t)
|
||||||
unsigned UnsignedNum;
|
Par_GetParToUnsigned ("Order",
|
||||||
|
(unsigned) Plc_ORDER_BY_PLACE,
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
(unsigned) Plc_ORDER_BY_NUM_CTRS,
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
(unsigned) Plc_ORDER_DEFAULT);
|
||||||
Gbl.Plcs.SelectedOrderType = (Plc_PlcsOrderType_t) UnsignedNum;
|
|
||||||
else
|
|
||||||
Gbl.Plcs.SelectedOrderType = Plc_DEFAULT_ORDER_TYPE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -249,7 +246,7 @@ void Plc_GetListPlaces (void)
|
||||||
struct Place *Plc;
|
struct Place *Plc;
|
||||||
|
|
||||||
/***** Get places from database *****/
|
/***** Get places from database *****/
|
||||||
switch (Gbl.Plcs.SelectedOrderType)
|
switch (Gbl.Plcs.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Plc_ORDER_BY_PLACE:
|
case Plc_ORDER_BY_PLACE:
|
||||||
sprintf (OrderBySubQuery,"FullName");
|
sprintf (OrderBySubQuery,"FullName");
|
||||||
|
|
|
@ -47,9 +47,9 @@ typedef enum
|
||||||
{
|
{
|
||||||
Plc_ORDER_BY_PLACE = 0,
|
Plc_ORDER_BY_PLACE = 0,
|
||||||
Plc_ORDER_BY_NUM_CTRS = 1,
|
Plc_ORDER_BY_NUM_CTRS = 1,
|
||||||
} Plc_PlcsOrderType_t;
|
} Plc_Order_t;
|
||||||
|
|
||||||
#define Plc_DEFAULT_ORDER_TYPE Plc_ORDER_BY_NUM_CTRS
|
#define Plc_ORDER_DEFAULT Plc_ORDER_BY_NUM_CTRS
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
|
|
|
@ -351,16 +351,11 @@ void Pre_UpdateMyLanguageToCurrentLanguage (void)
|
||||||
Txt_Language_t Pre_GetParamLanguage (void)
|
Txt_Language_t Pre_GetParamLanguage (void)
|
||||||
{
|
{
|
||||||
extern const unsigned Txt_Current_CGI_SWAD_Language;
|
extern const unsigned Txt_Current_CGI_SWAD_Language;
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned UnsignedNum;
|
|
||||||
|
|
||||||
Par_GetParToText ("Lan",UnsignedStr,10);
|
return (Txt_Language_t) Par_GetParToUnsigned ("Lan",
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
1,
|
||||||
if (UnsignedNum >= 1 &&
|
Txt_NUM_LANGUAGES,
|
||||||
UnsignedNum <= Txt_NUM_LANGUAGES)
|
Txt_Current_CGI_SWAD_Language);
|
||||||
return (Txt_Language_t) UnsignedNum;
|
|
||||||
|
|
||||||
return Txt_Current_CGI_SWAD_Language;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -504,19 +499,8 @@ static void Pre_UpdateSideColsOnUsrDataTable (void)
|
||||||
|
|
||||||
unsigned Pre_GetParamSideCols (void)
|
unsigned Pre_GetParamSideCols (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
return Par_GetParToUnsigned ("SideCols",
|
||||||
unsigned UnsignedNum; // 11 ==> by default, show both side columns
|
0,
|
||||||
|
Lay_SHOW_BOTH_COLUMNS,
|
||||||
Par_GetParToText ("SideCols",UnsignedStr,10);
|
Cfg_DEFAULT_COLUMNS);
|
||||||
|
|
||||||
if (!UnsignedStr[0])
|
|
||||||
return Cfg_DEFAULT_COLUMNS;
|
|
||||||
|
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
|
|
||||||
return Cfg_DEFAULT_COLUMNS;
|
|
||||||
|
|
||||||
if (UnsignedNum > 3)
|
|
||||||
return Cfg_DEFAULT_COLUMNS;
|
|
||||||
|
|
||||||
return UnsignedNum;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -227,20 +227,11 @@ Pri_Visibility_t Pri_GetVisibilityFromStr (const char *Str)
|
||||||
|
|
||||||
Pri_Visibility_t Pri_GetParamVisibility (const char *ParamName)
|
Pri_Visibility_t Pri_GetParamVisibility (const char *ParamName)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
return (Pri_Visibility_t)
|
||||||
unsigned UnsignedNum;
|
Par_GetParToUnsigned (ParamName,
|
||||||
|
0,
|
||||||
Par_GetParToText (ParamName,UnsignedStr,10);
|
Pri_NUM_OPTIONS_PRIVACY - 1,
|
||||||
if (UnsignedStr[0])
|
(unsigned) Pri_VISIBILITY_UNKNOWN);
|
||||||
{
|
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
|
|
||||||
Lay_ShowErrorAndExit ("Visibility is missing.");
|
|
||||||
if (UnsignedNum >= Pri_NUM_OPTIONS_PRIVACY)
|
|
||||||
Lay_ShowErrorAndExit ("Visibility is missing.");
|
|
||||||
return (Pri_Visibility_t) UnsignedNum;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Pri_VISIBILITY_UNKNOWN;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
|
|
||||||
/***** Visibility (who can see user's photo / public profile) *****/
|
/***** Visibility (who can see user's photo / public profile) *****/
|
||||||
#define Pri_NUM_OPTIONS_PRIVACY 5
|
#define Pri_NUM_OPTIONS_PRIVACY 5
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Pri_VISIBILITY_UNKNOWN = 0, // Only visible by me and my teachers if I am a student or my students if I am a teacher
|
Pri_VISIBILITY_UNKNOWN = 0, // Only visible by me and my teachers if I am a student or my students if I am a teacher
|
||||||
|
|
|
@ -245,7 +245,7 @@ void Rec_GetListRecordFieldsInCurrentCrs (void)
|
||||||
if (Vis < Rec_NUM_TYPES_VISIBILITY)
|
if (Vis < Rec_NUM_TYPES_VISIBILITY)
|
||||||
Gbl.CurrentCrs.Records.LstFields.Lst[NumRow].Visibility = (Rec_VisibilityRecordFields_t) Vis;
|
Gbl.CurrentCrs.Records.LstFields.Lst[NumRow].Visibility = (Rec_VisibilityRecordFields_t) Vis;
|
||||||
else
|
else
|
||||||
Gbl.CurrentCrs.Records.LstFields.Lst[NumRow].Visibility = Rec_HIDDEN_FIELD;
|
Gbl.CurrentCrs.Records.LstFields.Lst[NumRow].Visibility = Rec_VISIBILITY_DEFAULT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -432,25 +432,23 @@ void Rec_ReceiveFormField (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_record_field_X_already_exists;
|
extern const char *Txt_The_record_field_X_already_exists;
|
||||||
extern const char *Txt_You_must_specify_the_name_of_the_new_record_field;
|
extern const char *Txt_You_must_specify_the_name_of_the_new_record_field;
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned Vis;
|
|
||||||
|
|
||||||
/***** Get parameters from the form *****/
|
/***** Get parameters from the form *****/
|
||||||
/* Get the name of the field */
|
/* Get the name of the field */
|
||||||
Par_GetParToText ("FieldName",Gbl.CurrentCrs.Records.Field.Name,Rec_MAX_LENGTH_NAME_FIELD);
|
Par_GetParToText ("FieldName",Gbl.CurrentCrs.Records.Field.Name,Rec_MAX_LENGTH_NAME_FIELD);
|
||||||
|
|
||||||
/* Get the number of lines */
|
/* Get the number of lines */
|
||||||
Par_GetParToText ("NumLines",UnsignedStr,10);
|
Gbl.CurrentCrs.Records.Field.NumLines = Par_GetParToUnsigned ("NumLines",
|
||||||
Gbl.CurrentCrs.Records.Field.NumLines = Rec_ConvertToNumLinesField (UnsignedStr);
|
Rec_MIN_LINES_IN_EDITION_FIELD,
|
||||||
|
Rec_MAX_LINES_IN_EDITION_FIELD,
|
||||||
|
Rec_DEF_LINES_IN_EDITION_FIELD);
|
||||||
|
|
||||||
/* Get the field visibility by students */
|
/* Get the field visibility by students */
|
||||||
Par_GetParToText ("Visibility",UnsignedStr,10);
|
Gbl.CurrentCrs.Records.Field.Visibility = (Rec_VisibilityRecordFields_t)
|
||||||
if (sscanf (UnsignedStr,"%u",&Vis) != 1)
|
Par_GetParToUnsigned ("Visibility",
|
||||||
Lay_ShowErrorAndExit ("Visibility is missing.");
|
0,
|
||||||
if (Vis < Rec_NUM_TYPES_VISIBILITY)
|
Rec_NUM_TYPES_VISIBILITY - 1,
|
||||||
Gbl.CurrentCrs.Records.Field.Visibility = (Rec_VisibilityRecordFields_t) Vis;
|
Rec_VISIBILITY_DEFAULT);
|
||||||
else
|
|
||||||
Gbl.CurrentCrs.Records.Field.Visibility = Rec_HIDDEN_FIELD;
|
|
||||||
|
|
||||||
if (Gbl.CurrentCrs.Records.Field.Name[0]) // If there's a name
|
if (Gbl.CurrentCrs.Records.Field.Name[0]) // If there's a name
|
||||||
{
|
{
|
||||||
|
@ -480,7 +478,7 @@ unsigned Rec_ConvertToNumLinesField (const char *StrNumLines)
|
||||||
int NumLines;
|
int NumLines;
|
||||||
|
|
||||||
if (sscanf (StrNumLines,"%d",&NumLines) != 1)
|
if (sscanf (StrNumLines,"%d",&NumLines) != 1)
|
||||||
return Rec_MIN_LINES_IN_EDITION_FIELD;
|
return Rec_DEF_LINES_IN_EDITION_FIELD;
|
||||||
else if (NumLines < Rec_MIN_LINES_IN_EDITION_FIELD)
|
else if (NumLines < Rec_MIN_LINES_IN_EDITION_FIELD)
|
||||||
return Rec_MIN_LINES_IN_EDITION_FIELD;
|
return Rec_MIN_LINES_IN_EDITION_FIELD;
|
||||||
else if (NumLines > Rec_MAX_LINES_IN_EDITION_FIELD)
|
else if (NumLines > Rec_MAX_LINES_IN_EDITION_FIELD)
|
||||||
|
@ -717,7 +715,7 @@ static void Rec_GetFieldByCod (long FieldCod,char Name[Rec_MAX_LENGTH_NAME_FIELD
|
||||||
if (Vis < Rec_NUM_TYPES_VISIBILITY)
|
if (Vis < Rec_NUM_TYPES_VISIBILITY)
|
||||||
*Visibility = (Rec_VisibilityRecordFields_t) Vis;
|
*Visibility = (Rec_VisibilityRecordFields_t) Vis;
|
||||||
else
|
else
|
||||||
*Visibility = Rec_HIDDEN_FIELD;
|
*Visibility = Rec_VISIBILITY_DEFAULT;
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
@ -817,7 +815,6 @@ void Rec_ChangeLinesField (void)
|
||||||
extern const char *Txt_The_number_of_editing_lines_in_the_record_field_X_has_not_changed;
|
extern const char *Txt_The_number_of_editing_lines_in_the_record_field_X_has_not_changed;
|
||||||
extern const char *Txt_From_now_on_the_number_of_editing_lines_of_the_field_X_is_Y;
|
extern const char *Txt_From_now_on_the_number_of_editing_lines_of_the_field_X_is_Y;
|
||||||
char Query[1024];
|
char Query[1024];
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned NewNumLines;
|
unsigned NewNumLines;
|
||||||
|
|
||||||
/***** Get parameters of the form *****/
|
/***** Get parameters of the form *****/
|
||||||
|
@ -826,8 +823,10 @@ void Rec_ChangeLinesField (void)
|
||||||
Lay_ShowErrorAndExit ("Code of field is missing.");
|
Lay_ShowErrorAndExit ("Code of field is missing.");
|
||||||
|
|
||||||
/* Get the new number of lines */
|
/* Get the new number of lines */
|
||||||
Par_GetParToText ("NumLines",UnsignedStr,10);
|
NewNumLines = Par_GetParToUnsigned ("NumLines",
|
||||||
NewNumLines = Rec_ConvertToNumLinesField (UnsignedStr);
|
Rec_MIN_LINES_IN_EDITION_FIELD,
|
||||||
|
Rec_MAX_LINES_IN_EDITION_FIELD,
|
||||||
|
Rec_DEF_LINES_IN_EDITION_FIELD);
|
||||||
|
|
||||||
/* Get from the database the number of lines of the field */
|
/* Get from the database the number of lines of the field */
|
||||||
Rec_GetFieldByCod (Gbl.CurrentCrs.Records.Field.FieldCod,Gbl.CurrentCrs.Records.Field.Name,&Gbl.CurrentCrs.Records.Field.NumLines,&Gbl.CurrentCrs.Records.Field.Visibility);
|
Rec_GetFieldByCod (Gbl.CurrentCrs.Records.Field.FieldCod,Gbl.CurrentCrs.Records.Field.Name,&Gbl.CurrentCrs.Records.Field.NumLines,&Gbl.CurrentCrs.Records.Field.Visibility);
|
||||||
|
@ -867,8 +866,6 @@ void Rec_ChangeVisibilityField (void)
|
||||||
extern const char *Txt_The_visibility_of_the_record_field_X_has_not_changed;
|
extern const char *Txt_The_visibility_of_the_record_field_X_has_not_changed;
|
||||||
extern const char *Txt_RECORD_FIELD_VISIBILITY_MSG[Rec_NUM_TYPES_VISIBILITY];
|
extern const char *Txt_RECORD_FIELD_VISIBILITY_MSG[Rec_NUM_TYPES_VISIBILITY];
|
||||||
char Query[1024];
|
char Query[1024];
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned Vis;
|
|
||||||
Rec_VisibilityRecordFields_t NewVisibility;
|
Rec_VisibilityRecordFields_t NewVisibility;
|
||||||
|
|
||||||
/***** Get parameters of the form *****/
|
/***** Get parameters of the form *****/
|
||||||
|
@ -877,13 +874,11 @@ void Rec_ChangeVisibilityField (void)
|
||||||
Lay_ShowErrorAndExit ("Code of field is missing.");
|
Lay_ShowErrorAndExit ("Code of field is missing.");
|
||||||
|
|
||||||
/* Get the new visibility of the field */
|
/* Get the new visibility of the field */
|
||||||
Par_GetParToText ("Visibility",UnsignedStr,10);
|
NewVisibility = (Rec_VisibilityRecordFields_t)
|
||||||
if (sscanf (UnsignedStr,"%u",&Vis) != 1)
|
Par_GetParToUnsigned ("Visibility",
|
||||||
Lay_ShowErrorAndExit ("Visibility of field is missing.");
|
0,
|
||||||
if (Vis < Rec_NUM_TYPES_VISIBILITY)
|
Rec_NUM_TYPES_VISIBILITY - 1,
|
||||||
NewVisibility = (Rec_VisibilityRecordFields_t) Vis;
|
Rec_VISIBILITY_DEFAULT);
|
||||||
else
|
|
||||||
NewVisibility = Rec_HIDDEN_FIELD;
|
|
||||||
|
|
||||||
/* Get from the database the visibility of the field */
|
/* Get from the database the visibility of the field */
|
||||||
Rec_GetFieldByCod (Gbl.CurrentCrs.Records.Field.FieldCod,Gbl.CurrentCrs.Records.Field.Name,&Gbl.CurrentCrs.Records.Field.NumLines,&Gbl.CurrentCrs.Records.Field.Visibility);
|
Rec_GetFieldByCod (Gbl.CurrentCrs.Records.Field.FieldCod,Gbl.CurrentCrs.Records.Field.Name,&Gbl.CurrentCrs.Records.Field.NumLines,&Gbl.CurrentCrs.Records.Field.Visibility);
|
||||||
|
@ -1419,8 +1414,8 @@ static void Rec_ShowLinkToPrintPreviewOfRecords (void)
|
||||||
"<label class=\"%s\">"
|
"<label class=\"%s\">"
|
||||||
"(<select name=\"RecsPerPag\">",
|
"(<select name=\"RecsPerPag\">",
|
||||||
The_ClassForm[Gbl.Prefs.Theme]);
|
The_ClassForm[Gbl.Prefs.Theme]);
|
||||||
for (i = 1;
|
for (i = Rec_MIN_RECORDS_PER_PAGE;
|
||||||
i <= 10;
|
i <= Rec_MAX_RECORDS_PER_PAGE;
|
||||||
i++)
|
i++)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<option");
|
fprintf (Gbl.F.Out,"<option");
|
||||||
|
@ -1439,11 +1434,10 @@ static void Rec_ShowLinkToPrintPreviewOfRecords (void)
|
||||||
|
|
||||||
static void Rec_GetParamRecordsPerPage (void)
|
static void Rec_GetParamRecordsPerPage (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
Gbl.Usrs.Listing.RecsPerPag = Par_GetParToUnsigned ("RecsPerPag",
|
||||||
|
Rec_MIN_RECORDS_PER_PAGE,
|
||||||
Par_GetParToText ("RecsPerPag",UnsignedStr,10);
|
Rec_MAX_RECORDS_PER_PAGE,
|
||||||
if (sscanf (UnsignedStr,"%u",&Gbl.Usrs.Listing.RecsPerPag) != 1)
|
Rec_DEF_RECORDS_PER_PAGE);
|
||||||
Lay_ShowErrorAndExit ("Number of rows per page is missing.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3058,7 +3052,7 @@ static void Rec_ShowCountry (struct UsrData *UsrDat,
|
||||||
/***** If list of countries is empty, try to get it *****/
|
/***** If list of countries is empty, try to get it *****/
|
||||||
if (!Gbl.Ctys.Num)
|
if (!Gbl.Ctys.Num)
|
||||||
{
|
{
|
||||||
Gbl.Ctys.SelectedOrderType = Cty_ORDER_BY_COUNTRY;
|
Gbl.Ctys.SelectedOrder = Cty_ORDER_BY_COUNTRY;
|
||||||
Cty_GetListCountries (Cty_GET_BASIC_DATA);
|
Cty_GetListCountries (Cty_GET_BASIC_DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3519,13 +3513,14 @@ void Rec_UpdateMyRecord (void)
|
||||||
|
|
||||||
Rol_Role_t Rec_GetRoleFromRecordForm (void)
|
Rol_Role_t Rec_GetRoleFromRecordForm (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
Rol_Role_t Role;
|
Rol_Role_t Role;
|
||||||
bool RoleOK = false;
|
bool RoleOK = false;
|
||||||
|
|
||||||
/***** Get role as a parameter from form *****/
|
/***** Get role as a parameter from form *****/
|
||||||
Par_GetParToText ("Role",UnsignedStr,10);
|
Role = (Rol_Role_t) Par_GetParToUnsigned ("Role",
|
||||||
Role = Rol_ConvertUnsignedStrToRole (UnsignedStr);
|
0,
|
||||||
|
Rol_NUM_ROLES - 1,
|
||||||
|
(unsigned) Rol_UNKNOWN);
|
||||||
|
|
||||||
/***** Check if I can register a user
|
/***** Check if I can register a user
|
||||||
with the received role in current course *****/
|
with the received role in current course *****/
|
||||||
|
@ -3605,15 +3600,11 @@ void Rec_GetUsrNameFromRecordForm (struct UsrData *UsrDat)
|
||||||
|
|
||||||
static void Rec_GetUsrExtraDataFromRecordForm (struct UsrData *UsrDat)
|
static void Rec_GetUsrExtraDataFromRecordForm (struct UsrData *UsrDat)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
|
||||||
unsigned UnsignedNum;
|
|
||||||
|
|
||||||
/***** Get sex from form *****/
|
/***** Get sex from form *****/
|
||||||
Par_GetParToText ("Sex",UnsignedStr,10);
|
UsrDat->Sex = (Usr_Sex_t) Par_GetParToUnsigned ("Sex",
|
||||||
UsrDat->Sex = Usr_SEX_UNKNOWN;
|
(unsigned) Usr_SEX_FEMALE,
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
(unsigned) Usr_SEX_MALE,
|
||||||
if (UnsignedNum <= Usr_SEX_MALE)
|
(unsigned) Usr_SEX_UNKNOWN);
|
||||||
UsrDat->Sex = (Usr_Sex_t) UnsignedNum;
|
|
||||||
|
|
||||||
/***** Get country code *****/
|
/***** Get country code *****/
|
||||||
UsrDat->CtyCod = Par_GetParToLong ("OthCtyCod");
|
UsrDat->CtyCod = Par_GetParToLong ("OthCtyCod");
|
||||||
|
@ -3730,7 +3721,7 @@ void Rec_ShowFormMyInsCtrDpt (void)
|
||||||
/* If list of countries is empty, try to get it */
|
/* If list of countries is empty, try to get it */
|
||||||
if (!Gbl.Ctys.Num)
|
if (!Gbl.Ctys.Num)
|
||||||
{
|
{
|
||||||
Gbl.Ctys.SelectedOrderType = Cty_ORDER_BY_COUNTRY;
|
Gbl.Ctys.SelectedOrder = Cty_ORDER_BY_COUNTRY;
|
||||||
Cty_GetListCountries (Cty_GET_BASIC_DATA);
|
Cty_GetListCountries (Cty_GET_BASIC_DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#include "swad_user.h"
|
#include "swad_user.h"
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*********************** Public constants and types **************************/
|
/***************************** Public constants ******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Rec_RECORD_WIDTH 560
|
#define Rec_RECORD_WIDTH 560
|
||||||
|
@ -40,6 +40,11 @@
|
||||||
#define Rec_MAX_LENGTH_NAME_FIELD 255
|
#define Rec_MAX_LENGTH_NAME_FIELD 255
|
||||||
#define Rec_MIN_LINES_IN_EDITION_FIELD 1
|
#define Rec_MIN_LINES_IN_EDITION_FIELD 1
|
||||||
#define Rec_MAX_LINES_IN_EDITION_FIELD 50
|
#define Rec_MAX_LINES_IN_EDITION_FIELD 50
|
||||||
|
#define Rec_DEF_LINES_IN_EDITION_FIELD Rec_MIN_LINES_IN_EDITION_FIELD
|
||||||
|
|
||||||
|
#define Rec_MIN_RECORDS_PER_PAGE 1
|
||||||
|
#define Rec_MAX_RECORDS_PER_PAGE 10
|
||||||
|
#define Rec_DEF_RECORDS_PER_PAGE Rec_MIN_RECORDS_PER_PAGE
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************************* Public types ********************************/
|
/******************************* Public types ********************************/
|
||||||
|
@ -79,13 +84,15 @@ typedef enum {
|
||||||
} Rec_UsrsType_t;
|
} Rec_UsrsType_t;
|
||||||
|
|
||||||
// Related with user's index card
|
// Related with user's index card
|
||||||
#define Rec_NUM_TYPES_VISIBILITY 3
|
#define Rec_NUM_TYPES_VISIBILITY 3
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Rec_HIDDEN_FIELD = 0,
|
Rec_HIDDEN_FIELD = 0,
|
||||||
Rec_VISIBLE_FIELD = 1,
|
Rec_VISIBLE_FIELD = 1,
|
||||||
Rec_EDITABLE_FIELD = 2,
|
Rec_EDITABLE_FIELD = 2,
|
||||||
} Rec_VisibilityRecordFields_t;
|
} Rec_VisibilityRecordFields_t;
|
||||||
|
#define Rec_VISIBILITY_DEFAULT Rec_HIDDEN_FIELD
|
||||||
|
|
||||||
struct RecordField
|
struct RecordField
|
||||||
{
|
{
|
||||||
long FieldCod; // FieldCode
|
long FieldCod; // FieldCode
|
||||||
|
@ -94,6 +101,7 @@ struct RecordField
|
||||||
Rec_VisibilityRecordFields_t Visibility; // Hidden, visible or editable by students?
|
Rec_VisibilityRecordFields_t Visibility; // Hidden, visible or editable by students?
|
||||||
char *Text; // Filed text
|
char *Text; // Filed text
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LstRecordFields
|
struct LstRecordFields
|
||||||
{
|
{
|
||||||
struct RecordField *Lst; // List of card fields
|
struct RecordField *Lst; // List of card fields
|
||||||
|
|
52
swad_role.c
52
swad_role.c
|
@ -316,28 +316,30 @@ void Rol_PutFormToChangeMyRole (void)
|
||||||
|
|
||||||
void Rol_ChangeMyRole (void)
|
void Rol_ChangeMyRole (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
Rol_Role_t NewRole;
|
||||||
unsigned UnsignedNum;
|
|
||||||
|
|
||||||
/***** Get parameter with the new logged role ******/
|
/***** Get parameter with the new logged role ******/
|
||||||
Par_GetParToText ("MyRole",UnsignedStr,10);
|
NewRole = (Rol_Role_t) Par_GetParToUnsigned ("MyRole",
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
0,
|
||||||
|
Rol_NUM_ROLES - 1,
|
||||||
|
(unsigned) Rol_UNKNOWN);
|
||||||
|
if (NewRole != Rol_UNKNOWN)
|
||||||
{
|
{
|
||||||
/* Check if new role is a correct type *****/
|
|
||||||
if (UnsignedNum >= Rol_NUM_ROLES)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Check if new role is allowed for me */
|
/* Check if new role is allowed for me */
|
||||||
if (!(Gbl.Usrs.Me.AvailableRoles & (1 << UnsignedNum)))
|
if (!(Gbl.Usrs.Me.AvailableRoles & (1 << NewRole)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* New role is correct and is allowed for me,
|
/* New role is correct and is allowed for me */
|
||||||
so change my logged user type */
|
if (NewRole != Gbl.Usrs.Me.LoggedRole)
|
||||||
Gbl.Usrs.Me.LoggedRole = (Rol_Role_t) UnsignedNum;
|
{
|
||||||
Gbl.Usrs.Me.RoleHasChanged = true;
|
/* New role is distinct to current role,
|
||||||
|
so change my role... */
|
||||||
|
Gbl.Usrs.Me.LoggedRole = NewRole;
|
||||||
|
Gbl.Usrs.Me.RoleHasChanged = true;
|
||||||
|
|
||||||
/* Update logged role in session */
|
/* ...and update logged role in session */
|
||||||
Ses_UpdateSessionDataInDB ();
|
Ses_UpdateSessionDataInDB ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -394,29 +396,27 @@ void Rol_PutHiddenParamRoles (unsigned Roles)
|
||||||
|
|
||||||
unsigned Rol_GetSelectedRoles (void)
|
unsigned Rol_GetSelectedRoles (void)
|
||||||
{
|
{
|
||||||
char StrRoles[(10 + 1) * 2];
|
char StrRoles[Rol_NUM_ROLES * (10 + 1)];
|
||||||
const char *Ptr;
|
const char *Ptr;
|
||||||
char UnsignedStr[10 + 1];
|
char UnsignedStr[10 + 1];
|
||||||
unsigned UnsignedNum;
|
|
||||||
Rol_Role_t Role;
|
Rol_Role_t Role;
|
||||||
unsigned Roles;
|
unsigned Roles;
|
||||||
|
|
||||||
/***** Try to get param "Roles" with multiple roles *****/
|
/***** Try to get param "Roles" with multiple roles *****/
|
||||||
Par_GetParToText ("Roles",UnsignedStr,10);
|
Roles = Par_GetParToUnsigned ("Roles",
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
0, // 000...000
|
||||||
Roles = UnsignedNum;
|
(1 << Rol_NUM_ROLES) - 1, // 111...111
|
||||||
else
|
0); // 000...000
|
||||||
Roles = 0;
|
|
||||||
|
|
||||||
/***** Try to get multiple param "Role" *****/
|
/***** Try to get multiple param "Role" *****/
|
||||||
Par_GetParMultiToText ("Role",StrRoles,(10 + 1) * 2);
|
Par_GetParMultiToText ("Role",StrRoles,Rol_NUM_ROLES * (10 + 1));
|
||||||
for (Ptr = StrRoles;
|
for (Ptr = StrRoles;
|
||||||
*Ptr;)
|
*Ptr;)
|
||||||
{
|
{
|
||||||
Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,10);
|
Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,10);
|
||||||
if (sscanf (UnsignedStr,"%u",&Role) != 1)
|
Role = Rol_ConvertUnsignedStrToRole (UnsignedStr);
|
||||||
Lay_ShowErrorAndExit ("can not get user's role");
|
if (Role != Rol_UNKNOWN)
|
||||||
Roles |= (1 << Role);
|
Roles |= (1 << Role);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Roles;
|
return Roles;
|
||||||
|
|
11
swad_scope.c
11
swad_scope.c
|
@ -191,11 +191,12 @@ void Sco_PutParamScope (const char *ParamName,Sco_Scope_t Scope)
|
||||||
|
|
||||||
void Sco_GetScope (const char *ParamName)
|
void Sco_GetScope (const char *ParamName)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
/***** Get parameter with scope *****/
|
||||||
|
Gbl.Scope.Current = (Sco_Scope_t)
|
||||||
/***** Get parameter location range if exists *****/
|
Par_GetParToUnsigned (ParamName,
|
||||||
Par_GetParToText (ParamName,UnsignedStr,10);
|
0,
|
||||||
Gbl.Scope.Current = Sco_GetScopeFromUnsignedStr (UnsignedStr);
|
Sco_NUM_SCOPES - 1,
|
||||||
|
(Sco_Scope_t) Sco_SCOPE_UNK);
|
||||||
|
|
||||||
/***** Adjust scope avoiding impossible or forbidden scopes *****/
|
/***** Adjust scope avoiding impossible or forbidden scopes *****/
|
||||||
Sco_AdjustScope ();
|
Sco_AdjustScope ();
|
||||||
|
|
|
@ -214,6 +214,7 @@ static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,Sco
|
||||||
extern const char *Txt_Search;
|
extern const char *Txt_Search;
|
||||||
const char *Titles[Sch_NUM_WHAT_TO_SEARCH] =
|
const char *Titles[Sch_NUM_WHAT_TO_SEARCH] =
|
||||||
{
|
{
|
||||||
|
"", // Sch_SEARCH_UNKNOWN
|
||||||
Txt_all, // Sch_SEARCH_ALL
|
Txt_all, // Sch_SEARCH_ALL
|
||||||
Txt_institutions, // Sch_SEARCH_INSTITS
|
Txt_institutions, // Sch_SEARCH_INSTITS
|
||||||
Txt_centres, // Sch_SEARCH_CENTRES
|
Txt_centres, // Sch_SEARCH_CENTRES
|
||||||
|
@ -293,6 +294,7 @@ static bool Sch_CheckIfIHavePermissionToSearch (Sch_WhatToSearch_t WhatToSearch)
|
||||||
{
|
{
|
||||||
unsigned Permissions[Sch_NUM_WHAT_TO_SEARCH] =
|
unsigned Permissions[Sch_NUM_WHAT_TO_SEARCH] =
|
||||||
{
|
{
|
||||||
|
0x000, // Sch_SEARCH_UNKNOWN
|
||||||
0x1FF, // Sch_SEARCH_ALL
|
0x1FF, // Sch_SEARCH_ALL
|
||||||
0x1FF, // Sch_SEARCH_INSTITS
|
0x1FF, // Sch_SEARCH_INSTITS
|
||||||
0x1FF, // Sch_SEARCH_CENTRES
|
0x1FF, // Sch_SEARCH_CENTRES
|
||||||
|
@ -412,16 +414,18 @@ void Sch_PutMagnifyingGlassButton (const char *Icon)
|
||||||
|
|
||||||
void Sch_GetParamWhatToSearch (void)
|
void Sch_GetParamWhatToSearch (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
Sch_WhatToSearch_t WhatToSearch;
|
||||||
unsigned UnsignedNum;
|
|
||||||
|
|
||||||
/***** Get what to search from form *****/
|
/***** Get what to search from form *****/
|
||||||
Par_GetParToText ("WhatToSearch",UnsignedStr,10);
|
WhatToSearch = (Sch_WhatToSearch_t)
|
||||||
|
Par_GetParToUnsigned ("WhatToSearch",
|
||||||
|
0,
|
||||||
|
Sch_NUM_WHAT_TO_SEARCH - 1,
|
||||||
|
(unsigned) Sch_SEARCH_UNKNOWN);
|
||||||
|
|
||||||
// If parameter WhatToSearch is not present, use parameter from session
|
// If parameter WhatToSearch is not present, use parameter from session
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
if (WhatToSearch != Sch_SEARCH_UNKNOWN)
|
||||||
if (UnsignedNum < Sch_NUM_WHAT_TO_SEARCH)
|
Gbl.Search.WhatToSearch = WhatToSearch;
|
||||||
Gbl.Search.WhatToSearch = (Sch_WhatToSearch_t) UnsignedNum;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -606,6 +610,8 @@ static void Sch_SearchInDB (void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Gbl.Search.WhatToSearch == Sch_SEARCH_UNKNOWN)
|
||||||
|
Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
||||||
switch (Gbl.Search.WhatToSearch)
|
switch (Gbl.Search.WhatToSearch)
|
||||||
{
|
{
|
||||||
case Sch_SEARCH_ALL:
|
case Sch_SEARCH_ALL:
|
||||||
|
@ -653,6 +659,9 @@ static void Sch_SearchInDB (void)
|
||||||
case Sch_SEARCH_MY_DOCUMENTS:
|
case Sch_SEARCH_MY_DOCUMENTS:
|
||||||
NumResults = Sch_SearchMyDocumentsInDB (RangeQuery);
|
NumResults = Sch_SearchMyDocumentsInDB (RangeQuery);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
NumResults = 0;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NumResults == 0)
|
if (NumResults == 0)
|
||||||
|
@ -1319,6 +1328,9 @@ static void Sch_SaveLastSearchIntoSession (void)
|
||||||
|
|
||||||
if (Gbl.Usrs.Me.Logged)
|
if (Gbl.Usrs.Me.Logged)
|
||||||
{
|
{
|
||||||
|
if (Gbl.Search.WhatToSearch == Sch_SEARCH_UNKNOWN)
|
||||||
|
Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
||||||
|
|
||||||
/***** Save last search in session *****/
|
/***** Save last search in session *****/
|
||||||
sprintf (Query,"UPDATE sessions SET WhatToSearch='%u',SearchString='%s'"
|
sprintf (Query,"UPDATE sessions SET WhatToSearch='%u',SearchString='%s'"
|
||||||
" WHERE SessionId='%s'",
|
" WHERE SessionId='%s'",
|
||||||
|
|
|
@ -40,22 +40,24 @@
|
||||||
/******************************** Public types *******************************/
|
/******************************** Public types *******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Sch_NUM_WHAT_TO_SEARCH 12
|
#define Sch_NUM_WHAT_TO_SEARCH 13
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Sch_SEARCH_ALL = 0,
|
Sch_SEARCH_UNKNOWN = 0,
|
||||||
Sch_SEARCH_INSTITS = 1,
|
Sch_SEARCH_ALL = 1,
|
||||||
Sch_SEARCH_CENTRES = 2,
|
Sch_SEARCH_INSTITS = 2,
|
||||||
Sch_SEARCH_DEGREES = 3,
|
Sch_SEARCH_CENTRES = 3,
|
||||||
Sch_SEARCH_COURSES = 4,
|
Sch_SEARCH_DEGREES = 4,
|
||||||
Sch_SEARCH_USERS = 5,
|
Sch_SEARCH_COURSES = 5,
|
||||||
Sch_SEARCH_TEACHERS = 6,
|
Sch_SEARCH_USERS = 6,
|
||||||
Sch_SEARCH_STUDENTS = 7,
|
Sch_SEARCH_TEACHERS = 7,
|
||||||
Sch_SEARCH_GUESTS = 8,
|
Sch_SEARCH_STUDENTS = 8,
|
||||||
Sch_SEARCH_OPEN_DOCUMENTS = 9,
|
Sch_SEARCH_GUESTS = 9,
|
||||||
Sch_SEARCH_DOCUM_IN_MY_COURSES = 10,
|
Sch_SEARCH_OPEN_DOCUMENTS = 10,
|
||||||
Sch_SEARCH_MY_DOCUMENTS = 11,
|
Sch_SEARCH_DOCUM_IN_MY_COURSES = 11,
|
||||||
|
Sch_SEARCH_MY_DOCUMENTS = 12,
|
||||||
} Sch_WhatToSearch_t;
|
} Sch_WhatToSearch_t;
|
||||||
|
#define Sch_WHAT_TO_SEARCH_DEFAULT Sch_SEARCH_ALL
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************************** Public prototypes ****************************/
|
/****************************** Public prototypes ****************************/
|
||||||
|
|
|
@ -157,6 +157,9 @@ void Ses_InsertSessionInDB (void)
|
||||||
char Query[1024];
|
char Query[1024];
|
||||||
|
|
||||||
/***** Insert session in the database *****/
|
/***** Insert session in the database *****/
|
||||||
|
if (Gbl.Search.WhatToSearch == Sch_SEARCH_UNKNOWN)
|
||||||
|
Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
||||||
|
|
||||||
sprintf (Query,"INSERT INTO sessions (SessionId,UsrCod,Password,Role,"
|
sprintf (Query,"INSERT INTO sessions (SessionId,UsrCod,Password,Role,"
|
||||||
"CtyCod,InsCod,CtrCod,DegCod,CrsCod,LastTime,LastRefresh,WhatToSearch)"
|
"CtyCod,InsCod,CtrCod,DegCod,CrsCod,LastTime,LastRefresh,WhatToSearch)"
|
||||||
" VALUES ('%s','%ld','%s','%u',"
|
" VALUES ('%s','%ld','%s','%u',"
|
||||||
|
@ -310,10 +313,12 @@ bool Ses_GetSessionData (void)
|
||||||
if (Gbl.Action.Act != ActLogOut) // When closing session, last search will not be needed
|
if (Gbl.Action.Act != ActLogOut) // When closing session, last search will not be needed
|
||||||
{
|
{
|
||||||
/* Get what to search (row[8]) */
|
/* Get what to search (row[8]) */
|
||||||
Gbl.Search.WhatToSearch = Sch_SEARCH_ALL;
|
Gbl.Search.WhatToSearch = Sch_SEARCH_UNKNOWN;
|
||||||
if (sscanf (row[8],"%u",&UnsignedNum) == 1)
|
if (sscanf (row[8],"%u",&UnsignedNum) == 1)
|
||||||
if (UnsignedNum < Sch_NUM_WHAT_TO_SEARCH)
|
if (UnsignedNum < Sch_NUM_WHAT_TO_SEARCH)
|
||||||
Gbl.Search.WhatToSearch = (Sch_WhatToSearch_t) UnsignedNum;
|
Gbl.Search.WhatToSearch = (Sch_WhatToSearch_t) UnsignedNum;
|
||||||
|
if (Gbl.Search.WhatToSearch == Sch_SEARCH_UNKNOWN)
|
||||||
|
Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
||||||
|
|
||||||
/* Get search string (row[9]) */
|
/* Get search string (row[9]) */
|
||||||
Str_Copy (Gbl.Search.Str,row[9],
|
Str_Copy (Gbl.Search.Str,row[9],
|
||||||
|
|
|
@ -103,7 +103,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
bool ShowOnlyThisSvyComplete);
|
bool ShowOnlyThisSvyComplete);
|
||||||
static void Svy_WriteAuthor (struct Survey *Svy);
|
static void Svy_WriteAuthor (struct Survey *Svy);
|
||||||
static void Svy_WriteStatus (struct Survey *Svy);
|
static void Svy_WriteStatus (struct Survey *Svy);
|
||||||
static void Svy_GetParamSvyOrderType (void);
|
static void Svy_GetParamSvyOrder (void);
|
||||||
|
|
||||||
static void Svy_PutFormsToRemEditOneSvy (long SvyCod,bool Visible);
|
static void Svy_PutFormsToRemEditOneSvy (long SvyCod,bool Visible);
|
||||||
static void Svy_PutParams (void);
|
static void Svy_PutParams (void);
|
||||||
|
@ -172,7 +172,7 @@ void Svy_SeeAllSurveys (void)
|
||||||
struct SurveyQuestion SvyQst;
|
struct SurveyQuestion SvyQst;
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Svy_GetParamSvyOrderType ();
|
Svy_GetParamSvyOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Pag_GetParamPagNum (Pag_SURVEYS);
|
Pag_GetParamPagNum (Pag_SURVEYS);
|
||||||
|
|
||||||
|
@ -193,7 +193,7 @@ static void Svy_ListAllSurveys (struct SurveyQuestion *SvyQst)
|
||||||
extern const char *Txt_Survey;
|
extern const char *Txt_Survey;
|
||||||
extern const char *Txt_Status;
|
extern const char *Txt_Status;
|
||||||
extern const char *Txt_No_surveys;
|
extern const char *Txt_No_surveys;
|
||||||
tSvysOrderType Order;
|
Svy_Order_t Order;
|
||||||
struct Pagination Pagination;
|
struct Pagination Pagination;
|
||||||
unsigned NumSvy;
|
unsigned NumSvy;
|
||||||
|
|
||||||
|
@ -239,10 +239,10 @@ static void Svy_ListAllSurveys (struct SurveyQuestion *SvyQst)
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Svys.SelectedOrderType)
|
if (Order == Gbl.Svys.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
|
||||||
if (Order == Gbl.Svys.SelectedOrderType)
|
if (Order == Gbl.Svys.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -359,7 +359,7 @@ static void Svy_PutButtonToCreateNewSvy (void)
|
||||||
|
|
||||||
static void Svy_PutParamsToCreateNewSvy (void)
|
static void Svy_PutParamsToCreateNewSvy (void)
|
||||||
{
|
{
|
||||||
Svy_PutHiddenParamSvyOrderType ();
|
Svy_PutHiddenParamSvyOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
}
|
}
|
||||||
|
@ -377,7 +377,7 @@ static void Svy_PutFormToSelectWhichGroupsToShow (void)
|
||||||
|
|
||||||
static void Svy_ParamsWhichGroupsToShow (void)
|
static void Svy_ParamsWhichGroupsToShow (void)
|
||||||
{
|
{
|
||||||
Svy_PutHiddenParamSvyOrderType ();
|
Svy_PutHiddenParamSvyOrder ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -391,7 +391,7 @@ void Svy_SeeOneSurvey (void)
|
||||||
struct SurveyQuestion SvyQst;
|
struct SurveyQuestion SvyQst;
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Svy_GetParamSvyOrderType ();
|
Svy_GetParamSvyOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Pag_GetParamPagNum (Pag_SURVEYS);
|
Pag_GetParamPagNum (Pag_SURVEYS);
|
||||||
|
|
||||||
|
@ -486,7 +486,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
/* Put form to view survey */
|
/* Put form to view survey */
|
||||||
Act_FormStart (ActSeeOneSvy);
|
Act_FormStart (ActSeeOneSvy);
|
||||||
Svy_PutParamSvyCod (SvyCod);
|
Svy_PutParamSvyCod (SvyCod);
|
||||||
Svy_PutHiddenParamSvyOrderType ();
|
Svy_PutHiddenParamSvyOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
Act_LinkFormSubmit (Txt_View_survey,
|
Act_LinkFormSubmit (Txt_View_survey,
|
||||||
|
@ -522,7 +522,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
|
|
||||||
Act_FormStart (ActSeeOneSvy);
|
Act_FormStart (ActSeeOneSvy);
|
||||||
Svy_PutParamSvyCod (Svy.SvyCod);
|
Svy_PutParamSvyCod (Svy.SvyCod);
|
||||||
Svy_PutHiddenParamSvyOrderType ();
|
Svy_PutHiddenParamSvyOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
Lay_PutCreateButtonInline (Txt_Answer_survey);
|
Lay_PutCreateButtonInline (Txt_Answer_survey);
|
||||||
|
@ -537,7 +537,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
|
|
||||||
Act_FormStart (ActSeeOneSvy);
|
Act_FormStart (ActSeeOneSvy);
|
||||||
Svy_PutParamSvyCod (Svy.SvyCod);
|
Svy_PutParamSvyCod (Svy.SvyCod);
|
||||||
Svy_PutHiddenParamSvyOrderType ();
|
Svy_PutHiddenParamSvyOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
Lay_PutConfirmButtonInline (Txt_View_survey_results);
|
Lay_PutConfirmButtonInline (Txt_View_survey_results);
|
||||||
|
@ -797,28 +797,28 @@ static void Svy_WriteStatus (struct Survey *Svy)
|
||||||
/********* Get parameter with the type or order in list of surveys ***********/
|
/********* Get parameter with the type or order in list of surveys ***********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Svy_GetParamSvyOrderType (void)
|
static void Svy_GetParamSvyOrder (void)
|
||||||
{
|
{
|
||||||
char UnsignedStr[10 + 1];
|
char UnsignedStr[10 + 1];
|
||||||
unsigned UnsignedNum;
|
unsigned UnsignedNum;
|
||||||
|
|
||||||
/***** Set default order type *****/
|
/***** Set default order type *****/
|
||||||
Gbl.Svys.SelectedOrderType = Svy_ORDER_BY_START_DATE;
|
Gbl.Svys.SelectedOrder = Svy_ORDER_BY_START_DATE;
|
||||||
|
|
||||||
/***** Get parameter from form with the order type *****/
|
/***** Get parameter from form with the order type *****/
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
Par_GetParToText ("Order",UnsignedStr,10);
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
||||||
if (UnsignedNum < Svy_NUM_ORDERS)
|
if (UnsignedNum < Svy_NUM_ORDERS)
|
||||||
Gbl.Svys.SelectedOrderType = (tSvysOrderType) UnsignedNum;
|
Gbl.Svys.SelectedOrder = (Svy_Order_t) UnsignedNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***** Put a hidden parameter with the type of order in list of surveys ******/
|
/***** Put a hidden parameter with the type of order in list of surveys ******/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Svy_PutHiddenParamSvyOrderType (void)
|
void Svy_PutHiddenParamSvyOrder (void)
|
||||||
{
|
{
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Svys.SelectedOrderType);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Svys.SelectedOrder);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -878,7 +878,7 @@ static void Svy_PutParams (void)
|
||||||
{
|
{
|
||||||
if (Gbl.Svys.SvyCodToEdit > 0)
|
if (Gbl.Svys.SvyCodToEdit > 0)
|
||||||
Svy_PutParamSvyCod (Gbl.Svys.SvyCodToEdit);
|
Svy_PutParamSvyCod (Gbl.Svys.SvyCodToEdit);
|
||||||
Att_PutHiddenParamAttOrderType ();
|
Att_PutHiddenParamAttOrder ();
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
}
|
}
|
||||||
|
@ -972,7 +972,7 @@ void Svy_GetListSurveys (void)
|
||||||
/* Build query */
|
/* Build query */
|
||||||
if (SubQueryFilled)
|
if (SubQueryFilled)
|
||||||
{
|
{
|
||||||
switch (Gbl.Svys.SelectedOrderType)
|
switch (Gbl.Svys.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Svy_ORDER_BY_START_DATE:
|
case Svy_ORDER_BY_START_DATE:
|
||||||
sprintf (OrderBySubQuery,"StartTime DESC,EndTime DESC,Title DESC");
|
sprintf (OrderBySubQuery,"StartTime DESC,EndTime DESC,Title DESC");
|
||||||
|
@ -1524,7 +1524,7 @@ void Svy_AskRemSurvey (void)
|
||||||
struct SurveyQuestion SvyQst;
|
struct SurveyQuestion SvyQst;
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Svy_GetParamSvyOrderType ();
|
Svy_GetParamSvyOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Pag_GetParamPagNum (Pag_SURVEYS);
|
Pag_GetParamPagNum (Pag_SURVEYS);
|
||||||
|
|
||||||
|
@ -1621,7 +1621,7 @@ void Svy_AskResetSurvey (void)
|
||||||
struct SurveyQuestion SvyQst;
|
struct SurveyQuestion SvyQst;
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Svy_GetParamSvyOrderType ();
|
Svy_GetParamSvyOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Pag_GetParamPagNum (Pag_SURVEYS);
|
Pag_GetParamPagNum (Pag_SURVEYS);
|
||||||
|
|
||||||
|
@ -1811,7 +1811,7 @@ void Svy_RequestCreatOrEditSvy (void)
|
||||||
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Svy_GetParamSvyOrderType ();
|
Svy_GetParamSvyOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Pag_GetParamPagNum (Pag_SURVEYS);
|
Pag_GetParamPagNum (Pag_SURVEYS);
|
||||||
|
|
||||||
|
@ -2599,7 +2599,7 @@ void Svy_RequestEditQuestion (void)
|
||||||
SvyQst.QstCod = Svy_GetParamQstCod ();
|
SvyQst.QstCod = Svy_GetParamQstCod ();
|
||||||
|
|
||||||
/***** Get other parameters *****/
|
/***** Get other parameters *****/
|
||||||
Svy_GetParamSvyOrderType ();
|
Svy_GetParamSvyOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Pag_GetParamPagNum (Pag_SURVEYS);
|
Pag_GetParamPagNum (Pag_SURVEYS);
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ typedef enum
|
||||||
{
|
{
|
||||||
Svy_ORDER_BY_START_DATE = 0,
|
Svy_ORDER_BY_START_DATE = 0,
|
||||||
Svy_ORDER_BY_END_DATE = 1,
|
Svy_ORDER_BY_END_DATE = 1,
|
||||||
} tSvysOrderType;
|
} Svy_Order_t;
|
||||||
|
|
||||||
#define Svy_NUM_ANS_TYPES 2
|
#define Svy_NUM_ANS_TYPES 2
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ typedef enum
|
||||||
|
|
||||||
void Svy_SeeAllSurveys (void);
|
void Svy_SeeAllSurveys (void);
|
||||||
void Svy_SeeOneSurvey (void);
|
void Svy_SeeOneSurvey (void);
|
||||||
void Svy_PutHiddenParamSvyOrderType (void);
|
void Svy_PutHiddenParamSvyOrder (void);
|
||||||
void Svy_RequestCreatOrEditSvy (void);
|
void Svy_RequestCreatOrEditSvy (void);
|
||||||
void Svy_GetListSurveys (void);
|
void Svy_GetListSurveys (void);
|
||||||
void Svy_GetDataOfSurveyByCod (struct Survey *Svy);
|
void Svy_GetDataOfSurveyByCod (struct Survey *Svy);
|
||||||
|
|
12
swad_test.c
12
swad_test.c
|
@ -2472,7 +2472,7 @@ static unsigned long Tst_GetQuestionsForEdit (MYSQL_RES **mysql_res)
|
||||||
Str_Concat (Query," GROUP BY tst_questions.QstCod",
|
Str_Concat (Query," GROUP BY tst_questions.QstCod",
|
||||||
Tst_MAX_LENGTH_QUERY_TEST);
|
Tst_MAX_LENGTH_QUERY_TEST);
|
||||||
|
|
||||||
switch (Gbl.Test.SelectedOrderType)
|
switch (Gbl.Test.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Tst_ORDER_STEM:
|
case Tst_ORDER_STEM:
|
||||||
Str_Concat (Query," ORDER BY tst_questions.Stem",
|
Str_Concat (Query," ORDER BY tst_questions.Stem",
|
||||||
|
@ -2764,13 +2764,13 @@ static void Tst_ListOneOrMoreQuestionsToEdit (unsigned long NumRows,MYSQL_RES *m
|
||||||
Tst_WriteParamEditQst ();
|
Tst_WriteParamEditQst ();
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_TST_STR_ORDER_FULL[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_TST_STR_ORDER_FULL[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Test.SelectedOrderType)
|
if (Order == Gbl.Test.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_TST_STR_ORDER_SHORT[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_TST_STR_ORDER_SHORT[Order]);
|
||||||
if (NumRows > 1)
|
if (NumRows > 1)
|
||||||
{
|
{
|
||||||
if (Order == Gbl.Test.SelectedOrderType)
|
if (Order == Gbl.Test.SelectedOrder)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -2885,7 +2885,7 @@ static void Tst_ListOneOrMoreQuestionsToEdit (unsigned long NumRows,MYSQL_RES *m
|
||||||
Tst_WriteParamEditQst ();
|
Tst_WriteParamEditQst ();
|
||||||
if (NumRows == 1)
|
if (NumRows == 1)
|
||||||
Par_PutHiddenParamChar ("OnlyThisQst",'Y'); // If editing only one question, don't edit others
|
Par_PutHiddenParamChar ("OnlyThisQst",'Y'); // If editing only one question, don't edit others
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Test.SelectedOrderType);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Test.SelectedOrder);
|
||||||
fprintf (Gbl.F.Out,"<input type=\"checkbox\" name=\"Shuffle\" value=\"Y\"");
|
fprintf (Gbl.F.Out,"<input type=\"checkbox\" name=\"Shuffle\" value=\"Y\"");
|
||||||
if (row[3][0] == 'Y')
|
if (row[3][0] == 'Y')
|
||||||
fprintf (Gbl.F.Out," checked=\"checked\"");
|
fprintf (Gbl.F.Out," checked=\"checked\"");
|
||||||
|
@ -4324,10 +4324,10 @@ static bool Tst_GetParamsTst (void)
|
||||||
/* Get ordering criteria */
|
/* Get ordering criteria */
|
||||||
Par_GetParMultiToText ("Order",UnsignedStr,10);
|
Par_GetParMultiToText ("Order",UnsignedStr,10);
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
||||||
Gbl.Test.SelectedOrderType = (Tst_QuestionsOrder_t) ((UnsignedNum < Tst_NUM_TYPES_ORDER_QST) ? UnsignedNum :
|
Gbl.Test.SelectedOrder = (Tst_QuestionsOrder_t) ((UnsignedNum < Tst_NUM_TYPES_ORDER_QST) ? UnsignedNum :
|
||||||
0);
|
0);
|
||||||
else
|
else
|
||||||
Gbl.Test.SelectedOrderType = (Tst_QuestionsOrder_t) 0;
|
Gbl.Test.SelectedOrder = (Tst_QuestionsOrder_t) 0;
|
||||||
|
|
||||||
/* Get whether we must create the XML file or not */
|
/* Get whether we must create the XML file or not */
|
||||||
Gbl.Test.XML.CreateXML = Tst_GetCreateXMLFromForm ();
|
Gbl.Test.XML.CreateXML = Tst_GetCreateXMLFromForm ();
|
||||||
|
|
|
@ -101,7 +101,7 @@ static void TsI_PutParamsExportQsts (void)
|
||||||
Sta_WriteParamsDatesSeeAccesses ();
|
Sta_WriteParamsDatesSeeAccesses ();
|
||||||
Tst_WriteParamEditQst ();
|
Tst_WriteParamEditQst ();
|
||||||
Par_PutHiddenParamChar ("OnlyThisQst",'N');
|
Par_PutHiddenParamChar ("OnlyThisQst",'N');
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Test.SelectedOrderType);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Test.SelectedOrder);
|
||||||
Par_PutHiddenParamChar ("CreateXML",'Y');
|
Par_PutHiddenParamChar ("CreateXML",'Y');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
21
swad_text.c
21
swad_text.c
|
@ -53761,27 +53761,6 @@ const char *Txt_You_must_send_your_photo_because_ =
|
||||||
" allowed without photo."; // Necessita de tradução
|
" allowed without photo."; // Necessita de tradução
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_You_must_specify_in_step_2_the_action_to_perform =
|
|
||||||
#if L==1
|
|
||||||
"S'ha d'especificar en el pas 2 l'acció a realitzar.";
|
|
||||||
#elif L==2
|
|
||||||
"Sie müssen in Schritt 2 die auszuführende Aktion festzulegen.";
|
|
||||||
#elif L==3
|
|
||||||
"You must specify in step 2 the action to perform.";
|
|
||||||
#elif L==4
|
|
||||||
"Debe especificar en el paso 2 la acción a realizar.";
|
|
||||||
#elif L==5
|
|
||||||
"Vous devez spécifier à l'étape 2 l'action à effectuer.";
|
|
||||||
#elif L==6
|
|
||||||
"Debe especificar en el paso 2 la acción a realizar."; // Okoteve traducción
|
|
||||||
#elif L==7
|
|
||||||
"È necessario specificare al punto 2 l'azione da eseguire.";
|
|
||||||
#elif L==8
|
|
||||||
"You must specify in step 2 the action to perform."; // Potrzebujesz tlumaczenie
|
|
||||||
#elif L==9
|
|
||||||
"Você deve especificar no passo 2 a ação a ser executada.";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_You_must_specify_the_image_of_the_new_banner =
|
const char *Txt_You_must_specify_the_image_of_the_new_banner =
|
||||||
#if L==1
|
#if L==1
|
||||||
"Debe especificar la imagen"
|
"Debe especificar la imagen"
|
||||||
|
|
|
@ -315,7 +315,7 @@ void Usr_ResetUsrDataExceptUsrCodAndIDs (struct UsrData *UsrDat)
|
||||||
|
|
||||||
void Usr_ResetMyLastData (void)
|
void Usr_ResetMyLastData (void)
|
||||||
{
|
{
|
||||||
Gbl.Usrs.Me.UsrLast.WhatToSearch = Sch_SEARCH_ALL;
|
Gbl.Usrs.Me.UsrLast.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
||||||
Gbl.Usrs.Me.UsrLast.LastCrs = -1L;
|
Gbl.Usrs.Me.UsrLast.LastCrs = -1L;
|
||||||
Gbl.Usrs.Me.UsrLast.LastTab = TabUnk;
|
Gbl.Usrs.Me.UsrLast.LastTab = TabUnk;
|
||||||
Gbl.Usrs.Me.UsrLast.LastAccNotif = 0;
|
Gbl.Usrs.Me.UsrLast.LastAccNotif = 0;
|
||||||
|
@ -667,10 +667,12 @@ static void Usr_GetMyLastData (void)
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
/* Get last type of search */
|
/* Get last type of search */
|
||||||
Gbl.Usrs.Me.UsrLast.WhatToSearch = Sch_SEARCH_ALL;
|
Gbl.Usrs.Me.UsrLast.WhatToSearch = Sch_SEARCH_UNKNOWN;
|
||||||
if (sscanf (row[0],"%u",&UnsignedNum) == 1)
|
if (sscanf (row[0],"%u",&UnsignedNum) == 1)
|
||||||
if (UnsignedNum < Sch_NUM_WHAT_TO_SEARCH)
|
if (UnsignedNum < Sch_NUM_WHAT_TO_SEARCH)
|
||||||
Gbl.Usrs.Me.UsrLast.WhatToSearch = (Sch_WhatToSearch_t) UnsignedNum;
|
Gbl.Usrs.Me.UsrLast.WhatToSearch = (Sch_WhatToSearch_t) UnsignedNum;
|
||||||
|
if (Gbl.Usrs.Me.UsrLast.WhatToSearch == Sch_SEARCH_UNKNOWN)
|
||||||
|
Gbl.Usrs.Me.UsrLast.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
||||||
|
|
||||||
/* Get last course */
|
/* Get last course */
|
||||||
Gbl.Usrs.Me.UsrLast.LastCrs = Str_ConvertStrCodToLongCod (row[1]);
|
Gbl.Usrs.Me.UsrLast.LastCrs = Str_ConvertStrCodToLongCod (row[1]);
|
||||||
|
|
Loading…
Reference in New Issue