Version 16.131

This commit is contained in:
Antonio Cañas Vargas 2017-01-29 12:42:19 +01:00
parent 4b8bf39c6c
commit c428ea015a
66 changed files with 1016 additions and 1156 deletions

View File

@ -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);

View File

@ -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 *****/

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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 ();
} }

View File

@ -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 ();

View File

@ -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 ****************************/

View File

@ -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)

View File

@ -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",

View File

@ -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);

View File

@ -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;

View File

@ -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

View File

@ -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;
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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

View File

@ -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

View File

@ -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");

View File

@ -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 *****************************/

View File

@ -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;
} }
} }

View File

@ -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;
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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);

View File

@ -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);

View File

@ -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");

View File

@ -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)

View File

@ -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 */

View File

@ -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;

View File

@ -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;
}
} }
} }

View File

@ -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,

View File

@ -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);
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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

View File

@ -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;
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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;
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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

View File

@ -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
{ {

View File

@ -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 ();
} }

View File

@ -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");

View File

@ -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
{ {

View File

@ -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;
} }

View File

@ -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);

View File

@ -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;
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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)
{ {

View File

@ -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 **********************/
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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);

View File

@ -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];

View File

@ -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;
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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

View File

@ -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");

View File

@ -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 *****************************/

View File

@ -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;
} }

View File

@ -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;
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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

View File

@ -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);
} }

View File

@ -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

View File

@ -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;

View File

@ -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 ();

View File

@ -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'",

View File

@ -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 ****************************/

View File

@ -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],

View File

@ -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);

View File

@ -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);

View File

@ -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 ();

View File

@ -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');
} }

View File

@ -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&oacute; a realitzar.";
#elif L==2
"Sie m&uuml;ssen in Schritt 2 die auszuf&uuml;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&oacute;n a realizar.";
#elif L==5
"Vous devez sp&eacute;cifier &agrave; l'&eacute;tape 2 l'action &agrave; effectuer.";
#elif L==6
"Debe especificar en el paso 2 la acci&oacute;n a realizar."; // Okoteve traducción
#elif L==7
"&Egrave; 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&ecirc; deve especificar no passo 2 a a&ccedil;&atilde;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"

View File

@ -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]);