diff --git a/swad_QR.c b/swad_QR.c
index 76afc214..0cd6f8b3 100644
--- a/swad_QR.c
+++ b/swad_QR.c
@@ -146,7 +146,7 @@ void QR_ImageQRCode (const char *QRString)
void QR_LinkTo (unsigned Size,ParCod_Param_t ParCode,long Cod)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_Shortcut;
char *URL;
diff --git a/swad_action_list.c b/swad_action_list.c
index 03a0313e..a5475fe8 100644
--- a/swad_action_list.c
+++ b/swad_action_list.c
@@ -230,7 +230,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
[ActSeePen ] = {1060, 2,TabSys,ActSeePen , 0, 0, 0, 0, 0, 0,0x3C0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Hie_SeePending },
// Links
- [ActSeeLnk ] = { 748, 3,TabSys,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x3C7,Act_CONT_NORM,Act_1ST_TAB,NULL ,Lnk_SeeLinks },
+ [ActSeeLnk ] = { 748, 3,TabSys,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x3C7,Act_CONT_NORM,Act_1ST_TAB,NULL ,Lnk_SeeLinks },
[ActEdiLnk ] = { 749,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_1ST_TAB,NULL ,Lnk_EditLinks },
[ActNewLnk ] = { 750,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_1ST_TAB,Lnk_ReceiveNewLink ,Lnk_ContEditAfterChgLnk },
[ActRemLnk ] = { 897,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_1ST_TAB,Lnk_RemoveLink ,Lnk_ContEditAfterChgLnk },
@@ -457,8 +457,8 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
[ActLftPrgItm ] = {1834,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_MoveLeftItem },
[ActRgtPrgItm ] = {1833,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_MoveRightItem },
[ActExpSeePrgItm ] = {1944,-1,TabUnk,ActSeePrg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_ExpandItem },
- [ActExpEdiPrgItm ] = {1946,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_ExpandItem },
[ActConSeePrgItm ] = {1945,-1,TabUnk,ActSeePrg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_ContractItem },
+ [ActExpEdiPrgItm ] = {1946,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_ExpandItem },
[ActConEdiPrgItm ] = {1947,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_ContractItem },
[ActSeeRscCli_InPrg ] = {1970,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,PrgRsc_ViewResourceClipboard },
[ActRemRscCli_InPrg ] = {1971,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,PrgRsc_RemoveResourceClipboard },
@@ -1327,7 +1327,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
[ActLstStd ] = { 678, 1,TabUsr,ActLstStd ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Usr_SeeStudents },
[ActLstStdAll ] = { 42,-1,TabUnk,ActLstStd ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_ListAllDataStds },
[ActPrnStdPho ] = { 120,-1,TabUnk,ActLstStd ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_SeeStdClassPhotoPrn },
- [ActDoActOnSevStd ] = {1754,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 },
+ [Act_DoAct_OnSevStd ] = {1754,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 },
[ActSeeRecSevStd ] = { 89,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Rec_ListRecordsStdsShow },
[ActPrnRecSevStd ] = { 111,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Rec_ListRecordsStdsPrint },
[ActReqMdfOneStd ] = {1415,-1,TabUnk,ActLstStd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReqRegRemStd },
@@ -1375,7 +1375,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
[ActLstTch ] = { 679, 2,TabUsr,ActLstTch ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Usr_SeeTeachers },
[ActLstTchAll ] = { 578,-1,TabUnk,ActLstTch ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_ListAllDataTchs },
[ActPrnTchPho ] = { 443,-1,TabUnk,ActLstTch ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_SeeTchClassPhotoPrn },
- [ActDoActOnSevTch ] = {1755,-1,TabUnk,ActLstTch ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 },
+ [Act_DoAct_OnSevTch ] = {1755,-1,TabUnk,ActLstTch ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 },
[ActSeeRecSevTch ] = { 22,-1,TabUnk,ActLstTch ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Rec_ListRecordsTchsShow },
[ActPrnRecSevTch ] = { 127,-1,TabUnk,ActLstTch ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Rec_ListRecordsTchsPrint },
[ActReqMdfOneTch ] = {1416,-1,TabUnk,ActLstTch ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReqRegRemTch },
@@ -1411,7 +1411,6 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
[ActReqUnfSevTch ] = {1759,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Fol_ReqUnfollowTchs },
[ActFolSevTch ] = {1761,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Fol_FollowUsrs },
[ActUnfSevTch ] = {1763,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Fol_UnfollowUsrs },
-
[ActSeeRecOneTch ] = {1175,-1,TabUnk,ActLstTch ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Rec_GetUsrAndShowRecOneTchCrs },
[ActReqEnrSevNET ] = {1642,-1,TabUnk,ActLstTch ,0x3C0,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReqAdminNonEditingTchs },
[ActRcvFrmEnrSevNET ] = {1643,-1,TabUnk,ActLstTch ,0x3C0,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReceiveAdminNonEditTchs },
@@ -1432,7 +1431,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
[ActLstGst ] = { 587,-1,TabUnk,ActLstOth ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Usr_SeeGuests },
[ActLstGstAll ] = {1189,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_ListAllDataGsts },
[ActPrnGstPho ] = {1190,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_SeeGstClassPhotoPrn },
- [ActDoActOnSevGst ] = {1753,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 },
+ [Act_DoAct_OnSevGst ] = {1753,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 },
[ActSeeRecSevGst ] = {1187,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_1ST_TAB,NULL ,Rec_ListRecordsGstsShow },
[ActPrnRecSevGst ] = {1188,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_NEW_TAB,NULL ,Rec_ListRecordsGstsPrint },
[ActReqMdfOneOth ] = {1414,-1,TabUnk,ActLstOth ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReqRegRemOth },
@@ -3564,9 +3563,9 @@ Act_Action_t ActLst_FromActCodToAction[1 + ActLst_MAX_ACTION_COD] = // Do not re
ActChgRooMaxUsr, // #1750
ActUnk, // #1751 (obsolete action)
ActChgGrpRoo, // #1752
- ActDoActOnSevGst, // #1753
- ActDoActOnSevStd, // #1754
- ActDoActOnSevTch, // #1755
+ Act_DoAct_OnSevGst, // #1753
+ Act_DoAct_OnSevStd, // #1754
+ Act_DoAct_OnSevTch, // #1755
ActReqFolSevStd, // #1756
ActReqFolSevTch, // #1757
ActReqUnfSevStd, // #1758
diff --git a/swad_action_list.h b/swad_action_list.h
index ce7e3a03..bea3390e 100644
--- a/swad_action_list.h
+++ b/swad_action_list.h
@@ -1298,7 +1298,7 @@ typedef enum
ActLstStd,
ActLstStdAll,
ActPrnStdPho,
- ActDoActOnSevStd,
+ Act_DoAct_OnSevStd,
ActSeeRecSevStd,
ActPrnRecSevStd,
ActReqMdfOneStd,
@@ -1347,7 +1347,7 @@ typedef enum
ActLstTch,
ActLstTchAll,
ActPrnTchPho,
- ActDoActOnSevTch,
+ Act_DoAct_OnSevTch,
ActSeeRecSevTch,
ActPrnRecSevTch,
ActReqMdfOneTch,
@@ -1404,7 +1404,7 @@ typedef enum
ActLstGst,
ActLstGstAll,
ActPrnGstPho,
- ActDoActOnSevGst,
+ Act_DoAct_OnSevGst,
ActSeeRecSevGst,
ActPrnRecSevGst,
ActReqMdfOneOth,
diff --git a/swad_attendance.c b/swad_attendance.c
index f4437ccb..5abfe3bd 100644
--- a/swad_attendance.c
+++ b/swad_attendance.c
@@ -128,7 +128,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
static void Att_PutLinkEvent (struct Att_Event *Event,
const char *Title,const char *Txt);
static unsigned Att_GetNumUsrsFromAListWhoAreInEvent (long AttCod,
- long LstSelectedUsrCods[],
+ long *LstSelectedUsrCods,
unsigned NumUsrsInList);
static bool Att_CheckIfUsrIsPresentInEvent (long AttCod,long UsrCod);
static bool Att_CheckIfUsrIsPresentInEventAndGetComments (long AttCod,long UsrCod,
@@ -2077,7 +2077,7 @@ void Att_RegisterStudentsInEvent (void)
/*****************************************************************************/
static unsigned Att_GetNumUsrsFromAListWhoAreInEvent (long AttCod,
- long LstSelectedUsrCods[],
+ long *LstSelectedUsrCods,
unsigned NumUsrsInList)
{
char *SubQueryUsrs;
@@ -2231,7 +2231,7 @@ static void Att_ListOrPrintMyAttendanceCrs (Att_TypeOfView_t TypeOfView)
/* Get number of students in this event */
Events.Lst[NumAttEvent].NumStdsFromList =
Att_GetNumUsrsFromAListWhoAreInEvent (Events.Lst[NumAttEvent].AttCod,
- &Gbl.Usrs.Me.UsrDat.UsrCod,1);
+ &Gbl.Usrs.Me.UsrDat.UsrCod,1);
/***** Get list of attendance events selected *****/
Att_GetListSelectedAttCods (&Events);
@@ -2344,7 +2344,7 @@ static void Att_ListOrPrintUsrsAttendanceCrs (void *TypeOfView)
/* Get number of students in this event */
Events.Lst[NumAttEvent].NumStdsFromList =
Att_GetNumUsrsFromAListWhoAreInEvent (Events.Lst[NumAttEvent].AttCod,
- LstSelectedUsrCods,NumUsrsInList);
+ LstSelectedUsrCods,NumUsrsInList);
/***** Get list of attendance events selected *****/
Att_GetListSelectedAttCods (&Events);
diff --git a/swad_browser.c b/swad_browser.c
index bff50fdb..bb792238 100644
--- a/swad_browser.c
+++ b/swad_browser.c
@@ -1213,7 +1213,7 @@ static bool Brw_CheckIfUploadIsAllowed (const char *FileType);
static void Brw_PutIconToGetLinkToFile (void *FileMetadata);
static void Brw_PutParsToGetLinkToFile (void *FileMetadata);
-static bool Brw_CheckIfICanEditFileMetadata (long IAmTheOwner);
+static bool Brw_CheckIfICanEditFileMetadata (bool IAmTheOwner);
static bool Brw_CheckIfIAmOwnerOfFile (long PublisherUsrCod);
static void Brw_WriteBigLinkToDownloadFile (const char *URL,
struct Brw_FileMetadata *FileMetadata,
@@ -2876,7 +2876,7 @@ void Brw_PutLegalNotice (void)
static void Brw_FormToChangeCrsGrpZone (void)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
struct ListCodGrps LstMyGrps;
unsigned NumGrp;
struct GroupData GrpDat;
@@ -4632,8 +4632,7 @@ static void Brw_PutIconFileWithLinkToViewMetadata (const struct Brw_FileMetadata
void Brw_PutIconFile (const char *FileName,
const char *Class,Frm_PutForm_t PutFormToGo)
{
- extern unsigned Ext_NUM_FILE_EXT_ALLOWED;
- extern const char *Ext_FileExtensionsAllowed[];
+ extern const char *Ext_FileExtensionsAllowed[Ext_NUM_FILE_EXT_ALLOWED];
extern const char *Txt_X_file;
char *URL;
char *Icon;
@@ -7890,7 +7889,7 @@ void Brw_DownloadFile (void)
/*********** Check if I have permission to change file metadata **************/
/*****************************************************************************/
-static bool Brw_CheckIfICanEditFileMetadata (long IAmTheOwner)
+static bool Brw_CheckIfICanEditFileMetadata (bool IAmTheOwner)
{
switch (Gbl.Action.Act) // Only in actions where edition is allowed
{
diff --git a/swad_center_config.c b/swad_center_config.c
index cf5a49ed..01f8e756 100644
--- a/swad_center_config.c
+++ b/swad_center_config.c
@@ -544,7 +544,7 @@ static void CtrCfg_FreePhotoAttr (char **PhotoAttribution)
static void CtrCfg_Institution (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
unsigned NumIns;
const struct Hie_Node *Ins;
@@ -623,7 +623,7 @@ static void CtrCfg_Institution (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
static void CtrCfg_Place (Frm_PutForm_t PutForm)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_Place;
extern const char *Txt_Another_place;
struct Plc_Places Places;
diff --git a/swad_changelog.h b/swad_changelog.h
index 64fedb7a..77c3f36c 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -633,10 +633,11 @@ Me sale este error, no s
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
*/
-#define Log_PLATFORM_VERSION "SWAD 23.71.2 (2024-03-20)"
+#define Log_PLATFORM_VERSION "SWAD 23.71.3 (2024-03-22)"
#define CSS_FILE "swad23.67.2.css"
#define JS_FILE "swad23.53.6.js"
/*
+ Version 23.71.3: Mar 22, 2024 Code refactoring. (334827 lines)
Version 23.71.2: Mar 20, 2024 Code refactoring in actions. (334866 lines)
Version 23.71.1: Mar 20, 2024 Some functions renamed. (334869 lines)
Version 23.71: Mar 20, 2024 Actions for syllabus unified for lectures and practicals. (334868 lines)
diff --git a/swad_config.h b/swad_config.h
index d64e0f67..30ef3b84 100644
--- a/swad_config.h
+++ b/swad_config.h
@@ -81,8 +81,6 @@
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t) (30UL * 60UL)) // After these seconds after first pending notification, all pending notifications are sent by email
-#define Cfg_GOOGLE_ANALYTICS ""
-
#elif defined OPENSWAD_ORG // openswad.org ************************
#define Cfg_PLATFORM_SHORT_NAME "OpenSWAD"
@@ -118,29 +116,6 @@
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t) (30UL * 60UL)) // After these seconds after first pending notification, all pending notifications are sent by email
-/* Google Analytics without cookies.
- * This code comes from http://stackoverflow.com/a/19995629
- */
-#define Cfg_GOOGLE_ANALYTICS ""
-
-/*
-""
-*/
-
#elif defined SWAD_UGR_ES // swad.ugr.es *************************
#define Cfg_PLATFORM_SHORT_NAME "SWAD"
@@ -176,26 +151,6 @@
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t) (30UL * 60UL)) // After these seconds after first pending notification, all pending notifications are sent by email
-#define Cfg_GOOGLE_ANALYTICS ""
-
-/*
-""
-*/
-
#elif defined SWADBERRY_UGR_ES // swadberry.ugr.es ******************
#define Cfg_PLATFORM_SHORT_NAME "SWADberry"
@@ -231,8 +186,6 @@
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t) (30UL * 60UL)) // After these seconds after first pending notification, all pending notifications are sent by email
-#define Cfg_GOOGLE_ANALYTICS ""
-
#endif
/* Database */
diff --git a/swad_country.c b/swad_country.c
index 9aae738c..4b19f290 100644
--- a/swad_country.c
+++ b/swad_country.c
@@ -1383,7 +1383,7 @@ static void Cty_PutParGoToCty (void *CtyCod)
static void Cty_PutFormToCreateCountry (void)
{
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_STR_LANG_NAME[1 + Lan_NUM_LANGUAGES];
Lan_Language_t Lan;
char StrCtyCod[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
diff --git a/swad_course_config.c b/swad_course_config.c
index 313660e5..b906c2fa 100644
--- a/swad_course_config.c
+++ b/swad_course_config.c
@@ -201,7 +201,7 @@ void CrsCfg_PrintConfiguration (void)
static void CrsCfg_Degree (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
unsigned NumDeg;
const struct Hie_Node *Deg;
diff --git a/swad_degree_config.c b/swad_degree_config.c
index 404ab1eb..677c9bce 100644
--- a/swad_degree_config.c
+++ b/swad_degree_config.c
@@ -194,7 +194,7 @@ static void DegCfg_PutIconsToPrintAndUpload (__attribute__((unused)) void *Args)
static void DegCfg_Center (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
unsigned NumCtr;
const struct Hie_Node *Ctr;
diff --git a/swad_enrolment.c b/swad_enrolment.c
index cb47647e..4b0792a7 100644
--- a/swad_enrolment.c
+++ b/swad_enrolment.c
@@ -173,7 +173,7 @@ void Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs (void)
/*****************************************************************************/
void Enr_PutButtonInlineToRegisterStds (long CrsCod,
- unsigned Level,Lay_LastItem_t IsLastItemInLevel[],
+ unsigned Level,const Lay_LastItem_t *IsLastItemInLevel,
Lay_Highlight_t Highlight)
{
extern const char *Lay_HighlightClass[Lay_NUM_HIGHLIGHT];
diff --git a/swad_enrolment.h b/swad_enrolment.h
index 8f95f5ea..83a280db 100644
--- a/swad_enrolment.h
+++ b/swad_enrolment.h
@@ -75,7 +75,7 @@ typedef enum
void Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs (void);
void Enr_PutButtonInlineToRegisterStds (long CrsCod,
- unsigned Level,Lay_LastItem_t IsLastItemInLevel[],
+ unsigned Level,const Lay_LastItem_t *IsLastItemInLevel,
Lay_Highlight_t Highlight);
void Enr_PutLinkToRequestSignUp (void);
diff --git a/swad_exam.c b/swad_exam.c
index 5ca0a079..b6ed6eba 100644
--- a/swad_exam.c
+++ b/swad_exam.c
@@ -804,7 +804,7 @@ void Exa_GetListExams (struct Exa_Exams *Exams,Exa_Order_t SelectedOrder)
void Exa_GetListSelectedExaCods (struct Exa_Exams *Exams)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
unsigned MaxSizeListExaCodsSelected;
unsigned NumExam;
const char *Ptr;
@@ -1253,12 +1253,12 @@ void Exa_PutFormsOneExam (struct Exa_Exams *Exams,
extern const char *Hlp_ASSESSMENT_Exams_edit_exam;
extern const char *Hlp_ASSESSMENT_Exams_new_exam;
extern const char *Txt_Exam;
- static void (*FunctionToDrawContextualIcons[]) (void *Args) =
+ static void (*FunctionToDrawContextualIcons[Exa_NUM_EXISTING_NEW_EXAM]) (void *Args) =
{
[Exa_EXISTING_EXAM] = Exa_PutIconsEditingOneExam,
[Exa_NEW_EXAM ] = NULL,
};
- static const char **HelpLink[] =
+ static const char **HelpLink[Exa_NUM_EXISTING_NEW_EXAM] =
{
[Exa_EXISTING_EXAM] = &Hlp_ASSESSMENT_Exams_edit_exam,
[Exa_NEW_EXAM ] = &Hlp_ASSESSMENT_Exams_new_exam,
@@ -1317,17 +1317,17 @@ static void Exa_PutFormEditionExam (struct Exa_Exams *Exams,
extern const char *Txt_Description;
extern const char *Txt_Save_changes;
extern const char *Txt_Create;
- static Act_Action_t NextAction[] =
+ static Act_Action_t NextAction[Exa_NUM_EXISTING_NEW_EXAM] =
{
[Exa_EXISTING_EXAM] = ActChgExa,
[Exa_NEW_EXAM ] = ActNewExa,
};
- static Btn_Button_t Button[] =
+ static Btn_Button_t Button[Exa_NUM_EXISTING_NEW_EXAM] =
{
[Exa_EXISTING_EXAM] = Btn_CONFIRM_BUTTON,
[Exa_NEW_EXAM ] = Btn_CREATE_BUTTON,
};
- const char *TxtButton[] =
+ const char *TxtButton[Exa_NUM_EXISTING_NEW_EXAM] =
{
[Exa_EXISTING_EXAM] = Txt_Save_changes,
[Exa_NEW_EXAM ] = Txt_Create,
diff --git a/swad_exam_result.c b/swad_exam_result.c
index 6aa00864..79358eeb 100644
--- a/swad_exam_result.c
+++ b/swad_exam_result.c
@@ -554,7 +554,7 @@ static void ExaRes_ShowResultsEnd (void)
static void ExaRes_ListExamsToSelect (struct Exa_Exams *Exams)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_Exams;
extern const char *Txt_Exam;
extern const char *Txt_Update_results;
diff --git a/swad_exam_type.h b/swad_exam_type.h
index e5b4c50d..025aee64 100644
--- a/swad_exam_type.h
+++ b/swad_exam_type.h
@@ -62,6 +62,7 @@ typedef enum
Exa_CHECK_EXA_COD,
} Exa_CheckExaCod_t;
+#define Exa_NUM_EXISTING_NEW_EXAM 2
typedef enum
{
Exa_EXISTING_EXAM,
diff --git a/swad_file_MIME.c b/swad_file_MIME.c
index d3aa1949..2a9ea08d 100644
--- a/swad_file_MIME.c
+++ b/swad_file_MIME.c
@@ -34,7 +34,8 @@
/*****************************************************************************/
/* MIME types allowed for uploades files */
-const char *MIM_MIMETypesAllowed[] =
+#define MIM_NUM_MIME_TYPES_ALLOWED 200
+const char *MIM_MIMETypesAllowed[MIM_NUM_MIME_TYPES_ALLOWED] =
{
"application/", //
"application/acrobat", // PDF
@@ -238,11 +239,8 @@ const char *MIM_MIMETypesAllowed[] =
"zz-application/zz-winassoc-mpp" // Microsoft Project mpp
};
-unsigned MIM_NUM_MIME_TYPES_ALLOWED = sizeof (MIM_MIMETypesAllowed) /
- sizeof (MIM_MIMETypesAllowed[0]);
-
/*****************************************************************************/
-/******** Check if MIME type is allowed **********/
+/*********************** Check if MIME type is allowed ***********************/
/*****************************************************************************/
bool MIM_CheckIfMIMETypeIsAllowed (const char *MIMEType)
diff --git a/swad_file_extension.c b/swad_file_extension.c
index d9b6e7c4..5aed7fce 100644
--- a/swad_file_extension.c
+++ b/swad_file_extension.c
@@ -33,7 +33,7 @@
/*****************************************************************************/
/* Extensions allowed for uploaded files */
-const char *Ext_FileExtensionsAllowed[] =
+const char *Ext_FileExtensionsAllowed[Ext_NUM_FILE_EXT_ALLOWED] =
{
"3gp" , // Video Android mobile
"7z" ,
@@ -151,9 +151,6 @@ const char *Ext_FileExtensionsAllowed[] =
"zip" ,
};
-unsigned Ext_NUM_FILE_EXT_ALLOWED = sizeof (Ext_FileExtensionsAllowed) /
- sizeof (Ext_FileExtensionsAllowed[0]);
-
/*****************************************************************************/
/******************* Check if file extension is allowed **********************/
/*****************************************************************************/
diff --git a/swad_file_extension.h b/swad_file_extension.h
index 5b7d9c31..7525ab86 100644
--- a/swad_file_extension.h
+++ b/swad_file_extension.h
@@ -30,6 +30,13 @@
#include // For NAME_MAX
#include // For boolean type
+
+/*****************************************************************************/
+/***************************** Public constants ******************************/
+/*****************************************************************************/
+
+#define Ext_NUM_FILE_EXT_ALLOWED 114
+
/*****************************************************************************/
/***************************** Public prototypes *****************************/
/*****************************************************************************/
diff --git a/swad_game.c b/swad_game.c
index 24e8542c..e7d1c45a 100644
--- a/swad_game.c
+++ b/swad_game.c
@@ -875,7 +875,7 @@ void Gam_GetListGames (struct Gam_Games *Games,Gam_Order_t SelectedOrder)
void Gam_GetListSelectedGamCods (struct Gam_Games *Games)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
unsigned MaxSizeListGamCodsSelected;
unsigned NumGame;
const char *Ptr;
@@ -1258,12 +1258,12 @@ void Gam_PutFormsOneGame (struct Gam_Games *Games,
extern const char *Hlp_ASSESSMENT_Games_edit_game;
extern const char *Hlp_ASSESSMENT_Games_new_game;
extern const char *Txt_Game;
- static void (*FunctionToDrawContextualIcons[]) (void *Args) =
+ static void (*FunctionToDrawContextualIcons[Gam_NUM_EXISTING_NEW_GAME]) (void *Args) =
{
[Gam_EXISTING_GAME] = Gam_PutIconsEditingOneGame,
[Gam_NEW_GAME ] = NULL,
};
- static const char **HelpLink[] =
+ static const char **HelpLink[Gam_NUM_EXISTING_NEW_GAME] =
{
[Gam_EXISTING_GAME] = &Hlp_ASSESSMENT_Games_edit_game,
[Gam_NEW_GAME ] = &Hlp_ASSESSMENT_Games_new_game,
@@ -1324,17 +1324,17 @@ static void Gam_PutFormEditionGame (struct Gam_Games *Games,
extern const char *Txt_Description;
extern const char *Txt_Save_changes;
extern const char *Txt_Create;
- static Act_Action_t NextAction[] =
+ static Act_Action_t NextAction[Gam_NUM_EXISTING_NEW_GAME] =
{
[Gam_EXISTING_GAME] = ActChgGam,
[Gam_NEW_GAME ] = ActNewGam,
};
- static Btn_Button_t Button[] =
+ static Btn_Button_t Button[Gam_NUM_EXISTING_NEW_GAME] =
{
[Gam_EXISTING_GAME] = Btn_CONFIRM_BUTTON,
[Gam_NEW_GAME ] = Btn_CREATE_BUTTON,
};
- const char *TxtButton[] =
+ const char *TxtButton[Gam_NUM_EXISTING_NEW_GAME] =
{
[Gam_EXISTING_GAME] = Txt_Save_changes,
[Gam_NEW_GAME ] = Txt_Create,
diff --git a/swad_game.h b/swad_game.h
index ca54c37e..8f6a87ad 100644
--- a/swad_game.h
+++ b/swad_game.h
@@ -56,6 +56,7 @@ typedef enum
} Gam_AnswerType_t;
#define Gam_ANSWER_TYPE_DEFAULT Gam_ANS_UNIQUE_CHOICE
+#define Gam_NUM_EXISTING_NEW_GAME 2
typedef enum
{
Gam_EXISTING_GAME,
diff --git a/swad_hierarchy.c b/swad_hierarchy.c
index d982bb35..c483b91c 100644
--- a/swad_hierarchy.c
+++ b/swad_hierarchy.c
@@ -167,7 +167,7 @@ void Hie_SeePending (void)
void Hie_WriteMenuHierarchy (void)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
static void (*FunctionWriteSelector[Hie_NUM_LEVELS]) (void) =
{
diff --git a/swad_hierarchy_config.c b/swad_hierarchy_config.c
index f167a7d1..c4bf02e2 100644
--- a/swad_hierarchy_config.c
+++ b/swad_hierarchy_config.c
@@ -205,7 +205,7 @@ void HieCfg_WWW (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm,
void HieCfg_Shortcut (Vie_ViewType_t ViewType,ParCod_Param_t ParCode,long HieCod)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_Shortcut;
/***** Short cut *****/
diff --git a/swad_indicator.c b/swad_indicator.c
index 6d0dad00..9acfd212 100644
--- a/swad_indicator.c
+++ b/swad_indicator.c
@@ -100,7 +100,7 @@ static unsigned Ind_GetAndUpdateNumIndicatorsCrs (long CrsCod);
void Ind_ReqIndicatorsCourses (void)
{
extern const char *Hlp_ANALYTICS_Indicators;
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_Scope;
extern const char *Txt_Types_of_degree;
extern const char *Txt_only_if_the_scope_is_X;
diff --git a/swad_institution_config.c b/swad_institution_config.c
index c1680231..8b787abd 100644
--- a/swad_institution_config.c
+++ b/swad_institution_config.c
@@ -299,7 +299,7 @@ static void InsCfg_Map (void)
static void InsCfg_Country (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
unsigned NumCty;
const struct Hie_Node *Cty;
diff --git a/swad_layout.c b/swad_layout.c
index 9e90731d..7e8237c4 100644
--- a/swad_layout.c
+++ b/swad_layout.c
@@ -655,9 +655,6 @@ static void Lay_WriteScripts (void)
default:
break;
}
-
- /***** Script for Google Analytics *****/
- HTM_Txt (Cfg_GOOGLE_ANALYTICS);
}
// Change page title
@@ -1619,10 +1616,10 @@ void Lay_AdvertisementMobile (void)
/*****************************************************************************/
/****************** Indent forum, chat or course tree title ******************/
/*****************************************************************************/
-// IsLastItemInLevel[] is a vector with at least 1 + Level elements
+// IsLastItemInLevel is a vector with at least 1 + Level elements
void Lay_IndentDependingOnLevel (unsigned Level,
- Lay_LastItem_t IsLastItemInLevel[],
+ const Lay_LastItem_t *IsLastItemInLevel,
Lay_HorizontalLineAtRight_t HorizontalLineAtRight)
{
static const char *Icons[Lay_NUM_HORIZONTAL_LINE_AT_RIGHT][Lay_NUM_LAST_ITEM] =
diff --git a/swad_layout.h b/swad_layout.h
index 70c497f0..523d20e4 100644
--- a/swad_layout.h
+++ b/swad_layout.h
@@ -94,7 +94,7 @@ void Lay_WriteHeaderClassPhoto (Vie_ViewType_t ViewType);
void Lay_AdvertisementMobile (void);
void Lay_IndentDependingOnLevel (unsigned Level,
- Lay_LastItem_t IsLastItemInLevel[],
+ const Lay_LastItem_t *IsLastItemInLevel,
Lay_HorizontalLineAtRight_t HorizontalLineAtRight);
void Lay_HelpPlainEditor (void);
diff --git a/swad_match_result.c b/swad_match_result.c
index 594bcf41..6d3f643a 100644
--- a/swad_match_result.c
+++ b/swad_match_result.c
@@ -518,7 +518,7 @@ static void MchRes_ShowResultsEnd (void)
static void MchRes_ListGamesToSelect (struct Gam_Games *Games)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_Games;
extern const char *Txt_Game;
extern const char *Txt_Update_results;
diff --git a/swad_parameter.c b/swad_parameter.c
index dd4e3fb6..88a79e20 100644
--- a/swad_parameter.c
+++ b/swad_parameter.c
@@ -684,7 +684,8 @@ unsigned Par_GetPar (Par_ParamType_t ParType,const char *ParName,
static bool Par_CheckIsParCanBeUsedInGETMethod (const char *ParName)
{
- static const char *ValidParsInGETMethod[] =
+#define NUM_VALID_PARAMS 10
+ static const char *ValidParsInGETMethod[NUM_VALID_PARAMS] =
{
"cty", // To enter directly to a country
"ins", // To enter directly to an institution
@@ -697,7 +698,6 @@ static bool Par_CheckIsParCanBeUsedInGETMethod (const char *ParName)
"ses", // To use an open session when redirecting from one language to another
"key", // To verify an email address
};
-#define NUM_VALID_PARAMS (sizeof (ValidParsInGETMethod) / sizeof (ValidParsInGETMethod[0]))
unsigned i;
for (i = 0;
@@ -714,7 +714,7 @@ static bool Par_CheckIsParCanBeUsedInGETMethod (const char *ParName)
void Par_GetMainPars (void)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
long ActCod;
char Nick[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1];
char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
@@ -1112,7 +1112,7 @@ void Par_PutParUnsignedDisabled (const char *Id,const char *ParName,unsigned Par
void ParCod_PutPar (ParCod_Param_t ParCod,long Cod)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
if (ParCod != ParCod_None && Cod >= 0)
// <0 => not specified => don't write parameter
diff --git a/swad_parameter_code.c b/swad_parameter_code.c
index 7229f84b..664f5017 100644
--- a/swad_parameter_code.c
+++ b/swad_parameter_code.c
@@ -35,9 +35,9 @@
/***************************** Public constants ******************************/
/*****************************************************************************/
-const char *Par_CodeStr[] =
+const char *Par_CodeStr[Par_NUM_PAR_COD] =
{
- [ParCod_None ] = NULL,
+ [ParCod_None ] = NULL,
[ParCod_Agd ] = "AgdCod", // Agenda event code
[ParCod_Ann ] = "AnnCod", // Announcement code
[ParCod_Asg ] = "AsgCod", // Assignment code
diff --git a/swad_parameter_code.h b/swad_parameter_code.h
index 7a602a3a..759112fd 100644
--- a/swad_parameter_code.h
+++ b/swad_parameter_code.h
@@ -80,6 +80,7 @@ typedef enum
ParCod_Tag, // Tag code in assessment question
ParCod_Thr, // Thread code in forum
} ParCod_Param_t;
+#define Par_NUM_PAR_COD ((unsigned) ParCod_Thr + 1)
/*****************************************************************************/
/***************************** Public prototypes *****************************/
diff --git a/swad_project.c b/swad_project.c
index df7962fe..128f5364 100644
--- a/swad_project.c
+++ b/swad_project.c
@@ -80,14 +80,13 @@ extern struct Globals Gbl;
#define Prj_PAR_FILTER_DPT_COD_NAME "FilDptCod"
/***** User roles are shown in this order *****/
-static const Prj_RoleInProject_t Prj_RolesToShow[] =
+#define Prj_NUM_ROLES_TO_SHOW 3
+static const Prj_RoleInProject_t Prj_RolesToShow[Prj_NUM_ROLES_TO_SHOW] =
{
Prj_ROLE_TUT, // Tutor
Prj_ROLE_STD, // Student
Prj_ROLE_EVL, // Evaluator
};
-static unsigned Prj_NUM_ROLES_TO_SHOW = sizeof (Prj_RolesToShow) /
- sizeof (Prj_RolesToShow[0]);
/***** Assigned/non-assigned project *****/
static const char *AssignedNonassigIcon[Prj_NUM_ASSIGNED_NONASSIG] =
@@ -3693,7 +3692,7 @@ static void Prj_PutFormProject (struct Prj_Projects *Projects,
bool ItsANewProject)
{
extern const char *Hlp_ASSESSMENT_Projects_edit_project;
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_Project;
extern const char *Txt_Actions[ActLst_NUM_ACTIONS];
extern const char *Txt_Title;
diff --git a/swad_project_config.c b/swad_project_config.c
index bf931462..ae39284b 100644
--- a/swad_project_config.c
+++ b/swad_project_config.c
@@ -167,7 +167,7 @@ static void PrjCfg_ShowFormsRubrics (void)
static void PrjCfg_ShowFormsRubricsOfType (const struct Rub_Rubrics *Rubrics,
PrjCfg_RubricType_t RubricType)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Prj_DB_RubricType[PrjCfg_NUM_RUBRIC_TYPES];
extern const char *Txt_PROJECT_RUBRIC[PrjCfg_NUM_RUBRIC_TYPES];
extern const char *Txt_no_rubric;
@@ -385,7 +385,7 @@ void PrjCfg_ChangeRubricsOfType (void)
static void PrjCfg_GetListRubCods (const struct Rub_Rubrics *Rubrics,
struct PrgCfg_ListRubCods *ListRubCods)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
char *ParLstRubCods;
const char *Ptr;
char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
diff --git a/swad_record.c b/swad_record.c
index cc987bd3..09573f2c 100644
--- a/swad_record.c
+++ b/swad_record.c
@@ -3178,7 +3178,7 @@ static void Rec_ShowFirstName (struct Usr_Data *UsrDat,Vie_ViewType_t ViewType)
static void Rec_ShowCountry (struct Usr_Data *UsrDat,Vie_ViewType_t ViewType)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_Another_country;
char *Label;
@@ -3846,7 +3846,7 @@ static void Rec_ShowAlertsIfNotFilled (bool IAmATeacher)
static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
{
extern const char *Hlp_PROFILE_Institution;
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Txt_Institution_center_and_department;
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_Another_institution;
diff --git a/swad_rubric.c b/swad_rubric.c
index ecc1f34e..dcd0b7eb 100644
--- a/swad_rubric.c
+++ b/swad_rubric.c
@@ -780,12 +780,12 @@ void Rub_PutFormsOneRubric (struct Rub_Rubrics *Rubrics,
extern const char *Hlp_ASSESSMENT_Rubrics_new_rubric;
extern const char *Hlp_ASSESSMENT_Rubrics_edit_rubric;
extern const char *Txt_Rubric;
- static void (*FunctionToDrawContextualIcons[]) (void *Args) =
+ static void (*FunctionToDrawContextualIcons[Rub_NUM_EXISTING_NEW_RUBRIC]) (void *Args) =
{
[Rub_EXISTING_RUBRIC] = Rub_PutIconsEditingOneRubric,
[Rub_NEW_RUBRIC ] = NULL,
};
- static const char **HelpLink[] =
+ static const char **HelpLink[Rub_NUM_EXISTING_NEW_RUBRIC] =
{
[Rub_EXISTING_RUBRIC] = &Hlp_ASSESSMENT_Rubrics_edit_rubric,
[Rub_NEW_RUBRIC ] = &Hlp_ASSESSMENT_Rubrics_new_rubric,
@@ -831,17 +831,17 @@ static void Rub_PutFormEditionRubric (struct Rub_Rubrics *Rubrics,
extern const char *Txt_Description;
extern const char *Txt_Create;
extern const char *Txt_Save_changes;
- static Act_Action_t NextAction[] =
+ static Act_Action_t NextAction[Rub_NUM_EXISTING_NEW_RUBRIC] =
{
[Rub_EXISTING_RUBRIC] = ActChgRub,
[Rub_NEW_RUBRIC ] = ActNewRub,
};
- static Btn_Button_t Button[] =
+ static Btn_Button_t Button[Rub_NUM_EXISTING_NEW_RUBRIC] =
{
[Rub_EXISTING_RUBRIC] = Btn_CONFIRM_BUTTON,
[Rub_NEW_RUBRIC ] = Btn_CREATE_BUTTON,
};
- const char *TxtButton[] =
+ const char *TxtButton[Rub_NUM_EXISTING_NEW_RUBRIC] =
{
[Rub_EXISTING_RUBRIC] = Txt_Save_changes,
[Rub_NEW_RUBRIC ] = Txt_Create,
diff --git a/swad_rubric_type.h b/swad_rubric_type.h
index 65f21f38..5de2d53d 100644
--- a/swad_rubric_type.h
+++ b/swad_rubric_type.h
@@ -82,6 +82,7 @@ struct Rub_Rubrics
struct RubCri_Criterion Criterion; // Selected/current criterion
};
+#define Rub_NUM_EXISTING_NEW_RUBRIC 2
typedef enum
{
Rub_EXISTING_RUBRIC,
diff --git a/swad_statistic.c b/swad_statistic.c
index 1f668771..6c425b88 100644
--- a/swad_statistic.c
+++ b/swad_statistic.c
@@ -220,7 +220,8 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
extern const char *Txt_results_per_page;
extern const char *Txt_Show_hits;
extern const char *Txt_No_teachers_or_students_found;
- static unsigned RowsPerPage[] =
+#define NUM_OPTIONS_ROWS_PER_PAGE 12
+ static unsigned RowsPerPage[NUM_OPTIONS_ROWS_PER_PAGE] =
{
Sta_MIN_ROWS_PER_PAGE * 1,
Sta_MIN_ROWS_PER_PAGE * 2,
@@ -235,7 +236,6 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
Sta_MIN_ROWS_PER_PAGE * 5000,
Sta_MAX_ROWS_PER_PAGE,
};
-#define NUM_OPTIONS_ROWS_PER_PAGE (sizeof (RowsPerPage) / sizeof (RowsPerPage[0]))
unsigned NumTotalUsrs;
char *Title;
Dat_SetHMS SetHMS[Dat_NUM_START_END_TIME];
diff --git a/swad_statistic_database.c b/swad_statistic_database.c
index 57b3923f..dce736f8 100644
--- a/swad_statistic_database.c
+++ b/swad_statistic_database.c
@@ -53,7 +53,7 @@ unsigned Sta_DB_GetHits (MYSQL_RES **mysql_res,
const char *LogTable,
const char BrowserTimeZone[Dat_MAX_BYTES_TIME_ZONE + 1],
unsigned NumUsrsInList,
- const long LstSelectedUsrCods[])
+ const long *LstSelectedUsrCods)
{
char SubQueryCountType[256];
char SubQueryRole[256];
diff --git a/swad_statistic_database.h b/swad_statistic_database.h
index 5fa3667e..c68ce65d 100644
--- a/swad_statistic_database.h
+++ b/swad_statistic_database.h
@@ -40,6 +40,6 @@ unsigned Sta_DB_GetHits (MYSQL_RES **mysql_res,
const char *LogTable,
const char BrowserTimeZone[Dat_MAX_BYTES_TIME_ZONE + 1],
unsigned NumUsrsInList,
- const long LstSelectedUsrCods[]);
+ const long *LstSelectedUsrCods);
#endif
diff --git a/swad_text_action.c b/swad_text_action.c
index 4aef002a..52b92ffd 100644
--- a/swad_text_action.c
+++ b/swad_text_action.c
@@ -24812,7 +24812,7 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
"Show class photo of students ready to be printed" // Çeviri lazim!
#endif
,
- [ActDoActOnSevStd] =
+ [Act_DoAct_OnSevStd] =
#if L==1 // ca
"Do an action on several selected students" // Necessita traducció
#elif L==2 // de
@@ -25870,7 +25870,7 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
"Show class photo of teachers ready to be printed" // Çeviri lazim!
#endif
,
- [ActDoActOnSevTch] =
+ [Act_DoAct_OnSevTch] =
#if L==1 // ca
"Do an action on several selected teachers" // Necessita traducció
#elif L==2 // de
@@ -27112,7 +27112,7 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
"Show class photo of guests ready to be printed" // Çeviri lazim!
#endif
,
- [ActDoActOnSevGst] =
+ [Act_DoAct_OnSevGst] =
#if L==1 // ca
"Do an action on several selected guests" // Necessita traducció
#elif L==2 // de
diff --git a/swad_timetable.c b/swad_timetable.c
index 709f6fea..e9df1545 100644
--- a/swad_timetable.c
+++ b/swad_timetable.c
@@ -1489,7 +1489,7 @@ static void Tmt_TimeTableDrawCellEdit (const struct Tmt_Timetable *Timetable,
Tmt_IntervalType_t IntervalType,Tmt_ClassType_t ClassType,
unsigned DurationNumIntervals,const char *Info)
{
- extern const char *Par_CodeStr[];
+ extern const char *Par_CodeStr[Par_NUM_PAR_COD];
extern const char *Tmt_DB_ClassType[Tmt_NUM_CLASS_TYPES];
extern const char *Txt_TIMETABLE_CLASS_TYPES[Tmt_NUM_CLASS_TYPES];
extern const char *Txt_Group;
diff --git a/swad_user.c b/swad_user.c
index 941207d1..87e360a2 100644
--- a/swad_user.c
+++ b/swad_user.c
@@ -3540,7 +3540,7 @@ void Usr_FreeListSelectedUsrCods (long *LstSelectedUsrCods)
/******** from list of users' codes *******/
/*****************************************************************************/
-void Usr_CreateSubqueryUsrCods (long LstSelectedUsrCods[],
+void Usr_CreateSubqueryUsrCods (long *LstSelectedUsrCods,
unsigned NumUsrsInList,
char **UsrsSubQuery)
{
@@ -5105,7 +5105,7 @@ void Usr_SeeGuests (void)
/* Begin form */
if (PutForm == Frm_PUT_FORM)
- Frm_BeginForm (ActDoActOnSevGst);
+ Frm_BeginForm (Act_DoAct_OnSevGst);
/* Begin table */
HTM_TABLE_Begin ("TBL_SCROLL");
@@ -5258,7 +5258,7 @@ void Usr_SeeStudents (void)
/* Begin form */
if (PutForm == Frm_PUT_FORM)
{
- Frm_BeginForm (ActDoActOnSevStd);
+ Frm_BeginForm (Act_DoAct_OnSevStd);
Grp_PutParsCodGrps ();
}
@@ -5426,7 +5426,7 @@ void Usr_SeeTeachers (void)
/* Begin form */
if (PutForm == Frm_PUT_FORM)
{
- Frm_BeginForm (ActDoActOnSevTch);
+ Frm_BeginForm (Act_DoAct_OnSevTch);
Grp_PutParsCodGrps ();
}
@@ -5651,13 +5651,13 @@ void Usr_DoActionOnSeveralUsrs1 (void)
case Usr_OPTION_RECORDS:
switch (Gbl.Action.Act)
{
- case ActDoActOnSevGst:
+ case Act_DoAct_OnSevGst:
Gbl.Action.Act = ActSeeRecSevGst;
break;
- case ActDoActOnSevStd:
+ case Act_DoAct_OnSevStd:
Gbl.Action.Act = ActSeeRecSevStd;
break;
- case ActDoActOnSevTch:
+ case Act_DoAct_OnSevTch:
Gbl.Action.Act = ActSeeRecSevTch;
break;
default:
@@ -5667,8 +5667,8 @@ void Usr_DoActionOnSeveralUsrs1 (void)
case Usr_OPTION_HOMEWORK:
switch (Gbl.Action.Act)
{
- case ActDoActOnSevStd:
- case ActDoActOnSevTch:
+ case Act_DoAct_OnSevStd:
+ case Act_DoAct_OnSevTch:
Gbl.Action.Act = ActAdmAsgWrkCrs;
break;
default:
@@ -5678,7 +5678,7 @@ void Usr_DoActionOnSeveralUsrs1 (void)
case Usr_OPTION_ATTENDANCE:
switch (Gbl.Action.Act)
{
- case ActDoActOnSevStd:
+ case Act_DoAct_OnSevStd:
Gbl.Action.Act = ActSeeLstUsrAtt;
break;
default:
@@ -5688,8 +5688,8 @@ void Usr_DoActionOnSeveralUsrs1 (void)
case Usr_OPTION_MESSAGE:
switch (Gbl.Action.Act)
{
- case ActDoActOnSevStd:
- case ActDoActOnSevTch:
+ case Act_DoAct_OnSevStd:
+ case Act_DoAct_OnSevTch:
Gbl.Action.Act = ActReqMsgUsr;
break;
default:
@@ -5699,7 +5699,7 @@ void Usr_DoActionOnSeveralUsrs1 (void)
case Usr_OPTION_EMAIL:
switch (Gbl.Action.Act)
{
- case ActDoActOnSevStd:
+ case Act_DoAct_OnSevStd:
Gbl.Action.Act = ActMaiUsr;
break;
default:
@@ -5709,10 +5709,10 @@ void Usr_DoActionOnSeveralUsrs1 (void)
case Usr_OPTION_FOLLOW:
switch (Gbl.Action.Act)
{
- case ActDoActOnSevStd:
+ case Act_DoAct_OnSevStd:
Gbl.Action.Act = ActReqFolSevStd;
break;
- case ActDoActOnSevTch:
+ case Act_DoAct_OnSevTch:
Gbl.Action.Act = ActReqFolSevTch;
break;
default:
@@ -5722,10 +5722,10 @@ void Usr_DoActionOnSeveralUsrs1 (void)
case Usr_OPTION_UNFOLLOW:
switch (Gbl.Action.Act)
{
- case ActDoActOnSevStd:
+ case Act_DoAct_OnSevStd:
Gbl.Action.Act = ActReqUnfSevStd;
break;
- case ActDoActOnSevTch:
+ case Act_DoAct_OnSevTch:
Gbl.Action.Act = ActReqUnfSevTch;
break;
default:
@@ -5756,13 +5756,13 @@ void Usr_DoActionOnSeveralUsrs2 (void)
so show again the form to selected users *****/
switch (Gbl.Action.Act)
{
- case ActDoActOnSevGst:
+ case Act_DoAct_OnSevGst:
Usr_SeeGuests ();
break;
- case ActDoActOnSevStd:
+ case Act_DoAct_OnSevStd:
Usr_SeeStudents ();
break;
- case ActDoActOnSevTch:
+ case Act_DoAct_OnSevTch:
Usr_SeeTeachers ();
break;
default:
diff --git a/swad_user.h b/swad_user.h
index 0e748a2c..b3762f83 100644
--- a/swad_user.h
+++ b/swad_user.h
@@ -386,7 +386,7 @@ void Usr_GetListSelectedUsrCods (struct Usr_SelectedUsrs *SelectedUsrs,
long **LstSelectedUsrCods);
void Usr_FreeListSelectedUsrCods (long *LstSelectedUsrCods);
-void Usr_CreateSubqueryUsrCods (long LstSelectedUsrCods[],
+void Usr_CreateSubqueryUsrCods (long *LstSelectedUsrCods,
unsigned NumUsrsInList,
char **SubQueryUsrs);
void Usr_FreeSubqueryUsrCods (char *SubQueryUsrs);