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);
/***** 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
Str_RemoveLeadingZeros (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_PutParamsToCreateNewEvent (void);
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_PutParams (void);
@ -279,7 +279,7 @@ static void Agd_ShowEvents (Agd_AgendaType_t AgendaType)
};
/***** Get parameters *****/
Agd_GetParamEventOrderType ();
Agd_GetParamEventOrder ();
Pag_GetParamPagNum (WhatPaginate[AgendaType]);
/***** Get list of events *****/
@ -342,7 +342,7 @@ static void Agd_ShowEventsToday (Agd_AgendaType_t AgendaType)
unsigned NumEvent;
/***** Get parameters *****/
Agd_GetParamEventOrderType ();
Agd_GetParamEventOrder ();
/***** Get list of events *****/
Agd_GetListEvents (AgendaType);
@ -424,10 +424,10 @@ static void Agd_WriteHeaderListEvents (Agd_AgendaType_t AgendaType)
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
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,"%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,"</a>");
Act_FormEnd ();
@ -567,7 +567,7 @@ static void Agd_PutButtonToCreateNewEvent (void)
static void Agd_PutParamsToCreateNewEvent (void)
{
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
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 ***********/
/*****************************************************************************/
static void Agd_GetParamEventOrderType (void)
static void Agd_GetParamEventOrder (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
static bool AlreadyGot = false;
if (!AlreadyGot)
{
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Agenda.SelectedOrderType = (Agd_Order_t) UnsignedNum;
else
Gbl.Agenda.SelectedOrderType = Agd_DEFAULT_ORDER_TYPE;
Gbl.Agenda.SelectedOrder = (Agd_Order_t) Par_GetParToUnsigned ("Order",
(unsigned) Agd_ORDER_BY_START_DATE,
(unsigned) Agd_ORDER_BY_END_DATE,
(unsigned) Agd_ORDER_DEFAULT);
AlreadyGot = true;
}
}
@ -713,9 +709,9 @@ static void Agd_GetParamEventOrderType (void)
/****** 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)
{
Agd_PutParamAgdCod (Gbl.Agenda.AgdCodToEdit);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
}
@ -798,7 +794,7 @@ static void Agd_GetListEvents (Agd_AgendaType_t AgendaType)
Agd_FreeListEvents ();
/***** Get list of events from database *****/
switch (Gbl.Agenda.SelectedOrderType)
switch (Gbl.Agenda.SelectedOrder)
{
case Agd_ORDER_BY_START_DATE:
sprintf (OrderBySubQuery,"StartTime,"
@ -1054,7 +1050,7 @@ void Agd_AskRemEvent (void)
struct AgendaEvent AgdEvent;
/***** Get parameters *****/
Agd_GetParamEventOrderType ();
Agd_GetParamEventOrder ();
Pag_GetParamPagNum (Pag_MY_FULL_AGENDA);
/***** Get event code *****/
@ -1068,7 +1064,7 @@ void Agd_AskRemEvent (void)
/***** Button of confirmation of removing *****/
Act_FormStart (ActRemEvtMyAgd);
Agd_PutParamAgdCod (AgdEvent.AgdCod);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
/***** Ask for confirmation of removing *****/
@ -1265,7 +1261,7 @@ void Agd_RequestCreatOrEditEvent (void)
char Txt[Cns_MAX_BYTES_TEXT + 1];
/***** Get parameters *****/
Agd_GetParamEventOrderType ();
Agd_GetParamEventOrder ();
Pag_GetParamPagNum (Pag_MY_FULL_AGENDA);
/***** Get the code of the event *****/
@ -1300,7 +1296,7 @@ void Agd_RequestCreatOrEditEvent (void)
Act_FormStart (ActChgEvtMyAgd);
Agd_PutParamAgdCod (AgdEvent.AgdCod);
}
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
/***** Table start *****/

View File

@ -67,8 +67,7 @@ typedef enum
Agd_ORDER_BY_START_DATE = 0,
Agd_ORDER_BY_END_DATE = 1,
} Agd_Order_t;
#define Agd_DEFAULT_ORDER_TYPE Agd_ORDER_BY_START_DATE
#define Agd_ORDER_DEFAULT Agd_ORDER_BY_START_DATE
/*****************************************************************************/
/***************************** Public prototypes *****************************/
@ -82,7 +81,7 @@ void Agd_ShowMyPublicAgenda (void);
void Agd_ShowUsrAgenda (void);
void Agd_ShowOtherAgendaAfterLogIn (void);
void Agd_PutHiddenParamEventsOrderType (void);
void Agd_PutHiddenParamEventsOrder (void);
void Agd_RequestCreatOrEditEvent (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_WriteAsgAuthor (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_PutParams (void);
@ -99,7 +99,7 @@ static bool Asg_CheckIfIBelongToCrsOrGrpsThisAssignment (long AsgCod);
void Asg_SeeAssignments (void)
{
/***** Get parameters *****/
Asg_GetParamAsgOrderType ();
Asg_GetParamAsgOrder ();
Grp_GetParamWhichGrps ();
Pag_GetParamPagNum (Pag_ASSIGNMENTS);
@ -161,10 +161,10 @@ static void Asg_ShowAllAssignments (void)
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
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,"%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,"</a>");
Act_FormEnd ();
@ -271,7 +271,7 @@ static void Asg_PutButtonToCreateNewAsg (void)
static void Asg_PutParamsToCreateNewAsg (void)
{
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
}
@ -289,7 +289,7 @@ static void Asg_PutFormToSelectWhichGroupsToShow (void)
static void Asg_ParamsWhichGroupsToShow (void)
{
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
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 *********/
/*****************************************************************************/
static void Asg_GetParamAsgOrderType (void)
static void Asg_GetParamAsgOrder (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Asgs.SelectedOrderType = (Dat_StartEndTime_t) UnsignedNum;
else
Gbl.Asgs.SelectedOrderType = Asg_DEFAULT_ORDER_TYPE;
Gbl.Asgs.SelectedOrder = (Dat_StartEndTime_t) Par_GetParToUnsigned ("Order",
(unsigned) Dat_START_TIME,
(unsigned) Dat_END_TIME,
(unsigned) Asg_ORDER_DEFAULT);
}
/*****************************************************************************/
/*** 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)
{
Asg_PutParamAsgCod (Gbl.Asgs.AsgCodToEdit);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
}
@ -624,7 +620,7 @@ void Asg_GetListAssignments (void)
sprintf (HiddenSubQuery,"AND Hidden='N'");
break;
}
switch (Gbl.Asgs.SelectedOrderType)
switch (Gbl.Asgs.SelectedOrder)
{
case Dat_START_TIME:
sprintf (OrderBySubQuery,"StartTime DESC,EndTime DESC,Title DESC");
@ -944,7 +940,7 @@ void Asg_ReqRemAssignment (void)
struct Assignment Asg;
/***** Get parameters *****/
Asg_GetParamAsgOrderType ();
Asg_GetParamAsgOrder ();
Grp_GetParamWhichGrps ();
Pag_GetParamPagNum (Pag_ASSIGNMENTS);
@ -958,7 +954,7 @@ void Asg_ReqRemAssignment (void)
/***** Button of confirmation of removing *****/
Act_FormStart (ActRemAsg);
Asg_PutParamAsgCod (Asg.AsgCod);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
@ -1116,7 +1112,7 @@ void Asg_RequestCreatOrEditAsg (void)
char Txt[Cns_MAX_BYTES_TEXT + 1];
/***** Get parameters *****/
Asg_GetParamAsgOrderType ();
Asg_GetParamAsgOrder ();
Grp_GetParamWhichGrps ();
Pag_GetParamPagNum (Pag_ASSIGNMENTS);
@ -1153,7 +1149,7 @@ void Asg_RequestCreatOrEditAsg (void)
Act_FormStart (ActChgAsg);
Asg_PutParamAsgCod (Asg.AsgCod);
}
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);

View File

@ -61,14 +61,14 @@ struct Assignment
// I belong to any of the groups)
};
#define Asg_DEFAULT_ORDER_TYPE Dat_START_TIME
#define Asg_ORDER_DEFAULT Dat_START_TIME
/*****************************************************************************/
/***************************** Public prototypes *****************************/
/*****************************************************************************/
void Asg_SeeAssignments (void);
void Asg_PutHiddenParamAsgOrderType (void);
void Asg_PutHiddenParamAsgOrder (void);
void Asg_RequestCreatOrEditAsg (void);
void Asg_GetListAssignments (void);
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_ShowOneAttEvent (struct AttendanceEvent *Att,bool ShowOnlyThisAttEventComplete);
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_PutFormToListStdsAttendance (void);
@ -146,7 +146,7 @@ void Att_SeeAttEvents (void)
char NicknameWithArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
/***** Get parameters *****/
Att_GetParamAttOrderType ();
Att_GetParamAttOrder ();
Grp_GetParamWhichGrps ();
Pag_GetParamPagNum (Pag_ATT_EVENTS);
@ -243,10 +243,10 @@ static void Att_ShowAllAttEvents (void)
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
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,"%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,"</a>");
Act_FormEnd ();
@ -302,7 +302,7 @@ static void Att_PutFormToSelectWhichGroupsToShow (void)
static void Att_ParamsWhichGroupsToShow (void)
{
Att_PutHiddenParamAttOrderType ();
Att_PutHiddenParamAttOrder ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
}
@ -341,7 +341,7 @@ static void Att_PutButtonToCreateNewAttEvent (void)
static void Att_PutParamsToCreateNewAttEvent (void)
{
Att_PutHiddenParamAttOrderType ();
Att_PutHiddenParamAttOrder ();
Grp_PutParamWhichGrps ();
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 ******/
/*****************************************************************************/
static void Att_GetParamAttOrderType (void)
static void Att_GetParamAttOrder (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.AttEvents.SelectedOrderType = (Dat_StartEndTime_t) UnsignedNum;
else
Gbl.AttEvents.SelectedOrderType = Att_DEFAULT_ORDER_TYPE;
Gbl.AttEvents.SelectedOrder = (Dat_StartEndTime_t) Par_GetParToUnsigned ("Order",
(unsigned) Dat_START_TIME,
(unsigned) Dat_END_TIME,
(unsigned) Att_ORDER_DEFAULT);
}
/*****************************************************************************/
/*** 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)
{
Att_PutHiddenParamAttOrderType ();
Att_PutHiddenParamAttOrder ();
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
}
@ -624,7 +620,7 @@ static void Att_PutFormsToRemEditOneAttEvent (long AttCod,bool Hidden)
static void Att_PutParams (void)
{
Att_PutParamAttCod (Gbl.AttEvents.AttCodToEdit);
Att_PutHiddenParamAttOrderType ();
Att_PutHiddenParamAttOrder ();
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
}
@ -657,7 +653,7 @@ static void Att_GetListAttEvents (Att_OrderTime_t Order)
sprintf (HiddenSubQuery,"AND Hidden='N'");
break;
}
switch (Gbl.AttEvents.SelectedOrderType)
switch (Gbl.AttEvents.SelectedOrder)
{
case Dat_START_TIME:
if (Order == Att_NEWEST_FIRST)
@ -908,7 +904,7 @@ void Att_AskRemAttEvent (void)
struct AttendanceEvent Att;
/***** Get parameters *****/
Att_GetParamAttOrderType ();
Att_GetParamAttOrder ();
Grp_GetParamWhichGrps ();
Pag_GetParamPagNum (Pag_ATT_EVENTS);
@ -922,7 +918,7 @@ void Att_AskRemAttEvent (void)
/***** Button of confirmation of removing *****/
Act_FormStart (ActRemAtt);
Att_PutParamAttCod (Att.AttCod);
Att_PutHiddenParamAttOrderType ();
Att_PutHiddenParamAttOrder ();
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
@ -1083,7 +1079,7 @@ void Att_RequestCreatOrEditAttEvent (void)
char Txt[Cns_MAX_BYTES_TEXT + 1];
/***** Get parameters *****/
Att_GetParamAttOrderType ();
Att_GetParamAttOrder ();
Grp_GetParamWhichGrps ();
Pag_GetParamPagNum (Pag_ATT_EVENTS);
@ -1122,7 +1118,7 @@ void Att_RequestCreatOrEditAttEvent (void)
Act_FormStart (ActChgAtt);
Att_PutParamAttCod (Att.AttCod);
}
Att_PutHiddenParamAttOrderType ();
Att_PutHiddenParamAttOrder ();
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
@ -1845,7 +1841,7 @@ void Att_SeeOneAttEvent (void)
Lay_ShowErrorAndExit ("Code of attendance event is missing.");
/***** Get parameters *****/
Att_GetParamAttOrderType ();
Att_GetParamAttOrder ();
Grp_GetParamWhichGrps ();
Pag_GetParamPagNum (Pag_ATT_EVENTS);

View File

@ -67,14 +67,14 @@ typedef enum
Att_OLDEST_FIRST,
} Att_OrderTime_t;
#define Att_DEFAULT_ORDER_TYPE Dat_START_TIME
#define Att_ORDER_DEFAULT Dat_START_TIME
/*****************************************************************************/
/***************************** Public prototypes *****************************/
/*****************************************************************************/
void Att_SeeAttEvents (void);
void Att_PutHiddenParamAttOrderType (void);
void Att_PutHiddenParamAttOrder (void);
void Att_RequestCreatOrEditAttEvent (void);
bool Att_GetDataOfAttEventByCod (struct AttendanceEvent *Att);
void Att_FreeListAttEvents (void);

View File

@ -160,14 +160,12 @@ void Cal_ChangeFirstDayOfWeek (void)
static unsigned Cal_GetParamFirstDayOfWeek (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
unsigned FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT;
unsigned FirstDayOfWeek;
Par_GetParToText ("FirstDayOfWeek",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (Cal_DayIsValidAsFirstDayOfWeek[UnsignedNum])
FirstDayOfWeek = UnsignedNum;
FirstDayOfWeek = Par_GetParToUnsigned ("FirstDayOfWeek",0,6,
Cal_FIRST_DAY_OF_WEEK_DEFAULT);
if (!Cal_DayIsValidAsFirstDayOfWeek[FirstDayOfWeek])
FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT;
return FirstDayOfWeek;
}
@ -184,7 +182,7 @@ void Cal_DrawCurrentMonth (void)
/***** Get list of holidays *****/
if (!Gbl.Hlds.LstIsRead)
{
Gbl.Hlds.SelectedOrderType = Hld_ORDER_BY_START_DATE;
Gbl.Hlds.SelectedOrder = Hld_ORDER_BY_START_DATE;
Hld_GetListHolidays ();
}
@ -240,7 +238,7 @@ void Cal_DrawCalendar (void)
/***** Get list of holidays *****/
if (!Gbl.Hlds.LstIsRead)
{
Gbl.Hlds.SelectedOrderType = Hld_ORDER_BY_START_DATE;
Gbl.Hlds.SelectedOrder = Hld_ORDER_BY_START_DATE;
Hld_GetListHolidays ();
}

View File

@ -85,7 +85,7 @@ static bool Ctr_CheckIfICanCreateCentres (void);
static void Ctr_PutIconsListCentres (void);
static void Ctr_PutIconToEditCentres (void);
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_FreePhotoAttribution (char **PhotoAttribution);
static void Ctr_ListCentresForEdition (void);
@ -718,7 +718,7 @@ void Ctr_ShowCtrsOfCurrentIns (void)
if (Gbl.CurrentIns.Ins.InsCod > 0)
{
/***** Get parameter with the type of order in the list of centres *****/
Ctr_GetParamCtrOrderType ();
Ctr_GetParamCtrOrder ();
/***** Get list of centres *****/
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 **********/
/*****************************************************************************/
static void Ctr_GetParamCtrOrderType (void)
static void Ctr_GetParamCtrOrder (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Ctrs.SelectedOrderType = (tCtrsOrderType) UnsignedNum;
else
Gbl.Ctrs.SelectedOrderType = Ctr_DEFAULT_ORDER_TYPE;
Gbl.Ctrs.SelectedOrder = (Ctr_Order_t) Par_GetParToUnsigned ("Order",
(unsigned) Ctr_ORDER_BY_CENTRE,
(unsigned) Ctr_ORDER_BY_NUM_TCHS,
(unsigned) Ctr_ORDER_DEFAULT);
}
/*****************************************************************************/
@ -971,7 +967,7 @@ void Ctr_GetListCentres (long InsCod)
struct Centre *Ctr;
/***** Get centres from database *****/
switch (Gbl.Ctrs.SelectedOrderType)
switch (Gbl.Ctrs.SelectedOrder)
{
case Ctr_ORDER_BY_CENTRE:
sprintf (OrderBySubQuery,"FullName");
@ -2073,7 +2069,6 @@ void Ctr_ChangeCtrStatus (void)
extern const char *Txt_The_status_of_the_centre_X_has_changed;
struct Centre *Ctr;
char Query[256];
char UnsignedNum[10 + 1];
Ctr_Status_t Status;
Ctr_StatusTxt_t StatusTxt;
@ -2084,8 +2079,9 @@ void Ctr_ChangeCtrStatus (void)
Ctr->CtrCod = Ctr_GetAndCheckParamOtherCtrCod ();
/* Get parameter with status */
Par_GetParToText ("Status",UnsignedNum,1);
if (sscanf (UnsignedNum,"%u",&Status) != 1)
Status = (Ctr_Status_t) Par_GetParToUnsigned ("Status",0,UINT_MAX,
(unsigned) Ctr_WRONG_STATUS);
if (Status == Ctr_WRONG_STATUS)
Lay_ShowErrorAndExit ("Wrong status.");
StatusTxt = Ctr_GetStatusTxtFromStatusBits (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_Students_ABBREVIATION;
extern const char *Txt_Status;
tCtrsOrderType Order;
Ctr_Order_t Order;
fprintf (Gbl.F.Out,"<tr>"
"<th></th>");
@ -2532,13 +2528,13 @@ static void Ctr_PutHeadCentresForSeeing (bool OrderSelectable)
Act_FormStart (ActSeeCtr);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
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,"%s",Txt_CENTRES_ORDER[Order]);
if (OrderSelectable)
{
if (Order == Gbl.Ctrs.SelectedOrderType)
if (Order == Gbl.Ctrs.SelectedOrder)
fprintf (Gbl.F.Out,"</u>");
fprintf (Gbl.F.Out,"</a>");
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_REMOVED = (1 << 1), // Centre has been removed
} Ctr_Status_Bits_t;
typedef unsigned Ctr_Status_t;
#define Ctr_WRONG_STATUS ((Ctr_Status_t) UINT_MAX)
#define Ctr_NUM_STATUS_TXT 4
typedef enum
@ -78,9 +80,9 @@ typedef enum
{
Ctr_ORDER_BY_CENTRE = 0,
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 ****************************/

View File

@ -191,13 +191,15 @@
/****************************** 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 JS_FILE "swad16.123.js"
// Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/*
Version 16.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.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)

View File

@ -72,7 +72,7 @@ static void Cty_PutIconsListCountries (void);
static void Cty_PutIconToEditCountries (void);
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_FreeMapAttribution (char **MapAttribution);
static void Cty_ListCountriesForEdition (void);
@ -498,7 +498,7 @@ void Cty_ListCountries (void)
void Cty_ListCountries1 (void)
{
/***** Get parameter with the type of order in the list of countries *****/
Cty_GetParamCtyOrderType ();
Cty_GetParamCtyOrder ();
/***** Get list of countries *****/
Cty_GetListCountries (Cty_GET_EXTRA_DATA);
@ -518,7 +518,7 @@ void Cty_ListCountries2 (void)
extern const char *Txt_Students_ABBREVIATION;
extern const char *Txt_Other_countries;
extern const char *Txt_Country_unspecified;
Cty_CtysOrderType_t Order;
Cty_Order_t Order;
unsigned NumCty;
const char *BgColor;
@ -536,10 +536,10 @@ void Cty_ListCountries2 (void)
Act_FormStart (ActSeeCty);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
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,"%s",Txt_COUNTRIES_ORDER[Order]);
if (Order == Gbl.Ctys.SelectedOrderType)
if (Order == Gbl.Ctys.SelectedOrder)
fprintf (Gbl.F.Out,"</u>");
fprintf (Gbl.F.Out,"</a>");
Act_FormEnd ();
@ -887,16 +887,12 @@ void Cty_WriteScriptGoogleGeochart (void)
/******** 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];
unsigned UnsignedNum;
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Ctys.SelectedOrderType = (Cty_CtysOrderType_t) UnsignedNum;
else
Gbl.Ctys.SelectedOrderType = Cty_DEFAULT_ORDER_TYPE;
Gbl.Ctys.SelectedOrder = (Cty_Order_t) Par_GetParToUnsigned ("Order",
(unsigned) Cty_ORDER_BY_COUNTRY,
(unsigned) Cty_ORDER_BY_NUM_USRS,
(unsigned) Cty_ORDER_DEFAULT);
}
/*****************************************************************************/
@ -908,7 +904,7 @@ void Cty_EditCountries (void)
extern const char *Txt_No_countries_have_been_created;
/***** Get list of countries *****/
Gbl.Ctys.SelectedOrderType = Cty_ORDER_BY_COUNTRY;
Gbl.Ctys.SelectedOrder = Cty_ORDER_BY_COUNTRY;
Cty_GetListCountries (Cty_GET_EXTRA_DATA);
if (!Gbl.Ctys.Num)
@ -986,7 +982,7 @@ void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData)
Cty_MAX_LENGTH_SUBQUERY_CTYS);
}
switch (Gbl.Ctys.SelectedOrderType)
switch (Gbl.Ctys.SelectedOrder)
{
case Cty_ORDER_BY_COUNTRY:
sprintf (OrderBySubQuery,"Name_%s",

View File

@ -60,9 +60,9 @@ typedef enum
{
Cty_ORDER_BY_COUNTRY = 0,
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
{
@ -89,7 +89,7 @@ void Cty_DrawCountryMap (struct Country *Cty,const char *Class);
bool Cty_CheckIfCountryMapExists (struct Country *Cty);
void Cty_WriteScriptGoogleGeochart (void);
void Cty_PutHiddenParamCtyOrderType (void);
void Cty_PutHiddenParamCtyOrder (void);
void Cty_EditCountries (void);
void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData);
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;
struct Course *Crs;
char Query[256];
char UnsignedNum[10 + 1];
Crs_Status_t Status;
Crs_StatusTxt_t StatusTxt;
@ -2774,8 +2773,9 @@ void Crs_ChangeCrsStatus (void)
Crs->CrsCod = Crs_GetAndCheckParamOtherCrsCod ();
/* Get parameter with status */
Par_GetParToText ("Status",UnsignedNum,1);
if (sscanf (UnsignedNum,"%u",&Status) != 1)
Status = (Crs_Status_t) Par_GetParToUnsigned ("Status",0,UINT_MAX,
(unsigned) Crs_WRONG_STATUS);
if (Status == Crs_WRONG_STATUS)
Lay_ShowErrorAndExit ("Wrong status.");
StatusTxt = Crs_GetStatusTxtFromStatusBits (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_X_courses_have_been_eliminated;
char UnsignedStr[10 + 1];
unsigned MonthsWithoutAccess;
unsigned long SecondsWithoutAccess;
char Query[1024];
@ -3375,11 +3374,11 @@ void Crs_RemoveOldCrss (void)
long CrsCod;
/***** Get parameter with number of months without access *****/
Par_GetParToText ("Months",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&MonthsWithoutAccess) != 1)
Lay_ShowErrorAndExit ("Number of months without clicks is missing.");
if (MonthsWithoutAccess < Crs_MIN_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS ||
MonthsWithoutAccess > Crs_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS)
MonthsWithoutAccess = Par_GetParToUnsigned ("Months",
Crs_MIN_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS,
Crs_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS,
UINT_MAX);
if (MonthsWithoutAccess == UINT_MAX)
Lay_ShowErrorAndExit ("Wrong number of months without clicks.");
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_REMOVED = (1 << 1), // Course has been removed
} Crs_Status_Bits_t;
typedef unsigned Crs_Status_t;
#define Crs_WRONG_STATUS ((Crs_Status_t) UINT_MAX)
#define Crs_NUM_STATUS_TXT 4
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,
unsigned *Day,unsigned *Month,unsigned *Year)
{
char UnsignedStr[10 + 1];
/**** Get day ****/
Par_GetParToText (ParamNameDay,UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",Day) != 1)
*Day = 0;
*Day = Par_GetParToUnsigned (ParamNameDay ,1,31,0);
/**** Get month ****/
Par_GetParToText (ParamNameMonth,UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",Month) != 1)
*Month = 0;
*Month = Par_GetParToUnsigned (ParamNameMonth,1,12,0);
/**** Get year ****/
Par_GetParToText (ParamNameYear,UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",Year) != 1)
*Year = 0;
*Year = Par_GetParToUnsigned (ParamNameYear ,0,UINT_MAX,0);
}
/*****************************************************************************/

View File

@ -2202,7 +2202,6 @@ void Deg_ChangeDegStatus (void)
extern const char *Txt_The_status_of_the_degree_X_has_changed;
struct Degree *Deg;
char Query[256];
char UnsignedNum[10 + 1];
Deg_Status_t Status;
Deg_StatusTxt_t StatusTxt;
@ -2213,8 +2212,9 @@ void Deg_ChangeDegStatus (void)
Deg->DegCod = Deg_GetAndCheckParamOtherDegCod ();
/* Get parameter with status */
Par_GetParToText ("Status",UnsignedNum,1);
if (sscanf (UnsignedNum,"%u",&Status) != 1)
Status = (Deg_Status_t) Par_GetParToUnsigned ("Status",0,UINT_MAX,
(unsigned) Deg_WRONG_STATUS);
if (Status == Deg_WRONG_STATUS)
Lay_ShowErrorAndExit ("Wrong status.");
StatusTxt = Deg_GetStatusTxtFromStatusBits (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_REMOVED = (1 << 1), // Degree has been removed
} Deg_Status_Bits_t;
typedef unsigned Deg_Status_t;
#define Deg_WRONG_STATUS ((Deg_Status_t) UINT_MAX)
#define Deg_NUM_STATUS_TXT 4
typedef enum

View File

@ -61,7 +61,7 @@ extern struct Globals Gbl;
/***************************** Private prototypes ****************************/
/*****************************************************************************/
static void Dpt_GetParamDptOrderType (void);
static void Dpt_GetParamDptOrder (void);
static void Dpt_PutIconToEditDpts (void);
static void Dpt_ListDepartmentsForEdition (void);
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_Other_departments;
extern const char *Txt_Department_unspecified;
tDptsOrderType Order;
Dpt_Order_t Order;
unsigned NumDpt;
unsigned NumTchsInsWithDpt = 0; // Number of teachers from the current institution with department
unsigned NumTchsInOtherDpts;
@ -91,7 +91,7 @@ void Dpt_SeeDepts (void)
if (Gbl.CurrentIns.Ins.InsCod > 0) // Institution selected
{
/***** Get parameter with the type of order in the list of departments *****/
Dpt_GetParamDptOrderType ();
Dpt_GetParamDptOrder ();
/***** Get list of departments *****/
Dpt_GetListDepartments (Gbl.CurrentIns.Ins.InsCod);
@ -110,10 +110,10 @@ void Dpt_SeeDepts (void)
Act_FormStart (ActSeeDpt);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
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,"%s",Txt_DEPARTMENTS_ORDER[Order]);
if (Order == Gbl.Dpts.SelectedOrderType)
if (Order == Gbl.Dpts.SelectedOrder)
fprintf (Gbl.F.Out,"</u>");
fprintf (Gbl.F.Out,"</a>");
Act_FormEnd ();
@ -191,16 +191,12 @@ void Dpt_SeeDepts (void)
/******** 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];
unsigned UnsignedNum;
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Dpts.SelectedOrderType = (tDptsOrderType) UnsignedNum;
else
Gbl.Dpts.SelectedOrderType = Dpt_DEFAULT_ORDER_TYPE;
Gbl.Dpts.SelectedOrder = (Dpt_Order_t) Par_GetParToUnsigned ("Order",
(unsigned) Dpt_ORDER_BY_DEPARTMENT,
(unsigned) Dpt_ORDER_BY_NUM_TCHS,
(unsigned) Dpt_ORDER_DEFAULT);
}
/*****************************************************************************/
@ -273,7 +269,7 @@ void Dpt_GetListDepartments (long InsCod)
struct Department *Dpt;
/***** Get departments from database *****/
switch (Gbl.Dpts.SelectedOrderType)
switch (Gbl.Dpts.SelectedOrder)
{
case Dpt_ORDER_BY_DEPARTMENT:
sprintf (OrderBySubQuery,"FullName");

View File

@ -48,9 +48,9 @@ typedef enum
{
Dpt_ORDER_BY_DEPARTMENT = 0,
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 *****************************/

View File

@ -52,14 +52,14 @@
/****************************** Internal types *******************************/
/*****************************************************************************/
#define Enr_NUM_ACTIONS_REG_REM_USRS 5
typedef enum
{
Enr_REGISTER_SPECIFIED_USRS_IN_CRS = 0,
Enr_REMOVE_SPECIFIED_USRS_FROM_CRS = 1,
Enr_REMOVE_NOT_SPECIFIED_USRS_FROM_CRS = 2,
Enr_UPDATE_USRS_IN_CRS = 3,
Enr_ELIMINATE_USRS_FROM_PLATFORM = 4,
Enr_USRS_UNKNOWN_ACTION = 0,
Enr_REGISTER_SPECIFIED_USRS_IN_CRS = 1,
Enr_REMOVE_SPECIFIED_USRS_FROM_CRS = 2,
Enr_REMOVE_NOT_SPECIFIED_USRS_FROM_CRS = 3,
Enr_UPDATE_USRS_IN_CRS = 4,
Enr_ELIMINATE_USRS_FROM_PLATFORM = 5,
} Enr_RegRemUsrsAction_t;
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_X_users_have_been_eliminated;
char UnsignedStr[10 + 1];
unsigned MonthsWithoutAccess;
time_t SecondsWithoutAccess;
char Query[1024];
@ -723,11 +722,11 @@ void Enr_RemoveOldUsrs (void)
struct UsrData UsrDat;
/***** Get parameter with number of months without access *****/
Par_GetParToText ("Months",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&MonthsWithoutAccess) != 1)
Lay_ShowErrorAndExit ("Number of months is missing.");
if (MonthsWithoutAccess < Usr_MIN_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS ||
MonthsWithoutAccess > Usr_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS)
MonthsWithoutAccess = Par_GetParToUnsigned ("Months",
Usr_MIN_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS,
Usr_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS,
UINT_MAX);
if (MonthsWithoutAccess == UINT_MAX)
Lay_ShowErrorAndExit ("Wrong number of months.");
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)
{
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_No_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_One_user_has_been_enrolled;
extern const char *Txt_X_users_have_been_enrolled_including_possible_repetitions;
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
struct
{
bool RemoveUsrs;
@ -1267,7 +1263,6 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
struct UsrData UsrDat;
bool ItLooksLikeAUsrID;
Enr_RegRemUsrsAction_t RegRemUsrsAction;
bool ErrorInForm = false;
/***** Check the role of users to register / remove *****/
switch (Role)
@ -1294,243 +1289,110 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
WhatToDo.EliminateUsrs = false;
WhatToDo.RegisterUsrs = false;
Par_GetParToText ("RegRemAction",UnsignedStr,1);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum < Enr_NUM_ACTIONS_REG_REM_USRS)
switch (RegRemUsrsAction = (Enr_RegRemUsrsAction_t) UnsignedNum)
{
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
RegRemUsrsAction = (Enr_RegRemUsrsAction_t) Par_GetParToUnsigned ("RegRemAction",
(unsigned) Enr_REGISTER_SPECIFIED_USRS_IN_CRS,
(unsigned) Enr_ELIMINATE_USRS_FROM_PLATFORM,
(unsigned) Enr_USRS_UNKNOWN_ACTION);
switch (RegRemUsrsAction)
{
Lay_ShowAlert (Lay_WARNING,Txt_You_must_specify_in_step_2_the_action_to_perform);
/* Show form again */
Enr_ShowFormRegRemSeveralUsrs (Role);
ErrorInForm = true;
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;
}
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 *****/
LstGrps.NumGrps = 0;
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 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 *****/
LstGrps.GrpCods = NULL; // Initialized to avoid bug reported by Coverity
LstGrps.NumGrps = 0; // Initialized to avoid bug reported by Coverity
Grp_GetLstCodsGrpWanted (&LstGrps);
/***** Get the list of groups to which register/remove students *****/
LstGrps.GrpCods = NULL; // Initialized to avoid bug reported by Coverity
LstGrps.NumGrps = 0; // Initialized to avoid bug reported by Coverity
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 *****/
if (WhatToDo.RegisterUsrs &&
Role == Rol_STUDENT &&
LstGrps.NumGrps >= 2)
/* Check if I have selected more than one group of single enrollment */
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)
/***** 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 &&
Role == Rol_STUDENT &&
LstGrps.NumGrps >= 2)
/* Check if I have selected more than one group of single enrollment */
if (!Grp_CheckIfSelectionGrpsIsValid (&LstGrps))
{
/***** 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;
/* 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);
/***** Loop 1: go through form list setting if a student must be removed *****/
/* Get users from a list of users' IDs */
Ptr = ListUsrsIDs;
while (*Ptr)
{
/* 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 used by lists of groups and abort */
Grp_FreeListCodGrp (&LstGrps);
Grp_FreeListGrpTypesAndGrps ();
return;
}
}
/***** Free memory for users list *****/
Usr_FreeUsrsList (Role);
}
/***** 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);
/***** Register users *****/
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 !!!!!!
/***** 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)
{
/***** 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;
while (*Ptr)
{
/* Reset user */
UsrDat.UsrCod = -1L;
ItLooksLikeAUsrID = false;
/* Find next string in text */
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.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 ((UsrDat.UsrCod = Nck_GetUsrCodFromNickname (UsrDat.UsrIDNickOrEmail)) > 0)
@ -1549,7 +1411,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
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)
{
@ -1564,100 +1426,221 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
Str_RemoveLeadingZeros (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
Str_Copy (UsrDat.IDs.List[0].ID,UsrDat.UsrIDNickOrEmail,
ID_MAX_LENGTH_USR_ID);
Str_ConvertToUpperText (UsrDat.IDs.List[0].ID);
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);
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 used for user's data *****/
Usr_UsrDataDestructor (&UsrDat);
/***** Free memory for users list *****/
Usr_FreeUsrsList (Role);
}
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)
/***** Register users *****/
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 !!!!!!
{
/***** Get users from a list of users' IDs ******/
Ptr = ListUsrsIDs;
while (*Ptr)
{
if (WhatToDo.EliminateUsrs) // Eliminate completely from the platform
switch (NumUsrsEliminated)
/* Reset user */
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:
Lay_ShowAlert (Lay_INFO,Txt_No_user_has_been_eliminated);
break;
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;
ListUsrCods.NumUsrs = 1;
Usr_AllocateListUsrCods (&ListUsrCods);
ListUsrCods.Lst[0] = UsrDat.UsrCod;
}
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:
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);
break;
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))
{
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:
Lay_ShowAlert (Lay_INFO,Txt_No_user_has_been_enrolled);
Lay_ShowAlert (Lay_INFO,Txt_No_user_has_been_eliminated);
break;
case 1:
Lay_ShowAlert (Lay_SUCCESS,Txt_One_user_has_been_enrolled);
Lay_ShowAlert (Lay_SUCCESS,Txt_One_user_has_been_eliminated);
break;
default:
sprintf (Gbl.Message,Txt_X_users_have_been_enrolled_including_possible_repetitions,
NumUsrsRegistered);
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)
{
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);
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];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
char UnsignedStr[10 + 1];
Rol_Role_t RoleFromForm;
long ReqCod = -1L;
unsigned NumUsrsToBeNotifiedByEMail;
@ -1870,8 +1852,10 @@ void Enr_SignUpInCrs (void)
else
{
/***** Get new role from record form *****/
Par_GetParToText ("Role",UnsignedStr,10);
RoleFromForm = Rol_ConvertUnsignedStrToRole (UnsignedStr);
RoleFromForm = (Rol_Role_t) Par_GetParToUnsigned ("Role",
0,
Rol_NUM_ROLES - 1,
(unsigned) Rol_UNKNOWN);
/* Check if role is correct */
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_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_THE_USER_X_has_been_enrolled_in_the_course_Y;
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
bool ItsMe;
Rol_Role_t OldRole;
Rol_Role_t NewRole;
@ -3658,106 +3640,107 @@ void Enr_ModifyUsr1 (void)
ItsMe = (Gbl.Usrs.Other.UsrDat.UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod);
/***** Get the action to do *****/
Par_GetParToText ("RegRemAction",UnsignedStr,1);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum < Enr_NUM_ACTIONS_REG_REM_ONE_USR)
switch ((Gbl.Usrs.RegRemAction = (Enr_RegRemOneUsrAction_t) UnsignedNum))
Gbl.Usrs.RegRemAction = (Enr_RegRemOneUsrAction_t)
Par_GetParToUnsigned ("RegRemAction",
(unsigned) Enr_REGISTER_MODIFY_ONE_USR_IN_CRS,
(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:
if (ItsMe || Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER)
/***** Get user's name from record form *****/
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 *****/
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)
OldRole = Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB; // Remember old role before changing it
if (NewRole != OldRole) // The role must be updated
{
/***** Get new role from record form *****/
NewRole = Rec_GetRoleFromRecordForm ();
/* Modify role */
Enr_ModifyRoleInCurrentCrs (&Gbl.Usrs.Other.UsrDat,NewRole);
/***** 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
{
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 ();
/* 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
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;
{
/* 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;
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;
else
Gbl.Error = true;
break;
}
}
else
Gbl.Error = true;
@ -3822,6 +3805,8 @@ void Enr_ModifyUsr2 (void)
case Enr_ELIMINATE_ONE_USR_FROM_PLATFORM:
Acc_ReqRemAccountOrRemAccount (Acc_REQUEST_REMOVE_USR);
break;
default:
break;
}
}

View File

@ -49,19 +49,19 @@ typedef enum
Enr_SET_ACCEPTED_TO_TRUE,
} Enr_KeepOrSetAccepted_t;
#define Enr_NUM_ACTIONS_REG_REM_ONE_USR 10
typedef enum
{
Enr_REGISTER_MODIFY_ONE_USR_IN_CRS = 0,
Enr_REGISTER_ONE_DEGREE_ADMIN = 1,
Enr_REGISTER_ONE_CENTRE_ADMIN = 2,
Enr_REGISTER_ONE_INSTITUTION_ADMIN = 3,
Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE = 4,
Enr_REMOVE_ONE_USR_FROM_CRS = 5,
Enr_REMOVE_ONE_DEGREE_ADMIN = 6,
Enr_REMOVE_ONE_CENTRE_ADMIN = 7,
Enr_REMOVE_ONE_INSTITUTION_ADMIN = 8,
Enr_ELIMINATE_ONE_USR_FROM_PLATFORM = 9,
Enr_ONE_USR_UNKNOWN_ACTION = 0,
Enr_REGISTER_MODIFY_ONE_USR_IN_CRS = 1,
Enr_REGISTER_ONE_DEGREE_ADMIN = 2,
Enr_REGISTER_ONE_CENTRE_ADMIN = 3,
Enr_REGISTER_ONE_INSTITUTION_ADMIN = 4,
Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE = 5,
Enr_REMOVE_ONE_USR_FROM_CRS = 6,
Enr_REMOVE_ONE_DEGREE_ADMIN = 7,
Enr_REMOVE_ONE_CENTRE_ADMIN = 8,
Enr_REMOVE_ONE_INSTITUTION_ADMIN = 9,
Enr_ELIMINATE_ONE_USR_FROM_PLATFORM = 10,
} Enr_RegRemOneUsrAction_t;
/*****************************************************************************/

View File

@ -116,7 +116,6 @@ void Exa_PutFrmEditAExamAnnouncement (void)
static long Exa_GetParamsExamAnnouncement (void)
{
char UnsignedStr[10 + 1];
long ExaCod;
/***** Get the code of the exam announcement *****/
@ -130,11 +129,10 @@ static long Exa_GetParamsExamAnnouncement (void)
Crs_MAX_LENGTH_COURSE_FULL_NAME);
/***** Get the year *****/
Par_GetParToText ("Year",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&Gbl.ExamAnns.ExaDat.Year) != 1)
Gbl.ExamAnns.ExaDat.Year = Gbl.CurrentCrs.Crs.Year;
if (Gbl.ExamAnns.ExaDat.Year > Deg_MAX_YEARS_PER_DEGREE)
Gbl.ExamAnns.ExaDat.Year = Gbl.CurrentCrs.Crs.Year;
Gbl.ExamAnns.ExaDat.Year = Par_GetParToUnsigned ("Year",
0, // N.A.
Deg_MAX_YEARS_PER_DEGREE,
Gbl.CurrentCrs.Crs.Year);
/***** Get the type of exam announcement *****/
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 *****/
Par_GetParToText ("ExamHour",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&Gbl.ExamAnns.ExaDat.StartTime.Hour) != 1)
Gbl.ExamAnns.ExaDat.StartTime.Hour = 0;
if (Gbl.ExamAnns.ExaDat.StartTime.Hour > 23)
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;
Gbl.ExamAnns.ExaDat.StartTime.Hour = Par_GetParToUnsigned ("ExamHour",
0,23,0);
Gbl.ExamAnns.ExaDat.StartTime.Minute = Par_GetParToUnsigned ("ExamMinute",
0,59,0);
/***** Get the duration of the exam *****/
Par_GetParToText ("DurationHour",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&Gbl.ExamAnns.ExaDat.Duration.Hour) != 1)
Gbl.ExamAnns.ExaDat.Duration.Hour = 0;
if (Gbl.ExamAnns.ExaDat.Duration.Hour > 23)
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;
Gbl.ExamAnns.ExaDat.Duration.Hour = Par_GetParToUnsigned ("DurationHour",
0,23,0);
Gbl.ExamAnns.ExaDat.Duration.Minute = Par_GetParToUnsigned ("DurationMinute",
0,59,0);
/***** Get the place where the exam will happen *****/
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)
{
char LongStr[1 + 10 + 1];
long GrpCod;
/***** Get parameter with group code *****/
if (Par_GetParToText ("GrpCod",LongStr,1 + 10))
{
if ((GrpCod = Str_ConvertStrCodToLongCod (LongStr)) <= 0)
GrpCod = -1L;
if ((GrpCod = Par_GetParToLong ("GrpCod")) > 0)
return GrpCod;
}
else // Parameter GrpCod not found!
else
/***** Try to get group code from database *****/
switch (Gbl.Action.Act)
{
@ -9870,19 +9864,10 @@ static bool Brw_GetParamPublicFile (void)
static Brw_License_t Brw_GetParLicense (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
/* Get file license from form */
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;
return (Brw_License_t) Par_GetParToUnsigned ("License",
(unsigned) Brw_LICENSE_UNKNOWN,
(unsigned) Brw_LICENSE_CC_BY_NC_ND,
(unsigned) Brw_LICENSE_UNKNOWN);
}
/*****************************************************************************/
@ -11603,8 +11588,8 @@ void Brw_AskRemoveOldFiles (void)
The_ClassForm[Gbl.Prefs.Theme],
Txt_Remove_files_older_than_PART_1_OF_2);
fprintf (Gbl.F.Out,"<select name=\"Months\">");
for (Months = Brw_MIN_MONTHS_TO_REMOVE_OLD_FILES;
Months < Brw_MAX_MONTHS_IN_BRIEFCASE;
for (Months = Brw_MIN_MONTHS_TO_REMOVE_OLD_FILES;
Months <= Brw_MAX_MONTHS_IN_BRIEFCASE;
Months++)
{
fprintf (Gbl.F.Out,"<option");
@ -11636,7 +11621,6 @@ void Brw_RemoveOldFilesBriefcase (void)
extern const char *Txt_Files_removed;
extern const char *Txt_Links_removed;
extern const char *Txt_Folders_removed;
char UnsignedStr[10 + 1];
unsigned Months;
struct Brw_NumObjects Removed;
@ -11646,12 +11630,10 @@ void Brw_RemoveOldFilesBriefcase (void)
if (Brw_GetIfCrsAssigWorksFileBrowser ())
{
/***** Get parameter with number of months without access *****/
Par_GetParToText ("Months",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&Months) != 1)
Lay_ShowErrorAndExit ("Number of months is missing.");
if (Months < Brw_MIN_MONTHS_TO_REMOVE_OLD_FILES ||
Months >= Brw_MAX_MONTHS_IN_BRIEFCASE)
Lay_ShowErrorAndExit ("Wrong number of months.");
Months = Par_GetParToUnsigned ("Months",
Brw_MIN_MONTHS_TO_REMOVE_OLD_FILES,
Brw_MAX_MONTHS_IN_BRIEFCASE,
Brw_DEF_MONTHS_TO_REMOVE_OLD_FILES);
/***** Remove old files *****/
Brw_RemoveOldFilesInBrowser (Months,&Removed);

View File

@ -1536,7 +1536,7 @@ static void For_PutParamWhichForum (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;
unsigned NumThr,NumThrs;
unsigned NumThrInScreen; // From 0 to Pag_ITEMS_PER_PAGE-1
For_ForumOrderType_t Order;
For_Order_t Order;
long ThrCods[Pag_ITEMS_PER_PAGE];
struct Pagination PaginationThrs;
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';
break;
}
switch (Gbl.Forum.SelectedOrderType)
switch (Gbl.Forum.SelectedOrder)
{
case For_FIRST_MSG:
sprintf (Query,"SELECT forum_thread.ThrCod"
@ -2685,10 +2685,10 @@ void For_ShowForumThrs (void)
For_PutParamsForumInsDegCrs ();
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
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,"%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,"</a>");
Act_FormEnd ();
@ -3392,7 +3392,7 @@ void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],struct Pagination *Pagi
unsigned UniqueId;
struct ForumThread Thr;
struct UsrData UsrDat;
For_ForumOrderType_t Order;
For_Order_t Order;
time_t TimeUTC;
struct Pagination PaginationPsts;
const char *Style;
@ -3580,7 +3580,7 @@ void For_GetThrData (struct ForumThread *Thr)
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned long NumRows;
For_ForumOrderType_t Order;
For_Order_t Order;
/***** Get data of a thread from database *****/
sprintf (Query,"SELECT m0.PstCod,m1.PstCod,m0.UsrCod,m1.UsrCod,"
@ -3727,22 +3727,19 @@ void For_ShowThrPsts (void)
void For_GetParamsForum (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
/***** Get which forums I want to see *****/
Par_GetParToText ("WhichForum",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Forum.WhichForums = (For_ForumOrderType_t) UnsignedNum;
else
Gbl.Forum.WhichForums = For_DEFAULT_WHICH_FORUMS;
Gbl.Forum.WhichForums = (For_WhichForums_t)
Par_GetParToUnsigned ("WhichForum",
(unsigned) For_ONLY_CURRENT_FORUMS,
(unsigned) For_ALL_MY_FORUMS,
(unsigned) For_DEFAULT_WHICH_FORUMS);
/***** Get order type *****/
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Forum.SelectedOrderType = (For_ForumOrderType_t) UnsignedNum;
else
Gbl.Forum.SelectedOrderType = For_DEFAULT_ORDER;
Gbl.Forum.SelectedOrder = (For_Order_t)
Par_GetParToUnsigned ("Order",
(unsigned) For_FIRST_MSG,
(unsigned) For_LAST_MSG,
(unsigned) For_DEFAULT_ORDER);
/***** Get parameter with code of institution *****/
Gbl.Forum.Ins.InsCod = Par_GetParToLong ("ForInsCod");

View File

@ -81,7 +81,7 @@ typedef enum
{
For_FIRST_MSG = 0,
For_LAST_MSG = 1,
} For_ForumOrderType_t;
} For_Order_t;
#define For_DEFAULT_ORDER For_LAST_MSG
#define For_MAX_BYTES_FORUM_NAME (512 - 1)

View File

@ -25,7 +25,6 @@
/********************************* Headers ***********************************/
/*****************************************************************************/
#include <limits.h> // For INT_MAX, LONG_MAX
#include <linux/stddef.h> // For NULL
#include <locale.h> // For setlocale
#include <stdlib.h> // For exit, system, malloc, calloc, free, etc
@ -237,7 +236,7 @@ void Gbl_InitializeGlobals (void)
Gbl.Inss.Num = 0;
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.CtyCod = -1L;
Gbl.Inss.EditingIns.ShrtName[0] = '\0';
@ -248,7 +247,7 @@ void Gbl_InitializeGlobals (void)
Gbl.Ctys.Num = 0;
Gbl.Ctys.Lst = NULL;
Gbl.Ctys.SelectedOrderType = Cty_DEFAULT_ORDER_TYPE;
Gbl.Ctys.SelectedOrder = Cty_ORDER_DEFAULT;
Gbl.Ctys.EditingCty.CtyCod = -1L;
for (Lan = (Txt_Language_t) 1;
Lan <= Txt_NUM_LANGUAGES;
@ -257,7 +256,7 @@ void Gbl_InitializeGlobals (void)
Gbl.Ctrs.Num = 0;
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.InsCod = -1L;
Gbl.Ctrs.EditingCtr.CtrCod = -1L;
@ -267,7 +266,7 @@ void Gbl_InitializeGlobals (void)
Gbl.Dpts.Num = 0;
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.ShrtName[0] = '\0';
Gbl.Dpts.EditingDpt.FullName[0] = '\0';
@ -275,7 +274,7 @@ void Gbl_InitializeGlobals (void)
Gbl.Plcs.Num = 0;
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.ShrtName[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.Num = 0;
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.PlcCod = -1L;
Gbl.Hlds.EditingHld.HldTyp = Hld_HOLIDAY;
@ -311,7 +310,7 @@ void Gbl_InitializeGlobals (void)
Gbl.Degs.EditingCrs.FullName[0] = '\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.Num = 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.GrpCod = -1L; // -1L stands for the whole course
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.LstGrpsSel.GrpCods = NULL;
Gbl.CurrentCrs.Grps.LstGrpsSel.NumGrps = 0;
@ -341,23 +340,23 @@ void Gbl_InitializeGlobals (void)
Gbl.Syllabus.EditionIsActive = false;
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.Asgs.LstIsRead = false; // List is not read
Gbl.Asgs.Num = 0;
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.Num = 0;
Gbl.AttEvents.Lst = NULL;
Gbl.AttEvents.SelectedOrderType = Att_DEFAULT_ORDER_TYPE;
Gbl.AttEvents.SelectedOrder = Att_ORDER_DEFAULT;
Gbl.AttEvents.AttCod = -1L;
Gbl.Mails.Num = 0;
Gbl.Mails.Lst = NULL;
Gbl.Mails.SelectedOrderType = Mai_DEFAULT_ORDER_TYPE;
Gbl.Mails.SelectedOrder = Mai_ORDER_DEFAULT;
Gbl.Banners.Num = 0;
Gbl.Banners.Lst = NULL;
@ -375,7 +374,7 @@ void Gbl_InitializeGlobals (void)
Gbl.Links.EditingLnk.WWW[0] = '\0';
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.ClassPhoto.Cols = Usr_CLASS_PHOTO_COLS_DEF;
@ -406,7 +405,7 @@ void Gbl_InitializeGlobals (void)
/* Forums */
Gbl.Forum.ForumType = (For_ForumType_t) 0;
Gbl.Forum.WhichForums = For_DEFAULT_WHICH_FORUMS;
Gbl.Forum.SelectedOrderType = For_DEFAULT_ORDER;
Gbl.Forum.SelectedOrder = For_DEFAULT_ORDER;
Gbl.Forum.ThreadToMove = -1L;
/* User nickname */

View File

@ -192,35 +192,35 @@ struct Globals
unsigned Num; // Number of institutions
struct Instit *Lst; // List of institutions
struct Instit EditingIns;
Ins_InssOrderType_t SelectedOrderType;
Ins_Order_t SelectedOrder;
} Inss;
struct
{
unsigned Num; // Number of centres
struct Centre *Lst; // List of centres
struct Centre EditingCtr;
tCtrsOrderType SelectedOrderType;
Ctr_Order_t SelectedOrder;
} Ctrs;
struct
{
unsigned Num; // Number of countries
struct Country *Lst; // List of countries
struct Country EditingCty;
Cty_CtysOrderType_t SelectedOrderType;
Cty_Order_t SelectedOrder;
} Ctys;
struct
{
unsigned Num; // Number of departments
struct Department *Lst; // List of departments
struct Department EditingDpt;
tDptsOrderType SelectedOrderType;
Dpt_Order_t SelectedOrder;
} Dpts;
struct
{
unsigned Num; // Number of places
struct Place *Lst; // List of places
struct Place EditingPlc;
Plc_PlcsOrderType_t SelectedOrderType;
Plc_Order_t SelectedOrder;
} Plcs;
struct
{
@ -228,14 +228,14 @@ struct Globals
unsigned Num; // Number of holidays
struct Holiday *Lst; // List of holidays
struct Holiday EditingHld;
Hld_OrderType_t SelectedOrderType;
Hld_Order_t SelectedOrder;
} Hlds;
struct
{
unsigned Num; // Number of mail domains
struct Mail *Lst; // List of mail domains
struct Mail EditingMai;
Mai_MailDomainsOrderType_t SelectedOrderType;
Mai_DomainsOrder_t SelectedOrder;
} Mails;
struct
{
@ -411,7 +411,7 @@ struct Globals
bool LstIsRead; // Is the list already read from database, or it needs to be read?
unsigned Num; // Number of events
long *LstAgdCods; // List of agenda codes
Agd_Order_t SelectedOrderType;
Agd_Order_t SelectedOrder;
long AgdCodToEdit; // Used as parameter in contextual links
} Agenda;
struct
@ -454,7 +454,7 @@ struct Globals
struct GroupType GrpTyp;
long GrpCod;
char GrpName[Grp_MAX_LENGTH_GROUP_NAME + 1];
int MaxStudents;
unsigned MaxStudents;
bool Open;
bool FileZones;
struct ListCodGrps LstGrpsSel;
@ -552,7 +552,7 @@ struct Globals
bool LstIsRead; // Is the list already read from database, or it needs to be read?
unsigned Num; // Number of assignments
long *LstAsgCods; // List of assigment codes
Dat_StartEndTime_t SelectedOrderType;
Dat_StartEndTime_t SelectedOrder;
long AsgCodToEdit; // Used as parameter in contextual links
} Asgs;
struct
@ -560,7 +560,7 @@ struct Globals
bool LstIsRead; // Is the list already read from database, or it needs to be read?
unsigned Num; // Number of attendance events
struct AttendanceEvent *Lst; // List of attendance events
Dat_StartEndTime_t SelectedOrderType;
Dat_StartEndTime_t SelectedOrder;
long AttCod;
bool ShowDetails;
char *StrAttCodsSelected;
@ -575,7 +575,7 @@ struct Globals
struct Degree Deg;
struct Course Crs;
int Level;
For_ForumOrderType_t SelectedOrderType;
For_Order_t SelectedOrder;
char PathRelOld[PATH_MAX + 1];
long ThreadToMove;
} Forum;
@ -672,7 +672,7 @@ struct Globals
double FloatingPoint[2];
} Answer;
char ListAnsTypes[Tst_MAX_BYTES_LIST_ANSWER_TYPES + 1];
Tst_QuestionsOrder_t SelectedOrderType;
Tst_QuestionsOrder_t SelectedOrder;
struct
{
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?
unsigned Num; // Number of surveys
long *LstSvyCods; // List of survey codes
tSvysOrderType SelectedOrderType;
Svy_Order_t SelectedOrder;
long SvyCodToEdit; // Used as parameter in contextual links
long SvyQstCodToEdit; // Used as parameter in contextual links
} Svys;

View File

@ -25,7 +25,6 @@
/*********************************** Headers *********************************/
/*****************************************************************************/
#include <limits.h> // For INT_MAX
#include <linux/stddef.h> // For NULL
#include <stdlib.h> // For exit, system, malloc, free, rand, etc.
#include <string.h> // For string functions
@ -3085,7 +3084,8 @@ void Grp_RecFormNewGrpTyp (void)
/***** Get parameters from form *****/
/* 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 */
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_You_must_specify_the_name_of_the_new_group;
char UnsignedStr[10 + 1];
/***** Get parameters from form *****/
if ((Gbl.CurrentCrs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) > 0) // Group type valid
{
/* 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 */
Par_GetParToText ("MaxStudents",UnsignedStr,10);
Gbl.CurrentCrs.Grps.MaxStudents = Grp_ConvertToNumMaxStdsGrp (UnsignedStr);
Gbl.CurrentCrs.Grps.MaxStudents = Par_GetParToUnsigned ("MaxStudents",
0,
Grp_MAX_STUDENTS_IN_A_GROUP,
Grp_NUM_STUDENTS_NOT_LIMITED);
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 *****/
sprintf (Query,"INSERT INTO crs_grp (GrpTypCod,GrpName,MaxStudents,Open,FileZones)"
" 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");
/***** Write success message *****/
@ -3833,7 +3837,6 @@ void Grp_ChangeMaxStdsGrp (void)
struct GroupData GrpDat;
char Query[1024];
unsigned NewMaxStds;
char UnsignedStr[10 + 1];
/***** Get parameters of the form *****/
/* Get group code */
@ -3841,8 +3844,10 @@ void Grp_ChangeMaxStdsGrp (void)
Lay_ShowErrorAndExit ("Code of group is missing.");
/* Get the new maximum number of students of the group */
Par_GetParToText ("MaxStudents",UnsignedStr,10);
NewMaxStds = Grp_ConvertToNumMaxStdsGrp (UnsignedStr);
NewMaxStds = Par_GetParToUnsigned ("MaxStudents",
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 */
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");
/***** 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,
GrpDat.GrpName);
else
@ -3898,9 +3903,9 @@ unsigned Grp_ConvertToNumMaxStdsGrp (const char *StrMaxStudents)
unsigned MaxStudents;
if (sscanf (StrMaxStudents,"%u",&MaxStudents) != 1)
return INT_MAX;
return Grp_NUM_STUDENTS_NOT_LIMITED;
else if (MaxStudents > Grp_MAX_STUDENTS_IN_A_GROUP)
return INT_MAX;
return Grp_NUM_STUDENTS_NOT_LIMITED;
return MaxStudents;
}
@ -4245,43 +4250,40 @@ void Grp_ShowFormToSelWhichGrps (Act_Action_t Action,void (*FuncParams) ())
void Grp_GetParamWhichGrps (void)
{
static bool FirstTime = true;
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Grp_WhichGroups_t WhichGroupsDefault;
if (FirstTime)
{
FirstTime = false;
/***** Get which grous (my groups or all groups) *****/
Par_GetParToText ("WhichGrps",UnsignedStr,1);
if (UnsignedStr[0])
{
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
Lay_ShowErrorAndExit ("Which groups to show is missing.");
if (UnsignedNum >= 2)
Lay_ShowErrorAndExit ("Wrong parameter with which groups to show.");
Gbl.CurrentCrs.Grps.WhichGrps = (Grp_WhichGroups_t) UnsignedNum;
}
else // This parameter does not exist ==> set default value
switch (Gbl.Action.Act)
{
case ActSeeCrsTT:
case ActPrnCrsTT:
case ActChgCrsTT1stDay:
case ActSeeAsg:
case ActSeeAtt:
case ActSeeAllSvy:
Gbl.CurrentCrs.Grps.WhichGrps = Gbl.Usrs.Me.IBelongToCurrentCrs ? Grp_ONLY_MY_GROUPS : // If I belong to this course ==> see only my groups
Grp_ALL_GROUPS; // If I don't belong to this course ==> see all groups
break;
case ActSeeMyTT:
case ActPrnMyTT:
case ActChgMyTT1stDay:
Gbl.CurrentCrs.Grps.WhichGrps = Grp_ONLY_MY_GROUPS; // By default, see only my groups
break;
default: // Control never should enter here
Gbl.CurrentCrs.Grps.WhichGrps = Grp_ALL_GROUPS;
break;
}
/* Set default */
switch (Gbl.Action.Act)
{
case ActSeeCrsTT:
case ActPrnCrsTT:
case ActChgCrsTT1stDay:
case ActSeeAsg:
case ActSeeAtt:
case ActSeeAllSvy:
WhichGroupsDefault = Gbl.Usrs.Me.IBelongToCurrentCrs ? Grp_ONLY_MY_GROUPS : // If I belong to this course ==> see only my groups
Grp_ALL_GROUPS; // If I don't belong to this course ==> see all groups
break;
case ActSeeMyTT:
case ActPrnMyTT:
case ActChgMyTT1stDay:
WhichGroupsDefault = Grp_ONLY_MY_GROUPS; // By default, see only my groups
break;
default: // Control never should enter here
WhichGroupsDefault = Grp_WHICH_GROUPS_DEFAULT;
break;
}
/* Get parameter */
Gbl.CurrentCrs.Grps.WhichGrps = (Grp_WhichGroups_t)
Par_GetParToUnsigned ("WhichGrps",
(unsigned) Grp_ONLY_MY_GROUPS,
(unsigned) Grp_ALL_GROUPS,
(unsigned) WhichGroupsDefault);
}
}

View File

@ -38,6 +38,7 @@
#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_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 ********************************/
@ -63,6 +64,7 @@ struct GroupData
bool FileZones; // Group has file zones?
bool MultipleEnrollment;
};
struct Group
{
long GrpCod; // Code of group
@ -73,6 +75,7 @@ struct Group
bool FileZones; // Group has file zones?
bool ShowFileZone; // Show file zone of this group?
};
struct GroupType
{
long GrpTypCod; // Code of type of group
@ -84,6 +87,7 @@ struct GroupType
unsigned NumGrps; // Number of groups of this type
struct Group *LstGrps; // List of groups of this type
};
struct GroupTypes
{
struct GroupType *LstGrpTypes; // List of types of group
@ -91,22 +95,27 @@ struct GroupTypes
unsigned NumGrpsTotal; // Number of groups of any type
int NestedCalls; // Number of nested calls to the function that allocates memory for this list
};
struct ListCodGrps
{
long *GrpCods;
unsigned NumGrps;
int NestedCalls; // Number of nested calls to the function that allocates memory for this list
};
struct ListGrpsAlreadySelec
{
long GrpTypCod;
bool AlreadySelected;
};
typedef enum
{
Grp_ONLY_MY_GROUPS,
Grp_ALL_GROUPS,
} Grp_WhichGroups_t;
#define Grp_WHICH_GROUPS_DEFAULT Grp_ALL_GROUPS
typedef enum
{
Grp_ASSIGNMENT,

View File

@ -57,7 +57,7 @@ extern struct Globals Gbl;
/***************************** Private prototypes ****************************/
/*****************************************************************************/
static void Hld_GetParamHldOrderType (void);
static void Hld_GetParamHldOrder (void);
static void Hld_PutIconToEditHlds (void);
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_Holiday;
extern const char *Txt_All_places;
Hld_OrderType_t Order;
Hld_Order_t Order;
unsigned NumHld;
if (Gbl.CurrentIns.Ins.InsCod > 0)
{
/***** Get parameter with the type of order in the list of holidays *****/
Hld_GetParamHldOrderType ();
Hld_GetParamHldOrder ();
/***** Get list of holidays *****/
Hld_GetListHolidays ();
@ -109,10 +109,10 @@ void Hld_SeeHolidays (void)
Act_FormStart (ActSeeHld);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
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,"%s",Txt_HOLIDAYS_ORDER[Order]);
if (Order == Gbl.Hlds.SelectedOrderType)
if (Order == Gbl.Hlds.SelectedOrder)
fprintf (Gbl.F.Out,"</u>");
fprintf (Gbl.F.Out,"</a>");
Act_FormEnd ();
@ -179,16 +179,13 @@ void Hld_SeeHolidays (void)
/********* 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];
unsigned UnsignedNum;
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Hlds.SelectedOrderType = (Hld_OrderType_t) UnsignedNum;
else
Gbl.Hlds.SelectedOrderType = Hld_DEFAULT_ORDER_TYPE;
Gbl.Hlds.SelectedOrder = (Hld_Order_t)
Par_GetParToUnsigned ("Order",
(unsigned) Hld_ORDER_BY_PLACE,
(unsigned) Hld_ORDER_BY_START_DATE,
(unsigned) Hld_DEFAULT_ORDER_TYPE);
}
/*****************************************************************************/
@ -256,7 +253,7 @@ void Hld_GetListHolidays (void)
Hld_FreeListHolidays ();
/***** Get holidays from database *****/
switch (Gbl.Hlds.SelectedOrderType)
switch (Gbl.Hlds.SelectedOrder)
{
case Hld_ORDER_BY_PLACE:
sprintf (OrderBySubQuery,"Place,StartDate");
@ -443,10 +440,10 @@ static void Hld_GetDataOfHolidayByCod (struct Holiday *Hld)
static Hld_HolidayType_t Hld_GetParamHldType (void)
{
char UnsignedStr[10 + 1];
Par_GetParToText ("HldTyp",UnsignedStr,10);
return Hld_GetTypeOfHoliday (UnsignedStr);
return (Hld_HolidayType_t) Par_GetParToUnsigned ("HldTyp",
(unsigned) Hld_HOLIDAY,
(unsigned) Hld_NON_SCHOOL_PERIOD,
(unsigned) Hld_HOLIDAY_TYPE_DEFAULT);
}
/*****************************************************************************/

View File

@ -42,6 +42,7 @@ typedef enum
Hld_HOLIDAY = 0,
Hld_NON_SCHOOL_PERIOD = 1,
} Hld_HolidayType_t;
#define Hld_HOLIDAY_TYPE_DEFAULT Hld_HOLIDAY
typedef enum
{
@ -64,7 +65,7 @@ typedef enum
{
Hld_ORDER_BY_PLACE = 0,
Hld_ORDER_BY_START_DATE = 1,
} Hld_OrderType_t;
} Hld_Order_t;
#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)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
/***** Get parameter with the action to perform on image *****/
Par_GetParToText (ParamAction,UnsignedStr,10);
if (UnsignedStr[0])
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum < Img_NUM_ACTIONS)
return (Img_Action_t) UnsignedNum;
/***** Default action if none supplied *****/
return Img_ACTION_NO_IMAGE;
return (Img_Action_t) Par_GetParToUnsigned (ParamAction,
(unsigned) Img_ACTION_NEW_IMAGE,
(unsigned) Img_ACTION_NO_IMAGE,
(unsigned) Img_ACTION_NO_IMAGE); // Default action if none supplied
}
/*****************************************************************************/

View File

@ -1440,17 +1440,12 @@ static Inf_InfoType_t Inf_AsignInfoType (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
(introduction, teaching guide, bibliography, FAQ, links or evaluation) *****/
Par_GetParToText ("InfoSrc",UnsignedStr,2);
if (sscanf (UnsignedStr,"%d",&InfoSrcInt) != 1)
return Inf_INFO_SRC_NONE;
InfoSrc = (Inf_InfoSrc_t) InfoSrcInt;
return InfoSrc;
return (Inf_InfoSrc_t) Par_GetParToUnsigned ("InfoSrc",
(unsigned) Inf_INFO_SRC_NONE,
(unsigned) Inf_INFO_SRC_URL,
(unsigned) Inf_INFO_SRC_NONE);
}
/*****************************************************************************/

View File

@ -73,7 +73,7 @@ static void Ins_PutIconsListInstitutions (void);
static void Ins_PutIconToEditInstitutions (void);
static void Ins_ListOneInstitutionForSeeing (struct Instit *Ins,unsigned NumIns);
static void Ins_PutHeadInstitutionsForSeeing (bool OrderSelectable);
static void Ins_GetParamInsOrderType (void);
static void Ins_GetParamInsOrder (void);
static void Ins_ListInstitutionsForEdition (void);
static bool Ins_CheckIfICanEdit (struct Instit *Ins);
static Ins_StatusTxt_t Ins_GetStatusTxtFromStatusBits (Ins_Status_t Status);
@ -642,7 +642,7 @@ void Ins_ShowInssOfCurrentCty (void)
if (Gbl.CurrentCty.Cty.CtyCod > 0)
{
/***** Get parameter with the type of order in the list of institutions *****/
Ins_GetParamInsOrderType ();
Ins_GetParamInsOrder ();
/***** Get list of institutions *****/
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_Departments_ABBREVIATION;
extern const char *Txt_Status;
Ins_InssOrderType_t Order;
Ins_Order_t Order;
fprintf (Gbl.F.Out,"<tr>"
"<th></th>");
@ -862,13 +862,13 @@ static void Ins_PutHeadInstitutionsForSeeing (bool OrderSelectable)
Act_FormStart (ActSeeIns);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
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,"%s",Txt_INSTITUTIONS_ORDER[Order]);
if (OrderSelectable)
{
if (Order == Gbl.Inss.SelectedOrderType)
if (Order == Gbl.Inss.SelectedOrder)
fprintf (Gbl.F.Out,"</u>");
fprintf (Gbl.F.Out,"</a>");
Act_FormEnd ();
@ -906,16 +906,13 @@ static void Ins_PutHeadInstitutionsForSeeing (bool OrderSelectable)
/******* 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];
unsigned UnsignedNum;
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Inss.SelectedOrderType = (Ins_InssOrderType_t) UnsignedNum;
else
Gbl.Inss.SelectedOrderType = Ins_DEFAULT_ORDER_TYPE;
Gbl.Inss.SelectedOrder = (Ins_Order_t)
Par_GetParToUnsigned ("Order",
(unsigned) Ins_ORDER_BY_INSTITUTION,
(unsigned) Ins_ORDER_BY_NUM_USRS,
(unsigned) Ins_ORDER_DEFAULT);
}
/*****************************************************************************/
@ -964,7 +961,7 @@ void Ins_GetListInstitutions (long CtyCod,Ins_GetExtraData_t GetExtraData)
CtyCod);
break;
case Ins_GET_EXTRA_DATA:
switch (Gbl.Inss.SelectedOrderType)
switch (Gbl.Inss.SelectedOrder)
{
case Ins_ORDER_BY_INSTITUTION:
sprintf (OrderBySubQuery,"FullName");
@ -1928,7 +1925,6 @@ void Ins_ChangeInsStatus (void)
extern const char *Txt_The_status_of_the_institution_X_has_changed;
struct Instit *Ins;
char Query[256];
char UnsignedNum[10 + 1];
Ins_Status_t Status;
Ins_StatusTxt_t StatusTxt;
@ -1939,8 +1935,9 @@ void Ins_ChangeInsStatus (void)
Ins->InsCod = Ins_GetAndCheckParamOtherInsCod ();
/* Get parameter with status */
Par_GetParToText ("Status",UnsignedNum,1);
if (sscanf (UnsignedNum,"%u",&Status) != 1)
Status = (Ins_Status_t) Par_GetParToUnsigned ("Status",0,UINT_MAX,
(unsigned) Ins_WRONG_STATUS);
if (Status == Ctr_WRONG_STATUS)
Lay_ShowErrorAndExit ("Wrong status.");
StatusTxt = Ins_GetStatusTxtFromStatusBits (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_REMOVED = (1 << 1), // Institution has been removed
} Ins_Status_Bits_t;
typedef unsigned Ins_Status_t;
#define Ins_WRONG_STATUS ((Ins_Status_t) UINT_MAX)
#define Ins_NUM_STATUS_TXT 4
typedef enum
@ -76,9 +78,9 @@ typedef enum
{
Ins_ORDER_BY_INSTITUTION = 0,
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
{

View File

@ -497,7 +497,7 @@ static void Lay_WriteScripts (void)
/***** Get list of holidays *****/
if (!Gbl.Hlds.LstIsRead)
{
Gbl.Hlds.SelectedOrderType = Hld_ORDER_BY_START_DATE;
Gbl.Hlds.SelectedOrder = Hld_ORDER_BY_START_DATE;
Hld_GetListHolidays ();
}

View File

@ -64,7 +64,7 @@ extern struct Globals Gbl;
/***************************** Private prototypes ****************************/
/*****************************************************************************/
static void Mai_GetParamMaiOrderType (void);
static void Mai_GetParamMaiOrder (void);
static void Mai_PutIconToEditMailDomains (void);
static void Mai_GetListMailDomainsAllowedForNotif (void);
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_DOMAIN_HELP_ORDER[3];
extern const char *Txt_EMAIL_DOMAIN_ORDER[3];
Mai_MailDomainsOrderType_t Order;
Mai_DomainsOrder_t Order;
unsigned NumMai;
/***** Get parameter with the type of order in the list of mail domains *****/
Mai_GetParamMaiOrderType ();
Mai_GetParamMaiOrder ();
/***** Get list of mail domains *****/
Mai_GetListMailDomainsAllowedForNotif ();
@ -117,10 +117,10 @@ void Mai_SeeMailDomains (void)
Act_FormStart (ActSeeMai);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
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,"%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,"</a>");
Act_FormEnd ();
@ -159,16 +159,13 @@ void Mai_SeeMailDomains (void)
/******* 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];
unsigned UnsignedNum;
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Mails.SelectedOrderType = (Mai_MailDomainsOrderType_t) UnsignedNum;
else
Gbl.Mails.SelectedOrderType = Mai_DEFAULT_ORDER_TYPE;
Gbl.Mails.SelectedOrder = (Mai_DomainsOrder_t)
Par_GetParToUnsigned ("Order",
(unsigned) Mai_ORDER_BY_DOMAIN,
(unsigned) Mai_ORDER_BY_INFO,
(unsigned) Mai_ORDER_DEFAULT);
}
/*****************************************************************************/
@ -245,7 +242,7 @@ static void Mai_GetListMailDomainsAllowedForNotif (void)
DB_ExitOnMySQLError ("can not create temporary table");
/***** Get mail domains from database *****/
switch (Gbl.Mails.SelectedOrderType)
switch (Gbl.Mails.SelectedOrder)
{
case Mai_ORDER_BY_DOMAIN:
sprintf (OrderBySubQuery,"Domain,Info,N DESC");

View File

@ -41,9 +41,9 @@ typedef enum
Mai_ORDER_BY_DOMAIN = 0,
Mai_ORDER_BY_INFO = 1,
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
{

View File

@ -435,13 +435,8 @@ void Mnu_ChangeMenu (void)
Mnu_Menu_t Mnu_GetParamMenu (void)
{
char UnsignedStr[1 + 10 + 1];
unsigned UnsignedNum;
Par_GetParToText ("Menu",UnsignedStr,1 + 10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum < Mnu_NUM_MENUS)
return (Mnu_Menu_t) UnsignedNum;
return Mnu_MENU_DEFAULT;
return (Mnu_Menu_t) Par_GetParToUnsigned ("Menu",
(unsigned) Mnu_MENU_HORIZONTAL,
(unsigned) Mnu_MENU_VERTICAL,
(unsigned) Mnu_MENU_DEFAULT);
}

View File

@ -393,18 +393,14 @@ void Net_UpdateMyWebsAndSocialNets (void)
static void Net_GetMyWebsAndSocialNetsFromForm (void)
{
char Query[256 + Cns_MAX_LENGTH_WWW];
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Net_WebsAndSocialNetworks_t Web;
char URL[Cns_MAX_LENGTH_WWW + 1];
/***** Get parameter with the type of web / social network *****/
Par_GetParToText ("Web",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
Lay_ShowErrorAndExit ("Web / social network is missing.");
if (UnsignedNum >= Net_NUM_WEBS_AND_SOCIAL_NETWORKS)
Lay_ShowErrorAndExit ("Wrong web / social network.");
Web = (Net_WebsAndSocialNetworks_t) UnsignedNum;
Web = (Net_WebsAndSocialNetworks_t) Par_GetParToUnsigned ("Web",
(unsigned) Net_WWW,
(unsigned) Net_YOUTUBE,
(unsigned) Net_WWW);
/***** Get URL *****/
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)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Par_GetParToText ("NotifyEvent",UnsignedStr,10);
if (UnsignedStr[0])
{
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum < Ntf_NUM_NOTIFY_EVENTS)
return (Ntf_NotifyEvent_t) UnsignedNum;
}
return Ntf_EVENT_UNKNOWN;
return (Ntf_NotifyEvent_t) Par_GetParToUnsigned ("NotifyEvent",
(unsigned) Ntf_EVENT_UNKNOWN,
(unsigned) Ntf_EVENT_SURVEY,
(unsigned) Ntf_EVENT_UNKNOWN);
}
/*****************************************************************************/

View File

@ -128,13 +128,13 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
case Pag_ASSIGNMENTS:
Act_FormStart (ActSeeAsg);
Pag_PutHiddenParamPagNum (1);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_ATT_EVENTS:
Act_FormStart (ActSeeAtt);
Pag_PutHiddenParamPagNum (1);
Att_PutHiddenParamAttOrderType ();
Att_PutHiddenParamAttOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_MESSAGES_RECEIVED:
@ -161,23 +161,23 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
case Pag_SURVEYS:
Act_FormStart (ActSeeAllSvy);
Pag_PutHiddenParamPagNum (1);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_MY_FULL_AGENDA:
Act_FormStart (ActSeeMyAgd);
Pag_PutHiddenParamPagNum (1);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
break;
case Pag_MY_PUBLIC_AGENDA:
Act_FormStart (ActSeeMyPubAgd);
Pag_PutHiddenParamPagNum (1);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
break;
case Pag_OTHER_PUBLIC_AGENDA:
Act_FormStart (ActSeeUsrAgd);
Pag_PutHiddenParamPagNum (1);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
Usr_PutParamOtherUsrCodEncrypted ();
break;
}
@ -221,13 +221,13 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
case Pag_ASSIGNMENTS:
Act_FormStart (ActSeeAsg);
Pag_PutHiddenParamPagNum (1);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_ATT_EVENTS:
Act_FormStart (ActSeeAtt);
Pag_PutHiddenParamPagNum (1);
Att_PutHiddenParamAttOrderType ();
Att_PutHiddenParamAttOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_MESSAGES_RECEIVED:
@ -254,23 +254,23 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
case Pag_SURVEYS:
Act_FormStart (ActSeeAllSvy);
Pag_PutHiddenParamPagNum (1);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_MY_FULL_AGENDA:
Act_FormStart (ActSeeMyAgd);
Pag_PutHiddenParamPagNum (1);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
break;
case Pag_MY_PUBLIC_AGENDA:
Act_FormStart (ActSeeMyPubAgd);
Pag_PutHiddenParamPagNum (1);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
break;
case Pag_OTHER_PUBLIC_AGENDA:
Act_FormStart (ActSeeUsrAgd);
Pag_PutHiddenParamPagNum (1);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
Usr_PutParamOtherUsrCodEncrypted ();
break;
}
@ -297,13 +297,13 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
case Pag_ASSIGNMENTS:
Act_FormStart (ActSeeAsg);
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_ATT_EVENTS:
Act_FormStart (ActSeeAtt);
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
Att_PutHiddenParamAttOrderType ();
Att_PutHiddenParamAttOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_MESSAGES_RECEIVED:
@ -330,23 +330,23 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
case Pag_SURVEYS:
Act_FormStart (ActSeeAllSvy);
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_MY_FULL_AGENDA:
Act_FormStart (ActSeeMyAgd);
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
break;
case Pag_MY_PUBLIC_AGENDA:
Act_FormStart (ActSeeMyPubAgd);
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
break;
case Pag_OTHER_PUBLIC_AGENDA:
Act_FormStart (ActSeeUsrAgd);
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
Usr_PutParamOtherUsrCodEncrypted ();
break;
}
@ -380,13 +380,13 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
case Pag_ASSIGNMENTS:
Act_FormStart (ActSeeAsg);
Pag_PutHiddenParamPagNum (NumPage);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_ATT_EVENTS:
Act_FormStart (ActSeeAtt);
Pag_PutHiddenParamPagNum (NumPage);
Att_PutHiddenParamAttOrderType ();
Att_PutHiddenParamAttOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_MESSAGES_RECEIVED:
@ -413,23 +413,23 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
case Pag_SURVEYS:
Act_FormStart (ActSeeAllSvy);
Pag_PutHiddenParamPagNum (NumPage);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_MY_FULL_AGENDA:
Act_FormStart (ActSeeMyAgd);
Pag_PutHiddenParamPagNum (NumPage);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
break;
case Pag_MY_PUBLIC_AGENDA:
Act_FormStart (ActSeeMyPubAgd);
Pag_PutHiddenParamPagNum (NumPage);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
break;
case Pag_OTHER_PUBLIC_AGENDA:
Act_FormStart (ActSeeUsrAgd);
Pag_PutHiddenParamPagNum (NumPage);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
Usr_PutParamOtherUsrCodEncrypted ();
break;
}
@ -459,13 +459,13 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
case Pag_ASSIGNMENTS:
Act_FormStart (ActSeeAsg);
Pag_PutHiddenParamPagNum (Pagination->RightPage);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_ATT_EVENTS:
Act_FormStart (ActSeeAtt);
Pag_PutHiddenParamPagNum (Pagination->RightPage);
Att_PutHiddenParamAttOrderType ();
Att_PutHiddenParamAttOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_MESSAGES_RECEIVED:
@ -492,23 +492,23 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
case Pag_SURVEYS:
Act_FormStart (ActSeeAllSvy);
Pag_PutHiddenParamPagNum (Pagination->RightPage);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_MY_FULL_AGENDA:
Act_FormStart (ActSeeMyAgd);
Pag_PutHiddenParamPagNum (Pagination->RightPage);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
break;
case Pag_MY_PUBLIC_AGENDA:
Act_FormStart (ActSeeMyPubAgd);
Pag_PutHiddenParamPagNum (Pagination->RightPage);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
break;
case Pag_OTHER_PUBLIC_AGENDA:
Act_FormStart (ActSeeUsrAgd);
Pag_PutHiddenParamPagNum (Pagination->RightPage);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
Usr_PutParamOtherUsrCodEncrypted ();
break;
}
@ -535,13 +535,13 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
case Pag_ASSIGNMENTS:
Act_FormStart (ActSeeAsg);
Pag_PutHiddenParamPagNum (Pagination->NumPags);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_ATT_EVENTS:
Act_FormStart (ActSeeAtt);
Pag_PutHiddenParamPagNum (Pagination->NumPags);
Att_PutHiddenParamAttOrderType ();
Att_PutHiddenParamAttOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_MESSAGES_RECEIVED:
@ -568,23 +568,23 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
case Pag_SURVEYS:
Act_FormStart (ActSeeAllSvy);
Pag_PutHiddenParamPagNum (Pagination->NumPags);
Asg_PutHiddenParamAsgOrderType ();
Asg_PutHiddenParamAsgOrder ();
Grp_PutParamWhichGrps ();
break;
case Pag_MY_FULL_AGENDA:
Act_FormStart (ActSeeMyAgd);
Pag_PutHiddenParamPagNum (Pagination->NumPags);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
break;
case Pag_MY_PUBLIC_AGENDA:
Act_FormStart (ActSeeMyPubAgd);
Pag_PutHiddenParamPagNum (Pagination->NumPags);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
break;
case Pag_OTHER_PUBLIC_AGENDA:
Act_FormStart (ActSeeUsrAgd);
Pag_PutHiddenParamPagNum (Pagination->NumPags);
Agd_PutHiddenParamEventsOrderType ();
Agd_PutHiddenParamEventsOrder ();
Usr_PutParamOtherUsrCodEncrypted ();
break;
}
@ -616,18 +616,15 @@ void Pag_PutHiddenParamPagNum (unsigned NumPage)
void Pag_GetParamPagNum (Pag_WhatPaginate_t WhatPaginate)
{
static bool FirstCall = true;
char UnsignedStr[10 + 1];
unsigned NumPage;
if (FirstCall)
{
FirstCall = false;
/***** Try to get parameter with the number of page *****/
Par_GetParToText ("NumPage",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&NumPage) == 1)
Gbl.Pag.CurrentPage = NumPage;
else
Gbl.Pag.CurrentPage = Par_GetParToUnsigned ("NumPage",
1,UINT_MAX,0);
if (Gbl.Pag.CurrentPage == 0)
/***** If there's no parameter page, return a default value *****/
switch (WhatPaginate)
{

View File

@ -651,8 +651,7 @@ void Par_GetMainParameters (void)
extern Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD];
extern const char *The_ThemeId[The_NUM_THEMES];
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
unsigned ActCod;
char Nickname[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char LongStr[1 + 10 + 1];
@ -713,22 +712,17 @@ void Par_GetMainParameters (void)
}
/***** Get action to perform *****/
Par_GetParToText ("act",UnsignedStr,10);
if (UnsignedStr[0])
{
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum <= Act_MAX_ACTION_COD)
Gbl.Action.Act = Act_FromActCodToAction[UnsignedNum];
}
else
{
// Try old parameter "ActCod" (allowed for compatibility, to be removed soon)
Par_GetParToText ("ActCod",UnsignedStr,10);
if (UnsignedStr[0])
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum <= Act_MAX_ACTION_COD)
Gbl.Action.Act = Act_FromActCodToAction[UnsignedNum];
}
ActCod = Par_GetParToUnsigned ("act",
ActUnk,
Act_MAX_ACTION_COD,
ActUnk);
if (ActCod == ActUnk)
ActCod = Par_GetParToUnsigned ("ActCod",
ActUnk,
Act_MAX_ACTION_COD,
ActUnk);
if (ActCod != ActUnk)
Gbl.Action.Act = Act_FromActCodToAction[ActCod];
/***** Some preliminary adjusts depending on action *****/
if (Gbl.Action.Act == ActRefCon ||
@ -848,14 +842,11 @@ void Par_GetMainParameters (void)
Gbl.Action.Tab = TabUnk;
if (Gbl.Action.Act == ActMnu)
{
Par_GetParToText ("NxtTab",UnsignedStr,10);
if (UnsignedStr[0])
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum < Tab_NUM_TABS)
{
Gbl.Action.Tab = (Tab_Tab_t) UnsignedNum;
Tab_DisableIncompatibleTabs ();
}
Gbl.Action.Tab = (Tab_Tab_t) Par_GetParToUnsigned ("NxtTab",
(unsigned) TabUnk,
Tab_NUM_TABS - 1,
(unsigned) TabUnk);
Tab_DisableIncompatibleTabs ();
}
else // Set tab depending on current action
Tab_SetCurrentTab ();
@ -872,6 +863,27 @@ unsigned Par_GetParToText (const char *ParamName,char *ParamValue,size_t MaxByte
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 **********************/
/*****************************************************************************/

View File

@ -72,6 +72,10 @@ unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
void Par_GetMainParameters (void);
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);
bool Par_GetParToBool (const char *ParamName);
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_entered_your_password_correctly;
char YN[1 + 1];
char PlainPassword[Pwd_MAX_LENGTH_PLAIN_PASSWORD + 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)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Par_GetParToText ("AvgType",UnsignedStr,10);
if (UnsignedStr[0])
{
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;
return (Pho_AvgPhotoTypeOfAverage_t)
Par_GetParToUnsigned ("AvgType",
(unsigned) Pho_PHOTO_MEDIAN_ALL,
(unsigned) Pho_PHOTO_AVERAGE_ALL,
(unsigned) Pho_PHOTO_AVG_DEFAULT);
}
/*****************************************************************************/
@ -1775,19 +1767,11 @@ void Pho_PutHiddenParamPhotoSize (void)
static Pho_HowComputePhotoSize_t Pho_GetHowComputePhotoSizeFromForm (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Par_GetParToText ("PhotoSize",UnsignedStr,10);
if (UnsignedStr[0])
{
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;
return (Pho_HowComputePhotoSize_t)
Par_GetParToUnsigned ("PhotoSize",
(unsigned) Pho_PROPORTIONAL_TO_NUMBER_OF_STUDENTS,
(unsigned) Pho_UNIQUE_SIZE,
(unsigned) Pho_PHOTO_SIZE_DEFAULT);
}
/*****************************************************************************/
@ -1803,7 +1787,7 @@ static void Pho_PutSelectorForHowOrderDegrees (void)
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"RIGHT_MIDDLE\">"
"<label for=\"OrdDeg\" class=\"%s\">%s:</label>"
"<label for=\"Order\" class=\"%s\">%s:</label>"
"</td>"
"<td class=\"LEFT_MIDDLE\">",
The_ClassForm[Gbl.Prefs.Theme],Txt_Sort_degrees_by);
@ -1811,7 +1795,7 @@ static void Pho_PutSelectorForHowOrderDegrees (void)
Pho_PutHiddenParamTypeOfAvg ();
Pho_PutHiddenParamPhotoSize ();
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();\">",
Gbl.Form.Id);
for (Order = (Pho_HowOrderDegrees_t) 0;
@ -1835,7 +1819,7 @@ static void Pho_PutSelectorForHowOrderDegrees (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)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Par_GetParToText ("OrdDeg",UnsignedStr,10);
if (UnsignedStr[0])
{
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;
return (Pho_HowOrderDegrees_t)
Par_GetParToUnsigned ("Order",
(unsigned) Pho_NUMBER_OF_STUDENTS,
(unsigned) Pho_DEGREE_NAME,
(unsigned) Pho_ORDER_DEFAULT);
}
/*****************************************************************************/

View File

@ -55,6 +55,7 @@ typedef enum
Pho_PHOTO_MEDIAN_ALL = 0,
Pho_PHOTO_AVERAGE_ALL = 1,
} Pho_AvgPhotoTypeOfAverage_t;
#define Pho_PHOTO_AVG_DEFAULT Pho_PHOTO_MEDIAN_ALL
#define Pho_NUM_HOW_COMPUTE_PHOTO_SIZES 4
typedef enum
@ -64,6 +65,7 @@ typedef enum
Pho_PROPORTIONAL_TO_PERCENT = 2,
Pho_UNIQUE_SIZE = 3,
} Pho_HowComputePhotoSize_t;
#define Pho_PHOTO_SIZE_DEFAULT Pho_PROPORTIONAL_TO_NUMBER_OF_STUDENTS
#define Pho_NUM_HOW_ORDER_DEGREES 4
typedef enum
@ -73,6 +75,7 @@ typedef enum
Pho_PERCENT = 2,
Pho_DEGREE_NAME = 3,
} Pho_HowOrderDegrees_t;
#define Pho_ORDER_DEFAULT Pho_NUMBER_OF_STUDENTS
#define Pho_MAX_CLICKS_WITHOUT_PHOTO 50

View File

@ -58,7 +58,7 @@ extern struct Globals Gbl;
/***************************** Private prototypes ****************************/
/*****************************************************************************/
static void Plc_GetParamPlcOrderType (void);
static void Plc_GetParamPlcOrder (void);
static void Plc_PutIconToEditPlaces (void);
static void Plc_ListPlacesForEdition (void);
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_Other_places;
extern const char *Txt_Place_unspecified;
Plc_PlcsOrderType_t Order;
Plc_Order_t Order;
unsigned NumPlc;
unsigned NumCtrsWithPlc = 0;
unsigned NumCtrsInOtherPlcs;
@ -88,7 +88,7 @@ void Plc_SeePlaces (void)
if (Gbl.CurrentIns.Ins.InsCod > 0)
{
/***** Get parameter with the type of order in the list of places *****/
Plc_GetParamPlcOrderType ();
Plc_GetParamPlcOrder ();
/***** Get list of places *****/
Plc_GetListPlaces ();
@ -107,10 +107,10 @@ void Plc_SeePlaces (void)
Act_FormStart (ActSeePlc);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
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,"%s",Txt_PLACES_ORDER[Order]);
if (Order == Gbl.Plcs.SelectedOrderType)
if (Order == Gbl.Plcs.SelectedOrder)
fprintf (Gbl.F.Out,"</u>");
fprintf (Gbl.F.Out,"</a>");
Act_FormEnd ();
@ -182,16 +182,13 @@ void Plc_SeePlaces (void)
/********** 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];
unsigned UnsignedNum;
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Plcs.SelectedOrderType = (Plc_PlcsOrderType_t) UnsignedNum;
else
Gbl.Plcs.SelectedOrderType = Plc_DEFAULT_ORDER_TYPE;
Gbl.Plcs.SelectedOrder = (Plc_Order_t)
Par_GetParToUnsigned ("Order",
(unsigned) Plc_ORDER_BY_PLACE,
(unsigned) Plc_ORDER_BY_NUM_CTRS,
(unsigned) Plc_ORDER_DEFAULT);
}
/*****************************************************************************/
@ -249,7 +246,7 @@ void Plc_GetListPlaces (void)
struct Place *Plc;
/***** Get places from database *****/
switch (Gbl.Plcs.SelectedOrderType)
switch (Gbl.Plcs.SelectedOrder)
{
case Plc_ORDER_BY_PLACE:
sprintf (OrderBySubQuery,"FullName");

View File

@ -47,9 +47,9 @@ typedef enum
{
Plc_ORDER_BY_PLACE = 0,
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 *****************************/

View File

@ -351,16 +351,11 @@ void Pre_UpdateMyLanguageToCurrentLanguage (void)
Txt_Language_t Pre_GetParamLanguage (void)
{
extern const unsigned Txt_Current_CGI_SWAD_Language;
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Par_GetParToText ("Lan",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum >= 1 &&
UnsignedNum <= Txt_NUM_LANGUAGES)
return (Txt_Language_t) UnsignedNum;
return Txt_Current_CGI_SWAD_Language;
return (Txt_Language_t) Par_GetParToUnsigned ("Lan",
1,
Txt_NUM_LANGUAGES,
Txt_Current_CGI_SWAD_Language);
}
/*****************************************************************************/
@ -504,19 +499,8 @@ static void Pre_UpdateSideColsOnUsrDataTable (void)
unsigned Pre_GetParamSideCols (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum; // 11 ==> by default, show both side columns
Par_GetParToText ("SideCols",UnsignedStr,10);
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;
return Par_GetParToUnsigned ("SideCols",
0,
Lay_SHOW_BOTH_COLUMNS,
Cfg_DEFAULT_COLUMNS);
}

View File

@ -227,20 +227,11 @@ Pri_Visibility_t Pri_GetVisibilityFromStr (const char *Str)
Pri_Visibility_t Pri_GetParamVisibility (const char *ParamName)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Par_GetParToText (ParamName,UnsignedStr,10);
if (UnsignedStr[0])
{
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;
return (Pri_Visibility_t)
Par_GetParToUnsigned (ParamName,
0,
Pri_NUM_OPTIONS_PRIVACY - 1,
(unsigned) Pri_VISIBILITY_UNKNOWN);
}
/*****************************************************************************/

View File

@ -33,7 +33,6 @@
/***** Visibility (who can see user's photo / public profile) *****/
#define Pri_NUM_OPTIONS_PRIVACY 5
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

View File

@ -245,7 +245,7 @@ void Rec_GetListRecordFieldsInCurrentCrs (void)
if (Vis < Rec_NUM_TYPES_VISIBILITY)
Gbl.CurrentCrs.Records.LstFields.Lst[NumRow].Visibility = (Rec_VisibilityRecordFields_t) Vis;
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_You_must_specify_the_name_of_the_new_record_field;
char UnsignedStr[10 + 1];
unsigned Vis;
/***** Get parameters from the form *****/
/* Get the name of the field */
Par_GetParToText ("FieldName",Gbl.CurrentCrs.Records.Field.Name,Rec_MAX_LENGTH_NAME_FIELD);
/* Get the number of lines */
Par_GetParToText ("NumLines",UnsignedStr,10);
Gbl.CurrentCrs.Records.Field.NumLines = Rec_ConvertToNumLinesField (UnsignedStr);
Gbl.CurrentCrs.Records.Field.NumLines = Par_GetParToUnsigned ("NumLines",
Rec_MIN_LINES_IN_EDITION_FIELD,
Rec_MAX_LINES_IN_EDITION_FIELD,
Rec_DEF_LINES_IN_EDITION_FIELD);
/* Get the field visibility by students */
Par_GetParToText ("Visibility",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&Vis) != 1)
Lay_ShowErrorAndExit ("Visibility is missing.");
if (Vis < Rec_NUM_TYPES_VISIBILITY)
Gbl.CurrentCrs.Records.Field.Visibility = (Rec_VisibilityRecordFields_t) Vis;
else
Gbl.CurrentCrs.Records.Field.Visibility = Rec_HIDDEN_FIELD;
Gbl.CurrentCrs.Records.Field.Visibility = (Rec_VisibilityRecordFields_t)
Par_GetParToUnsigned ("Visibility",
0,
Rec_NUM_TYPES_VISIBILITY - 1,
Rec_VISIBILITY_DEFAULT);
if (Gbl.CurrentCrs.Records.Field.Name[0]) // If there's a name
{
@ -480,7 +478,7 @@ unsigned Rec_ConvertToNumLinesField (const char *StrNumLines)
int NumLines;
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)
return Rec_MIN_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)
*Visibility = (Rec_VisibilityRecordFields_t) Vis;
else
*Visibility = Rec_HIDDEN_FIELD;
*Visibility = Rec_VISIBILITY_DEFAULT;
/***** Free structure that stores the query result *****/
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_From_now_on_the_number_of_editing_lines_of_the_field_X_is_Y;
char Query[1024];
char UnsignedStr[10 + 1];
unsigned NewNumLines;
/***** Get parameters of the form *****/
@ -826,8 +823,10 @@ void Rec_ChangeLinesField (void)
Lay_ShowErrorAndExit ("Code of field is missing.");
/* Get the new number of lines */
Par_GetParToText ("NumLines",UnsignedStr,10);
NewNumLines = Rec_ConvertToNumLinesField (UnsignedStr);
NewNumLines = Par_GetParToUnsigned ("NumLines",
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 */
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_RECORD_FIELD_VISIBILITY_MSG[Rec_NUM_TYPES_VISIBILITY];
char Query[1024];
char UnsignedStr[10 + 1];
unsigned Vis;
Rec_VisibilityRecordFields_t NewVisibility;
/***** Get parameters of the form *****/
@ -877,13 +874,11 @@ void Rec_ChangeVisibilityField (void)
Lay_ShowErrorAndExit ("Code of field is missing.");
/* Get the new visibility of the field */
Par_GetParToText ("Visibility",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&Vis) != 1)
Lay_ShowErrorAndExit ("Visibility of field is missing.");
if (Vis < Rec_NUM_TYPES_VISIBILITY)
NewVisibility = (Rec_VisibilityRecordFields_t) Vis;
else
NewVisibility = Rec_HIDDEN_FIELD;
NewVisibility = (Rec_VisibilityRecordFields_t)
Par_GetParToUnsigned ("Visibility",
0,
Rec_NUM_TYPES_VISIBILITY - 1,
Rec_VISIBILITY_DEFAULT);
/* 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);
@ -1419,8 +1414,8 @@ static void Rec_ShowLinkToPrintPreviewOfRecords (void)
"<label class=\"%s\">"
"(<select name=\"RecsPerPag\">",
The_ClassForm[Gbl.Prefs.Theme]);
for (i = 1;
i <= 10;
for (i = Rec_MIN_RECORDS_PER_PAGE;
i <= Rec_MAX_RECORDS_PER_PAGE;
i++)
{
fprintf (Gbl.F.Out,"<option");
@ -1439,11 +1434,10 @@ static void Rec_ShowLinkToPrintPreviewOfRecords (void)
static void Rec_GetParamRecordsPerPage (void)
{
char UnsignedStr[10 + 1];
Par_GetParToText ("RecsPerPag",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&Gbl.Usrs.Listing.RecsPerPag) != 1)
Lay_ShowErrorAndExit ("Number of rows per page is missing.");
Gbl.Usrs.Listing.RecsPerPag = Par_GetParToUnsigned ("RecsPerPag",
Rec_MIN_RECORDS_PER_PAGE,
Rec_MAX_RECORDS_PER_PAGE,
Rec_DEF_RECORDS_PER_PAGE);
}
/*****************************************************************************/
@ -3058,7 +3052,7 @@ static void Rec_ShowCountry (struct UsrData *UsrDat,
/***** If list of countries is empty, try to get it *****/
if (!Gbl.Ctys.Num)
{
Gbl.Ctys.SelectedOrderType = Cty_ORDER_BY_COUNTRY;
Gbl.Ctys.SelectedOrder = Cty_ORDER_BY_COUNTRY;
Cty_GetListCountries (Cty_GET_BASIC_DATA);
}
@ -3519,13 +3513,14 @@ void Rec_UpdateMyRecord (void)
Rol_Role_t Rec_GetRoleFromRecordForm (void)
{
char UnsignedStr[10 + 1];
Rol_Role_t Role;
bool RoleOK = false;
/***** Get role as a parameter from form *****/
Par_GetParToText ("Role",UnsignedStr,10);
Role = Rol_ConvertUnsignedStrToRole (UnsignedStr);
Role = (Rol_Role_t) Par_GetParToUnsigned ("Role",
0,
Rol_NUM_ROLES - 1,
(unsigned) Rol_UNKNOWN);
/***** Check if I can register a user
with the received role in current course *****/
@ -3605,15 +3600,11 @@ void Rec_GetUsrNameFromRecordForm (struct UsrData *UsrDat)
static void Rec_GetUsrExtraDataFromRecordForm (struct UsrData *UsrDat)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
/***** Get sex from form *****/
Par_GetParToText ("Sex",UnsignedStr,10);
UsrDat->Sex = Usr_SEX_UNKNOWN;
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum <= Usr_SEX_MALE)
UsrDat->Sex = (Usr_Sex_t) UnsignedNum;
UsrDat->Sex = (Usr_Sex_t) Par_GetParToUnsigned ("Sex",
(unsigned) Usr_SEX_FEMALE,
(unsigned) Usr_SEX_MALE,
(unsigned) Usr_SEX_UNKNOWN);
/***** Get country code *****/
UsrDat->CtyCod = Par_GetParToLong ("OthCtyCod");
@ -3730,7 +3721,7 @@ void Rec_ShowFormMyInsCtrDpt (void)
/* If list of countries is empty, try to get it */
if (!Gbl.Ctys.Num)
{
Gbl.Ctys.SelectedOrderType = Cty_ORDER_BY_COUNTRY;
Gbl.Ctys.SelectedOrder = Cty_ORDER_BY_COUNTRY;
Cty_GetListCountries (Cty_GET_BASIC_DATA);
}

View File

@ -32,7 +32,7 @@
#include "swad_user.h"
/*****************************************************************************/
/*********************** Public constants and types **************************/
/***************************** Public constants ******************************/
/*****************************************************************************/
#define Rec_RECORD_WIDTH 560
@ -40,6 +40,11 @@
#define Rec_MAX_LENGTH_NAME_FIELD 255
#define Rec_MIN_LINES_IN_EDITION_FIELD 1
#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 ********************************/
@ -79,13 +84,15 @@ typedef enum {
} Rec_UsrsType_t;
// Related with user's index card
#define Rec_NUM_TYPES_VISIBILITY 3
#define Rec_NUM_TYPES_VISIBILITY 3
typedef enum
{
Rec_HIDDEN_FIELD = 0,
Rec_VISIBLE_FIELD = 1,
Rec_EDITABLE_FIELD = 2,
} Rec_VisibilityRecordFields_t;
#define Rec_VISIBILITY_DEFAULT Rec_HIDDEN_FIELD
struct RecordField
{
long FieldCod; // FieldCode
@ -94,6 +101,7 @@ struct RecordField
Rec_VisibilityRecordFields_t Visibility; // Hidden, visible or editable by students?
char *Text; // Filed text
};
struct LstRecordFields
{
struct RecordField *Lst; // List of card fields

View File

@ -316,28 +316,30 @@ void Rol_PutFormToChangeMyRole (void)
void Rol_ChangeMyRole (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Rol_Role_t NewRole;
/***** Get parameter with the new logged role ******/
Par_GetParToText ("MyRole",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
NewRole = (Rol_Role_t) Par_GetParToUnsigned ("MyRole",
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 */
if (!(Gbl.Usrs.Me.AvailableRoles & (1 << UnsignedNum)))
if (!(Gbl.Usrs.Me.AvailableRoles & (1 << NewRole)))
return;
/* New role is correct and is allowed for me,
so change my logged user type */
Gbl.Usrs.Me.LoggedRole = (Rol_Role_t) UnsignedNum;
Gbl.Usrs.Me.RoleHasChanged = true;
/* New role is correct and is allowed for me */
if (NewRole != Gbl.Usrs.Me.LoggedRole)
{
/* 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 */
Ses_UpdateSessionDataInDB ();
/* ...and update logged role in session */
Ses_UpdateSessionDataInDB ();
}
}
}
@ -394,29 +396,27 @@ void Rol_PutHiddenParamRoles (unsigned Roles)
unsigned Rol_GetSelectedRoles (void)
{
char StrRoles[(10 + 1) * 2];
char StrRoles[Rol_NUM_ROLES * (10 + 1)];
const char *Ptr;
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Rol_Role_t Role;
unsigned Roles;
/***** Try to get param "Roles" with multiple roles *****/
Par_GetParToText ("Roles",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Roles = UnsignedNum;
else
Roles = 0;
Roles = Par_GetParToUnsigned ("Roles",
0, // 000...000
(1 << Rol_NUM_ROLES) - 1, // 111...111
0); // 000...000
/***** 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;
*Ptr;)
{
Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&Role) != 1)
Lay_ShowErrorAndExit ("can not get user's role");
Roles |= (1 << Role);
Role = Rol_ConvertUnsignedStrToRole (UnsignedStr);
if (Role != Rol_UNKNOWN)
Roles |= (1 << Role);
}
return Roles;

View File

@ -191,11 +191,12 @@ void Sco_PutParamScope (const char *ParamName,Sco_Scope_t Scope)
void Sco_GetScope (const char *ParamName)
{
char UnsignedStr[10 + 1];
/***** Get parameter location range if exists *****/
Par_GetParToText (ParamName,UnsignedStr,10);
Gbl.Scope.Current = Sco_GetScopeFromUnsignedStr (UnsignedStr);
/***** Get parameter with scope *****/
Gbl.Scope.Current = (Sco_Scope_t)
Par_GetParToUnsigned (ParamName,
0,
Sco_NUM_SCOPES - 1,
(Sco_Scope_t) Sco_SCOPE_UNK);
/***** Adjust scope avoiding impossible or forbidden scopes *****/
Sco_AdjustScope ();

View File

@ -214,6 +214,7 @@ static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,Sco
extern const char *Txt_Search;
const char *Titles[Sch_NUM_WHAT_TO_SEARCH] =
{
"", // Sch_SEARCH_UNKNOWN
Txt_all, // Sch_SEARCH_ALL
Txt_institutions, // Sch_SEARCH_INSTITS
Txt_centres, // Sch_SEARCH_CENTRES
@ -293,6 +294,7 @@ static bool Sch_CheckIfIHavePermissionToSearch (Sch_WhatToSearch_t WhatToSearch)
{
unsigned Permissions[Sch_NUM_WHAT_TO_SEARCH] =
{
0x000, // Sch_SEARCH_UNKNOWN
0x1FF, // Sch_SEARCH_ALL
0x1FF, // Sch_SEARCH_INSTITS
0x1FF, // Sch_SEARCH_CENTRES
@ -412,16 +414,18 @@ void Sch_PutMagnifyingGlassButton (const char *Icon)
void Sch_GetParamWhatToSearch (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Sch_WhatToSearch_t WhatToSearch;
/***** 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 (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum < Sch_NUM_WHAT_TO_SEARCH)
Gbl.Search.WhatToSearch = (Sch_WhatToSearch_t) UnsignedNum;
if (WhatToSearch != Sch_SEARCH_UNKNOWN)
Gbl.Search.WhatToSearch = WhatToSearch;
}
/*****************************************************************************/
@ -606,6 +610,8 @@ static void Sch_SearchInDB (void)
break;
}
if (Gbl.Search.WhatToSearch == Sch_SEARCH_UNKNOWN)
Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
switch (Gbl.Search.WhatToSearch)
{
case Sch_SEARCH_ALL:
@ -653,6 +659,9 @@ static void Sch_SearchInDB (void)
case Sch_SEARCH_MY_DOCUMENTS:
NumResults = Sch_SearchMyDocumentsInDB (RangeQuery);
break;
default:
NumResults = 0;
break;
}
if (NumResults == 0)
@ -1319,6 +1328,9 @@ static void Sch_SaveLastSearchIntoSession (void)
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 *****/
sprintf (Query,"UPDATE sessions SET WhatToSearch='%u',SearchString='%s'"
" WHERE SessionId='%s'",

View File

@ -40,22 +40,24 @@
/******************************** Public types *******************************/
/*****************************************************************************/
#define Sch_NUM_WHAT_TO_SEARCH 12
#define Sch_NUM_WHAT_TO_SEARCH 13
typedef enum
{
Sch_SEARCH_ALL = 0,
Sch_SEARCH_INSTITS = 1,
Sch_SEARCH_CENTRES = 2,
Sch_SEARCH_DEGREES = 3,
Sch_SEARCH_COURSES = 4,
Sch_SEARCH_USERS = 5,
Sch_SEARCH_TEACHERS = 6,
Sch_SEARCH_STUDENTS = 7,
Sch_SEARCH_GUESTS = 8,
Sch_SEARCH_OPEN_DOCUMENTS = 9,
Sch_SEARCH_DOCUM_IN_MY_COURSES = 10,
Sch_SEARCH_MY_DOCUMENTS = 11,
Sch_SEARCH_UNKNOWN = 0,
Sch_SEARCH_ALL = 1,
Sch_SEARCH_INSTITS = 2,
Sch_SEARCH_CENTRES = 3,
Sch_SEARCH_DEGREES = 4,
Sch_SEARCH_COURSES = 5,
Sch_SEARCH_USERS = 6,
Sch_SEARCH_TEACHERS = 7,
Sch_SEARCH_STUDENTS = 8,
Sch_SEARCH_GUESTS = 9,
Sch_SEARCH_OPEN_DOCUMENTS = 10,
Sch_SEARCH_DOCUM_IN_MY_COURSES = 11,
Sch_SEARCH_MY_DOCUMENTS = 12,
} Sch_WhatToSearch_t;
#define Sch_WHAT_TO_SEARCH_DEFAULT Sch_SEARCH_ALL
/*****************************************************************************/
/****************************** Public prototypes ****************************/

View File

@ -157,6 +157,9 @@ void Ses_InsertSessionInDB (void)
char Query[1024];
/***** 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,"
"CtyCod,InsCod,CtrCod,DegCod,CrsCod,LastTime,LastRefresh,WhatToSearch)"
" 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
{
/* 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 (UnsignedNum < Sch_NUM_WHAT_TO_SEARCH)
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]) */
Str_Copy (Gbl.Search.Str,row[9],

View File

@ -103,7 +103,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
bool ShowOnlyThisSvyComplete);
static void Svy_WriteAuthor (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_PutParams (void);
@ -172,7 +172,7 @@ void Svy_SeeAllSurveys (void)
struct SurveyQuestion SvyQst;
/***** Get parameters *****/
Svy_GetParamSvyOrderType ();
Svy_GetParamSvyOrder ();
Grp_GetParamWhichGrps ();
Pag_GetParamPagNum (Pag_SURVEYS);
@ -193,7 +193,7 @@ static void Svy_ListAllSurveys (struct SurveyQuestion *SvyQst)
extern const char *Txt_Survey;
extern const char *Txt_Status;
extern const char *Txt_No_surveys;
tSvysOrderType Order;
Svy_Order_t Order;
struct Pagination Pagination;
unsigned NumSvy;
@ -239,10 +239,10 @@ static void Svy_ListAllSurveys (struct SurveyQuestion *SvyQst)
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
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,"%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,"</a>");
Act_FormEnd ();
@ -359,7 +359,7 @@ static void Svy_PutButtonToCreateNewSvy (void)
static void Svy_PutParamsToCreateNewSvy (void)
{
Svy_PutHiddenParamSvyOrderType ();
Svy_PutHiddenParamSvyOrder ();
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
}
@ -377,7 +377,7 @@ static void Svy_PutFormToSelectWhichGroupsToShow (void)
static void Svy_ParamsWhichGroupsToShow (void)
{
Svy_PutHiddenParamSvyOrderType ();
Svy_PutHiddenParamSvyOrder ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
}
@ -391,7 +391,7 @@ void Svy_SeeOneSurvey (void)
struct SurveyQuestion SvyQst;
/***** Get parameters *****/
Svy_GetParamSvyOrderType ();
Svy_GetParamSvyOrder ();
Grp_GetParamWhichGrps ();
Pag_GetParamPagNum (Pag_SURVEYS);
@ -486,7 +486,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
/* Put form to view survey */
Act_FormStart (ActSeeOneSvy);
Svy_PutParamSvyCod (SvyCod);
Svy_PutHiddenParamSvyOrderType ();
Svy_PutHiddenParamSvyOrder ();
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
Act_LinkFormSubmit (Txt_View_survey,
@ -522,7 +522,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
Act_FormStart (ActSeeOneSvy);
Svy_PutParamSvyCod (Svy.SvyCod);
Svy_PutHiddenParamSvyOrderType ();
Svy_PutHiddenParamSvyOrder ();
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
Lay_PutCreateButtonInline (Txt_Answer_survey);
@ -537,7 +537,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
Act_FormStart (ActSeeOneSvy);
Svy_PutParamSvyCod (Svy.SvyCod);
Svy_PutHiddenParamSvyOrderType ();
Svy_PutHiddenParamSvyOrder ();
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
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 ***********/
/*****************************************************************************/
static void Svy_GetParamSvyOrderType (void)
static void Svy_GetParamSvyOrder (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
/***** 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 *****/
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
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 ******/
/*****************************************************************************/
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)
Svy_PutParamSvyCod (Gbl.Svys.SvyCodToEdit);
Att_PutHiddenParamAttOrderType ();
Att_PutHiddenParamAttOrder ();
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
}
@ -972,7 +972,7 @@ void Svy_GetListSurveys (void)
/* Build query */
if (SubQueryFilled)
{
switch (Gbl.Svys.SelectedOrderType)
switch (Gbl.Svys.SelectedOrder)
{
case Svy_ORDER_BY_START_DATE:
sprintf (OrderBySubQuery,"StartTime DESC,EndTime DESC,Title DESC");
@ -1524,7 +1524,7 @@ void Svy_AskRemSurvey (void)
struct SurveyQuestion SvyQst;
/***** Get parameters *****/
Svy_GetParamSvyOrderType ();
Svy_GetParamSvyOrder ();
Grp_GetParamWhichGrps ();
Pag_GetParamPagNum (Pag_SURVEYS);
@ -1621,7 +1621,7 @@ void Svy_AskResetSurvey (void)
struct SurveyQuestion SvyQst;
/***** Get parameters *****/
Svy_GetParamSvyOrderType ();
Svy_GetParamSvyOrder ();
Grp_GetParamWhichGrps ();
Pag_GetParamPagNum (Pag_SURVEYS);
@ -1811,7 +1811,7 @@ void Svy_RequestCreatOrEditSvy (void)
char Txt[Cns_MAX_BYTES_TEXT + 1];
/***** Get parameters *****/
Svy_GetParamSvyOrderType ();
Svy_GetParamSvyOrder ();
Grp_GetParamWhichGrps ();
Pag_GetParamPagNum (Pag_SURVEYS);
@ -2599,7 +2599,7 @@ void Svy_RequestEditQuestion (void)
SvyQst.QstCod = Svy_GetParamQstCod ();
/***** Get other parameters *****/
Svy_GetParamSvyOrderType ();
Svy_GetParamSvyOrder ();
Grp_GetParamWhichGrps ();
Pag_GetParamPagNum (Pag_SURVEYS);

View File

@ -71,7 +71,7 @@ typedef enum
{
Svy_ORDER_BY_START_DATE = 0,
Svy_ORDER_BY_END_DATE = 1,
} tSvysOrderType;
} Svy_Order_t;
#define Svy_NUM_ANS_TYPES 2
@ -81,7 +81,7 @@ typedef enum
void Svy_SeeAllSurveys (void);
void Svy_SeeOneSurvey (void);
void Svy_PutHiddenParamSvyOrderType (void);
void Svy_PutHiddenParamSvyOrder (void);
void Svy_RequestCreatOrEditSvy (void);
void Svy_GetListSurveys (void);
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",
Tst_MAX_LENGTH_QUERY_TEST);
switch (Gbl.Test.SelectedOrderType)
switch (Gbl.Test.SelectedOrder)
{
case Tst_ORDER_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 ();
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
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,"%s",Txt_TST_STR_ORDER_SHORT[Order]);
if (NumRows > 1)
{
if (Order == Gbl.Test.SelectedOrderType)
if (Order == Gbl.Test.SelectedOrder)
fprintf (Gbl.F.Out,"</u>");
fprintf (Gbl.F.Out,"</a>");
Act_FormEnd ();
@ -2885,7 +2885,7 @@ static void Tst_ListOneOrMoreQuestionsToEdit (unsigned long NumRows,MYSQL_RES *m
Tst_WriteParamEditQst ();
if (NumRows == 1)
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\"");
if (row[3][0] == 'Y')
fprintf (Gbl.F.Out," checked=\"checked\"");
@ -4324,10 +4324,10 @@ static bool Tst_GetParamsTst (void)
/* Get ordering criteria */
Par_GetParMultiToText ("Order",UnsignedStr,10);
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);
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 */
Gbl.Test.XML.CreateXML = Tst_GetCreateXMLFromForm ();

View File

@ -101,7 +101,7 @@ static void TsI_PutParamsExportQsts (void)
Sta_WriteParamsDatesSeeAccesses ();
Tst_WriteParamEditQst ();
Par_PutHiddenParamChar ("OnlyThisQst",'N');
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Test.SelectedOrderType);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Test.SelectedOrder);
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
#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 =
#if L==1
"Debe especificar la imagen"

View File

@ -315,7 +315,7 @@ void Usr_ResetUsrDataExceptUsrCodAndIDs (struct UsrData *UsrDat)
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.LastTab = TabUnk;
Gbl.Usrs.Me.UsrLast.LastAccNotif = 0;
@ -667,10 +667,12 @@ static void Usr_GetMyLastData (void)
row = mysql_fetch_row (mysql_res);
/* 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 (UnsignedNum < Sch_NUM_WHAT_TO_SEARCH)
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 */
Gbl.Usrs.Me.UsrLast.LastCrs = Str_ConvertStrCodToLongCod (row[1]);