Version 16.132

This commit is contained in:
Antonio Cañas Vargas 2017-01-29 21:41:08 +01:00
parent c428ea015a
commit 2f7fccf025
61 changed files with 646 additions and 607 deletions

View File

@ -53,7 +53,7 @@ typedef enum
Act_DOWNLD_FILE, // Download a file in a new window. Do not write HTML content.
} Act_BrowserWindow_t;
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
#define Act_NUM_ACTIONS (1 + 9 + 51 + 14 + 93 + 73 + 70 + 249 + 189 + 159 + 172 + 36 + 31 + 97)

View File

@ -697,10 +697,11 @@ static void Agd_GetParamEventOrder (void)
if (!AlreadyGot)
{
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);
Gbl.Agenda.SelectedOrder = (Agd_Order_t)
Par_GetParToUnsignedLong ("Order",
0,
Agd_NUM_ORDERS - 1,
(unsigned long) Agd_ORDER_DEFAULT);
AlreadyGot = true;
}
}

View File

@ -62,6 +62,7 @@ typedef enum
Agd_ONLY_PUBLIC_EVENTS,
} Agd_WhichEvents_t;
#define Agd_NUM_ORDERS 2
typedef enum
{
Agd_ORDER_BY_START_DATE = 0,

View File

@ -523,10 +523,11 @@ static void Asg_WriteAssignmentFolder (struct Assignment *Asg)
static void Asg_GetParamAsgOrder (void)
{
Gbl.Asgs.SelectedOrder = (Dat_StartEndTime_t) Par_GetParToUnsigned ("Order",
(unsigned) Dat_START_TIME,
(unsigned) Dat_END_TIME,
(unsigned) Asg_ORDER_DEFAULT);
Gbl.Asgs.SelectedOrder = (Dat_StartEndTime_t)
Par_GetParToUnsignedLong ("Order",
0,
Dat_NUM_START_END_TIME - 1,
(unsigned long) Asg_ORDER_DEFAULT);
}
/*****************************************************************************/

View File

@ -522,10 +522,11 @@ static void Att_WriteAttEventAuthor (struct AttendanceEvent *Att)
static void Att_GetParamAttOrder (void)
{
Gbl.AttEvents.SelectedOrder = (Dat_StartEndTime_t) Par_GetParToUnsigned ("Order",
(unsigned) Dat_START_TIME,
(unsigned) Dat_END_TIME,
(unsigned) Att_ORDER_DEFAULT);
Gbl.AttEvents.SelectedOrder = (Dat_StartEndTime_t)
Par_GetParToUnsignedLong ("Order",
0,
Dat_NUM_START_END_TIME - 1,
(unsigned long) Att_ORDER_DEFAULT);
}
/*****************************************************************************/

View File

@ -162,8 +162,11 @@ static unsigned Cal_GetParamFirstDayOfWeek (void)
{
unsigned FirstDayOfWeek;
FirstDayOfWeek = Par_GetParToUnsigned ("FirstDayOfWeek",0,6,
Cal_FIRST_DAY_OF_WEEK_DEFAULT);
FirstDayOfWeek = (unsigned)
Par_GetParToUnsignedLong ("FirstDayOfWeek",
0,
6,
Cal_FIRST_DAY_OF_WEEK_DEFAULT);
if (!Cal_DayIsValidAsFirstDayOfWeek[FirstDayOfWeek])
FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT;

View File

@ -918,10 +918,11 @@ static void Ctr_ListOneCentreForSeeing (struct Centre *Ctr,unsigned NumCtr)
static void Ctr_GetParamCtrOrder (void)
{
Gbl.Ctrs.SelectedOrder = (Ctr_Order_t) Par_GetParToUnsigned ("Order",
(unsigned) Ctr_ORDER_BY_CENTRE,
(unsigned) Ctr_ORDER_BY_NUM_TCHS,
(unsigned) Ctr_ORDER_DEFAULT);
Gbl.Ctrs.SelectedOrder = (Ctr_Order_t)
Par_GetParToUnsignedLong ("Order",
0,
Ctr_NUM_ORDERS - 1,
(unsigned long) Ctr_ORDER_DEFAULT);
}
/*****************************************************************************/
@ -2079,8 +2080,11 @@ void Ctr_ChangeCtrStatus (void)
Ctr->CtrCod = Ctr_GetAndCheckParamOtherCtrCod ();
/* Get parameter with status */
Status = (Ctr_Status_t) Par_GetParToUnsigned ("Status",0,UINT_MAX,
(unsigned) Ctr_WRONG_STATUS);
Status = (Ctr_Status_t)
Par_GetParToUnsignedLong ("Status",
0,
(unsigned long) Ctr_MAX_STATUS,
(unsigned long) Ctr_WRONG_STATUS);
if (Status == Ctr_WRONG_STATUS)
Lay_ShowErrorAndExit ("Wrong status.");
StatusTxt = Ctr_GetStatusTxtFromStatusBits (Status);

View File

@ -43,7 +43,8 @@ typedef enum
} Ctr_Status_Bits_t;
typedef unsigned Ctr_Status_t;
#define Ctr_WRONG_STATUS ((Ctr_Status_t) UINT_MAX)
#define Ctr_MAX_STATUS ((Ctr_Status_t) 3)
#define Ctr_WRONG_STATUS ((Ctr_Status_t) (Ctr_MAX_STATUS + 1))
#define Ctr_NUM_STATUS_TXT 4
typedef enum
@ -76,12 +77,12 @@ struct Centre
unsigned NumUsrs; // Number of users in courses of this centre
};
#define Ctr_NUM_ORDERS 2
typedef enum
{
Ctr_ORDER_BY_CENTRE = 0,
Ctr_ORDER_BY_NUM_TCHS = 1,
} Ctr_Order_t;
#define Ctr_ORDER_DEFAULT Ctr_ORDER_BY_CENTRE
/*****************************************************************************/

View File

@ -191,13 +191,14 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.131 (2017-01-29)"
#define Log_PLATFORM_VERSION "SWAD 16.132 (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.132: Jan 29, 2017 Code refactoring in unsigned parameters. (211915 lines)
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)

View File

@ -889,10 +889,11 @@ void Cty_WriteScriptGoogleGeochart (void)
static void Cty_GetParamCtyOrder (void)
{
Gbl.Ctys.SelectedOrder = (Cty_Order_t) Par_GetParToUnsigned ("Order",
(unsigned) Cty_ORDER_BY_COUNTRY,
(unsigned) Cty_ORDER_BY_NUM_USRS,
(unsigned) Cty_ORDER_DEFAULT);
Gbl.Ctys.SelectedOrder = (Cty_Order_t)
Par_GetParToUnsignedLong ("Order",
0,
Cty_NUM_ORDERS - 1,
(unsigned long) Cty_ORDER_DEFAULT);
}
/*****************************************************************************/

View File

@ -56,12 +56,12 @@ struct Country
unsigned NumUsrs; // Number of users in courses of the institution
};
#define Cty_NUM_ORDERS 2
typedef enum
{
Cty_ORDER_BY_COUNTRY = 0,
Cty_ORDER_BY_NUM_USRS = 1,
} Cty_Order_t;
#define Cty_ORDER_DEFAULT Cty_ORDER_BY_NUM_USRS
typedef enum

View File

@ -2773,8 +2773,11 @@ void Crs_ChangeCrsStatus (void)
Crs->CrsCod = Crs_GetAndCheckParamOtherCrsCod ();
/* Get parameter with status */
Status = (Crs_Status_t) Par_GetParToUnsigned ("Status",0,UINT_MAX,
(unsigned) Crs_WRONG_STATUS);
Status = (Crs_Status_t)
Par_GetParToUnsignedLong ("Status",
0,
(unsigned long) Crs_MAX_STATUS,
(unsigned long) Crs_WRONG_STATUS);
if (Status == Crs_WRONG_STATUS)
Lay_ShowErrorAndExit ("Wrong status.");
StatusTxt = Crs_GetStatusTxtFromStatusBits (Status);
@ -3374,10 +3377,11 @@ void Crs_RemoveOldCrss (void)
long CrsCod;
/***** Get parameter with number of months without access *****/
MonthsWithoutAccess = Par_GetParToUnsigned ("Months",
Crs_MIN_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS,
Crs_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS,
UINT_MAX);
MonthsWithoutAccess = (unsigned)
Par_GetParToUnsignedLong ("Months",
Crs_MIN_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS,
Crs_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS,
UINT_MAX);
if (MonthsWithoutAccess == UINT_MAX)
Lay_ShowErrorAndExit ("Wrong number of months without clicks.");
SecondsWithoutAccess = (unsigned long) MonthsWithoutAccess * Dat_SECONDS_IN_ONE_MONTH;

View File

@ -58,7 +58,8 @@ typedef enum
} Crs_Status_Bits_t;
typedef unsigned Crs_Status_t;
#define Crs_WRONG_STATUS ((Crs_Status_t) UINT_MAX)
#define Crs_MAX_STATUS ((Crs_Status_t) 3)
#define Crs_WRONG_STATUS ((Crs_Status_t) (Crs_MAX_STATUS + 1))
#define Crs_NUM_STATUS_TXT 4
typedef enum

View File

@ -724,13 +724,13 @@ void Dat_GetDateFromForm (const char *ParamNameDay,const char *ParamNameMonth,co
unsigned *Day,unsigned *Month,unsigned *Year)
{
/**** Get day ****/
*Day = Par_GetParToUnsigned (ParamNameDay ,1,31,0);
*Day = (unsigned) Par_GetParToUnsignedLong (ParamNameDay ,1,31,0);
/**** Get month ****/
*Month = Par_GetParToUnsigned (ParamNameMonth,1,12,0);
*Month = (unsigned) Par_GetParToUnsignedLong (ParamNameMonth,1,12,0);
/**** Get year ****/
*Year = Par_GetParToUnsigned (ParamNameYear ,0,UINT_MAX,0);
*Year = (unsigned) Par_GetParToUnsignedLong (ParamNameYear ,0,UINT_MAX,0);
}
/*****************************************************************************/

View File

@ -2212,8 +2212,11 @@ void Deg_ChangeDegStatus (void)
Deg->DegCod = Deg_GetAndCheckParamOtherDegCod ();
/* Get parameter with status */
Status = (Deg_Status_t) Par_GetParToUnsigned ("Status",0,UINT_MAX,
(unsigned) Deg_WRONG_STATUS);
Status = (Deg_Status_t)
Par_GetParToUnsignedLong ("Status",
0,
(unsigned long) Deg_MAX_STATUS,
(unsigned long) Deg_WRONG_STATUS);
if (Status == Deg_WRONG_STATUS)
Lay_ShowErrorAndExit ("Wrong status.");
StatusTxt = Deg_GetStatusTxtFromStatusBits (Status);

View File

@ -54,7 +54,8 @@ typedef enum
} Deg_Status_Bits_t;
typedef unsigned Deg_Status_t;
#define Deg_WRONG_STATUS ((Deg_Status_t) UINT_MAX)
#define Deg_MAX_STATUS ((Deg_Status_t) 3)
#define Deg_WRONG_STATUS ((Deg_Status_t) (Deg_MAX_STATUS + 1))
#define Deg_NUM_STATUS_TXT 4
typedef enum

View File

@ -193,10 +193,11 @@ void Dpt_SeeDepts (void)
static void Dpt_GetParamDptOrder (void)
{
Gbl.Dpts.SelectedOrder = (Dpt_Order_t) Par_GetParToUnsigned ("Order",
(unsigned) Dpt_ORDER_BY_DEPARTMENT,
(unsigned) Dpt_ORDER_BY_NUM_TCHS,
(unsigned) Dpt_ORDER_DEFAULT);
Gbl.Dpts.SelectedOrder = (Dpt_Order_t)
Par_GetParToUnsignedLong ("Order",
0,
Dpt_NUM_ORDERS - 1,
(unsigned long) Dpt_ORDER_DEFAULT);
}
/*****************************************************************************/

View File

@ -44,12 +44,12 @@ struct Department
unsigned NumTchs;
};
#define Dpt_NUM_ORDERS 2
typedef enum
{
Dpt_ORDER_BY_DEPARTMENT = 0,
Dpt_ORDER_BY_NUM_TCHS = 1,
} Dpt_Order_t;
#define Dpt_ORDER_DEFAULT Dpt_ORDER_BY_DEPARTMENT
/*****************************************************************************/

View File

@ -52,9 +52,10 @@
/****************************** Internal types *******************************/
/*****************************************************************************/
#define Enr_NUM_REG_REM_USRS_ACTIONS 6
typedef enum
{
Enr_USRS_UNKNOWN_ACTION = 0,
Enr_REG_REM_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,
@ -722,10 +723,11 @@ void Enr_RemoveOldUsrs (void)
struct UsrData UsrDat;
/***** Get parameter with number of months without access *****/
MonthsWithoutAccess = Par_GetParToUnsigned ("Months",
Usr_MIN_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS,
Usr_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS,
UINT_MAX);
MonthsWithoutAccess = (unsigned)
Par_GetParToUnsignedLong ("Months",
Usr_MIN_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS,
Usr_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS,
(unsigned long) UINT_MAX);
if (MonthsWithoutAccess == UINT_MAX)
Lay_ShowErrorAndExit ("Wrong number of months.");
SecondsWithoutAccess = (time_t) MonthsWithoutAccess * Dat_SECONDS_IN_ONE_MONTH;
@ -1289,10 +1291,11 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
WhatToDo.EliminateUsrs = false;
WhatToDo.RegisterUsrs = false;
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);
RegRemUsrsAction = (Enr_RegRemUsrsAction_t)
Par_GetParToUnsignedLong ("RegRemAction",
0,
Enr_NUM_REG_REM_USRS_ACTIONS - 1,
(unsigned long) Enr_REG_REM_USRS_UNKNOWN_ACTION);
switch (RegRemUsrsAction)
{
case Enr_REGISTER_SPECIFIED_USRS_IN_CRS:
@ -1852,10 +1855,11 @@ void Enr_SignUpInCrs (void)
else
{
/***** Get new role from record form *****/
RoleFromForm = (Rol_Role_t) Par_GetParToUnsigned ("Role",
0,
Rol_NUM_ROLES - 1,
(unsigned) Rol_UNKNOWN);
RoleFromForm = (Rol_Role_t)
Par_GetParToUnsignedLong ("Role",
0,
Rol_NUM_ROLES - 1,
(unsigned long) Rol_UNKNOWN);
/* Check if role is correct */
if (!(RoleFromForm == Rol_STUDENT ||
@ -3641,10 +3645,10 @@ void Enr_ModifyUsr1 (void)
/***** Get the action to do *****/
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);
Par_GetParToUnsignedLong ("RegRemAction",
0,
Enr_REG_REM_ONE_USR_NUM_ACTIONS - 1,
(unsigned long) Enr_REG_REM_ONE_USR_UNKNOWN_ACTION);
switch (Gbl.Usrs.RegRemAction)
{
case Enr_REGISTER_MODIFY_ONE_USR_IN_CRS:

View File

@ -49,9 +49,10 @@ typedef enum
Enr_SET_ACCEPTED_TO_TRUE,
} Enr_KeepOrSetAccepted_t;
#define Enr_REG_REM_ONE_USR_NUM_ACTIONS 11
typedef enum
{
Enr_ONE_USR_UNKNOWN_ACTION = 0,
Enr_REG_REM_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,

View File

@ -129,10 +129,11 @@ static long Exa_GetParamsExamAnnouncement (void)
Crs_MAX_LENGTH_COURSE_FULL_NAME);
/***** Get the year *****/
Gbl.ExamAnns.ExaDat.Year = Par_GetParToUnsigned ("Year",
0, // N.A.
Deg_MAX_YEARS_PER_DEGREE,
Gbl.CurrentCrs.Crs.Year);
Gbl.ExamAnns.ExaDat.Year = (unsigned)
Par_GetParToUnsignedLong ("Year",
0, // N.A.
Deg_MAX_YEARS_PER_DEGREE,
(unsigned long) Gbl.CurrentCrs.Crs.Year);
/***** Get the type of exam announcement *****/
Par_GetParToText ("ExamSession",Gbl.ExamAnns.ExaDat.Session,Cns_MAX_BYTES_STRING);
@ -152,16 +153,16 @@ static long Exa_GetParamsExamAnnouncement (void)
}
/***** Get the hour of the exam *****/
Gbl.ExamAnns.ExaDat.StartTime.Hour = Par_GetParToUnsigned ("ExamHour",
0,23,0);
Gbl.ExamAnns.ExaDat.StartTime.Minute = Par_GetParToUnsigned ("ExamMinute",
0,59,0);
Gbl.ExamAnns.ExaDat.StartTime.Hour = (unsigned) Par_GetParToUnsignedLong ("ExamHour",
0,23,0);
Gbl.ExamAnns.ExaDat.StartTime.Minute = (unsigned) Par_GetParToUnsignedLong ("ExamMinute",
0,59,0);
/***** Get the duration of the exam *****/
Gbl.ExamAnns.ExaDat.Duration.Hour = Par_GetParToUnsigned ("DurationHour",
0,23,0);
Gbl.ExamAnns.ExaDat.Duration.Minute = Par_GetParToUnsigned ("DurationMinute",
0,59,0);
Gbl.ExamAnns.ExaDat.Duration.Hour = (unsigned) Par_GetParToUnsignedLong ("DurationHour",
0,23,0);
Gbl.ExamAnns.ExaDat.Duration.Minute = (unsigned) Par_GetParToUnsignedLong ("DurationMinute",
0,59,0);
/***** Get the place where the exam will happen *****/
Par_GetParToHTML ("Place",Gbl.ExamAnns.ExaDat.Place,Cns_MAX_BYTES_TEXT);

View File

@ -9864,10 +9864,11 @@ static bool Brw_GetParamPublicFile (void)
static Brw_License_t Brw_GetParLicense (void)
{
return (Brw_License_t) Par_GetParToUnsigned ("License",
(unsigned) Brw_LICENSE_UNKNOWN,
(unsigned) Brw_LICENSE_CC_BY_NC_ND,
(unsigned) Brw_LICENSE_UNKNOWN);
return (Brw_License_t)
Par_GetParToUnsignedLong ("License",
0,
Brw_NUM_LICENSES - 1,
(unsigned long) Brw_LICENSE_UNKNOWN);
}
/*****************************************************************************/
@ -11630,10 +11631,11 @@ void Brw_RemoveOldFilesBriefcase (void)
if (Brw_GetIfCrsAssigWorksFileBrowser ())
{
/***** Get parameter with number of months without access *****/
Months = Par_GetParToUnsigned ("Months",
Brw_MIN_MONTHS_TO_REMOVE_OLD_FILES,
Brw_MAX_MONTHS_IN_BRIEFCASE,
Brw_DEF_MONTHS_TO_REMOVE_OLD_FILES);
Months = (unsigned)
Par_GetParToUnsignedLong ("Months",
Brw_MIN_MONTHS_TO_REMOVE_OLD_FILES,
Brw_MAX_MONTHS_IN_BRIEFCASE,
Brw_DEF_MONTHS_TO_REMOVE_OLD_FILES);
/***** Remove old files *****/
Brw_RemoveOldFilesInBrowser (Months,&Removed);

View File

@ -3729,17 +3729,17 @@ void For_GetParamsForum (void)
{
/***** Get which forums I want to see *****/
Gbl.Forum.WhichForums = (For_WhichForums_t)
Par_GetParToUnsigned ("WhichForum",
(unsigned) For_ONLY_CURRENT_FORUMS,
(unsigned) For_ALL_MY_FORUMS,
(unsigned) For_DEFAULT_WHICH_FORUMS);
Par_GetParToUnsignedLong ("WhichForum",
0,
For_NUM_WHICH_FORUMS - 1,
(unsigned long) For_DEFAULT_WHICH_FORUMS);
/***** Get order type *****/
Gbl.Forum.SelectedOrder = (For_Order_t)
Par_GetParToUnsigned ("Order",
(unsigned) For_FIRST_MSG,
(unsigned) For_LAST_MSG,
(unsigned) For_DEFAULT_ORDER);
Par_GetParToUnsignedLong ("Order",
0,
For_NUM_ORDERS - 1,
(unsigned long) For_DEFAULT_ORDER);
/***** Get parameter with code of institution *****/
Gbl.Forum.Ins.InsCod = Par_GetParToLong ("ForInsCod");

View File

@ -77,6 +77,8 @@ struct ForumThread
unsigned NumWriters;
unsigned NumReaders;
};
#define For_NUM_ORDERS 2
typedef enum
{
For_FIRST_MSG = 0,

View File

@ -380,12 +380,12 @@ void Gbl_InitializeGlobals (void)
Gbl.Usrs.ClassPhoto.Cols = Usr_CLASS_PHOTO_COLS_DEF;
/* Statistics */
Gbl.Stat.ClicksGroupedBy = Sta_CLICKS_CRS_PER_USR;
Gbl.Stat.CountType = Sta_TOTAL_CLICKS;
Gbl.Stat.Role = Sta_IDENTIFIED_USRS;
Gbl.Stat.NumAction = ActAll;
Gbl.Stat.RowsPerPage = 50;
Gbl.Stat.FigureType = Sta_USERS;
Gbl.Stat.ClicksGroupedBy = Sta_CLICKS_GROUPED_BY_DEFAULT;
Gbl.Stat.CountType = Sta_COUNT_TYPE_DEFAULT;
Gbl.Stat.Role = Sta_ROLE_DEFAULT;
Gbl.Stat.NumAction = Sta_NUM_ACTION_DEFAULT;
Gbl.Stat.RowsPerPage = Sta_DEF_ROWS_PER_PAGE;
Gbl.Stat.FigureType = Sta_FIGURE_TYPE_DEF;
Gbl.Scope.Current = Sco_SCOPE_CRS;

View File

@ -3150,10 +3150,11 @@ void Grp_RecFormNewGrp (void)
Grp_MAX_LENGTH_GROUP_NAME);
/* Get maximum number of students */
Gbl.CurrentCrs.Grps.MaxStudents = Par_GetParToUnsigned ("MaxStudents",
0,
Grp_MAX_STUDENTS_IN_A_GROUP,
Grp_NUM_STUDENTS_NOT_LIMITED);
Gbl.CurrentCrs.Grps.MaxStudents = (unsigned)
Par_GetParToUnsignedLong ("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
{
@ -3844,10 +3845,11 @@ void Grp_ChangeMaxStdsGrp (void)
Lay_ShowErrorAndExit ("Code of group is missing.");
/* Get the new maximum number of students of the group */
NewMaxStds = Par_GetParToUnsigned ("MaxStudents",
0,
Grp_MAX_STUDENTS_IN_A_GROUP,
Grp_NUM_STUDENTS_NOT_LIMITED);
NewMaxStds = (unsigned)
Par_GetParToUnsignedLong ("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;
@ -4281,9 +4283,9 @@ void Grp_GetParamWhichGrps (void)
/* Get parameter */
Gbl.CurrentCrs.Grps.WhichGrps = (Grp_WhichGroups_t)
Par_GetParToUnsigned ("WhichGrps",
(unsigned) Grp_ONLY_MY_GROUPS,
(unsigned) Grp_ALL_GROUPS,
(unsigned) WhichGroupsDefault);
Par_GetParToUnsignedLong ("WhichGrps",
0,
Grp_NUM_WHICH_GROUPS - 1,
(unsigned long) WhichGroupsDefault);
}
}

View File

@ -38,7 +38,8 @@
#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
#define Grp_NUM_STUDENTS_NOT_LIMITED INT_MAX // This number can be stored in database as an integer...
// ...and means that a group has no limit of students
/*****************************************************************************/
/******************************* Public types ********************************/
@ -109,6 +110,7 @@ struct ListGrpsAlreadySelec
bool AlreadySelected;
};
#define Grp_NUM_WHICH_GROUPS 2
typedef enum
{
Grp_ONLY_MY_GROUPS,

View File

@ -182,10 +182,10 @@ void Hld_SeeHolidays (void)
static void Hld_GetParamHldOrder (void)
{
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);
Par_GetParToUnsignedLong ("Order",
0,
Hld_NUM_ORDERS - 1,
(unsigned long) Hld_DEFAULT_ORDER_TYPE);
}
/*****************************************************************************/
@ -440,10 +440,11 @@ static void Hld_GetDataOfHolidayByCod (struct Holiday *Hld)
static Hld_HolidayType_t Hld_GetParamHldType (void)
{
return (Hld_HolidayType_t) Par_GetParToUnsigned ("HldTyp",
(unsigned) Hld_HOLIDAY,
(unsigned) Hld_NON_SCHOOL_PERIOD,
(unsigned) Hld_HOLIDAY_TYPE_DEFAULT);
return (Hld_HolidayType_t)
Par_GetParToUnsignedLong ("HldTyp",
0,
Hld_NUM_TYPES_HOLIDAY - 1,
(unsigned long) Hld_HOLIDAY_TYPE_DEFAULT);
}
/*****************************************************************************/

View File

@ -61,12 +61,12 @@ struct Holiday
char Name[Hld_MAX_LENGTH_HOLIDAY_NAME + 1];
};
#define Hld_NUM_ORDERS 2
typedef enum
{
Hld_ORDER_BY_PLACE = 0,
Hld_ORDER_BY_START_DATE = 1,
} Hld_Order_t;
#define Hld_DEFAULT_ORDER_TYPE Hld_ORDER_BY_START_DATE
/*****************************************************************************/

View File

@ -375,10 +375,11 @@ void Img_SetParamNames (struct ParamUploadImg *ParamUploadImg,int NumImgInForm)
Img_Action_t Img_GetImageActionFromForm (const char *ParamAction)
{
/***** Get parameter with the action to perform on 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
return (Img_Action_t)
Par_GetParToUnsignedLong (ParamAction,
0,
Img_NUM_ACTIONS - 1,
(unsigned long) Img_ACTION_DEFAULT);
}
/*****************************************************************************/

View File

@ -47,6 +47,7 @@ typedef enum
Img_ACTION_CHANGE_IMAGE, // Change existing image by a new image
Img_ACTION_NO_IMAGE, // Do not use image (remove current image if exists)
} Img_Action_t;
#define Img_ACTION_DEFAULT Img_ACTION_NO_IMAGE
/***** Status of an image file *****/
/*

View File

@ -1442,10 +1442,11 @@ Inf_InfoSrc_t Inf_GetInfoSrcFromForm (void)
{
/***** Get info source for a specific type of course information
(introduction, teaching guide, bibliography, FAQ, links or evaluation) *****/
return (Inf_InfoSrc_t) Par_GetParToUnsigned ("InfoSrc",
(unsigned) Inf_INFO_SRC_NONE,
(unsigned) Inf_INFO_SRC_URL,
(unsigned) Inf_INFO_SRC_NONE);
return (Inf_InfoSrc_t)
Par_GetParToUnsignedLong ("InfoSrc",
0,
Inf_NUM_INFO_SOURCES - 1,
(unsigned long) Inf_INFO_SRC_NONE);
}
/*****************************************************************************/

View File

@ -909,10 +909,10 @@ static void Ins_PutHeadInstitutionsForSeeing (bool OrderSelectable)
static void Ins_GetParamInsOrder (void)
{
Gbl.Inss.SelectedOrder = (Ins_Order_t)
Par_GetParToUnsigned ("Order",
(unsigned) Ins_ORDER_BY_INSTITUTION,
(unsigned) Ins_ORDER_BY_NUM_USRS,
(unsigned) Ins_ORDER_DEFAULT);
Par_GetParToUnsignedLong ("Order",
0,
Ins_NUM_ORDERS - 1,
(unsigned long) Ins_ORDER_DEFAULT);
}
/*****************************************************************************/
@ -1935,9 +1935,12 @@ void Ins_ChangeInsStatus (void)
Ins->InsCod = Ins_GetAndCheckParamOtherInsCod ();
/* Get parameter with status */
Status = (Ins_Status_t) Par_GetParToUnsigned ("Status",0,UINT_MAX,
(unsigned) Ins_WRONG_STATUS);
if (Status == Ctr_WRONG_STATUS)
Status = (Ins_Status_t)
Par_GetParToUnsignedLong ("Status",
0,
(unsigned long) Ins_MAX_STATUS,
(unsigned long) Ins_WRONG_STATUS);
if (Status == Ins_WRONG_STATUS)
Lay_ShowErrorAndExit ("Wrong status.");
StatusTxt = Ins_GetStatusTxtFromStatusBits (Status);
Status = Ins_GetStatusBitsFromStatusTxt (StatusTxt); // New status

View File

@ -41,7 +41,8 @@ typedef enum
} Ins_Status_Bits_t;
typedef unsigned Ins_Status_t;
#define Ins_WRONG_STATUS ((Ins_Status_t) UINT_MAX)
#define Ins_MAX_STATUS ((Ins_Status_t) 3)
#define Ins_WRONG_STATUS ((Ins_Status_t) (Ins_MAX_STATUS + 1))
#define Ins_NUM_STATUS_TXT 4
typedef enum
@ -74,12 +75,12 @@ struct Instit
unsigned NumUsrs; // Number of users in courses of this institution
};
#define Ins_NUM_ORDERS 2
typedef enum
{
Ins_ORDER_BY_INSTITUTION = 0,
Ins_ORDER_BY_NUM_USRS = 1,
} Ins_Order_t;
#define Ins_ORDER_DEFAULT Ins_ORDER_BY_NUM_USRS
typedef enum

View File

@ -162,10 +162,10 @@ void Mai_SeeMailDomains (void)
static void Mai_GetParamMaiOrder (void)
{
Gbl.Mails.SelectedOrder = (Mai_DomainsOrder_t)
Par_GetParToUnsigned ("Order",
(unsigned) Mai_ORDER_BY_DOMAIN,
(unsigned) Mai_ORDER_BY_INFO,
(unsigned) Mai_ORDER_DEFAULT);
Par_GetParToUnsignedLong ("Order",
0,
Mai_NUM_ORDERS - 1,
(unsigned long) Mai_ORDER_DEFAULT);
}
/*****************************************************************************/

View File

@ -36,13 +36,13 @@
#define Mai_MAX_LENGTH_MAIL_DOMAIN (128 - 1)
#define Mai_MAX_LENGTH_MAIL_INFO (128 - 1)
#define Mai_NUM_ORDERS 3
typedef enum
{
Mai_ORDER_BY_DOMAIN = 0,
Mai_ORDER_BY_INFO = 1,
Mai_ORDER_BY_USERS = 2,
} Mai_DomainsOrder_t;
#define Mai_ORDER_DEFAULT Mai_ORDER_BY_USERS
struct Mail

View File

@ -435,8 +435,9 @@ void Mnu_ChangeMenu (void)
Mnu_Menu_t Mnu_GetParamMenu (void)
{
return (Mnu_Menu_t) Par_GetParToUnsigned ("Menu",
(unsigned) Mnu_MENU_HORIZONTAL,
(unsigned) Mnu_MENU_VERTICAL,
(unsigned) Mnu_MENU_DEFAULT);
return (Mnu_Menu_t)
Par_GetParToUnsignedLong ("Menu",
0,
Mnu_NUM_MENUS - 1,
(unsigned long) Mnu_MENU_DEFAULT);
}

View File

@ -77,6 +77,7 @@ typedef enum
Net_WIKIPEDIA,
Net_YOUTUBE,
} Net_WebsAndSocialNetworks_t;
#define Net_WEB_SOCIAL_NET_DEFAULT Net_WWW
#define Net_MAX_LENGTH_NETWORK_NAME 32
@ -397,10 +398,11 @@ static void Net_GetMyWebsAndSocialNetsFromForm (void)
char URL[Cns_MAX_LENGTH_WWW + 1];
/***** Get parameter with the type of web / social network *****/
Web = (Net_WebsAndSocialNetworks_t) Par_GetParToUnsigned ("Web",
(unsigned) Net_WWW,
(unsigned) Net_YOUTUBE,
(unsigned) Net_WWW);
Web = (Net_WebsAndSocialNetworks_t)
Par_GetParToUnsignedLong ("Web",
0,
Net_NUM_WEBS_AND_SOCIAL_NETWORKS - 1,
(unsigned long) Net_WEB_SOCIAL_NET_DEFAULT);
/***** Get URL *****/
Par_GetParToText ("URL",URL,Cns_MAX_LENGTH_WWW);

View File

@ -823,10 +823,11 @@ static void Ntf_PutHiddenParamNotifyEvent (Ntf_NotifyEvent_t NotifyEvent)
Ntf_NotifyEvent_t Ntf_GetParamNotifyEvent (void)
{
return (Ntf_NotifyEvent_t) Par_GetParToUnsigned ("NotifyEvent",
(unsigned) Ntf_EVENT_UNKNOWN,
(unsigned) Ntf_EVENT_SURVEY,
(unsigned) Ntf_EVENT_UNKNOWN);
return (Ntf_NotifyEvent_t)
Par_GetParToUnsignedLong ("NotifyEvent",
0,
Ntf_NUM_NOTIFY_EVENTS - 1,
(unsigned long) Ntf_EVENT_UNKNOWN);
}
/*****************************************************************************/

View File

@ -622,8 +622,11 @@ void Pag_GetParamPagNum (Pag_WhatPaginate_t WhatPaginate)
FirstCall = false;
/***** Try to get parameter with the number of page *****/
Gbl.Pag.CurrentPage = Par_GetParToUnsigned ("NumPage",
1,UINT_MAX,0);
Gbl.Pag.CurrentPage = (unsigned)
Par_GetParToUnsignedLong ("NumPage",
1,
UINT_MAX,
0);
if (Gbl.Pag.CurrentPage == 0)
/***** If there's no parameter page, return a default value *****/
switch (WhatPaginate)

View File

@ -712,15 +712,15 @@ void Par_GetMainParameters (void)
}
/***** Get action to perform *****/
ActCod = Par_GetParToUnsigned ("act",
ActUnk,
Act_MAX_ACTION_COD,
ActUnk);
ActCod = (unsigned) Par_GetParToUnsignedLong ("act",
ActUnk,
Act_MAX_ACTION_COD,
ActUnk);
if (ActCod == ActUnk)
ActCod = Par_GetParToUnsigned ("ActCod",
ActUnk,
Act_MAX_ACTION_COD,
ActUnk);
ActCod = (unsigned) Par_GetParToUnsignedLong ("ActCod",
ActUnk,
Act_MAX_ACTION_COD,
ActUnk);
if (ActCod != ActUnk)
Gbl.Action.Act = Act_FromActCodToAction[ActCod];
@ -842,10 +842,11 @@ void Par_GetMainParameters (void)
Gbl.Action.Tab = TabUnk;
if (Gbl.Action.Act == ActMnu)
{
Gbl.Action.Tab = (Tab_Tab_t) Par_GetParToUnsigned ("NxtTab",
(unsigned) TabUnk,
Tab_NUM_TABS - 1,
(unsigned) TabUnk);
Gbl.Action.Tab = (Tab_Tab_t)
Par_GetParToUnsignedLong ("NxtTab",
(unsigned long) TabUnk,
Tab_NUM_TABS - 1,
(unsigned long) TabUnk);
Tab_DisableIncompatibleTabs ();
}
else // Set tab depending on current action
@ -867,19 +868,19 @@ unsigned Par_GetParToText (const char *ParamName,char *ParamValue,size_t MaxByte
/****************** Get the unsigned value of a parameter ********************/
/*****************************************************************************/
unsigned Par_GetParToUnsigned (const char *ParamName,
unsigned Min,
unsigned Max,
unsigned Default)
unsigned long Par_GetParToUnsignedLong (const char *ParamName,
unsigned long Min,
unsigned long Max,
unsigned long Default)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
char UnsignedLongStr[20 + 1];
unsigned long UnsignedLongNum;
/***** Get parameter with unsigned number *****/
Par_GetParToText (ParamName,UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum >= Min && UnsignedNum <= Max)
return UnsignedNum;
Par_GetParToText (ParamName,UnsignedLongStr,10);
if (sscanf (UnsignedLongStr,"%lu",&UnsignedLongNum) == 1)
if (UnsignedLongNum >= Min && UnsignedLongNum <= Max)
return UnsignedLongNum;
return Default;
}

View File

@ -72,10 +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);
unsigned long Par_GetParToUnsignedLong (const char *ParamName,
unsigned long Min,
unsigned long Max,
unsigned long Default);
long Par_GetParToLong (const char *ParamName);
bool Par_GetParToBool (const char *ParamName);
unsigned Par_GetParToHTML (const char *ParamName,char *ParamValue,size_t MaxBytes);

View File

@ -1643,12 +1643,14 @@ void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
/***** Draw the classphoto/list *****/
switch (Gbl.Usrs.Me.ListType)
{
case Usr_CLASS_PHOTO:
case Usr_LIST_AS_CLASS_PHOTO:
Pho_ShowOrPrintClassPhotoDegrees (SeeOrPrint);
break;
case Usr_LIST:
case Usr_LIST_AS_LISTING:
Pho_ShowOrPrintListDegrees (SeeOrPrint);
break;
default:
break;
}
}
@ -1707,10 +1709,10 @@ void Pho_PutHiddenParamTypeOfAvg (void)
static Pho_AvgPhotoTypeOfAverage_t Pho_GetPhotoAvgTypeFromForm (void)
{
return (Pho_AvgPhotoTypeOfAverage_t)
Par_GetParToUnsigned ("AvgType",
(unsigned) Pho_PHOTO_MEDIAN_ALL,
(unsigned) Pho_PHOTO_AVERAGE_ALL,
(unsigned) Pho_PHOTO_AVG_DEFAULT);
Par_GetParToUnsignedLong ("AvgType",
0,
Pho_NUM_AVERAGE_PHOTO_TYPES - 1,
(unsigned long) Pho_PHOTO_AVG_DEFAULT);
}
/*****************************************************************************/
@ -1768,10 +1770,10 @@ void Pho_PutHiddenParamPhotoSize (void)
static Pho_HowComputePhotoSize_t Pho_GetHowComputePhotoSizeFromForm (void)
{
return (Pho_HowComputePhotoSize_t)
Par_GetParToUnsigned ("PhotoSize",
(unsigned) Pho_PROPORTIONAL_TO_NUMBER_OF_STUDENTS,
(unsigned) Pho_UNIQUE_SIZE,
(unsigned) Pho_PHOTO_SIZE_DEFAULT);
Par_GetParToUnsignedLong ("PhotoSize",
0,
Pho_NUM_HOW_COMPUTE_PHOTO_SIZES - 1,
(unsigned long) Pho_PHOTO_SIZE_DEFAULT);
}
/*****************************************************************************/
@ -1829,10 +1831,10 @@ void Pho_PutHiddenParamOrderDegrees (void)
static Pho_HowOrderDegrees_t Pho_GetHowOrderDegreesFromForm (void)
{
return (Pho_HowOrderDegrees_t)
Par_GetParToUnsigned ("Order",
(unsigned) Pho_NUMBER_OF_STUDENTS,
(unsigned) Pho_DEGREE_NAME,
(unsigned) Pho_ORDER_DEFAULT);
Par_GetParToUnsignedLong ("Order",
0,
Pho_NUM_HOW_ORDER_DEGREES - 1,
(unsigned long) Pho_ORDER_DEFAULT);
}
/*****************************************************************************/

View File

@ -185,10 +185,10 @@ void Plc_SeePlaces (void)
static void Plc_GetParamPlcOrder (void)
{
Gbl.Plcs.SelectedOrder = (Plc_Order_t)
Par_GetParToUnsigned ("Order",
(unsigned) Plc_ORDER_BY_PLACE,
(unsigned) Plc_ORDER_BY_NUM_CTRS,
(unsigned) Plc_ORDER_DEFAULT);
Par_GetParToUnsignedLong ("Order",
0,
Plc_NUM_ORDERS - 1,
(unsigned long) Plc_ORDER_DEFAULT);
}
/*****************************************************************************/

View File

@ -43,12 +43,12 @@ struct Place
unsigned NumCtrs;
};
#define Plc_NUM_ORDERS 2
typedef enum
{
Plc_ORDER_BY_PLACE = 0,
Plc_ORDER_BY_NUM_CTRS = 1,
} Plc_Order_t;
#define Plc_ORDER_DEFAULT Plc_ORDER_BY_NUM_CTRS
/*****************************************************************************/

View File

@ -352,10 +352,11 @@ Txt_Language_t Pre_GetParamLanguage (void)
{
extern const unsigned Txt_Current_CGI_SWAD_Language;
return (Txt_Language_t) Par_GetParToUnsigned ("Lan",
1,
Txt_NUM_LANGUAGES,
Txt_Current_CGI_SWAD_Language);
return (Txt_Language_t)
Par_GetParToUnsignedLong ("Lan",
1,
Txt_NUM_LANGUAGES,
(unsigned long) Txt_Current_CGI_SWAD_Language);
}
/*****************************************************************************/
@ -499,8 +500,8 @@ static void Pre_UpdateSideColsOnUsrDataTable (void)
unsigned Pre_GetParamSideCols (void)
{
return Par_GetParToUnsigned ("SideCols",
0,
Lay_SHOW_BOTH_COLUMNS,
Cfg_DEFAULT_COLUMNS);
return (unsigned) Par_GetParToUnsignedLong ("SideCols",
0,
Lay_SHOW_BOTH_COLUMNS,
Cfg_DEFAULT_COLUMNS);
}

View File

@ -228,10 +228,10 @@ Pri_Visibility_t Pri_GetVisibilityFromStr (const char *Str)
Pri_Visibility_t Pri_GetParamVisibility (const char *ParamName)
{
return (Pri_Visibility_t)
Par_GetParToUnsigned (ParamName,
0,
Pri_NUM_OPTIONS_PRIVACY - 1,
(unsigned) Pri_VISIBILITY_UNKNOWN);
Par_GetParToUnsignedLong (ParamName,
0,
Pri_NUM_OPTIONS_PRIVACY - 1,
(unsigned long) Pri_VISIBILITY_UNKNOWN);
}
/*****************************************************************************/

View File

@ -438,17 +438,18 @@ void Rec_ReceiveFormField (void)
Par_GetParToText ("FieldName",Gbl.CurrentCrs.Records.Field.Name,Rec_MAX_LENGTH_NAME_FIELD);
/* Get the number of lines */
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);
Gbl.CurrentCrs.Records.Field.NumLines = (unsigned)
Par_GetParToUnsignedLong ("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 */
Gbl.CurrentCrs.Records.Field.Visibility = (Rec_VisibilityRecordFields_t)
Par_GetParToUnsigned ("Visibility",
0,
Rec_NUM_TYPES_VISIBILITY - 1,
Rec_VISIBILITY_DEFAULT);
Par_GetParToUnsignedLong ("Visibility",
0,
Rec_NUM_TYPES_VISIBILITY - 1,
(unsigned long) Rec_VISIBILITY_DEFAULT);
if (Gbl.CurrentCrs.Records.Field.Name[0]) // If there's a name
{
@ -823,10 +824,11 @@ void Rec_ChangeLinesField (void)
Lay_ShowErrorAndExit ("Code of field is missing.");
/* Get the new number of lines */
NewNumLines = Par_GetParToUnsigned ("NumLines",
Rec_MIN_LINES_IN_EDITION_FIELD,
Rec_MAX_LINES_IN_EDITION_FIELD,
Rec_DEF_LINES_IN_EDITION_FIELD);
NewNumLines = (unsigned)
Par_GetParToUnsignedLong ("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);
@ -875,10 +877,10 @@ void Rec_ChangeVisibilityField (void)
/* Get the new visibility of the field */
NewVisibility = (Rec_VisibilityRecordFields_t)
Par_GetParToUnsigned ("Visibility",
0,
Rec_NUM_TYPES_VISIBILITY - 1,
Rec_VISIBILITY_DEFAULT);
Par_GetParToUnsignedLong ("Visibility",
0,
Rec_NUM_TYPES_VISIBILITY - 1,
(unsigned long) 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);
@ -1434,10 +1436,11 @@ static void Rec_ShowLinkToPrintPreviewOfRecords (void)
static void Rec_GetParamRecordsPerPage (void)
{
Gbl.Usrs.Listing.RecsPerPag = Par_GetParToUnsigned ("RecsPerPag",
Rec_MIN_RECORDS_PER_PAGE,
Rec_MAX_RECORDS_PER_PAGE,
Rec_DEF_RECORDS_PER_PAGE);
Gbl.Usrs.Listing.RecsPerPag = (unsigned)
Par_GetParToUnsignedLong ("RecsPerPag",
Rec_MIN_RECORDS_PER_PAGE,
Rec_MAX_RECORDS_PER_PAGE,
Rec_DEF_RECORDS_PER_PAGE);
}
/*****************************************************************************/
@ -3517,10 +3520,11 @@ Rol_Role_t Rec_GetRoleFromRecordForm (void)
bool RoleOK = false;
/***** Get role as a parameter from form *****/
Role = (Rol_Role_t) Par_GetParToUnsigned ("Role",
0,
Rol_NUM_ROLES - 1,
(unsigned) Rol_UNKNOWN);
Role = (Rol_Role_t)
Par_GetParToUnsignedLong ("Role",
0,
Rol_NUM_ROLES - 1,
(unsigned long) Rol_UNKNOWN);
/***** Check if I can register a user
with the received role in current course *****/
@ -3601,10 +3605,11 @@ void Rec_GetUsrNameFromRecordForm (struct UsrData *UsrDat)
static void Rec_GetUsrExtraDataFromRecordForm (struct UsrData *UsrDat)
{
/***** Get sex from form *****/
UsrDat->Sex = (Usr_Sex_t) Par_GetParToUnsigned ("Sex",
(unsigned) Usr_SEX_FEMALE,
(unsigned) Usr_SEX_MALE,
(unsigned) Usr_SEX_UNKNOWN);
UsrDat->Sex = (Usr_Sex_t)
Par_GetParToUnsignedLong ("Sex",
(unsigned long) Usr_SEX_FEMALE,
(unsigned long) Usr_SEX_MALE,
(unsigned long) Usr_SEX_UNKNOWN);
/***** Get country code *****/
UsrDat->CtyCod = Par_GetParToLong ("OthCtyCod");

View File

@ -319,10 +319,11 @@ void Rol_ChangeMyRole (void)
Rol_Role_t NewRole;
/***** Get parameter with the new logged role ******/
NewRole = (Rol_Role_t) Par_GetParToUnsigned ("MyRole",
0,
Rol_NUM_ROLES - 1,
(unsigned) Rol_UNKNOWN);
NewRole = (Rol_Role_t)
Par_GetParToUnsignedLong ("MyRole",
0,
Rol_NUM_ROLES - 1,
(unsigned long) Rol_UNKNOWN);
if (NewRole != Rol_UNKNOWN)
{
/* Check if new role is allowed for me */
@ -403,10 +404,11 @@ unsigned Rol_GetSelectedRoles (void)
unsigned Roles;
/***** Try to get param "Roles" with multiple roles *****/
Roles = Par_GetParToUnsigned ("Roles",
0, // 000...000
(1 << Rol_NUM_ROLES) - 1, // 111...111
0); // 000...000
Roles = (unsigned)
Par_GetParToUnsignedLong ("Roles",
0, // 000...000
(1 << Rol_NUM_ROLES) - 1, // 111...111
0); // 000...000
/***** Try to get multiple param "Role" *****/
Par_GetParMultiToText ("Role",StrRoles,Rol_NUM_ROLES * (10 + 1));

View File

@ -193,10 +193,10 @@ void Sco_GetScope (const char *ParamName)
{
/***** Get parameter with scope *****/
Gbl.Scope.Current = (Sco_Scope_t)
Par_GetParToUnsigned (ParamName,
0,
Sco_NUM_SCOPES - 1,
(Sco_Scope_t) Sco_SCOPE_UNK);
Par_GetParToUnsignedLong (ParamName,
0,
Sco_NUM_SCOPES - 1,
(unsigned long) Sco_SCOPE_UNK);
/***** Adjust scope avoiding impossible or forbidden scopes *****/
Sco_AdjustScope ();

View File

@ -418,10 +418,10 @@ void Sch_GetParamWhatToSearch (void)
/***** Get what to search from form *****/
WhatToSearch = (Sch_WhatToSearch_t)
Par_GetParToUnsigned ("WhatToSearch",
0,
Sch_NUM_WHAT_TO_SEARCH - 1,
(unsigned) Sch_SEARCH_UNKNOWN);
Par_GetParToUnsignedLong ("WhatToSearch",
0,
Sch_NUM_WHAT_TO_SEARCH - 1,
(unsigned long) Sch_SEARCH_UNKNOWN);
// If parameter WhatToSearch is not present, use parameter from session
if (WhatToSearch != Sch_SEARCH_UNKNOWN)

View File

@ -403,11 +403,18 @@ void Sta_AskShowCrsHits (void)
extern const char *Txt_No_teachers_or_students_found;
static unsigned long RowsPerPage[] =
{
10,20,30,40,50,
100,500,
1000,5000,
10000,50000,
100000
Sta_MIN_ROWS_PER_PAGE * 1,
Sta_MIN_ROWS_PER_PAGE * 2,
Sta_MIN_ROWS_PER_PAGE * 3,
Sta_MIN_ROWS_PER_PAGE * 4,
Sta_MIN_ROWS_PER_PAGE * 5,
Sta_MIN_ROWS_PER_PAGE * 10,
Sta_MIN_ROWS_PER_PAGE * 50,
Sta_MIN_ROWS_PER_PAGE * 100,
Sta_MIN_ROWS_PER_PAGE * 500,
Sta_MIN_ROWS_PER_PAGE * 1000,
Sta_MIN_ROWS_PER_PAGE * 5000,
Sta_MAX_ROWS_PER_PAGE,
};
#define NUM_OPTIONS_ROWS_PER_PAGE (sizeof (RowsPerPage) / sizeof (RowsPerPage[0]))
unsigned NumTotalUsrs;
@ -484,7 +491,7 @@ void Sta_AskShowCrsHits (void)
if ((Gbl.Stat.ClicksGroupedBy < Sta_CLICKS_CRS_PER_USR ||
Gbl.Stat.ClicksGroupedBy > Sta_CLICKS_CRS_PER_ACTION) &&
Gbl.Stat.ClicksGroupedBy != Sta_CLICKS_CRS_DETAILED_LIST)
Gbl.Stat.ClicksGroupedBy = Sta_CLICKS_CRS_PER_USR;
Gbl.Stat.ClicksGroupedBy = Sta_CLICKS_GROUPED_BY_DEFAULT;
fprintf (Gbl.F.Out,"<input type=\"radio\""
" name=\"GroupedOrDetailed\" value=\"%u\"",
@ -826,8 +833,6 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
long LengthQuery;
MYSQL_RES *mysql_res;
unsigned long NumRows;
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
const char *LogTable;
Sta_ClicksDetailedOrGrouped_t DetailedOrGrouped = Sta_CLICKS_GROUPED;
struct UsrData UsrDat;
@ -850,56 +855,50 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
/***** Set table where to find depending on initial date *****/
// If initial day is older than current day minus Cfg_DAYS_IN_RECENT_LOG, then use recent log table, else use historic log table */
LogTable = (Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,&Gbl.Now.Date) <= Cfg_DAYS_IN_RECENT_LOG) ? "log_recent" :
"log_full";
LogTable = (Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,&Gbl.Now.Date)
<= Cfg_DAYS_IN_RECENT_LOG) ? "log_recent" :
"log_full";
/***** Get the type of stat of clicks ******/
Par_GetParToText ("GroupedOrDetailed",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum < Sta_NUM_CLICKS_DETAILED_OR_GROUPED)
DetailedOrGrouped = (Sta_ClicksDetailedOrGrouped_t) UnsignedNum;
DetailedOrGrouped = (Sta_ClicksDetailedOrGrouped_t)
Par_GetParToUnsignedLong ("GroupedOrDetailed",
0,
Sta_NUM_CLICKS_DETAILED_OR_GROUPED - 1,
(unsigned long) Sta_CLICKS_DETAILED_OR_GROUPED_DEFAULT);
if (DetailedOrGrouped == Sta_CLICKS_DETAILED)
Gbl.Stat.ClicksGroupedBy = Sta_CLICKS_CRS_DETAILED_LIST;
else // DetailedOrGrouped == Sta_CLICKS_GROUPED
{
Par_GetParToText ("GroupedBy",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
Lay_ShowErrorAndExit ("Type of grouping is missing.");
if (UnsignedNum >= Sta_NUM_CLICKS_GROUPED_BY)
Lay_ShowErrorAndExit ("Type of grouping is missing.");
Gbl.Stat.ClicksGroupedBy = (Sta_ClicksGroupedBy_t) UnsignedNum;
}
Gbl.Stat.ClicksGroupedBy = (Sta_ClicksGroupedBy_t)
Par_GetParToUnsignedLong ("GroupedBy",
0,
Sta_NUM_CLICKS_GROUPED_BY - 1,
(unsigned long) Sta_CLICKS_GROUPED_BY_DEFAULT);
/***** Get the type of count of clicks *****/
if (Gbl.Stat.ClicksGroupedBy != Sta_CLICKS_CRS_DETAILED_LIST)
{
Par_GetParToText ("CountType",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
Lay_ShowErrorAndExit ("Type of count is missing.");
if (UnsignedNum >= Sta_NUM_COUNT_TYPES)
Lay_ShowErrorAndExit ("Type of count is missing.");
Gbl.Stat.CountType = (Sta_CountType_t) UnsignedNum;
}
Gbl.Stat.CountType = (Sta_CountType_t)
Par_GetParToUnsignedLong ("CountType",
0,
Sta_NUM_COUNT_TYPES - 1,
(unsigned long) Sta_COUNT_TYPE_DEFAULT);
/***** Get action *****/
Par_GetParToText ("StatAct",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
Lay_ShowErrorAndExit ("Action is missing.");
if (UnsignedNum >= Act_NUM_ACTIONS)
Lay_ShowErrorAndExit ("Action is missing.");
Gbl.Stat.NumAction = (Act_Action_t) UnsignedNum;
Gbl.Stat.NumAction = (Act_Action_t)
Par_GetParToUnsignedLong ("StatAct",
0,
Act_NUM_ACTIONS - 1,
(unsigned long) Sta_NUM_ACTION_DEFAULT);
switch (GlobalOrCourse)
{
case Sta_SHOW_GLOBAL_ACCESSES:
/***** Get the type of user of clicks *****/
Par_GetParToText ("Role",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
Lay_ShowErrorAndExit ("Type of users is missing.");
if (UnsignedNum >= Sta_NUM_ROLES_STAT)
Lay_ShowErrorAndExit ("Type of users is missing.");
Gbl.Stat.Role = (Sta_Role_t) UnsignedNum;
Gbl.Stat.Role = (Sta_Role_t)
Par_GetParToUnsignedLong ("Role",
0,
Sta_NUM_ROLES_STAT - 1,
(unsigned long) Sta_ROLE_DEFAULT);
/***** Get users range for access statistics *****/
Gbl.Scope.Allowed = 1 << Sco_SCOPE_SYS |
@ -929,19 +928,22 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
if (Gbl.Stat.ClicksGroupedBy == Sta_CLICKS_CRS_DETAILED_LIST)
{
/****** Get the number of the first row to show ******/
Par_GetParToText ("FirstRow",UnsignedStr,10);
if (sscanf (UnsignedStr,"%lu",&Gbl.Stat.FirstRow) != 1)
Lay_ShowErrorAndExit ("Number of start row is missing.");
Gbl.Stat.FirstRow = Par_GetParToUnsignedLong ("FirstRow",
1,
ULONG_MAX,
0);
/****** Get the number of the last row to show ******/
Par_GetParToText ("LastRow",UnsignedStr,10);
if (sscanf (UnsignedStr,"%lu",&Gbl.Stat.LastRow) != 1)
Lay_ShowErrorAndExit ("Number of end row is missing.");
Gbl.Stat.LastRow = Par_GetParToUnsignedLong ("LastRow",
1,
ULONG_MAX,
0);
/****** Get the number of rows per page ******/
Par_GetParToText ("RowsPage",UnsignedStr,10);
if (sscanf (UnsignedStr,"%lu",&Gbl.Stat.RowsPerPage) != 1)
Lay_ShowErrorAndExit ("Number of rows per page is missing.");
Gbl.Stat.RowsPerPage = Par_GetParToUnsignedLong ("RowsPage",
Sta_MIN_ROWS_PER_PAGE,
Sta_MAX_ROWS_PER_PAGE,
Sta_DEF_ROWS_PER_PAGE);
}
/***** Show form again *****/
@ -1592,9 +1594,9 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
Act_FormStartAnchor (ActSeeAccCrs,"stat_results");
Sta_WriteParamsDatesSeeAccesses ();
Par_PutHiddenParamUnsigned ("GroupedBy",(unsigned) Sta_CLICKS_CRS_DETAILED_LIST);
Par_PutHiddenParamUnsigned ("StatAct",(unsigned) Gbl.Stat.NumAction);
Par_PutHiddenParamLong ("FirstRow",FirstRow-Gbl.Stat.RowsPerPage);
Par_PutHiddenParamLong ("LastRow",FirstRow-1);
Par_PutHiddenParamUnsigned ("StatAct" ,(unsigned) Gbl.Stat.NumAction);
Par_PutHiddenParamLong ("FirstRow",FirstRow - Gbl.Stat.RowsPerPage);
Par_PutHiddenParamLong ("LastRow" ,FirstRow - 1);
Par_PutHiddenParamLong ("RowsPage",Gbl.Stat.RowsPerPage);
Usr_PutHiddenParUsrCodAll (ActSeeAccCrs,Gbl.Usrs.Select.All);
}
@ -2100,7 +2102,7 @@ static void Sta_ShowDistrAccessesPerDaysAndHour (unsigned long NumRows,MYSQL_RES
Sta_WriteParamsDatesSeeAccesses ();
Par_PutHiddenParamUnsigned ("GroupedBy",(unsigned) Gbl.Stat.ClicksGroupedBy);
Par_PutHiddenParamUnsigned ("CountType",(unsigned) Gbl.Stat.CountType);
Par_PutHiddenParamUnsigned ("StatAct",(unsigned) Gbl.Stat.NumAction);
Par_PutHiddenParamUnsigned ("StatAct" ,(unsigned) Gbl.Stat.NumAction);
if (Gbl.Action.Act == ActSeeAccCrs)
Usr_PutHiddenParUsrCodAll (ActSeeAccCrs,Gbl.Usrs.Select.All);
else // Gbl.Action.Act == ActSeeAccGbl
@ -2335,19 +2337,11 @@ static void Sta_ShowDistrAccessesPerDaysAndHour (unsigned long NumRows,MYSQL_RES
static Sta_ColorType_t Sta_GetStatColorType (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Par_GetParToText ("ColorType",UnsignedStr,10);
if (UnsignedStr[0])
{
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
Lay_ShowErrorAndExit ("Type of color is missing.");
if (UnsignedNum >= Sta_NUM_COLOR_TYPES)
Lay_ShowErrorAndExit ("Type of color is missing.");
return (Sta_ColorType_t) UnsignedNum;
}
return (Sta_ColorType_t) 0;
return (Sta_ColorType_t)
Par_GetParToUnsignedLong ("ColorType",
0,
Sta_NUM_COLOR_TYPES - 1,
(unsigned long) Sta_COLOR_TYPE_DEF);
}
/*****************************************************************************/
@ -3976,16 +3970,13 @@ void Sta_ShowFigures (void)
Sta_GetAndShowNumUsrsPerSideColumns, // Sta_SIDE_COLUMNS
Sta_GetAndShowNumUsrsPerPrivacy, // Sta_PRIVACY
};
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
/***** Get the type of figure ******/
Par_GetParToText ("FigureType",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
Lay_ShowErrorAndExit ("Type of stat is missing.");
if (UnsignedNum >= Sta_NUM_FIGURES)
Lay_ShowErrorAndExit ("Type of stat is missing.");
Gbl.Stat.FigureType = (Sta_FigureType_t) UnsignedNum;
Gbl.Stat.FigureType = (Sta_FigureType_t)
Par_GetParToUnsignedLong ("FigureType",
0,
Sta_NUM_FIGURES - 1,
(unsigned long) Sta_FIGURE_TYPE_DEF);
/***** Show again the form to see use of the platform *****/
Sta_ReqShowFigures ();
@ -5079,7 +5070,7 @@ static void Sta_GetAndShowInss (const char *Query,const char *TxtFigure)
/* Draw the classphoto/list */
switch (Gbl.Usrs.Me.ListType)
{
case Usr_CLASS_PHOTO:
case Usr_LIST_AS_CLASS_PHOTO:
/***** Draw institutions as a class photo *****/
for (NumIns = 0;
NumIns < NumInss;)
@ -5113,7 +5104,7 @@ static void Sta_GetAndShowInss (const char *Query,const char *TxtFigure)
fprintf (Gbl.F.Out,"</tr>");
break;
case Usr_LIST:
case Usr_LIST_AS_LISTING:
/***** Draw institutions as a list *****/
fprintf (Gbl.F.Out,"<tr>"
"<th></th>"
@ -5172,6 +5163,8 @@ static void Sta_GetAndShowInss (const char *Query,const char *TxtFigure)
NumberLastRow = NumberThisRow;
}
break;
default:
break;
}
}

View File

@ -48,6 +48,9 @@ typedef enum
Sta_UNKNOWN_USRS = 9,
Sta_ME = 10,
} Sta_Role_t;
#define Sta_ROLE_DEFAULT Sta_IDENTIFIED_USRS
#define Sta_NUM_ACTION_DEFAULT ActAll
#define Sta_NUM_COUNT_TYPES 5
typedef enum
@ -58,6 +61,7 @@ typedef enum
Sta_GENERATION_TIME = 3,
Sta_SEND_TIME = 4,
} Sta_CountType_t;
#define Sta_COUNT_TYPE_DEFAULT Sta_TOTAL_CLICKS
#define Sta_NUM_CLICKS_DETAILED_OR_GROUPED 2
typedef enum
@ -65,6 +69,7 @@ typedef enum
Sta_CLICKS_DETAILED = 0,
Sta_CLICKS_GROUPED = 1,
} Sta_ClicksDetailedOrGrouped_t;
#define Sta_CLICKS_DETAILED_OR_GROUPED_DEFAULT Sta_CLICKS_GROUPED
#define Sta_NUM_CLICKS_GROUPED_BY 24
typedef enum
@ -96,6 +101,7 @@ typedef enum
Sta_CLICKS_GBL_PER_DEGREE = 22,
Sta_CLICKS_GBL_PER_COURSE = 23,
} Sta_ClicksGroupedBy_t;
#define Sta_CLICKS_GROUPED_BY_DEFAULT Sta_CLICKS_CRS_PER_USR
#define Sta_NUM_FIGURES 23
typedef enum
@ -124,6 +130,11 @@ typedef enum
Sta_SIDE_COLUMNS, // Number of users per layout of columns
Sta_PRIVACY, // Number of users per privacity
} Sta_FigureType_t;
#define Sta_FIGURE_TYPE_DEF Sta_USERS
#define Sta_MIN_ROWS_PER_PAGE 10
#define Sta_MAX_ROWS_PER_PAGE (Sta_MIN_ROWS_PER_PAGE * 10000)
#define Sta_DEF_ROWS_PER_PAGE (Sta_MIN_ROWS_PER_PAGE * 5)
#define Sta_NUM_COLOR_TYPES 3
typedef enum
@ -132,6 +143,7 @@ typedef enum
Sta_BLACK_TO_WHITE,
Sta_WHITE_TO_BLACK,
} Sta_ColorType_t;
#define Sta_COLOR_TYPE_DEF Sta_COLOR
#define Sta_NUM_STAT_CRS_FILE_ZONES 11

View File

@ -53,11 +53,6 @@ extern struct Globals Gbl;
#define Svy_MAX_BYTES_ANSWER (Svy_MAX_LENGTH_ANSWER * Str_MAX_CHARACTER)
#define Svy_MAX_BYTES_LIST_ANSWER_TYPES (10 + (Svy_NUM_ANS_TYPES - 1) * (1 + 10))
typedef enum
{
Svy_ANS_UNIQUE_CHOICE = 0,
Svy_ANS_MULTIPLE_CHOICE = 1,
} Svy_AnswerType_t;
const char *Svy_StrAnswerTypesDB[Svy_NUM_ANS_TYPES] =
{
"unique_choice",
@ -138,7 +133,6 @@ static void Svy_PutParamQstCod (long QstCod);
static long Svy_GetParamQstCod (void);
static void Svy_RemAnswersOfAQuestion (long QstCod);
static Svy_AnswerType_t Svy_ConvertFromStrAnsTypDBToAnsTyp (const char *StrAnsTypeBD);
static Svy_AnswerType_t Svy_ConvertFromUnsignedStrToAnsTyp (const char *UnsignedStr);
static bool Svy_CheckIfAnswerExists (long QstCod,unsigned AnsInd);
static unsigned Svy_GetAnswersQst (long QstCod,MYSQL_RES **mysql_res);
static int Svy_AllocateTextChoiceAnswer (struct SurveyQuestion *SvyQst,unsigned NumAns);
@ -799,17 +793,11 @@ static void Svy_WriteStatus (struct Survey *Svy)
static void Svy_GetParamSvyOrder (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
/***** Set default order type *****/
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.SelectedOrder = (Svy_Order_t) UnsignedNum;
Gbl.Svys.SelectedOrder = (Svy_Order_t)
Par_GetParToUnsignedLong ("Order",
0,
Svy_NUM_ORDERS - 1,
(unsigned long) Svy_ORDER_DEFAULT);
}
/*****************************************************************************/
@ -2865,21 +2853,6 @@ static Svy_AnswerType_t Svy_ConvertFromStrAnsTypDBToAnsTyp (const char *StrAnsTy
return (Svy_AnswerType_t) 0;
}
/*****************************************************************************/
/************ Convert a string with an unsigned to answer type ***************/
/*****************************************************************************/
static Svy_AnswerType_t Svy_ConvertFromUnsignedStrToAnsTyp (const char *UnsignedStr)
{
unsigned AnsType;
if (sscanf (UnsignedStr,"%u",&AnsType) != 1)
Lay_ShowErrorAndExit ("Wrong type of answer.");
if (AnsType >= Svy_NUM_ANS_TYPES)
Lay_ShowErrorAndExit ("Wrong type of answer.");
return (Svy_AnswerType_t) AnsType;
}
/*****************************************************************************/
/*********** Check if an answer of a question exists in database *************/
/*****************************************************************************/
@ -2974,7 +2947,6 @@ void Svy_ReceiveQst (void)
char Query[512 + Cns_MAX_BYTES_TEXT + 1];
long SvyCod;
struct SurveyQuestion SvyQst;
char UnsignedStr[10 + 1];
unsigned NumAns;
char AnsStr[8 + 10 + 1];
unsigned NumLastAns;
@ -2993,8 +2965,11 @@ void Svy_ReceiveQst (void)
SvyQst.QstCod = Svy_GetParamQstCod ();
/* Get answer type */
Par_GetParToText ("AnswerType",UnsignedStr,10);
SvyQst.AnswerType = Svy_ConvertFromUnsignedStrToAnsTyp (UnsignedStr);
SvyQst.AnswerType = (Svy_AnswerType_t)
Par_GetParToUnsignedLong ("AnswerType",
0,
Svy_NUM_ANS_TYPES - 1,
(unsigned long) Svy_ANSWER_TYPE_DEFAULT);
/* Get question text */
Par_GetParToHTML ("Txt",Txt,Cns_MAX_BYTES_TEXT);

View File

@ -72,8 +72,15 @@ typedef enum
Svy_ORDER_BY_START_DATE = 0,
Svy_ORDER_BY_END_DATE = 1,
} Svy_Order_t;
#define Svy_ORDER_DEFAULT Svy_ORDER_BY_START_DATE
#define Svy_NUM_ANS_TYPES 2
typedef enum
{
Svy_ANS_UNIQUE_CHOICE = 0,
Svy_ANS_MULTIPLE_CHOICE = 1,
} Svy_AnswerType_t;
#define Svy_ANSWER_TYPE_DEFAULT Svy_ANS_UNIQUE_CHOICE
/*****************************************************************************/
/***************************** Public prototypes *****************************/

View File

@ -113,20 +113,17 @@ static void Syl_PutFormItemSyllabus (bool NewItem,unsigned NumItem,int Level,int
static void Syl_WriteNumItem (char *StrDst,FILE *FileTgt,int Level,int *CodItem);
/*****************************************************************************/
/******************** Get parameter to select a syllabus *********************/
/************* Get parameter about which syllabus I want to see **************/
/*****************************************************************************/
void Syl_GetParamWhichSyllabus (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
/***** Get which syllabus I want to see *****/
Par_GetParToText ("WhichSyllabus",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Syllabus.WhichSyllabus = (Syl_WhichSyllabus_t) UnsignedNum;
else
Gbl.Syllabus.WhichSyllabus = Syl_DEFAULT_WHICH_SYLLABUS;
Gbl.Syllabus.WhichSyllabus = (Syl_WhichSyllabus_t)
Par_GetParToUnsignedLong ("WhichSyllabus",
0,
Syl_NUM_WHICH_SYLLABUS - 1,
(unsigned long) Syl_DEFAULT_WHICH_SYLLABUS);
}
/*****************************************************************************/
@ -167,16 +164,16 @@ void Syl_PutFormWhichSyllabus (void)
}
/*****************************************************************************/
/************** Get parameter item number in program edition *****************/
/************ Get parameter item number in edition of syllabus ***************/
/*****************************************************************************/
void Syl_GetParamItemNumber (void)
{
char UnsignedStr[10 + 1];
Par_GetParToText ("NumI",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&Gbl.Syllabus.NumItem) != 1)
Lay_ShowErrorAndExit ("Item is missing.");
Gbl.Syllabus.NumItem = (unsigned)
Par_GetParToUnsignedLong ("NumI",
0,
UINT_MAX,
0);
}
/*****************************************************************************/
@ -1409,7 +1406,8 @@ void Syl_ModifyItemSyllabus (void)
Syl_GetParamItemNumber ();
/***** Get item body *****/
Par_GetParToHTML ("Txt",LstItemsSyllabus.Lst[Gbl.Syllabus.NumItem].Text,Syl_MAX_BYTES_TEXT_ITEM);
Par_GetParToHTML ("Txt",LstItemsSyllabus.Lst[Gbl.Syllabus.NumItem].Text,
Syl_MAX_BYTES_TEXT_ITEM);
/***** Create a new file where make the update *****/
Syl_BuildPathFileSyllabus (PathFile);

View File

@ -2101,9 +2101,6 @@ bool Tst_CheckIfCourseHaveTestsAndPluggableIsUnknown (void)
void Tst_ReceiveConfigTst (void)
{
extern const char *Txt_The_test_configuration_has_been_updated;
char IntStr[1 + 10 + 1];
int IntNum;
long LongNum;
char Query[512];
/***** Get whether test are visible via plugins or not *****/
@ -2111,35 +2108,34 @@ void Tst_ReceiveConfigTst (void)
/***** Get number of questions *****/
/* Get minimum number of questions */
Par_GetParToText ("NumQstMin",IntStr,1 + 10);
if (sscanf (IntStr,"%d",&IntNum) != 1)
Lay_ShowErrorAndExit ("Minimum number of questions is missing.");
Gbl.Test.Config.Min = (IntNum < 1) ? 1 :
(unsigned) IntNum;
Gbl.Test.Config.Min = (unsigned)
Par_GetParToUnsignedLong ("NumQstMin",
1,
UINT_MAX,
1);
/* Get default number of questions */
Par_GetParToText ("NumQstDef",IntStr,1 + 10);
if (sscanf (IntStr,"%d",&IntNum) != 1)
Lay_ShowErrorAndExit ("Default number of questions is missing.");
Gbl.Test.Config.Def = (IntNum < 1) ? 1 :
(unsigned) IntNum;
Gbl.Test.Config.Def = (unsigned)
Par_GetParToUnsignedLong ("NumQstDef",
1,
UINT_MAX,
1);
/* Get maximum number of questions */
Par_GetParToText ("NumQstMax",IntStr,1 + 10);
if (sscanf (IntStr,"%d",&IntNum) != 1)
Lay_ShowErrorAndExit ("Maximum number of questions is missing.");
Gbl.Test.Config.Max = (IntNum < 1) ? 1 :
(unsigned) IntNum;
Gbl.Test.Config.Max = (unsigned)
Par_GetParToUnsignedLong ("NumQstMax",
1,
UINT_MAX,
1);
/* Check and correct numbers */
Tst_CheckAndCorrectNumbersQst ();
/***** Get minimum time between consecutive tests, per question *****/
Par_GetParToText ("MinTimeNxtTstPerQst",IntStr,1 + 10);
if (sscanf (IntStr,"%ld",&LongNum) != 1)
Lay_ShowErrorAndExit ("Minimum time per question between two test is missing.");
Gbl.Test.Config.MinTimeNxtTstPerQst = (LongNum < 1L) ? 0UL :
(unsigned long) LongNum;
Gbl.Test.Config.MinTimeNxtTstPerQst = Par_GetParToUnsignedLong ("MinTimeNxtTstPerQst",
0,
ULONG_MAX,
0);
/***** Get type of feedback from form *****/
Gbl.Test.Config.FeedbackType = Tst_GetFeedbackTypeFromForm ();
@ -2168,19 +2164,11 @@ void Tst_ReceiveConfigTst (void)
static Tst_Pluggable_t Tst_GetPluggableFromForm (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Par_GetParToText ("Pluggable",UnsignedStr,10);
if (UnsignedStr[0])
{
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
return Tst_PLUGGABLE_UNKNOWN;
if (UnsignedNum >= Tst_NUM_TYPES_FEEDBACK)
return Tst_PLUGGABLE_UNKNOWN;
return (Tst_Pluggable_t) UnsignedNum;
}
return Tst_PLUGGABLE_UNKNOWN;
return (Tst_Pluggable_t)
Par_GetParToUnsignedLong ("Pluggable",
0,
Tst_NUM_OPTIONS_PLUGGABLE - 1,
(unsigned long) Tst_PLUGGABLE_UNKNOWN);
}
/*****************************************************************************/
@ -2189,19 +2177,11 @@ static Tst_Pluggable_t Tst_GetPluggableFromForm (void)
static Tst_Feedback_t Tst_GetFeedbackTypeFromForm (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Par_GetParToText ("Feedback",UnsignedStr,10);
if (UnsignedStr[0])
{
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
return (Tst_Feedback_t) 0;
if (UnsignedNum >= Tst_NUM_TYPES_FEEDBACK)
return (Tst_Feedback_t) 0;
return (Tst_Feedback_t) UnsignedNum;
}
return (Tst_Feedback_t) 0;
return (Tst_Feedback_t)
Par_GetParToUnsignedLong ("Feedback",
0,
Tst_NUM_TYPES_FEEDBACK - 1,
(unsigned long) Tst_FEEDBACK_DEFAULT);
}
/*****************************************************************************/
@ -4342,23 +4322,10 @@ static bool Tst_GetParamsTst (void)
static unsigned Tst_GetAndCheckParamNumTst (void)
{
char IntStr[1 + 10 + 1];
int IntNum;
/***** Get number of test *****/
Par_GetParToText ("NumTst",IntStr,10);
if (!IntStr[0])
Lay_ShowErrorAndExit ("Number of test is missing.");
if (sscanf (IntStr,"%d",&IntNum) == 1)
{
if (IntNum < (int) 1)
Lay_ShowErrorAndExit ("Wrong number of test.");
}
else
Lay_ShowErrorAndExit ("Wrong number of test.");
return (unsigned) IntNum;
return (unsigned) Par_GetParToUnsignedLong ("NumTst",
1,
UINT_MAX,
1);
}
/*****************************************************************************/
@ -4367,17 +4334,11 @@ static unsigned Tst_GetAndCheckParamNumTst (void)
static void Tst_GetParamNumQst (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
/***** Set default number of questions *****/
Gbl.Test.NumQsts = Gbl.Test.Config.Def;
/***** Get number of questions from form *****/
Par_GetParToText ("NumQst",UnsignedStr,10);
if (UnsignedStr[0])
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Test.NumQsts = UnsignedNum;
Gbl.Test.NumQsts = (unsigned)
Par_GetParToUnsignedLong ("NumQst",
(unsigned long) Gbl.Test.Config.Min,
(unsigned long) Gbl.Test.Config.Max,
(unsigned long) Gbl.Test.Config.Def);
}
/*****************************************************************************/
@ -5310,10 +5271,10 @@ void Tst_ReceiveQst (void)
static void Tst_GetQstFromForm (char *Stem,char *Feedback)
{
char UnsignedStr[10 + 1];
unsigned NumTag;
unsigned NumTagRead;
unsigned NumOpt;
char UnsignedStr[10 + 1];
char TagStr[6 + 10 + 1];
char AnsStr[6 + 10 + 1];
char FbStr[5 + 10 + 1];
@ -5325,8 +5286,13 @@ static void Tst_GetQstFromForm (char *Stem,char *Feedback)
Gbl.Test.QstCod = Tst_GetQstCod ();
/***** Get answer type *****/
Par_GetParToText ("AnswerType",UnsignedStr,10);
Gbl.Test.AnswerType = Tst_ConvertFromUnsignedStrToAnsTyp (UnsignedStr);
Gbl.Test.AnswerType = (Tst_AnswerType_t)
Par_GetParToUnsignedLong ("AnswerType",
0,
Tst_NUM_ANS_TYPES - 1,
(unsigned long) Tst_ANS_ALL);
if (Gbl.Test.AnswerType == Tst_ANS_ALL)
Lay_ShowErrorAndExit ("Wrong type of answer.");
/***** Get question tags *****/
for (NumTag = 0;
@ -5378,11 +5344,13 @@ static void Tst_GetQstFromForm (char *Stem,char *Feedback)
case Tst_ANS_FLOAT:
if (!Tst_AllocateTextChoiceAnswer (0))
Lay_ShowErrorAndExit (Gbl.Message);
Par_GetParToText ("AnsFloatMin",Gbl.Test.Answer.Options[0].Text,Tst_MAX_BYTES_FLOAT_ANSWER);
Par_GetParToText ("AnsFloatMin",Gbl.Test.Answer.Options[0].Text,
Tst_MAX_BYTES_FLOAT_ANSWER);
if (!Tst_AllocateTextChoiceAnswer (1))
Lay_ShowErrorAndExit (Gbl.Message);
Par_GetParToText ("AnsFloatMax",Gbl.Test.Answer.Options[1].Text,Tst_MAX_BYTES_FLOAT_ANSWER);
Par_GetParToText ("AnsFloatMax",Gbl.Test.Answer.Options[1].Text,
Tst_MAX_BYTES_FLOAT_ANSWER);
break;
case Tst_ANS_TRUE_FALSE:
Gbl.Test.Answer.TF = Par_GetParToBool ("AnsTF");
@ -5429,15 +5397,11 @@ static void Tst_GetQstFromForm (char *Stem,char *Feedback)
/* Get the numbers of correct answers */
if (Gbl.Test.AnswerType == Tst_ANS_UNIQUE_CHOICE)
{
Par_GetParToText ("AnsUni",UnsignedStr,10);
if (UnsignedStr[0])
{
if (sscanf (UnsignedStr,"%u",&NumCorrectAns) != 1)
Lay_ShowErrorAndExit ("Wrong selected answer.");
if (NumCorrectAns >= Tst_MAX_OPTIONS_PER_QUESTION)
Lay_ShowErrorAndExit ("Wrong selected answer.");
Gbl.Test.Answer.Options[NumCorrectAns].Correct = true;
}
NumCorrectAns = (unsigned) Par_GetParToUnsignedLong ("AnsUni",
0,
Tst_MAX_OPTIONS_PER_QUESTION - 1,
0);
Gbl.Test.Answer.Options[NumCorrectAns].Correct = true;
}
else if (Gbl.Test.AnswerType == Tst_ANS_MULTIPLE_CHOICE)
{

View File

@ -50080,6 +50080,8 @@ const char *Txt_usr = // Abbreviation of user (three characters + dot)
const char *Txt_USR_LIST_TYPES[Usr_NUM_USR_LIST_TYPES] =
{
"" // Usr_LIST_UNKNOWN
, // Usr_LIST_AS_CLASS_PHOTO
#if L==1
"Orla"
#elif L==2
@ -50099,7 +50101,7 @@ const char *Txt_USR_LIST_TYPES[Usr_NUM_USR_LIST_TYPES] =
#elif L==9
"Foto de formatura"
#endif
,
, // Usr_LIST_AS_LISTING
#if L==1
"Llista"
#elif L==2

View File

@ -56,8 +56,8 @@ extern struct Globals Gbl;
#define TT_MAX_COLUMNS_PER_CELL 3 // Maximum number of items (i.e. classes) in a timetable cell (1, 2, 3 or 4)
#define TT_NUM_MINICOLUMNS_PER_DAY 6 // Least common multiple of 1,2,3,...,TT_MAX_COLUMNS_PER_CELL
#define TT_PERCENT_WIDTH_OF_A_MINICOLUMN 2 // Width (%) of each minicolumn
#define TT_PERCENT_WIDTH_OF_A_DAY (TT_PERCENT_WIDTH_OF_A_MINICOLUMN*TT_NUM_MINICOLUMNS_PER_DAY) // Width (%) of each day
#define TT_PERCENT_WIDTH_OF_ALL_DAYS (TT_PERCENT_WIDTH_OF_A_DAY*TT_DAYS) // Width (%) of all days
#define TT_PERCENT_WIDTH_OF_A_DAY (TT_PERCENT_WIDTH_OF_A_MINICOLUMN * TT_NUM_MINICOLUMNS_PER_DAY) // Width (%) of each day
#define TT_PERCENT_WIDTH_OF_ALL_DAYS (TT_PERCENT_WIDTH_OF_A_DAY * TT_DAYS) // Width (%) of all days
#define TT_PERCENT_WIDTH_OF_A_SEPARATION_COLUMN 1 // Width (%) of left and right columns (frame)
#define TT_PERCENT_WIDTH_OF_AN_HOUR_COLUMN ((100 - TT_PERCENT_WIDTH_OF_ALL_DAYS - TT_PERCENT_WIDTH_OF_A_SEPARATION_COLUMN * 2) / 2) // Width (%) of the separation columns
@ -162,29 +162,34 @@ static void TT_ShowTimeTableGrpsSelected (void)
static void TT_GetParamsTimeTable (void)
{
char UnsignedStr[10 + 1];
char LongStr[1 + 10 + 1];
char StrClassType[TT_MAX_BYTES_STR_CLASS_TYPE + 1];
char StrDuration[TT_MAX_BYTES_STR_DURATION + 1];
unsigned Hours,Minutes;
unsigned Hours;
unsigned Minutes;
/***** Get day (0: monday, 1: tuesday,..., 4: friday *****/
Par_GetParToText ("ModTTDay",UnsignedStr,2);
if (sscanf (UnsignedStr,"%u",&Gbl.TimeTable.Day) != 1)
Lay_ShowErrorAndExit ("Day is missing.");
/***** Get day (0: monday, 1: tuesday,..., 6: sunday *****/
Gbl.TimeTable.Day = (unsigned)
Par_GetParToUnsignedLong ("ModTTDay",
0,
TT_DAYS - 1,
0);
/***** Get hour *****/
Par_GetParToText ("ModTTHour",UnsignedStr,2);
if (sscanf (UnsignedStr,"%u",&Gbl.TimeTable.Hour) != 1)
Lay_ShowErrorAndExit ("Hour is missing.");
Gbl.TimeTable.Hour = (unsigned)
Par_GetParToUnsignedLong ("ModTTHour",
0,
TT_HOURS_PER_DAY * 2 - 1,
0);
/***** Get number of column *****/
Par_GetParToText ("ModTTCol",UnsignedStr,2);
if (sscanf (UnsignedStr,"%u",&Gbl.TimeTable.Column) != 1)
Lay_ShowErrorAndExit ("Column is missing.");
Gbl.TimeTable.Column = (unsigned)
Par_GetParToUnsignedLong ("ModTTCol",
0,
TT_MAX_COLUMNS_PER_CELL - 1,
0);
/***** Get class type *****/
Par_GetParToText ("ModTTCellType",StrClassType,TT_MAX_BYTES_STR_CLASS_TYPE);
Par_GetParToText ("ModTTClassType",StrClassType,TT_MAX_BYTES_STR_CLASS_TYPE);
for (Gbl.TimeTable.ClassType = (TT_ClassType_t) 0;
Gbl.TimeTable.ClassType < (TT_ClassType_t) TT_NUM_CLASS_TYPES;
Gbl.TimeTable.ClassType++)
@ -200,20 +205,13 @@ static void TT_GetParamsTimeTable (void)
Gbl.TimeTable.Duration = Hours * 2 + Minutes / 30;
/***** Get group *****/
Par_GetParToText ("ModHorGrp",Gbl.TimeTable.Group,TT_MAX_BYTES_GROUP);
Par_GetParToText ("ModTTGrp",Gbl.TimeTable.Group,TT_MAX_BYTES_GROUP);
/***** Get group code *****/
Par_GetParToText ("ModTTGrpCod",LongStr,1 + 10);
if (LongStr[0])
{
if (sscanf (LongStr,"%ld",&Gbl.TimeTable.GrpCod) != 1)
Lay_ShowErrorAndExit ("Wrong code of group.");
}
else
Gbl.TimeTable.GrpCod = -1L;
Gbl.TimeTable.GrpCod = Par_GetParToLong ("ModTTGrpCod");
/***** Get place *****/
Par_GetParToText ("ModHorLugar",Gbl.TimeTable.Place,TT_MAX_BYTES_PLACE);
Par_GetParToText ("ModTTPlace",Gbl.TimeTable.Place,TT_MAX_BYTES_PLACE);
}
/*****************************************************************************/
@ -1252,7 +1250,7 @@ static void TT_TimeTableDrawCell (unsigned Day,unsigned Hour,unsigned Column,uns
Par_PutHiddenParamUnsigned ("ModTTCol",Column);
/***** Class type *****/
fprintf (Gbl.F.Out,"<select name=\"ModTTCellType\" style=\"width:68px;\""
fprintf (Gbl.F.Out,"<select name=\"ModTTClassType\" style=\"width:68px;\""
" onchange=\"document.getElementById('%s').submit();\">",
Gbl.Form.Id);
for (CT = (TT_ClassType_t) 0;
@ -1284,8 +1282,8 @@ static void TT_TimeTableDrawCell (unsigned Day,unsigned Hour,unsigned Column,uns
else
fprintf (Gbl.F.Out,"0:30");
fprintf (Gbl.F.Out," h\" />");
Par_PutHiddenParamString ("ModHorGrp","");
Par_PutHiddenParamString ("ModHorLugar","");
Par_PutHiddenParamString ("ModTTGrp","");
Par_PutHiddenParamString ("ModTTPlace","");
}
else
{
@ -1353,7 +1351,7 @@ static void TT_TimeTableDrawCell (unsigned Day,unsigned Hour,unsigned Column,uns
fprintf (Gbl.F.Out,"<br />"
"<label>"
"%s"
"<input type=\"text\" name=\"ModHorLugar\""
"<input type=\"text\" name=\"ModTTPlace\""
" size=\"1\" maxlength=\"%u\" value=\"%s\""
" onchange=\"document.getElementById('%s').submit();\" />"
"</label>",
@ -1361,12 +1359,12 @@ static void TT_TimeTableDrawCell (unsigned Day,unsigned Hour,unsigned Column,uns
}
else // TimeTableView == TT_TUT_EDIT
{
Par_PutHiddenParamString ("ModHorGrp","");
Par_PutHiddenParamString ("ModTTGrp","");
/***** Place *****/
fprintf (Gbl.F.Out,"<br />"
"<label class=\"DAT_SMALL\">"
"%s"
"<input type=\"text\" name=\"ModHorLugar\""
"<input type=\"text\" name=\"ModTTPlace\""
" size=\"12\" maxlength=\"%u\" value=\"%s\""
" onchange=\"document.getElementById('%s').submit();\" />"
"</label>",

View File

@ -79,13 +79,15 @@ const char *Usr_StringsSexDB[Usr_NUM_SEXS] =
const char *Usr_StringsUsrListTypeInDB[Usr_NUM_USR_LIST_TYPES] =
{
"classphoto",
"list"
"", // Usr_LIST_UNKNOWN
"classphoto", // Usr_LIST_AS_CLASS_PHOTO
"list", // Usr_LIST_AS_LISTING
};
const char *Usr_IconsClassPhotoOrList[Usr_NUM_USR_LIST_TYPES] =
{
"classphoto16x16.gif",
"list64x64.gif"
"", // Usr_LIST_UNKNOWN
"classphoto16x16.gif", // Usr_LIST_AS_CLASS_PHOTO
"list64x64.gif", // Usr_LIST_AS_LISTING
};
#define Usr_NUM_MAIN_FIELDS_DATA_ADM 7
@ -170,11 +172,11 @@ static void Usr_ListMainDataGsts (bool PutCheckBoxToSelectUsr);
static void Usr_ListMainDataStds (bool PutCheckBoxToSelectUsr);
static void Usr_ListMainDataTchs (bool PutCheckBoxToSelectUsr);
static void Usr_GetAndUpdateUsrListType (void);
static bool Usr_GetUsrListTypeFromForm (void);
static void Usr_GetUsrListTypeFromForm (void);
static void Usr_GetMyUsrListTypeFromDB (void);
static void Usr_UpdateMyUsrListTypeInDB (void);
static bool Usr_GetParamColsClassPhotoFromForm (void);
static void Usr_GetParamColsClassPhotoFromForm (void);
static void Usr_GetMyColsClassPhotoFromDB (void);
static void Usr_UpdateMyColsClassPhotoInDB (void);
@ -2333,7 +2335,9 @@ void Usr_GetParamUsrIdLogin (void)
static void Usr_GetParamOtherUsrIDNickOrEMail (void)
{
/***** Get parameter with the plain user's ID, @nick or email of another user *****/
Par_GetParToText ("OtherUsrIDNickOrEMail",Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail,Usr_MAX_BYTES_USR_LOGIN);
Par_GetParToText ("OtherUsrIDNickOrEMail",
Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail,
Usr_MAX_BYTES_USR_LOGIN);
// If it's a user's ID (if does not contain '@')
if (strchr (Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail,(int) '@') != NULL) // '@' not found
@ -5219,7 +5223,8 @@ bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs)
Usr_AllocateListOtherRecipients ();
/***** Get recipients written explicetely *****/
Par_GetParToText ("OtherRecipients",Gbl.Usrs.ListOtherRecipients,Nck_MAX_BYTES_LIST_NICKS);
Par_GetParToText ("OtherRecipients",Gbl.Usrs.ListOtherRecipients,
Nck_MAX_BYTES_LIST_NICKS);
/***** Add encrypted users' IDs to the list with all selected users *****/
if (Gbl.Usrs.ListOtherRecipients[0])
@ -5516,32 +5521,32 @@ void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction)
{
fprintf (Gbl.F.Out,"<div class=\"PREF_CONTAINER\">");
/***** Select Usr_CLASS_PHOTO *****/
/***** Select Usr_LIST_AS_CLASS_PHOTO *****/
fprintf (Gbl.F.Out,"<div class=\"%s\">",
Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO ? "PREF_ON" :
"PREF_OFF");
Usr_FormToSelectUsrListType (NextAction,Usr_CLASS_PHOTO);
Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO ? "PREF_ON" :
"PREF_OFF");
Usr_FormToSelectUsrListType (NextAction,Usr_LIST_AS_CLASS_PHOTO);
/* Number of columns in the class photo */
Act_FormStart (NextAction);
Grp_PutParamsCodGrps ();
Usr_PutParamUsrListType (Usr_CLASS_PHOTO);
Usr_PutParamUsrListType (Usr_LIST_AS_CLASS_PHOTO);
Usr_PutParamListWithPhotos ();
Usr_PutExtraParamsUsrList (NextAction);
Usr_PutSelectorNumColsClassPhoto ();
Act_FormEnd ();
fprintf (Gbl.F.Out,"</div>");
/***** Select Usr_LIST *****/
/***** Select Usr_LIST_AS_LISTING *****/
fprintf (Gbl.F.Out,"<div class=\"%s\">",
Gbl.Usrs.Me.ListType == Usr_LIST ? "PREF_ON" :
"PREF_OFF");
Usr_FormToSelectUsrListType (NextAction,Usr_LIST);
Gbl.Usrs.Me.ListType == Usr_LIST_AS_LISTING ? "PREF_ON" :
"PREF_OFF");
Usr_FormToSelectUsrListType (NextAction,Usr_LIST_AS_LISTING);
/* See the photos in list? */
Act_FormStart (NextAction);
Grp_PutParamsCodGrps ();
Usr_PutParamUsrListType (Usr_LIST);
Usr_PutParamUsrListType (Usr_LIST_AS_LISTING);
Usr_PutExtraParamsUsrList (NextAction);
Usr_PutCheckboxListWithPhotos ();
Act_FormEnd ();
@ -5644,12 +5649,14 @@ void Usr_ListUsersToSelect (Rol_Role_t Role)
/***** Draw the classphoto/list *****/
switch (Gbl.Usrs.Me.ListType)
{
case Usr_CLASS_PHOTO:
case Usr_LIST_AS_CLASS_PHOTO:
Usr_DrawClassPhoto (Usr_CLASS_PHOTO_SEL,Role);
break;
case Usr_LIST:
case Usr_LIST_AS_LISTING:
Usr_ListUsrsForSelection (Role);
break;
default:
break;
}
}
@ -5716,9 +5723,9 @@ static Usr_Sex_t Usr_GetSexOfUsrsLst (Rol_Role_t Role)
unsigned Usr_GetColumnsForSelectUsrs (void)
{
return (Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO) ? Gbl.Usrs.ClassPhoto.Cols :
(Gbl.Usrs.Listing.WithPhotos ? 1 + Usr_NUM_MAIN_FIELDS_DATA_USR :
Usr_NUM_MAIN_FIELDS_DATA_USR);
return (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO) ? Gbl.Usrs.ClassPhoto.Cols :
(Gbl.Usrs.Listing.WithPhotos ? 1 + Usr_NUM_MAIN_FIELDS_DATA_USR :
Usr_NUM_MAIN_FIELDS_DATA_USR);
}
/*****************************************************************************/
@ -6752,11 +6759,14 @@ void Usr_GetAndUpdatePrefsAboutUsrList (void)
static void Usr_GetAndUpdateUsrListType (void)
{
/***** Get type of list used to select users from form *****/
if (Usr_GetUsrListTypeFromForm ())
Usr_GetUsrListTypeFromForm ();
if (Gbl.Usrs.Me.ListType != Usr_LIST_UNKNOWN)
/* Save in the database the type of list preferred by me */
Usr_UpdateMyUsrListTypeInDB ();
else
/* If parameter can't be retrieved from, get my preference from database */
/* If parameter can't be retrieved from,
get my preference from database */
Usr_GetMyUsrListTypeFromDB ();
}
@ -6773,21 +6783,13 @@ void Usr_PutParamUsrListType (Usr_ShowUsrsType_t ListType)
/****************** Get from form the type of users' list ********************/
/*****************************************************************************/
static bool Usr_GetUsrListTypeFromForm (void)
static void Usr_GetUsrListTypeFromForm (void)
{
char UnsignedStr[10 + 1];
unsigned UnsignedNum;
Gbl.Usrs.Me.ListType = Usr_SHOW_USRS_TYPE_DEFAULT;
/***** Get param with number of users per row *****/
Par_GetParToText ("UsrListType",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
return false;
if (UnsignedNum >= Usr_NUM_USR_LIST_TYPES)
return false;
Gbl.Usrs.Me.ListType = UnsignedNum;
return true;
Gbl.Usrs.Me.ListType = (Usr_ShowUsrsType_t)
Par_GetParToUnsignedLong ("UsrListType",
0,
Usr_NUM_USR_LIST_TYPES - 1,
(unsigned long) Usr_LIST_UNKNOWN);
}
/*****************************************************************************/
@ -6855,11 +6857,14 @@ static void Usr_UpdateMyUsrListTypeInDB (void)
void Usr_GetAndUpdateColsClassPhoto (void)
{
/***** Get the number of columns in class photo from form *****/
if (Usr_GetParamColsClassPhotoFromForm ())
/***** Save the number of columns into the database *****/
Usr_GetParamColsClassPhotoFromForm ();
if (Gbl.Usrs.ClassPhoto.Cols)
/* Save the number of columns into the database */
Usr_UpdateMyColsClassPhotoInDB ();
else
/***** If parameter can't be retrieved from form, get my preference from database *****/
/* If parameter can't be retrieved from form,
get my preference from database */
Usr_GetMyColsClassPhotoFromDB ();
}
@ -6876,21 +6881,13 @@ void Usr_PutParamColsClassPhoto (void)
/************* Get from form the number of colums in class photo *************/
/*****************************************************************************/
static bool Usr_GetParamColsClassPhotoFromForm (void)
static void Usr_GetParamColsClassPhotoFromForm (void)
{
char UnsignedStr[10 + 1];
/***** Get parameter with number of users per row *****/
Par_GetParToText ("ColsClassPhoto",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&Gbl.Usrs.ClassPhoto.Cols) != 1)
{
Gbl.Usrs.ClassPhoto.Cols = Usr_CLASS_PHOTO_COLS_DEF;
return false;
}
if (Gbl.Usrs.ClassPhoto.Cols < 1 ||
Gbl.Usrs.ClassPhoto.Cols > Usr_CLASS_PHOTO_COLS_MAX)
Gbl.Usrs.ClassPhoto.Cols = Usr_CLASS_PHOTO_COLS_DEF;
return true;
Gbl.Usrs.ClassPhoto.Cols = (unsigned)
Par_GetParToUnsignedLong ("ColsClassPhoto",
1,
Usr_CLASS_PHOTO_COLS_MAX,
0);
}
/*****************************************************************************/
@ -6958,12 +6955,13 @@ static void Usr_UpdateMyColsClassPhotoInDB (void)
static void Usr_GetAndUpdatePrefAboutListWithPhotos (void)
{
/***** Get he preference about photos in users' list from form *****/
/***** Get my preference about photos in users' list from form *****/
if (Usr_GetParamListWithPhotosFromForm ())
/***** Save preference about photos in users' list into the database *****/
/* Save preference about photos in users' list into the database */
Usr_UpdateMyPrefAboutListWithPhotosPhotoInDB ();
else
/***** If parameter can't be retrieved from form, get my preference from database *****/
/* If parameter can't be retrieved from form,
get my preference from database */
Usr_GetMyPrefAboutListWithPhotosFromDB ();
}
@ -7164,7 +7162,7 @@ void Usr_SeeGuests (void)
/***** Draw a class photo with guests *****/
switch (Gbl.Usrs.Me.ListType)
{
case Usr_CLASS_PHOTO:
case Usr_LIST_AS_CLASS_PHOTO:
Lay_WriteHeaderClassPhoto (false,true,
(Gbl.Scope.Current == Sco_SCOPE_CTR ||
Gbl.Scope.Current == Sco_SCOPE_INS) ? Gbl.CurrentIns.Ins.InsCod :
@ -7172,9 +7170,11 @@ void Usr_SeeGuests (void)
-1L,
-1L);
break;
case Usr_LIST:
case Usr_LIST_AS_LISTING:
Usr_PutLinkToShowGstsAllData ();
break;
default:
break;
}
/* Start form */
@ -7189,13 +7189,15 @@ void Usr_SeeGuests (void)
/* Draw the classphoto/list */
switch (Gbl.Usrs.Me.ListType)
{
case Usr_CLASS_PHOTO:
case Usr_LIST_AS_CLASS_PHOTO:
Usr_DrawClassPhoto (Usr_CLASS_PHOTO_SEL_SEE,
Rol__GUEST_);
break;
case Usr_LIST:
case Usr_LIST_AS_LISTING:
Usr_ListMainDataGsts (true);
break;
default:
break;
}
/* End table */
@ -7319,7 +7321,7 @@ void Usr_SeeStudents (void)
/***** Draw a class photo with students of the course *****/
switch (Gbl.Usrs.Me.ListType)
{
case Usr_CLASS_PHOTO:
case Usr_LIST_AS_CLASS_PHOTO:
Lay_WriteHeaderClassPhoto (false,true,
(Gbl.Scope.Current == Sco_SCOPE_CRS ||
Gbl.Scope.Current == Sco_SCOPE_DEG ||
@ -7332,9 +7334,11 @@ void Usr_SeeStudents (void)
Gbl.Scope.Current == Sco_SCOPE_CRS ? Gbl.CurrentCrs.Crs.CrsCod :
-1L);
break;
case Usr_LIST:
case Usr_LIST_AS_LISTING:
Usr_PutLinkToShowStdsAllData ();
break;
default:
break;
}
/* Start form */
@ -7354,14 +7358,16 @@ void Usr_SeeStudents (void)
/* Draw the classphoto/list */
switch (Gbl.Usrs.Me.ListType)
{
case Usr_CLASS_PHOTO:
case Usr_LIST_AS_CLASS_PHOTO:
Usr_DrawClassPhoto (ICanViewRecords ? Usr_CLASS_PHOTO_SEL_SEE :
Usr_CLASS_PHOTO_SEE,
Rol_STUDENT);
break;
case Usr_LIST:
case Usr_LIST_AS_LISTING:
Usr_ListMainDataStds (ICanViewRecords);
break;
default:
break;
}
/* End table */
@ -7474,7 +7480,7 @@ void Usr_SeeTeachers (void)
/***** Draw a class photo with teachers of the course *****/
switch (Gbl.Usrs.Me.ListType)
{
case Usr_CLASS_PHOTO:
case Usr_LIST_AS_CLASS_PHOTO:
Lay_WriteHeaderClassPhoto (false,true,
(Gbl.Scope.Current == Sco_SCOPE_CRS ||
Gbl.Scope.Current == Sco_SCOPE_DEG ||
@ -7487,10 +7493,12 @@ void Usr_SeeTeachers (void)
Gbl.Scope.Current == Sco_SCOPE_CRS ? Gbl.CurrentCrs.Crs.CrsCod :
-1L);
break;
case Usr_LIST:
case Usr_LIST_AS_LISTING:
if (Gbl.Usrs.Me.LoggedRole >= Rol_DEG_ADM)
Usr_PutLinkToShowTchsAllData ();
break;
default:
break;
}
/* Start form */
@ -7507,14 +7515,16 @@ void Usr_SeeTeachers (void)
/***** Draw the classphoto/list *****/
switch (Gbl.Usrs.Me.ListType)
{
case Usr_CLASS_PHOTO:
case Usr_LIST_AS_CLASS_PHOTO:
Usr_DrawClassPhoto (ICanViewRecords ? Usr_CLASS_PHOTO_SEL_SEE :
Usr_CLASS_PHOTO_SEE,
Rol_TEACHER);
break;
case Usr_LIST:
case Usr_LIST_AS_LISTING:
Usr_ListMainDataTchs (ICanViewRecords);
break;
default:
break;
}
/* End table */
@ -7546,15 +7556,20 @@ void Usr_SeeTeachers (void)
static void Usr_PutIconsListGsts (void)
{
if (Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO)
switch (Gbl.Usrs.Me.ListType)
{
if (Gbl.Usrs.LstUsrs[Rol__GUEST_].NumUsrs)
/***** Put icon to print guests *****/
Usr_PutIconToPrintGsts ();
case Usr_LIST_AS_CLASS_PHOTO:
if (Gbl.Usrs.LstUsrs[Rol__GUEST_].NumUsrs)
/***** Put icon to print guests *****/
Usr_PutIconToPrintGsts ();
break;
case Usr_LIST_AS_LISTING:
/***** Put icon to show all data of guests *****/
Usr_PutIconToShowGstsAllData ();
break;
default:
break;
}
else
/***** Put icon to show all data of guests *****/
Usr_PutIconToShowGstsAllData ();
/***** Put icon to show a figure *****/
Gbl.Stat.FigureType = Sta_USERS;
@ -7567,15 +7582,20 @@ static void Usr_PutIconsListGsts (void)
static void Usr_PutIconsListStds (void)
{
if (Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO)
switch (Gbl.Usrs.Me.ListType)
{
if (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
/***** Put icon to print students *****/
Usr_PutIconToPrintStds ();
case Usr_LIST_AS_CLASS_PHOTO:
if (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
/***** Put icon to print students *****/
Usr_PutIconToPrintStds ();
break;
case Usr_LIST_AS_LISTING:
/***** Put icon to show all data of students *****/
Usr_PutIconToShowStdsAllData ();
break;
default:
break;
}
else if (Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER)
/***** Put icon to show all data of students *****/
Usr_PutIconToShowStdsAllData ();
/***** Put icon to show a figure *****/
Gbl.Stat.FigureType = Sta_USERS;
@ -7588,15 +7608,20 @@ static void Usr_PutIconsListStds (void)
static void Usr_PutIconsListTchs (void)
{
if (Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO)
switch (Gbl.Usrs.Me.ListType)
{
if (Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs)
/***** Put icon to print teachers *****/
Usr_PutIconToPrintTchs ();
case Usr_LIST_AS_CLASS_PHOTO:
if (Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs)
/***** Put icon to print teachers *****/
Usr_PutIconToPrintTchs ();
break;
case Usr_LIST_AS_LISTING:
/***** Put icon to show all data of teachers *****/
Usr_PutIconToShowTchsAllData ();
break;
default:
break;
}
else if (Gbl.Usrs.Me.LoggedRole >= Rol_DEG_ADM)
/***** Put icon to show all data of teachers *****/
Usr_PutIconToShowTchsAllData ();
/***** Put icon to show a figure *****/
Gbl.Stat.FigureType = Sta_USERS;

View File

@ -106,13 +106,14 @@ typedef enum
} Usr_ClassPhotoType_t;
// Related with type of list of users
#define Usr_NUM_USR_LIST_TYPES 2
#define Usr_NUM_USR_LIST_TYPES 3
typedef enum
{
Usr_CLASS_PHOTO,
Usr_LIST,
Usr_LIST_UNKNOWN = 0,
Usr_LIST_AS_CLASS_PHOTO = 1,
Usr_LIST_AS_LISTING = 2,
} Usr_ShowUsrsType_t;
#define Usr_SHOW_USRS_TYPE_DEFAULT Usr_CLASS_PHOTO
#define Usr_SHOW_USRS_TYPE_DEFAULT Usr_LIST_AS_CLASS_PHOTO
// Related with user's data
struct UsrData