mirror of https://github.com/acanas/swad-core.git
Version 16.131
This commit is contained in:
parent
4b8bf39c6c
commit
c428ea015a
|
@ -296,7 +296,8 @@ void ID_GetParamOtherUsrIDPlain (void)
|
|||
ID_ReallocateListIDs (&Gbl.Usrs.Other.UsrDat,1);
|
||||
|
||||
/***** 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);
|
||||
|
|
|
@ -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 *****/
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 ();
|
||||
}
|
||||
|
||||
|
|
|
@ -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 ();
|
||||
|
|
|
@ -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 ****************************/
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
14
swad_date.c
14
swad_date.c
|
@ -723,22 +723,14 @@ void Dat_WriteFormDate (unsigned FirstYear,unsigned LastYear,
|
|||
void Dat_GetDateFromForm (const char *ParamNameDay,const char *ParamNameMonth,const char *ParamNameYear,
|
||||
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);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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 *****************************/
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
38
swad_exam.c
38
swad_exam.c
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
37
swad_forum.c
37
swad_forum.c
|
@ -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");
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
|
92
swad_group.c
92
swad_group.c
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
15
swad_image.c
15
swad_image.c
|
@ -374,18 +374,11 @@ void Img_SetParamNames (struct ParamUploadImg *ParamUploadImg,int NumImgInForm)
|
|||
|
||||
Img_Action_t Img_GetImageActionFromForm (const char *ParamAction)
|
||||
{
|
||||
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
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
13
swad_info.c
13
swad_info.c
|
@ -1440,17 +1440,12 @@ static Inf_InfoType_t Inf_AsignInfoType (void)
|
|||
|
||||
Inf_InfoSrc_t Inf_GetInfoSrcFromForm (void)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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 ();
|
||||
}
|
||||
|
||||
|
|
27
swad_mail.c
27
swad_mail.c
|
@ -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");
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
13
swad_menu.c
13
swad_menu.c
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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 **********************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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];
|
||||
|
||||
|
|
60
swad_photo.c
60
swad_photo.c
|
@ -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);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
27
swad_place.c
27
swad_place.c
|
@ -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");
|
||||
|
|
|
@ -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 *****************************/
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
52
swad_role.c
52
swad_role.c
|
@ -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;
|
||||
|
|
11
swad_scope.c
11
swad_scope.c
|
@ -191,11 +191,12 @@ void Sco_PutParamScope (const char *ParamName,Sco_Scope_t Scope)
|
|||
|
||||
void Sco_GetScope (const char *ParamName)
|
||||
{
|
||||
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 ();
|
||||
|
|
|
@ -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'",
|
||||
|
|
|
@ -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 ****************************/
|
||||
|
|
|
@ -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],
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
12
swad_test.c
12
swad_test.c
|
@ -2472,7 +2472,7 @@ static unsigned long Tst_GetQuestionsForEdit (MYSQL_RES **mysql_res)
|
|||
Str_Concat (Query," GROUP BY tst_questions.QstCod",
|
||||
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 ();
|
||||
|
|
|
@ -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');
|
||||
}
|
||||
|
||||
|
|
21
swad_text.c
21
swad_text.c
|
@ -53761,27 +53761,6 @@ const char *Txt_You_must_send_your_photo_because_ =
|
|||
" allowed without photo."; // Necessita de tradução
|
||||
#endif
|
||||
|
||||
const char *Txt_You_must_specify_in_step_2_the_action_to_perform =
|
||||
#if L==1
|
||||
"S'ha d'especificar en el pas 2 l'acció a realitzar.";
|
||||
#elif L==2
|
||||
"Sie müssen in Schritt 2 die auszuführende Aktion festzulegen.";
|
||||
#elif L==3
|
||||
"You must specify in step 2 the action to perform.";
|
||||
#elif L==4
|
||||
"Debe especificar en el paso 2 la acción a realizar.";
|
||||
#elif L==5
|
||||
"Vous devez spécifier à l'étape 2 l'action à effectuer.";
|
||||
#elif L==6
|
||||
"Debe especificar en el paso 2 la acción a realizar."; // Okoteve traducción
|
||||
#elif L==7
|
||||
"È necessario specificare al punto 2 l'azione da eseguire.";
|
||||
#elif L==8
|
||||
"You must specify in step 2 the action to perform."; // Potrzebujesz tlumaczenie
|
||||
#elif L==9
|
||||
"Você deve especificar no passo 2 a ação a ser executada.";
|
||||
#endif
|
||||
|
||||
const char *Txt_You_must_specify_the_image_of_the_new_banner =
|
||||
#if L==1
|
||||
"Debe especificar la imagen"
|
||||
|
|
|
@ -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]);
|
||||
|
|
Loading…
Reference in New Issue