Version 23.76: Apr 19, 2024 Code refactoring related to don't belong/belong.

This commit is contained in:
acanas 2024-04-19 12:00:30 +02:00
parent b785e884ba
commit 9309bf9580
122 changed files with 2066 additions and 1999 deletions

View File

@ -264,7 +264,7 @@ static void API_CopyListUsers (struct soap *soap,
struct swad__getUsersOutput *getUsersOut);
static void API_CopyUsrData (struct soap *soap,
struct swad__user *Usr,struct Usr_Data *UsrDat,
Usr_ICan_t ICanSeeUsrID);
Usr_Can_t ICanSeeUsrID);
static void API_GetListGrpsInAttendanceEventFromDB (struct soap *soap,
long AttCod,char **ListGroups);
@ -1743,7 +1743,7 @@ static void API_CopyListUsers (struct soap *soap,
unsigned NumUsrs;
unsigned NumUsr;
struct Usr_Data UsrDat;
Usr_ICan_t ICanSeeUsrID;
Usr_Can_t ICanSeeUsrID;
/***** Initialize result *****/
getUsersOut->numUsers = 0;
@ -2191,7 +2191,7 @@ int swad__sendMyGroups (struct soap *soap,
static void API_CopyUsrData (struct soap *soap,
struct swad__user *Usr,struct Usr_Data *UsrDat,
Usr_ICan_t ICanSeeUsrID)
Usr_Can_t ICanSeeUsrID)
{
char PhotoURL[Cns_MAX_BYTES_WWW + 1];
const char *FirstID;
@ -2206,7 +2206,7 @@ static void API_CopyUsrData (struct soap *soap,
Str_Copy (Usr->userNickname,UsrDat->Nickname,Length);
/* Copy user's first ID */
if (ICanSeeUsrID == Usr_I_CAN && UsrDat->IDs.List)
if (ICanSeeUsrID == Usr_CAN && UsrDat->IDs.List)
FirstID = UsrDat->IDs.List[0].ID;
else // Hide user's ID
FirstID = "********";
@ -3262,7 +3262,7 @@ int swad__sendMessage (struct soap *soap,
API_CopyUsrData (soap,
&(sendMessageOut->usersArray.__ptr[NumUsr]),
&Gbl.Usrs.Other.UsrDat,
Usr_I_CAN_NOT);
Usr_CAN_NOT);
}
}
}
@ -4394,7 +4394,7 @@ int swad__getMatchStatus (struct soap *soap,
"Requester must be a student in the course");
/***** Can I play this match? *****/
if (Mch_CheckIfICanPlayThisMatchBasedOnGrps (&Match) == Usr_I_CAN_NOT)
if (Mch_CheckIfICanPlayThisMatchBasedOnGrps (&Match) == Usr_CAN_NOT)
return soap_receiver_fault (soap,
"Request forbidden",
"Requester can not join this match");
@ -4697,7 +4697,7 @@ int swad__getDirectoryTree (struct soap *soap,
/* Get directory tree into XML file */
XML_WriteStartFile (XML,"tree",false);
if (Brw_CheckIfFileOrFolderIsSetAsHiddenInDB (Brw_IS_FOLDER,
if (Brw_CheckIfFileOrFolderIsHiddenOrVisible (Brw_IS_FOLDER,
Gbl.FileBrowser.FilFolLnk.Full) == HidVis_VISIBLE)
API_ListDir (XML,1,
Gbl.FileBrowser.Path.RootFolder,
@ -4811,7 +4811,7 @@ static bool API_WriteRowFileBrowser (FILE *XML,unsigned Level,
/***** Is this row hidden or visible? *****/
if (Gbl.FileBrowser.Type == Brw_SHOW_DOC_CRS ||
Gbl.FileBrowser.Type == Brw_SHOW_DOC_GRP)
if (Brw_CheckIfFileOrFolderIsSetAsHiddenInDB (FileType,
if (Brw_CheckIfFileOrFolderIsHiddenOrVisible (FileType,
Gbl.FileBrowser.FilFolLnk.Full) == HidVis_HIDDEN)
return false;
@ -5263,7 +5263,7 @@ int swad__getLastLocation (struct soap *soap,
*/
switch (Roo_DB_CheckIfICanSeeUsrLocation ((long) userCode))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Get list of locations *****/
NumLocs = Roo_DB_GetUsrLastLocation (&mysql_res,(long) userCode);
API_GetLocationData (soap,
@ -5271,7 +5271,7 @@ int swad__getLastLocation (struct soap *soap,
&(getLastLocationOut->checkinTime), // Get check in time
&mysql_res,NumLocs);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
/* I can not see user's location ==> reset output */
API_ResetLocation (soap, &(getLastLocationOut->location));

View File

@ -308,12 +308,12 @@ static bool ID_CheckIfUsrIDIsValidUsingMinDigits (const char *UsrID,unsigned Min
void ID_WriteUsrIDs (struct Usr_Data *UsrDat,const char *Anchor)
{
unsigned NumID;
Usr_ICan_t ICanSeeUsrID = ID_ICanSeeOtherUsrIDs (UsrDat);
Usr_ICan_t ICanConfirmUsrID = (ICanSeeUsrID == Usr_I_CAN &&
Usr_Can_t ICanSeeUsrID = ID_ICanSeeOtherUsrIDs (UsrDat);
Usr_Can_t ICanConfirmUsrID = (ICanSeeUsrID == Usr_CAN &&
Usr_ItsMe (UsrDat->UsrCod) == Usr_OTHER && // Not me
!Frm_CheckIfInside () && // Not inside another form
Act_GetBrowserTab (Gbl.Action.Act) == Act_1ST_TAB) ? Usr_I_CAN : // Only in main browser tab
Usr_I_CAN_NOT;
Act_GetBrowserTab (Gbl.Action.Act) == Act_1ST_TAB) ? Usr_CAN : // Only in main browser tab
Usr_CAN_NOT;
for (NumID = 0;
NumID < UsrDat->IDs.Num;
@ -330,10 +330,10 @@ void ID_WriteUsrIDs (struct Usr_Data *UsrDat,const char *Anchor)
The_GetSuffix ());
switch (ICanSeeUsrID)
{
case Usr_I_CAN:
case Usr_CAN:
HTM_Txt (UsrDat->IDs.List[NumID].ID);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
HTM_Txt ("********");
break;
@ -341,7 +341,7 @@ void ID_WriteUsrIDs (struct Usr_Data *UsrDat,const char *Anchor)
HTM_SPAN_End ();
/* Put link to confirm ID? */
if (ICanConfirmUsrID == Usr_I_CAN &&
if (ICanConfirmUsrID == Usr_CAN &&
!UsrDat->IDs.List[NumID].Confirmed)
ID_PutLinkToConfirmID (UsrDat,NumID,Anchor);
}
@ -351,11 +351,11 @@ void ID_WriteUsrIDs (struct Usr_Data *UsrDat,const char *Anchor)
/***************** Check if I can see another user's IDs *********************/
/*****************************************************************************/
Usr_ICan_t ID_ICanSeeOtherUsrIDs (const struct Usr_Data *UsrDat)
Usr_Can_t ID_ICanSeeOtherUsrIDs (const struct Usr_Data *UsrDat)
{
/***** Fast check: It's me? *****/
if (Usr_ItsMe (UsrDat->UsrCod) == Usr_ME)
return Usr_I_CAN;
return Usr_CAN;
/***** Check if I have permission to see another user's IDs *****/
switch (Gbl.Usrs.Me.Role.Logged)
@ -364,12 +364,12 @@ Usr_ICan_t ID_ICanSeeOtherUsrIDs (const struct Usr_Data *UsrDat)
case Rol_TCH:
/* Check 1: I can see the IDs of users who do not exist in database */
if (UsrDat->UsrCod <= 0) // User does not exist (when creating a new user)
return Usr_I_CAN;
return Usr_CAN;
/* Check 2: I can see the IDs of confirmed students */
if (UsrDat->Roles.InCurrentCrs == Rol_STD && // A student
UsrDat->Accepted) // who accepted registration
return Usr_I_CAN;
return Usr_CAN;
/* Check 3: I can see the IDs of users with user's data empty */
// This check is made to not view simultaneously:
@ -380,16 +380,16 @@ Usr_ICan_t ID_ICanSeeOtherUsrIDs (const struct Usr_Data *UsrDat)
!UsrDat->Surname2[0] && // and who has no surname 2 (nobody filled user's surname 2)
!UsrDat->FrstName[0] && // and who has no first name (nobody filled user's first name)
!UsrDat->Email[0]) // and who has no email (nobody filled user's email)
return Usr_I_CAN;
return Usr_CAN;
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
case Rol_DEG_ADM:
case Rol_CTR_ADM:
case Rol_INS_ADM:
case Rol_SYS_ADM:
return Usr_CheckIfICanEditOtherUsr (UsrDat);
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}
@ -700,7 +700,7 @@ void ID_RemoveOtherUsrID (void)
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Remove user's ID *****/
ID_RemoveUsrID (&Gbl.Usrs.Other.UsrDat,
Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod));
@ -711,7 +711,7 @@ void ID_RemoveOtherUsrID (void)
/***** Show form again *****/
Acc_ShowFormChgOtherUsrAccount ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -729,11 +729,11 @@ static void ID_RemoveUsrID (const struct Usr_Data *UsrDat,Usr_MeOrOther_t MeOrOt
extern const char *Txt_ID_X_removed;
extern const char *Txt_You_can_not_delete_this_ID;
char UsrID[ID_MAX_BYTES_USR_ID + 1];
Usr_ICan_t ICanRemove = Usr_I_CAN_NOT;
Usr_Can_t ICanRemove = Usr_CAN_NOT;
switch (Usr_CheckIfICanEditOtherUsr (UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Get user's ID from form *****/
Par_GetParText ("UsrID",UsrID,ID_MAX_BYTES_USR_ID);
// Users' IDs are always stored internally in capitals and without leading zeros
@ -745,17 +745,17 @@ static void ID_RemoveUsrID (const struct Usr_Data *UsrDat,Usr_MeOrOther_t MeOrOt
{
case Usr_ME:
// I can remove my ID only if it is not confirmed
ICanRemove = ID_DB_CheckIfConfirmed (UsrDat->UsrCod,UsrID) ? Usr_I_CAN_NOT :
Usr_I_CAN;
ICanRemove = ID_DB_CheckIfConfirmed (UsrDat->UsrCod,UsrID) ? Usr_CAN_NOT :
Usr_CAN;
break;
case Usr_OTHER:
ICanRemove = Usr_I_CAN;
ICanRemove = Usr_CAN;
break;
}
switch (ICanRemove)
{
case Usr_I_CAN:
case Usr_CAN:
/***** Remove one of the user's IDs *****/
ID_DB_RemoveUsrID (UsrDat->UsrCod,UsrID);
@ -763,14 +763,14 @@ static void ID_RemoveUsrID (const struct Usr_Data *UsrDat,Usr_MeOrOther_t MeOrOt
Ale_CreateAlert (Ale_SUCCESS,ID_ID_SECTION_ID,
Txt_ID_X_removed,UsrID);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_CreateAlert (Ale_WARNING,ID_ID_SECTION_ID,
Txt_You_can_not_delete_this_ID);
break;
}
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -803,7 +803,7 @@ void ID_ChangeOtherUsrID (void)
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Change user's ID *****/
ID_ChangeUsrID (&Gbl.Usrs.Other.UsrDat,
Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod));
@ -814,7 +814,7 @@ void ID_ChangeOtherUsrID (void)
/***** Show form again *****/
Acc_ShowFormChgOtherUsrAccount ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -841,7 +841,7 @@ static void ID_ChangeUsrID (const struct Usr_Data *UsrDat,Usr_MeOrOther_t MeOrOt
switch (Usr_CheckIfICanEditOtherUsr (UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Get new user's ID from form *****/
Par_GetParText ("NewID",NewID,ID_MAX_BYTES_USR_ID);
// Users' IDs are always stored internally in capitals and without leading zeros
@ -897,7 +897,7 @@ static void ID_ChangeUsrID (const struct Usr_Data *UsrDat,Usr_MeOrOther_t MeOrOt
Txt_The_ID_X_is_not_valid,
NewID);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -913,7 +913,7 @@ void ID_ConfirmOtherUsrID (void)
extern const char *Txt_ID_X_had_already_been_confirmed;
extern const char *Txt_The_ID_X_has_been_confirmed;
char UsrID[ID_MAX_BYTES_USR_ID + 1];
Usr_ICan_t ICanConfirm;
Usr_Can_t ICanConfirm;
bool Found;
unsigned NumID;
unsigned NumIDFound = 0; // Initialized to avoid warning
@ -922,7 +922,7 @@ void ID_ConfirmOtherUsrID (void)
Gbl.Action.Original = Act_GetActionFromActCod (ParCod_GetPar (ParCod_OrgAct));
/***** Get other user's code from form and get user's data *****/
ICanConfirm = Usr_I_CAN_NOT;
ICanConfirm = Usr_CAN_NOT;
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
if (Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod) == Usr_OTHER) // Not me
{
@ -932,13 +932,13 @@ void ID_ConfirmOtherUsrID (void)
if (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs == Rol_STD)
Gbl.Usrs.Other.UsrDat.Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (&Gbl.Usrs.Other.UsrDat);
if (ID_ICanSeeOtherUsrIDs (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
ICanConfirm = Usr_I_CAN;
if (ID_ICanSeeOtherUsrIDs (&Gbl.Usrs.Other.UsrDat) == Usr_CAN)
ICanConfirm = Usr_CAN;
}
switch (ICanConfirm)
{
case Usr_I_CAN:
case Usr_CAN:
/***** Get user's ID from form *****/
Par_GetParText ("UsrID",UsrID,ID_MAX_BYTES_USR_ID);
// Users' IDs are always stored internally in capitals and without leading zeros
@ -977,7 +977,7 @@ void ID_ConfirmOtherUsrID (void)
else // User's ID not found
Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
break;

View File

@ -70,7 +70,7 @@ bool ID_CheckIfUsrIDIsValid (const char *UsrID);
bool ID_CheckIfUsrIDSeemsAValidID (const char *UsrID);
void ID_WriteUsrIDs (struct Usr_Data *UsrDat,const char *Anchor);
Usr_ICan_t ID_ICanSeeOtherUsrIDs (const struct Usr_Data *UsrDat);
Usr_Can_t ID_ICanSeeOtherUsrIDs (const struct Usr_Data *UsrDat);
void ID_ShowFormChangeMyID (bool IShouldFillInID);
void ID_ShowFormChangeOtherUsrID (void);

View File

@ -112,7 +112,7 @@ void MFU_GetMFUActions (struct MFU_ListMFUActions *ListMFUActions,unsigned MaxAc
ActCod = DB_GetNextCode (mysql_res);
if ((Action = Act_GetActionFromActCod (ActCod)) != ActUnk)
if (Act_GetIndexInMenu (Action) >= 0) // MFU actions must be only actions shown on menu (database could contain wrong action numbers)
if (Act_CheckIfICanExecuteAction (Action) == Usr_I_CAN)
if (Act_CheckIfICanExecuteAction (Action) == Usr_CAN)
ListMFUActions->Actions[ListMFUActions->NumActions++] = Action;
}
@ -148,7 +148,7 @@ Act_Action_t MFU_GetMyLastActionInCurrentTab (void)
if (ActCod >= 0 && ActCod <= ActLst_MAX_ACTION_COD)
if ((Action = Act_GetActionFromActCod (ActCod)) >= 0)
if (Act_GetTab (Action) == Gbl.Action.Tab)
if (Act_CheckIfICanExecuteAction (Action) == Usr_I_CAN)
if (Act_CheckIfICanExecuteAction (Action) == Usr_CAN)
{
MoreRecentActionInCurrentTab = Action;
break;

View File

@ -489,7 +489,7 @@ void Acc_ShowFormChgOtherUsrAccount (void)
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Get user's nickname and email address
It's necessary because nickname or email could be just updated *****/
Nck_DB_GetNicknameFromUsrCod (Gbl.Usrs.Other.UsrDat.UsrCod,Gbl.Usrs.Other.UsrDat.Nickname);
@ -517,7 +517,7 @@ void Acc_ShowFormChgOtherUsrAccount (void)
/***** End container for this user *****/
HTM_DIV_End ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -532,7 +532,7 @@ void Acc_ShowFormChgOtherUsrAccount (void)
void Acc_PutLinkToRemoveMyAccount (__attribute__((unused)) void *Args)
{
if (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Me.UsrDat.UsrCod) == Usr_I_CAN)
if (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Me.UsrDat.UsrCod) == Usr_CAN)
Lay_PutContextualLinkOnlyIcon (ActReqRemMyAcc,NULL,
Acc_PutParsToRemoveMyAccount,Gbl.Usrs.Me.UsrDat.EnUsrCod,
"trash.svg",Ico_RED);
@ -774,10 +774,10 @@ void Acc_GetUsrCodAndRemUsrGbl (void)
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod))
{
case Usr_I_CAN:
case Usr_CAN:
Acc_ReqRemAccountOrRemAccount (Acc_REMOVE_USR);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Error = true;
break;
@ -820,7 +820,7 @@ void Acc_ReqRemAccountOrRemAccount (Acc_ReqOrRemUsr_t RequestOrRemove)
/******** Check if I can eliminate completely another user's account *********/
/*****************************************************************************/
Usr_ICan_t Acc_CheckIfICanEliminateAccount (long UsrCod)
Usr_Can_t Acc_CheckIfICanEliminateAccount (long UsrCod)
{
Usr_MeOrOther_t MeOrOther = Usr_ItsMe (UsrCod);
@ -830,15 +830,15 @@ Usr_ICan_t Acc_CheckIfICanEliminateAccount (long UsrCod)
{
case Usr_ME:
// A system admin can not eliminate him/herself
return (Gbl.Usrs.Me.Role.Available & (1 << Rol_SYS_ADM)) == 0 ? Usr_I_CAN :
Usr_I_CAN_NOT;
return ((Gbl.Usrs.Me.Role.Available & (1 << Rol_SYS_ADM)) == 0) ? Usr_CAN :
Usr_CAN_NOT;
case Usr_OTHER:
// Only a system admin can eliminate other's account
return Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ? Usr_I_CAN :
Usr_I_CAN_NOT;
return Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ? Usr_CAN :
Usr_CAN_NOT;
}
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
/*****************************************************************************/
@ -1110,7 +1110,7 @@ void Acc_PutIconToChangeUsrAccount (struct Usr_Data *UsrDat)
"at.svg",Ico_BLACK);
break;
case Usr_OTHER:
if (Usr_CheckIfICanEditOtherUsr (UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanEditOtherUsr (UsrDat) == Usr_CAN)
Lay_PutContextualLinkOnlyIcon (NextAction[UsrDat->Roles.InCurrentCrs],NULL,
Rec_PutParUsrCodEncrypted,NULL,
"at.svg",Ico_BLACK);

View File

@ -62,7 +62,7 @@ void Acc_AfterCreationNewAccount (void);
void Acc_GetUsrCodAndRemUsrGbl (void);
void Acc_ReqRemAccountOrRemAccount (Acc_ReqOrRemUsr_t RequestOrRemove);
Usr_ICan_t Acc_CheckIfICanEliminateAccount (long UsrCod);
Usr_Can_t Acc_CheckIfICanEliminateAccount (long UsrCod);
void Acc_AskIfRemoveMyAccount (void);
void Acc_RemoveMyAccount (void);
void Acc_CompletelyEliminateAccount (struct Usr_Data *UsrDat,

View File

@ -99,12 +99,12 @@ Act_Action_t Act_GetSuperAction (Act_Action_t Action)
/************* Check if I have permission to execute an action ***************/
/*****************************************************************************/
Usr_ICan_t Act_CheckIfICanExecuteAction (Act_Action_t Action)
Usr_Can_t Act_CheckIfICanExecuteAction (Act_Action_t Action)
{
unsigned Permission;
if ((unsigned) Action >= ActLst_NUM_ACTIONS)
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
switch (Gbl.Hierarchy.Level)
{
@ -124,15 +124,15 @@ Usr_ICan_t Act_CheckIfICanExecuteAction (Act_Action_t Action)
Permission = ActLst_Actions[Action].PermissionDeg;
break;
case Hie_CRS: // Course selected
Permission = Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] ? ActLst_Actions[Action].PermissionCrsIfIBelong :
ActLst_Actions[Action].PermissionCrsIfIDontBelong;
Permission = (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] == Usr_BELONG) ? ActLst_Actions[Action].PermissionCrsIfIBelong :
ActLst_Actions[Action].PermissionCrsIfIDontBelong;
break;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
return ((Permission & (1 << Gbl.Usrs.Me.Role.Logged)) != 0) ? Usr_I_CAN :
Usr_I_CAN_NOT;
return ((Permission & (1 << Gbl.Usrs.Me.Role.Logged)) != 0) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/
@ -369,7 +369,7 @@ void Act_AdjustCurrentAction (void)
}
/***** If I belong to current course *****/
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS])
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] == Usr_BELONG)
{
/***** Adjustment 6:
-------------

View File

@ -106,7 +106,7 @@ long Act_GetActCod (Act_Action_t Action);
signed int Act_GetIndexInMenu (Act_Action_t Action);
Tab_Tab_t Act_GetTab (Act_Action_t Action);
Act_Action_t Act_GetSuperAction (Act_Action_t Action);
Usr_ICan_t Act_CheckIfICanExecuteAction (Act_Action_t Action);
Usr_Can_t Act_CheckIfICanExecuteAction (Act_Action_t Action);
Act_Content_t Act_GetContentType (Act_Action_t Action);
Act_BrowserTab_t Act_GetBrowserTab (Act_Action_t Action);
void (*Act_GetFunctionPriori (Act_Action_t Action)) (void);

View File

@ -56,16 +56,16 @@ static void Adm_EffectivelyRemAdm (struct Usr_Data *UsrDat,Hie_Level_t Level);
/**************** Check if I can admin another user's account ****************/
/*****************************************************************************/
Usr_ICan_t Adm_CheckIfICanAdminOtherUsrs (void)
Usr_Can_t Adm_CheckIfICanAdminOtherUsrs (void)
{
static Usr_ICan_t Adm_ICanAdminOtherUsrs[Rol_NUM_ROLES] =
static Usr_Can_t Adm_ICanAdminOtherUsrs[Rol_NUM_ROLES] =
{
/* Users who can admin */
[Rol_TCH ] = Usr_I_CAN,
[Rol_DEG_ADM] = Usr_I_CAN,
[Rol_CTR_ADM] = Usr_I_CAN,
[Rol_INS_ADM] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_DEG_ADM] = Usr_CAN,
[Rol_CTR_ADM] = Usr_CAN,
[Rol_INS_ADM] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return Adm_ICanAdminOtherUsrs[Gbl.Usrs.Me.Role.Logged];
@ -90,7 +90,7 @@ void Adm_ReqAddAdm (Hie_Level_t Level)
[Hie_DEG] = ActNewAdmDeg,
[Hie_CRS] = ActUnk,
};
Usr_ICan_t ICanRegister;
Usr_Can_t ICanRegister;
if (Gbl.Hierarchy.Node[Level].HieCod > 0)
{
@ -100,11 +100,11 @@ void Adm_ReqAddAdm (Hie_Level_t Level)
/* Check if I am allowed to register user as administrator in institution/center/degree */
ICanRegister = ((Level == Hie_DEG && Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ||
(Level == Hie_CTR && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ||
(Level == Hie_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
(Level == Hie_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_CAN :
Usr_CAN_NOT;
switch (ICanRegister)
{
case Usr_I_CAN:
case Usr_CAN:
if (Adm_DB_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,Level)) // User is already an administrator of current institution/center/degree
{
Ale_ShowAlert (Ale_INFO,Txt_THE_USER_X_is_already_an_administrator_of_Y,
@ -128,7 +128,7 @@ void Adm_ReqAddAdm (Hie_Level_t Level)
Btn_CREATE_BUTTON,Txt_Register_user_IN_A_COURSE_OR_DEGREE);
}
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -190,7 +190,7 @@ void Adm_GetAdmsLst (Hie_Level_t Level)
static void Adm_AddAdm (Hie_Level_t Level)
{
Usr_ICan_t ICanRegister;
Usr_Can_t ICanRegister;
if (Gbl.Hierarchy.Node[Level].HieCod > 0)
{
@ -200,18 +200,18 @@ static void Adm_AddAdm (Hie_Level_t Level)
/* Check if I am allowed to register user as administrator in institution/center/degree */
ICanRegister = ((Level == Hie_DEG && Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ||
(Level == Hie_CTR && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ||
(Level == Hie_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
(Level == Hie_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_CAN :
Usr_CAN_NOT;
switch (ICanRegister)
{
case Usr_I_CAN:
case Usr_CAN:
/***** Register administrator in current institution/center/degree in database *****/
Adm_RegisterAdmin (&Gbl.Usrs.Other.UsrDat,Level);
/***** Show user's record *****/
Rec_ShowSharedRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -308,7 +308,7 @@ static void Adm_ReqRemOrRemAdm (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr,
{
extern const char *Txt_THE_USER_X_is_not_an_administrator_of_Y;
Usr_MeOrOther_t MeOrOther;
Usr_ICan_t ICanRemove;
Usr_Can_t ICanRemove;
if (Gbl.Hierarchy.Node[Level].HieCod > 0)
{
@ -320,11 +320,11 @@ static void Adm_ReqRemOrRemAdm (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr,
ICanRemove = (MeOrOther == Usr_ME ||
(Level == Hie_DEG && Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ||
(Level == Hie_CTR && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ||
(Level == Hie_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
(Level == Hie_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_CAN :
Usr_CAN_NOT;
switch (ICanRemove)
{
case Usr_I_CAN:
case Usr_CAN:
/* Check if the other user is an admin of the current institution/center/degree */
if (Adm_DB_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,Level))
{ // The other user is an administrator of current institution/center/degree ==> ask for removing or remove her/him
@ -343,7 +343,7 @@ static void Adm_ReqRemOrRemAdm (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr,
Gbl.Usrs.Other.UsrDat.FullName,
Gbl.Hierarchy.Node[Level].FullName);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;

View File

@ -35,7 +35,7 @@
/****************************** Public prototypes ****************************/
/*****************************************************************************/
Usr_ICan_t Adm_CheckIfICanAdminOtherUsrs (void);
Usr_Can_t Adm_CheckIfICanAdminOtherUsrs (void);
void Adm_ReqAddAdm (Hie_Level_t Level);

View File

@ -125,23 +125,23 @@ static void Agd_HideUnhideEvent (HidVis_HiddenOrVisible_t HiddenOrVisible);
/******************* Check if I can view a user's agenda *********************/
/*****************************************************************************/
Usr_ICan_t Agd_CheckIfICanViewUsrAgenda (struct Usr_Data *UsrDat)
Usr_Can_t Agd_CheckIfICanViewUsrAgenda (struct Usr_Data *UsrDat)
{
/***** 1. Fast check: Am I logged? *****/
if (!Gbl.Usrs.Me.Logged)
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
/***** 2. Fast check: It's me? *****/
if (Usr_ItsMe (UsrDat->UsrCod) == Usr_ME)
return Usr_I_CAN;
return Usr_CAN;
/***** 3. Fast check: Am I logged as system admin? *****/
if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
return Usr_I_CAN;
return Usr_CAN;
/***** 4. Slow check: Get if user shares any course with me from database *****/
return Enr_CheckIfUsrSharesAnyOfMyCrs (UsrDat) ? Usr_I_CAN :
Usr_I_CAN_NOT;
return Enr_CheckIfUsrSharesAnyOfMyCrs (UsrDat) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/
@ -410,7 +410,7 @@ void Agd_ShowUsrAgenda (void)
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Agd_CheckIfICanViewUsrAgenda (&Gbl.Usrs.Other.UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Reset agenda context *****/
Agd_ResetAgenda (&Agenda);
@ -432,7 +432,7 @@ void Agd_ShowUsrAgenda (void)
/***** End box *****/
Box_BoxEnd ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -739,18 +739,18 @@ static void Agd_PutIconsOtherPublicAgenda (void *EncryptedUsrCod)
{
/***** Button to view user's public profile *****/
if (Pri_CheckIfICanView (Gbl.Usrs.Other.UsrDat.BaPrfVisibility,
&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
&Gbl.Usrs.Other.UsrDat) == Usr_CAN)
Lay_PutContextualLinkOnlyIcon (ActSeeOthPubPrf,NULL,
Usr_PutParOtherUsrCodEncrypted,EncryptedUsrCod,
"user.svg",Ico_BLACK);
/***** Button to view user's record card *****/
if (Usr_CheckIfICanViewRecordStd (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewRecordStd (&Gbl.Usrs.Other.UsrDat) == Usr_CAN)
/* View student's records: common record card and course record card */
Lay_PutContextualLinkOnlyIcon (ActSeeRecOneStd,NULL,
Usr_PutParOtherUsrCodEncrypted,EncryptedUsrCod,
"address-card.svg",Ico_BLACK);
else if (Usr_CheckIfICanViewRecordTch (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
else if (Usr_CheckIfICanViewRecordTch (&Gbl.Usrs.Other.UsrDat) == Usr_CAN)
Lay_PutContextualLinkOnlyIcon (ActSeeRecOneTch,NULL,
Usr_PutParOtherUsrCodEncrypted,EncryptedUsrCod,
"address-card.svg",Ico_BLACK);

View File

@ -101,7 +101,7 @@ typedef enum
/***************************** Public prototypes *****************************/
/*****************************************************************************/
Usr_ICan_t Agd_CheckIfICanViewUsrAgenda (struct Usr_Data *UsrDat);
Usr_Can_t Agd_CheckIfICanViewUsrAgenda (struct Usr_Data *UsrDat);
void Agd_PutFormLogInToShowUsrAgenda (void);
void Agd_PutParAgd (void);

View File

@ -79,7 +79,7 @@ extern struct Globals Gbl;
static void Asg_PutHead (struct Asg_Assignments *Assignments,
Asg_OneOrMultiple_t OneOrMultiple,
Vie_ViewType_t ViewType);
static Usr_ICan_t Asg_CheckIfICanCreateAssignments (void);
static Usr_Can_t Asg_CheckIfICanCreateAssignments (void);
static void Asg_PutIconsListAssignments (void *Assignments);
static void Asg_PutIconToCreateNewAsg (void *Assignments);
static void Asg_ParsWhichGroupsToShow (void *Assignments);
@ -106,7 +106,7 @@ static void Asg_CreateAssignment (struct Asg_Assignment *Asg,const char *Txt);
static void Asg_UpdateAssignment (struct Asg_Assignment *Asg,const char *Txt);
static void Asg_CreateGroups (long AsgCod);
static void Asg_GetAndWriteNamesOfGrpsAssociatedToAsg (struct Asg_Assignment *Asg);
static bool Asg_CheckIfIBelongToCrsOrGrpsThisAssignment (long AsgCod);
static Usr_Can_t Asg_CheckIfICanDoAsgBasedOnGroups (long AsgCod);
/*****************************************************************************/
/*************************** Reset assignments *******************************/
@ -118,8 +118,8 @@ void Asg_ResetAssignments (struct Asg_Assignments *Assignments)
Assignments->Num = 0;
Assignments->LstAsgCods = NULL;
Assignments->SelectedOrder = Asg_ORDER_DEFAULT;
// Assignments->AsgCod = -1L; // Used as parameter in contextual links
Assignments->CurrentPage = 0;
Assignments->Asg.AsgCod = -1L; // Used as parameter in contextual links
Asg_ResetAssignment (&Assignments->Asg);
}
@ -287,11 +287,11 @@ static void Asg_PutHead (struct Asg_Assignments *Assignments,
/******************** Check if I can create assignments **********************/
/*****************************************************************************/
static Usr_ICan_t Asg_CheckIfICanCreateAssignments (void)
static Usr_Can_t Asg_CheckIfICanCreateAssignments (void)
{
return (Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/
@ -303,11 +303,11 @@ static void Asg_PutIconsListAssignments (void *Assignments)
/***** Put icon to create a new assignment *****/
if (Assignments)
{
if (Asg_CheckIfICanCreateAssignments () == Usr_I_CAN)
if (Asg_CheckIfICanCreateAssignments () == Usr_CAN)
Asg_PutIconToCreateNewAsg (Assignments);
/***** Link to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
{
((struct Asg_Assignments *) Assignments)->Asg.AsgCod = -1L;
Ico_PutContextualIconToGetLink (ActReqLnkAsg,NULL,
@ -657,7 +657,7 @@ static void Asg_WriteAssignmentFolder (struct Asg_Assignment *Asg,
Act_Action_t NextAction;
bool ICanSendFiles = Asg->HiddenOrVisible == HidVis_VISIBLE && // It's visible (not hidden)
Asg->ClosedOrOpen == CloOpe_OPEN && // It's open (inside dates)
Asg->IBelongToCrsOrGrps; // I belong to course or groups
Asg->ICanDo == Usr_CAN; // I can do (I belong to course/group)
/***** Folder icon *****/
if (ViewType == Vie_VIEW && // Not print view
@ -766,7 +766,7 @@ static void Asg_PutIconsToRemEditOneAsg (struct Asg_Assignments *Assignments,
Asg_PutPars,Assignments);
/***** Link to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkAsg,NULL,
Asg_PutPars,Assignments);
/* falls through */
@ -938,7 +938,7 @@ static void Asg_GetAssignmentDataFromRow (MYSQL_RES **mysql_res,
Asg->SendWork = (Asg->Folder[0] != '\0');
/* Can I do this assignment? */
Asg->IBelongToCrsOrGrps = Asg_CheckIfIBelongToCrsOrGrpsThisAssignment (Asg->AsgCod);
Asg->ICanDo = Asg_CheckIfICanDoAsgBasedOnGroups (Asg->AsgCod);
}
/***** Free structure that stores the query result *****/
@ -953,16 +953,15 @@ static void Asg_ResetAssignment (struct Asg_Assignment *Asg)
{
if (Asg->AsgCod <= 0) // If > 0 ==> keep value
Asg->AsgCod = -1L;
Asg->AsgCod = -1L;
Asg->HiddenOrVisible = HidVis_VISIBLE;
Asg->UsrCod = -1L;
Asg->HiddenOrVisible = HidVis_VISIBLE;
Asg->UsrCod = -1L;
Asg->TimeUTC[Dat_STR_TIME] =
Asg->TimeUTC[Dat_END_TIME] = (time_t) 0;
Asg->ClosedOrOpen = CloOpe_CLOSED;
Asg->Title[0] = '\0';
Asg->SendWork = Asg_DO_NOT_SEND_WORK;
Asg->Folder[0] = '\0';
Asg->IBelongToCrsOrGrps = false;
Asg->ClosedOrOpen = CloOpe_CLOSED;
Asg->Title[0] = '\0';
Asg->SendWork = Asg_DONT_SEND_WORK;
Asg->Folder[0] = '\0';
Asg->ICanDo = Usr_CAN_NOT;
}
/*****************************************************************************/
@ -1178,14 +1177,14 @@ void Asg_ReqCreatOrEditAsg (void)
if (ItsANewAssignment)
{
/* Initialize to empty assignment */
Assignments.Asg.AsgCod = -1L;
Assignments.Asg.AsgCod = -1L;
Assignments.Asg.TimeUTC[Dat_STR_TIME] = Dat_GetStartExecutionTimeUTC ();
Assignments.Asg.TimeUTC[Dat_END_TIME] = Assignments.Asg.TimeUTC[Dat_STR_TIME] + (2 * 60 * 60); // +2 hours
Assignments.Asg.ClosedOrOpen = CloOpe_OPEN;
Assignments.Asg.Title[0] = '\0';
Assignments.Asg.SendWork = Asg_DO_NOT_SEND_WORK;
Assignments.Asg.Folder[0] = '\0';
Assignments.Asg.IBelongToCrsOrGrps = false;
Assignments.Asg.ClosedOrOpen = CloOpe_OPEN;
Assignments.Asg.Title[0] = '\0';
Assignments.Asg.SendWork = Asg_DONT_SEND_WORK;
Assignments.Asg.Folder[0] = '\0';
Assignments.Asg.ICanDo = Usr_CAN_NOT;
}
else
{
@ -1403,7 +1402,7 @@ void Asg_ReceiveAssignment (void)
/***** Get folder name where to send works of the assignment *****/
Par_GetParText ("Folder",Assignments.Asg.Folder,Brw_MAX_BYTES_FOLDER);
Assignments.Asg.SendWork = (Assignments.Asg.Folder[0]) ? Asg_SEND_WORK :
Asg_DO_NOT_SEND_WORK;
Asg_DONT_SEND_WORK;
/***** Get assignment text *****/
Par_GetParHTML ("Txt",Description,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
@ -1626,10 +1625,10 @@ void Asg_RemoveCrsAssignments (long CrsCod)
}
/*****************************************************************************/
/********* Check if I belong to any of the groups of an assignment ***********/
/*********************** Check if I can do an assignment *********************/
/*****************************************************************************/
static bool Asg_CheckIfIBelongToCrsOrGrpsThisAssignment (long AsgCod)
static Usr_Can_t Asg_CheckIfICanDoAsgBasedOnGroups (long AsgCod)
{
switch (Gbl.Usrs.Me.Role.Logged)
{
@ -1638,11 +1637,11 @@ static bool Asg_CheckIfIBelongToCrsOrGrpsThisAssignment (long AsgCod)
case Rol_TCH:
// Students and teachers can do assignments depending on groups
/***** Get if I can do an assignment from database *****/
return (Asg_DB_CheckIfICanDoAssignment (AsgCod) == Usr_I_CAN);
return Asg_DB_CheckIfICanDoAsgBasedOnGroups (AsgCod);
case Rol_SYS_ADM:
return true;
return Usr_CAN;
default:
return false;
return Usr_CAN_NOT;
}
}
@ -1704,26 +1703,26 @@ void Asg_WriteDatesAssignment (const struct Asg_Assignment *Asg)
/* Check if I have permission to create a file or folder into an assignment **/
/*****************************************************************************/
Usr_ICan_t Asg_CheckIfICanCreateIntoAssigment (const struct Asg_Assignment *Asg)
Usr_Can_t Asg_CheckIfICanCreateIntoAssigment (const struct Asg_Assignment *Asg)
{
static Usr_ICan_t CloOpe_ICanCreate[CloOpe_NUM_CLOSED_OPEN] =
static Usr_Can_t CloOpe_ICanCreate[CloOpe_NUM_CLOSED_OPEN] =
{
[CloOpe_CLOSED] = Usr_I_CAN_NOT,
[CloOpe_OPEN ] = Usr_I_CAN,
[CloOpe_CLOSED] = Usr_CAN_NOT,
[CloOpe_OPEN ] = Usr_CAN,
};
/***** Trivial check 1: assignment is valid *****/
if (Asg->AsgCod <= 0)
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
/***** Check 2: Do not create anything in hidden assigments *****/
if (Asg->HiddenOrVisible == HidVis_HIDDEN)
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
/***** Check 3: If I do not belong to course / groups of this assignment,
I can not create anything inside this assignment *****/
if (!Asg->IBelongToCrsOrGrps)
return Usr_I_CAN_NOT;
if (Asg->ICanDo == Usr_CAN_NOT)
return Usr_CAN_NOT;
/***** Check 4: Depending on my role in this course... *****/
switch (Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs)
@ -1733,9 +1732,9 @@ Usr_ICan_t Asg_CheckIfICanCreateIntoAssigment (const struct Asg_Assignment *Asg)
// ...can create only inside open assignments
return CloOpe_ICanCreate[Asg->ClosedOrOpen];
case Rol_TCH: // Teachers...
return Usr_I_CAN; // ...can create inside any assignment
return Usr_CAN; // ...can create inside any assignment
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}

View File

@ -42,8 +42,8 @@
#define Asg_NUM_TYPES_SEND_WORK 2
typedef enum
{
Asg_DO_NOT_SEND_WORK = 0,
Asg_SEND_WORK = 1,
Asg_DONT_SEND_WORK = 0,
Asg_SEND_WORK = 1,
} Asg_SendWork_t;
struct Asg_Assignment
@ -56,10 +56,10 @@ struct Asg_Assignment
char Title[Asg_MAX_BYTES_ASSIGNMENT_TITLE + 1];
Asg_SendWork_t SendWork;
char Folder[Brw_MAX_BYTES_FOLDER + 1];
bool IBelongToCrsOrGrps; // I can do this assignment
// (it is associated to no groups
// or, if associated to groups,
// I belong to any of the groups)
Usr_Can_t ICanDo; // I can do this assignment
// (it is associated to no groups
// or, if associated to groups,
// I belong to any of the groups)
};
struct Asg_Assignments
@ -106,7 +106,7 @@ void Asg_ReceiveAssignment (void);
void Asg_RemoveCrsAssignments (long CrsCod);
void Asg_WriteDatesAssignment (const struct Asg_Assignment *Asg);
Usr_ICan_t Asg_CheckIfICanCreateIntoAssigment (const struct Asg_Assignment *Asg);
Usr_Can_t Asg_CheckIfICanCreateIntoAssigment (const struct Asg_Assignment *Asg);
void Asg_SetFolder (struct Asg_Assignment *Asg,unsigned Level);
unsigned Asg_GetNumAssignments (Hie_Level_t Level,unsigned *NumNotif);

View File

@ -331,7 +331,7 @@ void Asg_DB_RemoveAssignment (long AsgCod)
/********************* Check if I can do an assignment ***********************/
/*****************************************************************************/
Usr_ICan_t Asg_DB_CheckIfICanDoAssignment (long AsgCod)
Usr_Can_t Asg_DB_CheckIfICanDoAsgBasedOnGroups (long AsgCod)
{
// Students and teachers can do assignments depending on groups
return
@ -355,8 +355,8 @@ Usr_ICan_t Asg_DB_CheckIfICanDoAssignment (long AsgCod)
" AND asg_groups.GrpCod=grp_users.GrpCod)"
"))",
AsgCod,
Gbl.Usrs.Me.UsrDat.UsrCod) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Gbl.Usrs.Me.UsrDat.UsrCod) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/

View File

@ -59,7 +59,7 @@ void Asg_DB_HideOrUnhideAssignment (long AsgCod,
void Asg_DB_RemoveAssignment (long AsgCod);
Usr_ICan_t Asg_DB_CheckIfICanDoAssignment (long AsgCod);
Usr_Can_t Asg_DB_CheckIfICanDoAsgBasedOnGroups (long AsgCod);
unsigned Asg_DB_GetGrps (MYSQL_RES **mysql_res,long AsgCod);
void Asg_DB_CreateGroup (long AsgCod,long GrpCod);

View File

@ -338,15 +338,15 @@ static void Att_ParsWhichGroupsToShow (void *Events)
static void Att_PutIconsInListOfEvents (void *Events)
{
Usr_ICan_t ICanEdit;
Usr_Can_t ICanEdit;
if (Events)
{
/***** Put icon to create a new attendance event *****/
ICanEdit = (Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
if (ICanEdit == Usr_I_CAN)
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_CAN :
Usr_CAN_NOT;
if (ICanEdit == Usr_CAN)
Att_PutIconToCreateNewEvent ((struct Att_Events *) Events);
/***** Put icon to show attendance list *****/
@ -372,7 +372,7 @@ static void Att_PutIconsInListOfEvents (void *Events)
Usr_PutParMyUsrCodEncrypted,Gbl.Usrs.Me.UsrDat.EnUsrCod);
/***** Put icon to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkAtt,NULL,
Att_PutPars,Events);
}
@ -576,7 +576,7 @@ static void Att_PutFormsToRemEditOneEvent (struct Att_Events *Events,
[HidVis_VISIBLE] = ActHidAtt, // Visible ==> action to hide
};
if (Att_CheckIfICanEditEvents () == Usr_I_CAN)
if (Att_CheckIfICanEditEvents () == Usr_CAN)
{
/***** Icon to remove attendance event *****/
Ico_PutContextualIconToRemove (ActReqRemAtt,NULL,
@ -592,7 +592,7 @@ static void Att_PutFormsToRemEditOneEvent (struct Att_Events *Events,
}
/***** Icon to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkAtt,NULL,Att_PutPars,Events);
}
@ -600,12 +600,12 @@ static void Att_PutFormsToRemEditOneEvent (struct Att_Events *Events,
/******************* Check if I can edit calls for exams *********************/
/*****************************************************************************/
Usr_ICan_t Att_CheckIfICanEditEvents (void)
Usr_Can_t Att_CheckIfICanEditEvents (void)
{
static Usr_ICan_t ICanEditAttEvents[Rol_NUM_ROLES] =
static Usr_Can_t ICanEditAttEvents[Rol_NUM_ROLES] =
{
[Rol_TCH ] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return ICanEditAttEvents[Gbl.Usrs.Me.Role.Logged];
@ -1652,9 +1652,9 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
bool Present;
char CommentStd[Cns_MAX_BYTES_TEXT + 1];
char CommentTch[Cns_MAX_BYTES_TEXT + 1];
Usr_ICan_t ICanChangeStdAttendance;
Usr_ICan_t ICanEditStdComment;
Usr_ICan_t ICanEditTchComment;
Usr_Can_t ICanChangeStdAttendance;
Usr_Can_t ICanEditStdComment;
Usr_Can_t ICanEditTchComment;
/***** Set who can edit *****/
switch (Gbl.Usrs.Me.Role.Logged)
@ -1663,25 +1663,25 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
// A student can see only her/his attendance
if (Usr_ItsMe (UsrDat->UsrCod) == Usr_OTHER)
Err_ShowErrorAndExit ("Wrong call.");
ICanChangeStdAttendance = Usr_I_CAN_NOT;
ICanEditStdComment = (Event->ClosedOrOpen == CloOpe_OPEN) ? Usr_I_CAN : // Attendance event is open
Usr_I_CAN_NOT;
ICanEditTchComment = Usr_I_CAN_NOT;
ICanChangeStdAttendance = Usr_CAN_NOT;
ICanEditStdComment = (Event->ClosedOrOpen == CloOpe_OPEN) ? Usr_CAN : // Attendance event is open
Usr_CAN_NOT;
ICanEditTchComment = Usr_CAN_NOT;
break;
case Rol_TCH:
ICanChangeStdAttendance = Usr_I_CAN;
ICanEditStdComment = Usr_I_CAN_NOT;
ICanEditTchComment = Usr_I_CAN;
ICanChangeStdAttendance = Usr_CAN;
ICanEditStdComment = Usr_CAN_NOT;
ICanEditTchComment = Usr_CAN;
break;
case Rol_SYS_ADM:
ICanChangeStdAttendance = Usr_I_CAN;
ICanEditStdComment = Usr_I_CAN_NOT;
ICanEditTchComment = Usr_I_CAN_NOT;
ICanChangeStdAttendance = Usr_CAN;
ICanEditStdComment = Usr_CAN_NOT;
ICanEditTchComment = Usr_CAN_NOT;
break;
default:
ICanChangeStdAttendance = Usr_I_CAN_NOT;
ICanEditStdComment = Usr_I_CAN_NOT;
ICanEditTchComment = Usr_I_CAN_NOT;
ICanChangeStdAttendance = Usr_CAN_NOT;
ICanEditStdComment = Usr_CAN_NOT;
ICanEditTchComment = Usr_CAN_NOT;
break;
}
@ -1704,7 +1704,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
"id=\"Std%u\" value=\"%s\"%s%s",
NumUsr,UsrDat->EnUsrCod,
Present ? " checked=\"checked\"" : "",
(ICanChangeStdAttendance == Usr_I_CAN) ? "" :
(ICanChangeStdAttendance == Usr_CAN) ? "" :
" disabled=\"disabled\"");
HTM_TD_End ();
@ -1755,7 +1755,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
The_GetColorRows ());
switch (ICanEditStdComment)
{
case Usr_I_CAN: // Show with form
case Usr_CAN: // Show with form
HTM_TEXTAREA_Begin ("name=\"CommentStd%s\" cols=\"40\" rows=\"3\""
" class=\"INPUT_%s\"",
UsrDat->EnUsrCod,
@ -1763,7 +1763,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
HTM_Txt (CommentStd);
HTM_TEXTAREA_End ();
break;
case Usr_I_CAN_NOT: // Show without form
case Usr_CAN_NOT: // Show without form
default:
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
CommentStd,Cns_MAX_BYTES_TEXT,Str_DONT_REMOVE_SPACES);
@ -1780,7 +1780,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
The_GetColorRows ());
switch (ICanEditTchComment)
{
case Usr_I_CAN: // Show with form
case Usr_CAN: // Show with form
HTM_TEXTAREA_Begin ("name=\"CommentTch%s\" cols=\"40\" rows=\"3\""
" class=\"INPUT_%s\"",
UsrDat->EnUsrCod,
@ -1788,7 +1788,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
HTM_Txt (CommentTch);
HTM_TEXTAREA_End ();
break;
case Usr_I_CAN_NOT: // Show without form
case Usr_CAN_NOT: // Show without form
default:
if (Event->CommentTchVisible)
{
@ -2775,7 +2775,7 @@ static void Att_ListUsrsAttendanceTable (struct Att_Events *Events,
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat, // Get from the database the data of the student
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CRS))
if (Usr_CheckIfICanViewAtt (&UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewAtt (&UsrDat) == Usr_CAN)
{
UsrDat.Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (&UsrDat);
Att_WriteRowUsrSeveralAttEvents (Events,NumUsr,&UsrDat);
@ -3010,7 +3010,7 @@ static void Att_ListStdsWithAttEventsDetails (struct Att_Events *Events,
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat, // Get from the database the data of the student
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CRS))
if (Usr_CheckIfICanViewAtt (&UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewAtt (&UsrDat) == Usr_CAN)
{
UsrDat.Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (&UsrDat);
Att_ListAttEventsForAStd (Events,NumUsr,&UsrDat);

View File

@ -85,7 +85,7 @@ struct Att_Events
void Att_SeeEvents (void);
Usr_ICan_t Att_CheckIfICanEditEvents (void);
Usr_Can_t Att_CheckIfICanEditEvents (void);
void Att_ReqCreatOrEditEvent (void);
bool Att_GetEventDataByCod (struct Att_Event *Event);

File diff suppressed because it is too large Load Diff

View File

@ -213,7 +213,7 @@ void Brw_RcvFileInFileBrwClassic (void);
void Brw_RecLinkFileBrowser (void);
void Brw_SetDocumentAsVisible (void);
void Brw_SetDocumentAsHidden (void);
HidVis_HiddenOrVisible_t Brw_CheckIfFileOrFolderIsSetAsHiddenInDB (Brw_FileType_t FileType,
HidVis_HiddenOrVisible_t Brw_CheckIfFileOrFolderIsHiddenOrVisible (Brw_FileType_t FileType,
const char *Path);
void Brw_ShowFileMetadata (void);

View File

@ -2299,13 +2299,13 @@ void Brw_DB_HideOrUnhideFileOrFolder (const char Path[PATH_MAX + 1],
/************** Check if a file / folder from is set as hidden ***************/
/*****************************************************************************/
unsigned Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingPath (MYSQL_RES **mysql_res,
const char *Path)
HidVis_HiddenOrVisible_t Brw_DB_CheckIfFileOrFolderIsHiddenUsingPath (MYSQL_RES **mysql_res,
const char *Path)
{
long Cod = Brw_GetCodForFileBrowser ();
long ZoneUsrCod = Brw_GetZoneUsrCodForFileBrowser ();
return (unsigned)
return
DB_QuerySELECT (mysql_res,"can not check if a file is hidden",
"SELECT Hidden" // row[0]
" FROM brw_files"
@ -2318,14 +2318,15 @@ unsigned Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingPath (MYSQL_RES **mysql_res
(unsigned) Brw_DB_FileBrowserForDB_files[Gbl.FileBrowser.Type],
Cod,
ZoneUsrCod,
Path);
Path) ? HidVis_HIDDEN :
HidVis_VISIBLE;
}
/*****************************************************************************/
/******** Check if a file / folder from the documents zone is hidden *********/
/*****************************************************************************/
bool Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingMetadata (const struct Brw_FileMetadata *FileMetadata)
HidVis_HiddenOrVisible_t Brw_DB_CheckIfFileOrFolderIsHiddenOrVisibleUsingMetadata (const struct Brw_FileMetadata *FileMetadata)
{
/***** Get if a file or folder is under a hidden folder from database *****/
/*
@ -2350,7 +2351,8 @@ bool Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingMetadata (const struct Brw_File
FileMetadata->Cod,
FileMetadata->ZoneUsrCod,
FileMetadata->FilFolLnk.Full,
FileMetadata->FilFolLnk.Full);
FileMetadata->FilFolLnk.Full) ? HidVis_HIDDEN :
HidVis_VISIBLE;
}
/*****************************************************************************/

View File

@ -101,9 +101,9 @@ unsigned Brw_DB_GetNumFileViewsUsr (long UsrCod);
//------------------------------- Hidden files --------------------------------
void Brw_DB_HideOrUnhideFileOrFolder (const char Path[PATH_MAX + 1],
HidVis_HiddenOrVisible_t HiddenOrVisible);
unsigned Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingPath (MYSQL_RES **mysql_res,
unsigned Brw_DB_CheckIfFileOrFolderIsHiddenUsingPath (MYSQL_RES **mysql_res,
const char *Path);
bool Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingMetadata (const struct Brw_FileMetadata *FileMetadata);
HidVis_HiddenOrVisible_t Brw_DB_CheckIfFileOrFolderIsHiddenOrVisibleUsingMetadata (const struct Brw_FileMetadata *FileMetadata);
//---------------------------- Expanded folders -------------------------------
void Brw_DB_InsertFolderInExpandedFolders (const char Path[PATH_MAX + 1]);

View File

@ -60,7 +60,7 @@ static struct Bld_Building *Bld_EditingBuilding = NULL; // Static variable to ke
/*****************************************************************************/
static Bld_Order_t Bld_GetParBuildingOrder (void);
static Usr_ICan_t Bld_CheckIfICanCreateBuildings (void);
static Usr_Can_t Bld_CheckIfICanCreateBuildings (void);
static void Bld_PutIconsListingBuildings (__attribute__((unused)) void *Args);
static void Bld_PutIconToEditBuildings (void);
static void Bld_PutIconsEditingBuildings (__attribute__((unused)) void *Args);
@ -196,10 +196,10 @@ static Bld_Order_t Bld_GetParBuildingOrder (void)
/********************* Check if I can create buildings ***********************/
/*****************************************************************************/
static Usr_ICan_t Bld_CheckIfICanCreateBuildings (void)
static Usr_Can_t Bld_CheckIfICanCreateBuildings (void)
{
return (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
return (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/
@ -209,7 +209,7 @@ static Usr_ICan_t Bld_CheckIfICanCreateBuildings (void)
static void Bld_PutIconsListingBuildings (__attribute__((unused)) void *Args)
{
/***** Put icon to edit buildings *****/
if (Bld_CheckIfICanCreateBuildings () == Usr_I_CAN)
if (Bld_CheckIfICanCreateBuildings () == Usr_CAN)
Bld_PutIconToEditBuildings ();
}

View File

@ -675,11 +675,11 @@ static void Cfe_ListCallsForExams (struct Cfe_CallsForExams *CallsForExams,
static void Cfe_PutIconsCallsForExams (__attribute__((unused)) void *Args)
{
/***** Icon to create a new call for exam *****/
if (Cfe_CheckIfICanEditCallsForExams () == Usr_I_CAN)
if (Cfe_CheckIfICanEditCallsForExams () == Usr_CAN)
Ico_PutContextualIconToAdd (ActEdiCfe,NULL,NULL,NULL);
/***** Icon to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkCfe,NULL,NULL,NULL);
}
@ -1464,7 +1464,7 @@ static void Cfe_PutIconsCallForExam (void *CallsForExams)
if (CallsForExams)
{
if (Cfe_CheckIfICanEditCallsForExams () == Usr_I_CAN)
if (Cfe_CheckIfICanEditCallsForExams () == Usr_CAN)
{
/***** Icon to remove call for exam *****/
Ico_PutContextualIconToRemove (ActReqRemCfe,NULL,
@ -1498,7 +1498,7 @@ static void Cfe_PutIconsCallForExam (void *CallsForExams)
&((struct Cfe_CallsForExams *) CallsForExams)->ExaCod);
/***** Link to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkCfe,NULL,
Cfe_PutParExaCod,
&((struct Cfe_CallsForExams *) CallsForExams)->ExaCod);
@ -1509,12 +1509,12 @@ static void Cfe_PutIconsCallForExam (void *CallsForExams)
/******************* Check if I can edit calls for exams *********************/
/*****************************************************************************/
Usr_ICan_t Cfe_CheckIfICanEditCallsForExams (void)
Usr_Can_t Cfe_CheckIfICanEditCallsForExams (void)
{
static Usr_ICan_t ICanEditCallsForExams[Rol_NUM_ROLES] =
static Usr_Can_t ICanEditCallsForExams[Rol_NUM_ROLES] =
{
[Rol_TCH ] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return ICanEditCallsForExams[Gbl.Usrs.Me.Role.Logged];

View File

@ -129,7 +129,7 @@ void Cfe_ListCallsForExamsDay (void);
void Cfe_CreateListCallsForExams (struct Cfe_CallsForExams *CallsForExams);
Usr_ICan_t Cfe_CheckIfICanEditCallsForExams (void);
Usr_Can_t Cfe_CheckIfICanEditCallsForExams (void);
void Cfe_GetSummaryAndContentCallForExam (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
char **ContentStr,

View File

@ -87,10 +87,10 @@ unsigned Cfe_DB_GetCallsForExamsInCurrentCrs (MYSQL_RES **mysql_res)
/***** Build subquery about status depending on my role *****/
switch (Cfe_CheckIfICanEditCallsForExams ())
{
case Usr_I_CAN:
case Usr_CAN:
sprintf (SubQueryStatus,"Status<>%u",(unsigned) Cfe_DELETED_CALL_FOR_EXAM);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
sprintf (SubQueryStatus,"Status=%u",(unsigned) Cfe_VISIBLE_CALL_FOR_EXAM);
break;

View File

@ -89,7 +89,7 @@ static void Ctr_GetCoordFromRow (MYSQL_RES *mysql_res,
struct Map_Coordinates *Coord);
static void Ctr_ListCentersForEdition (const struct Plc_Places *Places);
static Usr_ICan_t Ctr_CheckIfICanEditACenter (struct Hie_Node *Ctr);
static Usr_Can_t Ctr_CheckIfICanEditACenter (struct Hie_Node *Ctr);
static void Ctr_ShowAlertAndButtonToGoToCtr (void);
@ -289,7 +289,7 @@ static void Ctr_ListCenters (void)
static void Ctr_PutIconsListingCenters (__attribute__((unused)) void *Args)
{
/***** Put icon to edit centers *****/
if (Hie_CheckIfICanEdit () == Usr_I_CAN)
if (Hie_CheckIfICanEdit () == Usr_CAN)
Ctr_PutIconToEditCenters ();
/***** Put icon to show a figure *****/
@ -735,7 +735,7 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
const struct Plc_Place *Plc;
char WWW[Cns_MAX_BYTES_WWW + 1];
struct Usr_Data UsrDat;
Usr_ICan_t ICanEdit;
Usr_Can_t ICanEdit;
unsigned NumDegs;
unsigned NumUsrsCtr;
unsigned NumUsrsInCrssOfCtr;
@ -771,7 +771,7 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
/* Put icon to remove center */
HTM_TD_Begin ("class=\"BT\"");
if (ICanEdit == Usr_I_CAN_NOT || // I cannot edit
if (ICanEdit == Usr_CAN_NOT || // I cannot edit
NumDegs || // Center has degrees
NumUsrsCtr || // Center has users who claim to belong to it
NumUsrsInCrssOfCtr) // Center has users
@ -795,7 +795,7 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
switch (ICanEdit)
{
case Usr_I_CAN:
case Usr_CAN:
Frm_BeginForm (ActChgCtrPlc);
ParCod_PutPar (ParCod_OthHie,Ctr->HieCod);
HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,NULL,
@ -821,7 +821,7 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
HTM_SELECT_End ();
Frm_EndForm ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
for (NumPlc = 0;
NumPlc < Places->Num;
@ -838,14 +838,14 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
Nam_ExistingShortAndFullNames (ActionRename,
ParCod_OthHie,Ctr->HieCod,
Names,
ICanEdit == Usr_I_CAN ? Frm_PUT_FORM :
ICanEdit == Usr_CAN ? Frm_PUT_FORM :
Frm_DONT_PUT_FORM);
/* Center WWW */
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
switch (ICanEdit)
{
case Usr_I_CAN:
case Usr_CAN:
Frm_BeginForm (ActChgCtrWWW);
ParCod_PutPar (ParCod_OthHie,Ctr->HieCod);
HTM_INPUT_URL ("WWW",Ctr->WWW,HTM_SUBMIT_ON_CHANGE,
@ -854,7 +854,7 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
The_GetSuffix ());
Frm_EndForm ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Str_Copy (WWW,Ctr->WWW,sizeof (WWW) - 1);
HTM_DIV_Begin ("class=\"EXTERNAL_WWW_SHRT\"");
@ -890,8 +890,8 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
HTM_TD_End ();
/* Center status */
Hie_WriteStatusCellEditable (Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM ? Usr_I_CAN :
Usr_I_CAN_NOT,
Hie_WriteStatusCellEditable (Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM ? Usr_CAN :
Usr_CAN_NOT,
Ctr->Status,ActChgCtrSta,Ctr->HieCod,
Txt_CENTER_STATUS);
@ -909,12 +909,12 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
/************** Check if I can edit, remove, etc. a center *******************/
/*****************************************************************************/
static Usr_ICan_t Ctr_CheckIfICanEditACenter (struct Hie_Node *Ctr)
static Usr_Can_t Ctr_CheckIfICanEditACenter (struct Hie_Node *Ctr)
{
return (Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM || // I am an institution administrator or higher
((Ctr->Status & Hie_STATUS_BIT_PENDING) != 0 && // Center is not yet activated
Gbl.Usrs.Me.UsrDat.UsrCod == Ctr->RequesterUsrCod)) ? Usr_I_CAN : // I am the requester
Usr_I_CAN_NOT;
Gbl.Usrs.Me.UsrDat.UsrCod == Ctr->RequesterUsrCod)) ? Usr_CAN : // I am the requester
Usr_CAN_NOT;
}
/*****************************************************************************/

View File

@ -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.75 (2024-04-13)"
#define Log_PLATFORM_VERSION "SWAD 23.76 (2024-04-19)"
#define CSS_FILE "swad23.67.2.css"
#define JS_FILE "swad23.53.6.js"
/*
Version 23.76: Apr 19, 2024 Code refactoring related to don't belong/belong. (335550 lines)
Version 23.75: Apr 13, 2024 Code refactoring related to closed/open. (335484 lines)
Copy the following icons to icon public directory:
sudo cp icon/folder-closed-yellow.png /var/www/html/swad/icon/

View File

@ -135,7 +135,7 @@ void Cht_ShowListOfAvailableChatRooms (void)
HTM_UL_Begin ("class=\"LIST_TREE\"");
/***** Link to chat available for all users *****/
IsLastItemInLevel[1] = (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] ||
IsLastItemInLevel[1] = (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] == Usr_BELONG ||
Gbl.Usrs.Me.Hierarchy[Hie_DEG].Num) ? Lay_NO_LAST_ITEM :
Lay_LAST_ITEM;
snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),"%s (%s)",

View File

@ -225,9 +225,9 @@ static void Con_ShowGlobalConnectedUsrsRole (Rol_Role_t Role,unsigned UsrsTotal)
void Con_ComputeConnectedUsrsBelongingToCurrentCrs (void)
{
if ((Gbl.Prefs.SideCols & Lay_SHOW_RIGHT_COLUMN) && // Right column visible
Gbl.Hierarchy.Level == Hie_CRS && // Course selected
(Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] || // I can view users
if ((Gbl.Prefs.SideCols & Lay_SHOW_RIGHT_COLUMN) && // Right column visible
Gbl.Hierarchy.Level == Hie_CRS && // Course selected
(Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] == Usr_BELONG || // I can view users
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM))
{
Gbl.Usrs.Connected.NumUsrs =

View File

@ -463,7 +463,7 @@ static void Cty_ListOneCountryForSeeing (struct Hie_Node *Cty,unsigned NumCty)
static void Cty_PutIconsListingCountries (__attribute__((unused)) void *Args)
{
/***** Put icon to edit countries *****/
if (Cty_CheckIfICanEditCountries () == Usr_I_CAN)
if (Cty_CheckIfICanEditCountries () == Usr_CAN)
Cty_PutIconToEditCountries ();
/***** Put icon to show a figure *****/
@ -474,10 +474,10 @@ static void Cty_PutIconsListingCountries (__attribute__((unused)) void *Args)
/********************** Check if I can edit countries ************************/
/*****************************************************************************/
Usr_ICan_t Cty_CheckIfICanEditCountries (void)
Usr_Can_t Cty_CheckIfICanEditCountries (void)
{
return (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
return (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/

View File

@ -54,7 +54,7 @@ void Cty_ListCountries (void);
void Cty_ListCountries1 (void);
void Cty_ListCountries2 (void);
Usr_ICan_t Cty_CheckIfICanEditCountries (void);
Usr_Can_t Cty_CheckIfICanEditCountries (void);
void Cty_DrawCountryMapAndNameWithLink (struct Hie_Node *Cty,Act_Action_t Action,
const char *ClassContainer,

View File

@ -341,7 +341,7 @@ static void CtyCfg_MapImage (Vie_ViewType_t ViewType,Hie_PutLink_t PutLink)
HTM_DIV_End ();
/***** Map attribution *****/
if (ViewType == Vie_VIEW && Cty_CheckIfICanEditCountries () == Usr_I_CAN)
if (ViewType == Vie_VIEW && Cty_CheckIfICanEditCountries () == Usr_CAN)
{
HTM_DIV_Begin ("class=\"CM\"");
Frm_BeginForm (ActChgCtyMapAtt);

View File

@ -100,7 +100,7 @@ static void Crs_EditCoursesInternal (void);
static void Crs_PutIconsEditingCourses (__attribute__((unused)) void *Args);
static void Crs_ListCoursesForEdition (void);
static void Crs_ListCoursesOfAYearForEdition (unsigned Year);
static Usr_ICan_t Crs_CheckIfICanEdit (struct Hie_Node *Crs);
static Usr_Can_t Crs_CheckIfICanEdit (struct Hie_Node *Crs);
static void Crs_PutFormToCreateCourse (void);
static void Crs_PutHeadCoursesForSeeing (void);
static void Crs_PutHeadCoursesForEdition (void);
@ -357,8 +357,8 @@ void Crs_WriteSelectorMyCoursesInBreadcrumb (void)
/***** Write an option with the current course
when I don't belong to it *****/
if (Gbl.Hierarchy.Level == Hie_CRS && // Course selected
!Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS]) // I do not belong to it
if (Gbl.Hierarchy.Level == Hie_CRS && // Course selected
Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] == Usr_DONT_BELONG) // I do not belong to it
HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Node[Hie_CRS].HieCod,
HTM_OPTION_SELECTED,
HTM_OPTION_DISABLED,
@ -423,7 +423,7 @@ static void Crs_ListCourses (void)
static void Crs_PutIconsListCourses (__attribute__((unused)) void *Args)
{
/***** Put icon to edit courses *****/
if (Hie_CheckIfICanEdit () == Usr_I_CAN)
if (Hie_CheckIfICanEdit () == Usr_CAN)
Crs_PutIconToEditCourses ();
/***** Put icon to show a figure *****/
@ -479,8 +479,8 @@ static bool Crs_ListCoursesOfAYearForSeeing (unsigned Year)
}
/* Check if this course is one of my courses */
BgColor = (Hie_CheckIfIBelongTo (Hie_CRS,Crs->HieCod)) ? "BG_HIGHLIGHT" :
The_GetColorRows ();
BgColor = (Hie_CheckIfIBelongTo (Hie_CRS,Crs->HieCod) == Usr_BELONG) ? "BG_HIGHLIGHT" :
The_GetColorRows ();
HTM_TR_Begin (NULL);
@ -660,7 +660,7 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
unsigned YearAux;
unsigned NumCrs;
struct Usr_Data UsrDat;
Usr_ICan_t ICanEdit;
Usr_Can_t ICanEdit;
unsigned NumUsrs[Rol_NUM_ROLES];
const char *Names[Nam_NUM_SHRT_FULL_NAMES];
@ -691,9 +691,9 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
/* Put icon to remove course */
HTM_TD_Begin ("class=\"BT\"");
if (NumUsrs[Rol_UNK] || // Course has users ==> deletion forbidden
ICanEdit == Usr_I_CAN_NOT)
ICanEdit == Usr_CAN_NOT)
Ico_PutIconRemovalNotAllowed ();
else // Crs->NumUsrs == 0 && ICanEdit == Usr_I_CAN
else // Crs->NumUsrs == 0 && ICanEdit == Usr_CAN
Ico_PutContextualIconToRemove (ActRemCrs,NULL,
Hie_PutParOtherHieCod,&Crs->HieCod);
HTM_TD_End ();
@ -707,7 +707,7 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
HTM_TD_Begin ("class=\"CT DAT_%s\"",The_GetSuffix ());
switch (ICanEdit)
{
case Usr_I_CAN:
case Usr_CAN:
Frm_BeginForm (ActChgCrsYea);
ParCod_PutPar (ParCod_OthHie,Crs->HieCod);
HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,NULL,
@ -727,7 +727,7 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
HTM_SELECT_End ();
Frm_EndForm ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
HTM_Txt (Txt_YEAR_OF_DEGREE[Crs->Specific.Year]);
break;
@ -738,7 +738,7 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
switch (ICanEdit)
{
case Usr_I_CAN:
case Usr_CAN:
Frm_BeginForm (ActChgInsCrsCod);
ParCod_PutPar (ParCod_OthHie,Crs->HieCod);
HTM_INPUT_TEXT ("InsCrsCod",Hie_MAX_CHARS_INSTITUTIONAL_COD,
@ -747,7 +747,7 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
The_GetSuffix ());
Frm_EndForm ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
HTM_Txt (Crs->InstitutionalCod);
break;
@ -760,7 +760,7 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
Nam_ExistingShortAndFullNames (ActionRename,
ParCod_OthHie,Crs->HieCod,
Names,
ICanEdit == Usr_I_CAN ? Frm_PUT_FORM :
ICanEdit == Usr_CAN ? Frm_PUT_FORM :
Frm_DONT_PUT_FORM);
/* Current number of teachers in this course */
@ -781,8 +781,8 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
HTM_TD_End ();
/* Course status */
Hie_WriteStatusCellEditable (Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM ? Usr_I_CAN :
Usr_I_CAN_NOT,
Hie_WriteStatusCellEditable (Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM ? Usr_CAN :
Usr_CAN_NOT,
Crs->Status,ActChgCrsSta,Crs->HieCod,
Txt_COURSE_STATUS);
@ -798,12 +798,12 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
/************** Check if I can edit, remove, etc. a course *******************/
/*****************************************************************************/
static Usr_ICan_t Crs_CheckIfICanEdit (struct Hie_Node *Crs)
static Usr_Can_t Crs_CheckIfICanEdit (struct Hie_Node *Crs)
{
return (Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM || // I am a degree administrator or higher
((Crs->Status & Hie_STATUS_BIT_PENDING) != 0 && // Course is not yet activated
Gbl.Usrs.Me.UsrDat.UsrCod == Crs->RequesterUsrCod)) ? Usr_I_CAN : // I am the requester
Usr_I_CAN_NOT;
Gbl.Usrs.Me.UsrDat.UsrCod == Crs->RequesterUsrCod)) ? Usr_CAN : // I am the requester
Usr_CAN_NOT;
}
/*****************************************************************************/
@ -1061,7 +1061,7 @@ void Crs_RemoveCourse (void)
/***** Get data of the course from database *****/
Hie_GetDataByCod[Hie_CRS] (Crs_EditingCrs);
if (Crs_CheckIfICanEdit (Crs_EditingCrs) == Usr_I_CAN_NOT)
if (Crs_CheckIfICanEdit (Crs_EditingCrs) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Check if this course has users *****/
@ -1304,7 +1304,7 @@ void Crs_ChangeInsCrsCod (void)
/* Get data of the course */
Hie_GetDataByCod[Hie_CRS] (Crs_EditingCrs);
if (Crs_CheckIfICanEdit (Crs_EditingCrs) == Usr_I_CAN_NOT)
if (Crs_CheckIfICanEdit (Crs_EditingCrs) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Change the institutional course code *****/
@ -1349,7 +1349,7 @@ void Crs_ChangeCrsYear (void)
/* Get data of the course */
Hie_GetDataByCod[Hie_CRS] (Crs_EditingCrs);
if (Crs_CheckIfICanEdit (Crs_EditingCrs) == Usr_I_CAN_NOT)
if (Crs_CheckIfICanEdit (Crs_EditingCrs) == Usr_CAN_NOT)
Err_NoPermissionExit ();
if (NewYear <= Deg_MAX_YEARS_PER_DEGREE) // If year is valid
@ -1454,7 +1454,7 @@ void Crs_RenameCourse (struct Hie_Node *Crs,Nam_ShrtOrFullName_t ShrtOrFull)
/***** Get from the database the data of the degree *****/
Hie_GetDataByCod[Hie_CRS] (Crs);
if (Crs_CheckIfICanEdit (Crs) == Usr_I_CAN_NOT)
if (Crs_CheckIfICanEdit (Crs) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Check if new name is empty *****/

View File

@ -84,7 +84,7 @@ static struct Hie_Node *Deg_EditingDeg = NULL; // Static variable to keep the de
/*****************************************************************************/
static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes);
static Usr_ICan_t Deg_CheckIfICanEditADegree (struct Hie_Node *Deg);
static Usr_Can_t Deg_CheckIfICanEditADegree (struct Hie_Node *Deg);
static void Deg_PutFormToCreateDegree (const struct DegTyp_DegTypes *DegTypes);
static void Deg_PutHeadDegreesForSeeing (void);
static void Deg_PutHeadDegreesForEdition (void);
@ -325,7 +325,7 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes)
struct DegTyp_DegreeType *DegTyp;
char WWW[Cns_MAX_BYTES_WWW + 1];
struct Usr_Data UsrDat;
Usr_ICan_t ICanEdit;
Usr_Can_t ICanEdit;
unsigned NumCrss;
unsigned NumUsrsInCrssOfDeg;
const char *Names[Nam_NUM_SHRT_FULL_NAMES];
@ -359,7 +359,7 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes)
/* Put icon to remove degree */
HTM_TD_Begin ("class=\"BT\"");
if (ICanEdit == Usr_I_CAN_NOT ||
if (ICanEdit == Usr_CAN_NOT ||
NumCrss || // Degree has courses ==> deletion forbidden
NumUsrsInCrssOfDeg)
Ico_PutIconRemovalNotAllowed ();
@ -384,14 +384,14 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes)
Nam_ExistingShortAndFullNames (ActionRename,
ParCod_OthHie,Deg->HieCod,
Names,
ICanEdit == Usr_I_CAN ? Frm_PUT_FORM :
ICanEdit == Usr_CAN ? Frm_PUT_FORM :
Frm_DONT_PUT_FORM);
/* Degree type */
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
switch (ICanEdit)
{
case Usr_I_CAN:
case Usr_CAN:
Frm_BeginForm (ActChgDegTyp);
ParCod_PutPar (ParCod_OthHie,Deg->HieCod);
HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,NULL,
@ -412,7 +412,7 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes)
HTM_SELECT_End ();
Frm_EndForm ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
for (NumDegTyp = 0;
NumDegTyp < DegTypes->Num;
@ -430,7 +430,7 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes)
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
switch (ICanEdit)
{
case Usr_I_CAN:
case Usr_CAN:
Frm_BeginForm (ActChgDegWWW);
ParCod_PutPar (ParCod_OthHie,Deg->HieCod);
HTM_INPUT_URL ("WWW",Deg->WWW,HTM_SUBMIT_ON_CHANGE,
@ -439,7 +439,7 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes)
The_GetSuffix ());
Frm_EndForm ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Str_Copy (WWW,Deg->WWW,sizeof (WWW) - 1);
HTM_DIV_Begin ("class=\"EXTERNAL_WWW_SHRT\"");
@ -472,8 +472,8 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes)
HTM_TD_End ();
/* Degree status */
Hie_WriteStatusCellEditable (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM ? Usr_I_CAN :
Usr_I_CAN_NOT,
Hie_WriteStatusCellEditable (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM ? Usr_CAN :
Usr_CAN_NOT,
Deg->Status,ActChgDegSta,Deg->HieCod,
Txt_DEGREE_STATUS);
@ -491,12 +491,12 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes)
/************** Check if I can edit, remove, etc. a degree *******************/
/*****************************************************************************/
static Usr_ICan_t Deg_CheckIfICanEditADegree (struct Hie_Node *Deg)
static Usr_Can_t Deg_CheckIfICanEditADegree (struct Hie_Node *Deg)
{
return (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM || // I am a center administrator or higher
((Deg->Status & Hie_STATUS_BIT_PENDING) != 0 && // Degree is not yet activated
Gbl.Usrs.Me.UsrDat.UsrCod == Deg->RequesterUsrCod)) ? Usr_I_CAN : // I am the requester
Usr_I_CAN_NOT;
Gbl.Usrs.Me.UsrDat.UsrCod == Deg->RequesterUsrCod)) ? Usr_CAN : // I am the requester
Usr_CAN_NOT;
}
/*****************************************************************************/
@ -728,7 +728,7 @@ static void Deg_ListDegrees (void)
static void Deg_PutIconsListingDegrees (__attribute__((unused)) void *Args)
{
/***** Put icon to edit degrees *****/
if (Hie_CheckIfICanEdit () == Usr_I_CAN)
if (Hie_CheckIfICanEdit () == Usr_CAN)
Deg_PutIconToEditDegrees ();
/***** Put icon to view degree types *****/
@ -890,7 +890,7 @@ static void Deg_EditDegreesInternal (void)
Ale_ShowAlert (Ale_WARNING,Txt_No_types_of_degree);
/***** Form to create the first degree type *****/
if (DegTyp_CheckIfICanCreateDegreeTypes () == Usr_I_CAN)
if (DegTyp_CheckIfICanCreateDegreeTypes () == Usr_CAN)
DegTyp_EditDegreeTypes (&DegTypes);
}

View File

@ -373,7 +373,7 @@ static void DegTyp_PutIconsListingDegTypes (__attribute__((unused)) void *Args)
static void DegTyp_PutIconToEditDegTypes (__attribute__((unused)) void *Args)
{
if (Gbl.Hierarchy.Level == Hie_CTR && // Only editable if center tab is visible
DegTyp_CheckIfICanCreateDegreeTypes () == Usr_I_CAN)
DegTyp_CheckIfICanCreateDegreeTypes () == Usr_CAN)
Ico_PutContextualIconToEdit (ActEdiDegTyp,NULL,NULL,NULL);
}
@ -442,10 +442,10 @@ static void DegTyp_ListDegreeTypesForEdition (const struct DegTyp_DegTypes *DegT
/******************** Check if I can create degree types *********************/
/*****************************************************************************/
Usr_ICan_t DegTyp_CheckIfICanCreateDegreeTypes (void)
Usr_Can_t DegTyp_CheckIfICanCreateDegreeTypes (void)
{
return (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
return (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/

View File

@ -73,7 +73,7 @@ void DegTyp_EditDegreeTypes (const struct DegTyp_DegTypes *DegTypes);
void DegTyp_PutIconToViewDegreeTypes (void);
Usr_ICan_t DegTyp_CheckIfICanCreateDegreeTypes (void);
Usr_Can_t DegTyp_CheckIfICanCreateDegreeTypes (void);
void DegTyp_GetListDegreeTypes (struct DegTyp_DegTypes *DegTypes,
Hie_Level_t Level,DegTyp_Order_t Order);

View File

@ -53,11 +53,11 @@
/****************************** Private constants ****************************/
/*****************************************************************************/
static Usr_ICan_t Dpt_ICanEditDpts[Rol_NUM_ROLES] =
static Usr_Can_t Dpt_ICanEditDpts[Rol_NUM_ROLES] =
{
/* Users who can edit */
[Rol_INS_ADM] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_INS_ADM] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
/*****************************************************************************/
@ -243,7 +243,7 @@ static Dpt_Order_t Dpt_GetParDptOrder (void)
static void Dpt_PutIconToEditDpts (__attribute__((unused)) void *Args)
{
if (Dpt_ICanEditDpts[Gbl.Usrs.Me.Role.Logged] == Usr_I_CAN)
if (Dpt_ICanEditDpts[Gbl.Usrs.Me.Role.Logged] == Usr_CAN)
Ico_PutContextualIconToEdit (ActEdiDpt,NULL,NULL,NULL);
}

View File

@ -311,7 +311,7 @@ static void Dup_ListSimilarUsrs (void)
Usr_NUM_MAIN_FIELDS_DATA_USR-2,
The_GetColorRows ());
/* Button to remove this user */
if (Acc_CheckIfICanEliminateAccount (UsrDat.UsrCod) == Usr_I_CAN)
if (Acc_CheckIfICanEliminateAccount (UsrDat.UsrCod) == Usr_CAN)
Dup_PutButtonToEliminateUsrAccount (&UsrDat);
/* Button to remove from list of possible duplicate users */
if (Dup_DB_CheckIfUsrIsDup (UsrDat.UsrCod))

View File

@ -145,7 +145,7 @@ static void Enr_AskIfRegRemUsr (struct Usr_ListUsrCods *ListUsrCods,Rol_Role_t R
static void Enr_ShowFormToEditOtherUsr (void);
static Usr_ICan_t Enr_CheckIfICanRemUsrFromCrs (void);
static Usr_Can_t Enr_CheckIfICanRemUsrFromCrs (void);
static void Enr_AskIfRemoveUsrFromCrs (struct Usr_Data *UsrDat);
static void Enr_EffectivelyRemUsrFromCrs (struct Usr_Data *UsrDat,
@ -1428,7 +1428,7 @@ bool Enr_PutActionsRegRemOneUsr (Usr_MeOrOther_t MeOrOther)
}
/***** Eliminate user completely from platform *****/
if (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod) == Usr_I_CAN)
if (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod) == Usr_CAN)
{
Enr_PutActionRemUsrAcc (&OptionChecked,MeOrOther);
OptionsShown = true;
@ -2373,8 +2373,8 @@ void Enr_PutLinkToAdminOneUsr (Act_Action_t NextAction)
extern const char *Txt_Administer_one_user;
static const char **TitleText[] =
{
[Usr_I_CAN_NOT] = &Txt_Administer_me,
[Usr_I_CAN ] = &Txt_Administer_one_user,
[Usr_CAN_NOT] = &Txt_Administer_me,
[Usr_CAN ] = &Txt_Administer_one_user,
};
Lay_PutContextualLinkIconText (NextAction,NULL,
@ -2424,7 +2424,7 @@ void Enr_ReqRegRemOth (void)
void Enr_ReqRegRemStd (void)
{
/***** Contextual menu *****/
if (Adm_CheckIfICanAdminOtherUsrs () == Usr_I_CAN)
if (Adm_CheckIfICanAdminOtherUsrs () == Usr_CAN)
{
Mnu_ContextMenuBegin ();
Enr_PutLinkToAdminSeveralUsrs (Rol_STD); // Admin several students
@ -2445,11 +2445,11 @@ static void Enr_ReqRegRemUsr (Rol_Role_t Role)
{
switch (Adm_CheckIfICanAdminOtherUsrs ())
{
case Usr_I_CAN:
case Usr_CAN:
/***** Form to request the user's ID of another user *****/
Enr_ReqAnotherUsrIDToRegisterRemove (Role);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
/***** Form to request if register/remove me *****/
Enr_AskIfRegRemMe (Role);
@ -2680,10 +2680,10 @@ void Enr_ReqRemUsrFromCrs (void)
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Enr_CheckIfICanRemUsrFromCrs ())
{
case Usr_I_CAN:
case Usr_CAN:
Enr_AskIfRemoveUsrFromCrs (&Gbl.Usrs.Other.UsrDat);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -2704,13 +2704,13 @@ void Enr_RemUsrFromCrs1 (void)
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Enr_CheckIfICanRemUsrFromCrs ())
{
case Usr_I_CAN:
case Usr_CAN:
Enr_EffectivelyRemUsrFromCrs (&Gbl.Usrs.Other.UsrDat,
&Gbl.Hierarchy.Node[Hie_CRS],
Enr_DO_NOT_REMOVE_USR_PRODUCTION,
Cns_VERBOSE);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -2733,24 +2733,24 @@ void Enr_RemUsrFromCrs2 (void)
/*********** Check if I can remove another user in current course ************/
/*****************************************************************************/
static Usr_ICan_t Enr_CheckIfICanRemUsrFromCrs (void)
static Usr_Can_t Enr_CheckIfICanRemUsrFromCrs (void)
{
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_STD:
case Rol_NET:
// A student or non-editing teacher can remove herself/himself
return (Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod) == Usr_ME) ? Usr_I_CAN :
Usr_I_CAN_NOT;
return (Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod) == Usr_ME) ? Usr_CAN :
Usr_CAN_NOT;
case Rol_TCH:
case Rol_DEG_ADM:
case Rol_CTR_ADM:
case Rol_INS_ADM:
case Rol_SYS_ADM:
// A teacher or administrator can remove anyone
return Usr_I_CAN;
return Usr_CAN;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}
@ -2916,7 +2916,7 @@ void Enr_ModifyUsr1 (void)
if (MeOrOther == Usr_ME || Gbl.Usrs.Me.Role.Logged >= Rol_TCH)
{
/***** Get user's name from record form *****/
if (Usr_ICanChangeOtherUsrData (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
if (Usr_ICanChangeOtherUsrData (&Gbl.Usrs.Other.UsrDat) == Usr_CAN)
Rec_GetUsrNameFromRecordForm (&Gbl.Usrs.Other.UsrDat);
/***** Update user's data in database *****/
@ -3021,7 +3021,7 @@ void Enr_ModifyUsr1 (void)
Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
break;
case Enr_ELIMINATE_ONE_USR_FROM_PLATFORM:
if (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod) == Usr_I_CAN_NOT)
if (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod) == Usr_CAN_NOT)
Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
break;
default:
@ -3200,7 +3200,7 @@ static void Enr_EffectivelyRemUsrFromCrs (struct Usr_Data *UsrDat,
{
case Usr_ME:
/* Now I don't belong to current course */
Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] =
Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] = Usr_DONT_BELONG;
Gbl.Usrs.Me.UsrDat.Accepted = false;
/* Fill the list with the courses I belong to */
@ -3339,7 +3339,7 @@ bool Enr_CheckIfUsrSharesAnyOfMyCrs (struct Usr_Data *UsrDat)
return Gbl.Cache.UsrSharesAnyOfMyCrs.SharesAnyOfMyCrs;
/***** 5. Fast check: Is course selected and we both belong to it? *****/
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS])
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] == Usr_BELONG)
if (Enr_CheckIfUsrBelongsToCurrentCrs (UsrDat)) // Course selected and we both belong to it
{
Gbl.Cache.UsrSharesAnyOfMyCrs.UsrCod = UsrDat->UsrCod;

View File

@ -315,12 +315,12 @@ void Exa_ListAllExams (struct Exa_Exams *Exams)
/************************ Check if I can edit exams **************************/
/*****************************************************************************/
Usr_ICan_t Exa_CheckIfICanEditExams (void)
Usr_Can_t Exa_CheckIfICanEditExams (void)
{
static Usr_ICan_t ICanEditExams[Rol_NUM_ROLES] =
static Usr_Can_t ICanEditExams[Rol_NUM_ROLES] =
{
[Rol_TCH ] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return ICanEditExams[Gbl.Usrs.Me.Role.Logged];
@ -343,7 +343,7 @@ static void Exa_PutIconsListExams (void *Exams)
if (Exams)
{
/***** Put icon to create a new exam *****/
if (Exa_CheckIfICanEditExams () == Usr_I_CAN)
if (Exa_CheckIfICanEditExams () == Usr_CAN)
Exa_PutIconToCreateNewExam ((struct Exa_Exams *) Exams);
/***** Put icon to view sessions results *****/
@ -352,7 +352,7 @@ static void Exa_PutIconsListExams (void *Exams)
NULL,NULL);
/***** Link to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkExa,NULL,Exa_PutPars,Exams);
/***** Put icon to show a figure *****/
@ -671,7 +671,7 @@ static void Exa_PutIconsToRemEditOneExam (struct Exa_Exams *Exams,
[Rol_SYS_ADM] = ActSeeUsrExaResExa,
};
if (Exa_CheckIfICanEditExams () == Usr_I_CAN)
if (Exa_CheckIfICanEditExams () == Usr_CAN)
{
/***** Icon to remove exam *****/
Ico_PutContextualIconToRemove (ActReqRemExa,NULL,
@ -692,7 +692,7 @@ static void Exa_PutIconsToRemEditOneExam (struct Exa_Exams *Exams,
Exa_PutPars,Exams);
/***** Link to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkExa,NULL,Exa_PutPars,Exams);
}
@ -971,7 +971,7 @@ void Exa_AskRemExam (void)
struct Exa_Exams Exams;
/***** Check if I can edit exams *****/
if (Exa_CheckIfICanEditExams () == Usr_I_CAN_NOT)
if (Exa_CheckIfICanEditExams () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Reset exams context *****/
@ -1004,7 +1004,7 @@ void Exa_RemoveExam (void)
struct Exa_Exams Exams;
/***** Check if I can edit exams *****/
if (Exa_CheckIfICanEditExams () == Usr_I_CAN_NOT)
if (Exa_CheckIfICanEditExams () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Reset exams context *****/
@ -1184,7 +1184,7 @@ static void Exa_HideUnhideExam (HidVis_HiddenOrVisible_t HiddenOrVisible)
struct Exa_Exams Exams;
/***** Check if I can edit exams *****/
if (Exa_CheckIfICanEditExams () == Usr_I_CAN_NOT)
if (Exa_CheckIfICanEditExams () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Reset exams context *****/
@ -1214,7 +1214,7 @@ void Exa_ReqCreatOrEditExam (void)
Exa_ExistingNewExam_t ExistingNewExam;
/***** Check if I can edit exams *****/
if (Exa_CheckIfICanEditExams () == Usr_I_CAN_NOT)
if (Exa_CheckIfICanEditExams () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Reset exams context *****/
@ -1425,7 +1425,7 @@ void Exa_ReceiveExam (void)
char Txt[Cns_MAX_BYTES_TEXT + 1];
/***** Check if I can edit exams *****/
if (Exa_CheckIfICanEditExams () == Usr_I_CAN_NOT)
if (Exa_CheckIfICanEditExams () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Reset exams context *****/

View File

@ -40,7 +40,7 @@ void Exa_ResetExam (struct Exa_Exam *Exam);
void Exa_SeeAllExams (void);
void Exa_ListAllExams (struct Exa_Exams *Exams);
Usr_ICan_t Exa_CheckIfICanEditExams (void);
Usr_Can_t Exa_CheckIfICanEditExams (void);
void Exa_SeeOneExam (void);
void Exa_ShowOnlyOneExam (struct Exa_Exams *Exams,Frm_PutForm_t PutFormSession);

View File

@ -1668,7 +1668,7 @@ unsigned Exa_DB_GetGrpsAssociatedToSes (MYSQL_RES **mysql_res,long SesCod)
/*** Check if I belong to any of the groups associated to the exam session ***/
/*****************************************************************************/
Usr_ICan_t Exa_DB_CheckIfICanListThisSessionBasedOnGrps (long SesCod)
Usr_Can_t Exa_DB_CheckIfICanListThisSessionBasedOnGrps (long SesCod)
{
return
DB_QueryEXISTS ("can not check if I can play an exam session",
@ -1686,8 +1686,8 @@ Usr_ICan_t Exa_DB_CheckIfICanListThisSessionBasedOnGrps (long SesCod)
" WHERE grp_users.UsrCod=%ld"
" AND grp_users.GrpCod=exa_groups.GrpCod)))",
SesCod,
Gbl.Usrs.Me.UsrDat.UsrCod) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Gbl.Usrs.Me.UsrDat.UsrCod) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/
@ -2151,10 +2151,10 @@ bool Exa_DB_CheckIfUserAgentIsTheSameAsTheLast (long PrnCod,const char *UserAgen
void Exa_DB_LogAccess (long LogCod,long PrnCod,ExaLog_Action_t Action)
{
static char YN[Usr_NUM_I_CAN] =
static char YN[Usr_NUM_CAN] =
{
[Usr_I_CAN_NOT] = 'N',
[Usr_I_CAN ] = 'Y',
[Usr_CAN_NOT] = 'N',
[Usr_CAN ] = 'Y',
};
/* Log access in exam log.

View File

@ -128,7 +128,7 @@ void Exa_DB_RemoveUsrFromSessionTablesInCrs (long UsrCod,long CrsCod);
//--------------------------------- Groups ------------------------------------
void Exa_DB_CreateGrpAssociatedToSes (long SesCod,long GrpCod);
unsigned Exa_DB_GetGrpsAssociatedToSes (MYSQL_RES **mysql_res,long SesCod);
Usr_ICan_t Exa_DB_CheckIfICanListThisSessionBasedOnGrps (long SesCod);
Usr_Can_t Exa_DB_CheckIfICanListThisSessionBasedOnGrps (long SesCod);
void Exa_DB_RemoveAllGrpsFromExa (long ExaCod);
void Exa_DB_RemoveAllGrpsFromCrs (long CrsCod);
void Exa_DB_RemoveAllGrpsFromSes (long SesCod);

View File

@ -54,13 +54,13 @@ static struct
long PrnCod; // Exam print code
int QstInd; // Exam print question index
ExaLog_Action_t Action; // Action performed by user
Usr_ICan_t ICanAnswer; // Exam print is open and accesible to answer by the user
Usr_Can_t ICanAnswer; // Exam print is open and accesible to answer by the user
} ExaLog_Log =
{
.PrnCod = -1L, // -1 means no print code set
.QstInd = -1, // -1 means no question index set
.Action = ExaLog_UNKNOWN_ACTION,
.ICanAnswer = false,
.ICanAnswer = Usr_CAN_NOT,
};
/*****************************************************************************/
@ -116,12 +116,12 @@ int ExaLog_GetQstInd (void)
/************* Set and get if exam print is open and accessible **************/
/*****************************************************************************/
void ExaLog_SetIfCanAnswer (Usr_ICan_t ICanAnswer)
void ExaLog_SetIfCanAnswer (Usr_Can_t ICanAnswer)
{
ExaLog_Log.ICanAnswer = ICanAnswer;
}
Usr_ICan_t ExaLog_GetIfCanAnswer (void)
Usr_Can_t ExaLog_GetIfCanAnswer (void)
{
return ExaLog_Log.ICanAnswer;
}

View File

@ -54,8 +54,8 @@ void ExaLog_SetAction (ExaLog_Action_t Action);
ExaLog_Action_t ExaLog_GetAction (void);
void ExaLog_SetQstInd (unsigned QstInd);
int ExaLog_GetQstInd (void);
void ExaLog_SetIfCanAnswer (Usr_ICan_t CanBeAnswered);
Usr_ICan_t ExaLog_GetIfCanAnswer (void);
void ExaLog_SetIfCanAnswer (Usr_Can_t CanBeAnswered);
Usr_Can_t ExaLog_GetIfCanAnswer (void);
void ExaLog_LogAccess (long LogCod);

View File

@ -180,7 +180,7 @@ void ExaPrn_ShowExamPrint (void)
/***** Check if I can access to this session *****/
switch (ExaSes_CheckIfICanAnswerThisSession (&Exams.Exam,&Session))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Set basic data of exam print *****/
Print.SesCod = Session.SesCod;
Print.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
@ -225,7 +225,7 @@ void ExaPrn_ShowExamPrint (void)
/***** Show test to be answered *****/
ExaPrn_ShowExamPrintToFillIt (&Exams,&Print);
break;
case Usr_I_CAN_NOT: // Session not open or accessible
case Usr_CAN_NOT: // Session not open or accessible
default:
/***** Show warning *****/
Ale_ShowAlert (Ale_INFO,Txt_You_dont_have_access_to_the_exam);
@ -1002,7 +1002,7 @@ void ExaPrn_ReceivePrintAnswer (void)
/***** Check if session if visible and open *****/
switch (ExaSes_CheckIfICanAnswerThisSession (&Exams.Exam,&Session))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Set log open to true ****/
ExaLog_SetIfCanAnswer (true);
@ -1024,7 +1024,7 @@ void ExaPrn_ReceivePrintAnswer (void)
/***** Show table with questions to answer *****/
ExaPrn_ShowTableWithQstsToFill (&Exams,&Print);
break;
case Usr_I_CAN_NOT: // Not accessible to answer
case Usr_CAN_NOT: // Not accessible to answer
default:
/***** Set log open to false ****/
ExaLog_SetIfCanAnswer (false);

View File

@ -69,8 +69,8 @@ extern struct Globals Gbl;
struct ExaRes_ICanView
{
Usr_ICan_t Result;
Usr_ICan_t Score;
Usr_Can_t Result;
Usr_Can_t Score;
};
/*****************************************************************************/
@ -358,7 +358,7 @@ static void ExaRes_ListAllResultsInSelectedExams (struct Exa_Exams *Exams)
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CRS))
if (Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat) == Usr_CAN)
{
/***** Show sessions results *****/
Gbl.Usrs.Other.UsrDat.Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (&Gbl.Usrs.Other.UsrDat);
@ -424,7 +424,7 @@ static void ExaRes_ListAllResultsInExa (struct Exa_Exams *Exams)
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CRS))
if (Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat) == Usr_CAN)
{
/***** Show sessions results *****/
Gbl.Usrs.Other.UsrDat.Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (&Gbl.Usrs.Other.UsrDat);
@ -495,7 +495,7 @@ static void ExaRes_ListAllResultsInSes (struct Exa_Exams *Exams,long SesCod)
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CRS))
if (Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat) == Usr_CAN)
{
/***** Show sessions results *****/
Gbl.Usrs.Other.UsrDat.Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (&Gbl.Usrs.Other.UsrDat);
@ -830,7 +830,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
HTM_TD_End ();
/* Get and accumulate questions and score */
if (ICanView.Score == Usr_I_CAN)
if (ICanView.Score == Usr_CAN)
{
/* Get questions and user's answers of exam print from database */
ExaPrn_GetPrintQuestionsFromDB (&Print);
@ -852,10 +852,10 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
HTM_Unsigned (Print.NumQsts.All);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -867,13 +867,13 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
if (Print.NumQsts.Valid.Total)
HTM_Unsigned (Print.NumQsts.Valid.Total);
else
HTM_Light0 ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -885,7 +885,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
NumQstsInvalid = Print.NumQsts.All -
Print.NumQsts.Valid.Total;
if (NumQstsInvalid)
@ -893,7 +893,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
else
HTM_Light0 ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -905,13 +905,13 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
if (Print.NumQsts.Valid.Correct)
HTM_Unsigned (Print.NumQsts.Valid.Correct);
else
HTM_Light0 ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -923,13 +923,13 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
if (Print.NumQsts.Valid.Wrong.Negative)
HTM_Unsigned (Print.NumQsts.Valid.Wrong.Negative);
else
HTM_Light0 ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -940,13 +940,13 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
if (Print.NumQsts.Valid.Wrong.Zero)
HTM_Unsigned (Print.NumQsts.Valid.Wrong.Zero);
else
HTM_Light0 ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -957,13 +957,13 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
if (Print.NumQsts.Valid.Wrong.Positive)
HTM_Unsigned (Print.NumQsts.Valid.Wrong.Positive);
else
HTM_Light0 ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -975,13 +975,13 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
if (Print.NumQsts.Valid.Blank)
HTM_Unsigned (Print.NumQsts.Valid.Blank);
else
HTM_Light0 ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -993,12 +993,12 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
HTM_Double2Decimals (Print.Score.Valid);
HTM_Txt ("/");
HTM_Unsigned (Print.NumQsts.Valid.Total);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -1010,12 +1010,12 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
HTM_Double2Decimals (Print.NumQsts.Valid.Total ? Print.Score.Valid /
(double) Print.NumQsts.Valid.Total :
0.0);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -1027,12 +1027,12 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
Grade = TstPrn_ComputeGrade (Print.NumQsts.Valid.Total,Print.Score.Valid,Exam.MaxGrade);
TstPrn_ShowGrade (Grade,Exam.MaxGrade);
TotalGrade += Grade;
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -1043,7 +1043,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
HTM_TD_Begin ("class=\"RT LINE_LEFT %s\"",The_GetColorRows ());
switch (ICanView.Result)
{
case Usr_I_CAN:
case Usr_CAN:
Exams->Exam.ExaCod = Session.ExaCod;
Exams->SesCod = Session.SesCod;
switch (MeOrOther)
@ -1062,7 +1062,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
}
Frm_EndForm ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -1258,8 +1258,8 @@ void ExaRes_ShowExaResultAfterFinish (void)
struct ExaPrn_Print Print;
struct ExaRes_ICanView ICanView =
{
.Result = Usr_I_CAN, // I have just finish answering, so show result...
.Score = Usr_I_CAN_NOT, // ...but not score
.Result = Usr_CAN, // I have just finish answering, so show result...
.Score = Usr_CAN_NOT, // ...but not score
};
unsigned Visibility = 1 << TstVis_VISIBLE_QST_ANS_TXT; // Show only questions and answers text
@ -1385,7 +1385,7 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CRS))
Err_WrongUserExit ();
if (Usr_CheckIfICanViewTstExaMchResult (UsrDat) == Usr_I_CAN_NOT)
if (Usr_CheckIfICanViewTstExaMchResult (UsrDat) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Begin table *****/
@ -1410,7 +1410,7 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
ExaRes_ShowExamResultGrade (Exam,Print,ICanView);
/* Answers and solutions */
if (ICanView->Result == Usr_I_CAN)
if (ICanView->Result == Usr_CAN)
ExaRes_ShowExamAnswers (UsrDat,Print,Visibility);
/***** End table *****/
@ -1437,21 +1437,21 @@ static void ExaRes_CheckIfICanViewResult (const struct Exa_Exam *Exam,
ICanView->Result = (Usr_ItsMe (UsrCod) == Usr_ME && // The result is mine
Exam->HiddenOrVisible == HidVis_VISIBLE && // The exam is visible
Session->HiddenOrVisible == HidVis_VISIBLE && // The session is visible
Session->ShowUsrResults) ? Usr_I_CAN : // The results of the session are visible to users
Usr_I_CAN_NOT;
Session->ShowUsrResults) ? Usr_CAN : // The results of the session are visible to users
Usr_CAN_NOT;
// Whether I belong or not to groups of session is not checked here...
// ...because I should be able to see old exams made in old groups to which I belonged
switch (ICanView->Result)
{
case Usr_I_CAN:
case Usr_CAN:
// Depends on 5 visibility icons associated to exam
ICanView->Score = TstVis_IsVisibleTotalScore (Exam->Visibility) ? Usr_I_CAN :
Usr_I_CAN_NOT;
ICanView->Score = TstVis_IsVisibleTotalScore (Exam->Visibility) ? Usr_CAN :
Usr_CAN_NOT;
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
ICanView->Score = Usr_I_CAN_NOT;
ICanView->Score = Usr_CAN_NOT;
break;
}
break;
@ -1462,11 +1462,11 @@ static void ExaRes_CheckIfICanViewResult (const struct Exa_Exam *Exam,
case Rol_INS_ADM:
case Rol_SYS_ADM:
ICanView->Result =
ICanView->Score = Usr_I_CAN;
ICanView->Score = Usr_CAN;
break;
default:
ICanView->Result =
ICanView->Score = Usr_I_CAN_NOT;
ICanView->Score = Usr_CAN_NOT;
break;
}
}
@ -1649,7 +1649,7 @@ static void ExaRes_ShowExamResultNumQsts (struct ExaPrn_Print *Print,
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
switch (ICanView->Result)
{
case Usr_I_CAN:
case Usr_CAN:
HTM_TxtF ("%u",Print->NumQsts.All);
if (Print->NumQsts.All != Print->NumQsts.Valid.Total)
{
@ -1672,7 +1672,7 @@ static void ExaRes_ShowExamResultNumQsts (struct ExaPrn_Print *Print,
HTM_Txt (")");
}
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -1707,7 +1707,7 @@ static void ExaRes_ShowExamResultNumAnss (struct ExaPrn_Print *Print,
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
switch (ICanView->Score)
{
case Usr_I_CAN:
case Usr_CAN:
HTM_TxtF ("%s(<em>p<sub>i</sub></em>=1):&nbsp;%u; "
"%s(-1&le;<em>p<sub>i</sub></em>&lt;0):&nbsp;%u; "
"%s(<em>p<sub>i</sub></em>=0):&nbsp;%u; "
@ -1719,7 +1719,7 @@ static void ExaRes_ShowExamResultNumAnss (struct ExaPrn_Print *Print,
Txt_ANSWERS_wrong ,Print->NumQsts.Valid.Wrong.Positive,
Txt_ANSWERS_blank ,Print->NumQsts.Valid.Blank);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -1752,7 +1752,7 @@ static void ExaRes_ShowExamResultScore (struct ExaPrn_Print *Print,
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
switch (ICanView->Score)
{
case Usr_I_CAN:
case Usr_CAN:
/* Score counting all questions */
if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
HTM_STRONG_Begin ();
@ -1774,7 +1774,7 @@ static void ExaRes_ShowExamResultScore (struct ExaPrn_Print *Print,
HTM_STRONG_End ();
}
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -1808,7 +1808,7 @@ static void ExaRes_ShowExamResultGrade (const struct Exa_Exam *Exam,
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
switch (ICanView->Score)
{
case Usr_I_CAN:
case Usr_CAN:
/* Grade counting all questions */
if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
HTM_STRONG_Begin ();
@ -1828,7 +1828,7 @@ static void ExaRes_ShowExamResultGrade (const struct Exa_Exam *Exam,
HTM_STRONG_End ();
}
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -1881,7 +1881,7 @@ static void ExaRes_WriteQstAndAnsExam (struct Usr_Data *UsrDat,
{
extern const char *Txt_Score;
extern const char *Txt_Invalid_question;
Usr_ICan_t ICanView[TstVis_NUM_ITEMS_VISIBILITY];
Usr_Can_t ICanView[TstVis_NUM_ITEMS_VISIBILITY];
static const char *ClassNumQst[Qst_NUM_VALIDITIES] =
{
[Qst_INVALID_QUESTION] = "BIG_INDEX_RED",
@ -1907,14 +1907,14 @@ static void ExaRes_WriteQstAndAnsExam (struct Usr_Data *UsrDat,
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_STD:
ICanView[TstVis_VISIBLE_QST_ANS_TXT ] = TstVis_IsVisibleQstAndAnsTxt (Visibility) ? Usr_I_CAN:
Usr_I_CAN_NOT;
ICanView[TstVis_VISIBLE_FEEDBACK_TXT ] = TstVis_IsVisibleFeedbackTxt (Visibility) ? Usr_I_CAN:
Usr_I_CAN_NOT;
ICanView[TstVis_VISIBLE_CORRECT_ANSWER] = TstVis_IsVisibleCorrectAns (Visibility) ? Usr_I_CAN:
Usr_I_CAN_NOT;
ICanView[TstVis_VISIBLE_EACH_QST_SCORE] = TstVis_IsVisibleEachQstScore (Visibility) ? Usr_I_CAN:
Usr_I_CAN_NOT;
ICanView[TstVis_VISIBLE_QST_ANS_TXT ] = TstVis_IsVisibleQstAndAnsTxt (Visibility) ? Usr_CAN:
Usr_CAN_NOT;
ICanView[TstVis_VISIBLE_FEEDBACK_TXT ] = TstVis_IsVisibleFeedbackTxt (Visibility) ? Usr_CAN:
Usr_CAN_NOT;
ICanView[TstVis_VISIBLE_CORRECT_ANSWER] = TstVis_IsVisibleCorrectAns (Visibility) ? Usr_CAN:
Usr_CAN_NOT;
ICanView[TstVis_VISIBLE_EACH_QST_SCORE] = TstVis_IsVisibleEachQstScore (Visibility) ? Usr_CAN:
Usr_CAN_NOT;
break;
case Rol_NET:
case Rol_TCH:
@ -1925,13 +1925,13 @@ static void ExaRes_WriteQstAndAnsExam (struct Usr_Data *UsrDat,
ICanView[TstVis_VISIBLE_QST_ANS_TXT ] =
ICanView[TstVis_VISIBLE_FEEDBACK_TXT ] =
ICanView[TstVis_VISIBLE_CORRECT_ANSWER] =
ICanView[TstVis_VISIBLE_EACH_QST_SCORE] = Usr_I_CAN;
ICanView[TstVis_VISIBLE_EACH_QST_SCORE] = Usr_CAN;
break;
default:
ICanView[TstVis_VISIBLE_QST_ANS_TXT ] =
ICanView[TstVis_VISIBLE_FEEDBACK_TXT ] =
ICanView[TstVis_VISIBLE_CORRECT_ANSWER] =
ICanView[TstVis_VISIBLE_EACH_QST_SCORE] = Usr_I_CAN_NOT;
ICanView[TstVis_VISIBLE_EACH_QST_SCORE] = Usr_CAN_NOT;
break;
}
@ -1950,10 +1950,10 @@ static void ExaRes_WriteQstAndAnsExam (struct Usr_Data *UsrDat,
/* Stem */
Qst_WriteQstStem (Question->Stem,ClassTxt[Question->Validity],
ICanView[TstVis_VISIBLE_QST_ANS_TXT] == Usr_I_CAN);
ICanView[TstVis_VISIBLE_QST_ANS_TXT] == Usr_CAN);
/* Media */
if (ICanView[TstVis_VISIBLE_QST_ANS_TXT] == Usr_I_CAN)
if (ICanView[TstVis_VISIBLE_QST_ANS_TXT] == Usr_CAN)
Med_ShowMedia (&Question->Media,
"Tst_MED_SHOW_CONT",
"Tst_MED_SHOW");
@ -1966,7 +1966,7 @@ static void ExaRes_WriteQstAndAnsExam (struct Usr_Data *UsrDat,
ClassFeedback[Question->Validity]);
/* Write score retrieved from database */
if (ICanView[TstVis_VISIBLE_EACH_QST_SCORE] == Usr_I_CAN)
if (ICanView[TstVis_VISIBLE_EACH_QST_SCORE] == Usr_CAN)
{
HTM_DIV_Begin ("class=\"LM DAT_SMALL_%s\"",
The_GetSuffix ());
@ -1985,7 +1985,7 @@ static void ExaRes_WriteQstAndAnsExam (struct Usr_Data *UsrDat,
}
/* Question feedback */
if (ICanView[TstVis_VISIBLE_FEEDBACK_TXT] == Usr_I_CAN)
if (ICanView[TstVis_VISIBLE_FEEDBACK_TXT] == Usr_CAN)
Qst_WriteQstFeedback (Question->Feedback,
ClassFeedback[Question->Validity]);

View File

@ -72,10 +72,10 @@ static void ExaSes_ListOneOrMoreSessions (struct Exa_Exams *Exams,
Frm_PutForm_t PutFormSession,
unsigned NumSessions,
MYSQL_RES *mysql_res);
static void ExaSes_ListOneOrMoreSessionsHeading (Usr_ICan_t ICanEditSessions);
static Usr_ICan_t ExaSes_CheckIfICanEditSessions (void);
static Usr_ICan_t ExaSes_CheckIfICanEditThisSession (long UsrCod);
static Usr_ICan_t ExaSes_CheckIfICanChangeVisibilityOfResults (const struct ExaSes_Session *Session);
static void ExaSes_ListOneOrMoreSessionsHeading (Usr_Can_t ICanEditSessions);
static Usr_Can_t ExaSes_CheckIfICanEditSessions (void);
static Usr_Can_t ExaSes_CheckIfICanEditThisSession (long UsrCod);
static Usr_Can_t ExaSes_CheckIfICanChangeVisibilityOfResults (const struct ExaSes_Session *Session);
static void ExaSes_ListOneOrMoreSessionsIcons (struct Exa_Exams *Exams,
const struct ExaSes_Session *Session,
const char *Anchor);
@ -152,7 +152,7 @@ void ExaSes_ListSessions (struct Exa_Exams *Exams,
/***** Select whether show only my groups or all groups *****/
if (Gbl.Crs.Grps.NumGrps &&
ExaSes_CheckIfICanEditSessions () == Usr_I_CAN)
ExaSes_CheckIfICanEditSessions () == Usr_CAN)
{
Set_BeginSettingsHead ();
Grp_ShowFormToSelWhichGrps (ActSeeOneExa,Exa_PutPars,Exams);
@ -205,7 +205,7 @@ void ExaSes_GetSessionDataByCod (struct ExaSes_Session *Session)
static void ExaSes_PutIconsInListOfSessions (void *Exams)
{
if (Exams)
if (ExaSes_CheckIfICanEditSessions () == Usr_I_CAN)
if (ExaSes_CheckIfICanEditSessions () == Usr_CAN)
/***** Put icon to create a new exam session in current exam *****/
ExaSes_PutIconToCreateNewSession ((struct Exa_Exams *) Exams);
}
@ -233,7 +233,7 @@ static void ExaSes_ListOneOrMoreSessions (struct Exa_Exams *Exams,
unsigned UniqueId;
struct ExaSes_Session Session;
char *Anchor;
Usr_ICan_t ICanEditSessions = ExaSes_CheckIfICanEditSessions ();
Usr_Can_t ICanEditSessions = ExaSes_CheckIfICanEditSessions ();
long SesCodToBeEdited = PutFormSession == Frm_PUT_FORM &&
Exams->SesCod > 0 ? Exams->SesCod :
-1L;
@ -256,7 +256,7 @@ static void ExaSes_ListOneOrMoreSessions (struct Exa_Exams *Exams,
/***** Get exam session data from row *****/
ExaSes_GetSessionDataFromRow (mysql_res,&Session);
if (ExaSes_CheckIfICanListThisSessionBasedOnGrps (Session.SesCod) == Usr_I_CAN)
if (ExaSes_CheckIfICanListThisSessionBasedOnGrps (Session.SesCod) == Usr_CAN)
{
/***** Build anchor string *****/
if (asprintf (&Anchor,"evt_%ld_%ld",Exams->Exam.ExaCod,Session.SesCod) < 0)
@ -329,7 +329,7 @@ static void ExaSes_ListOneOrMoreSessions (struct Exa_Exams *Exams,
/************* Put a column for exam session start and end times *************/
/*****************************************************************************/
static void ExaSes_ListOneOrMoreSessionsHeading (Usr_ICan_t ICanEditSessions)
static void ExaSes_ListOneOrMoreSessionsHeading (Usr_Can_t ICanEditSessions)
{
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
extern const char *Txt_Session;
@ -339,7 +339,7 @@ static void ExaSes_ListOneOrMoreSessionsHeading (Usr_ICan_t ICanEditSessions)
HTM_TR_Begin (NULL);
/***** Column for icons *****/
if (ICanEditSessions == Usr_I_CAN)
if (ICanEditSessions == Usr_CAN)
HTM_TH_Empty (1);
/***** The rest of columns *****/
@ -356,13 +356,13 @@ static void ExaSes_ListOneOrMoreSessionsHeading (Usr_ICan_t ICanEditSessions)
/********************** Check if I can edit sessions *************************/
/*****************************************************************************/
static Usr_ICan_t ExaSes_CheckIfICanEditSessions (void)
static Usr_Can_t ExaSes_CheckIfICanEditSessions (void)
{
static Usr_ICan_t ICanEditSessions[Rol_NUM_ROLES] =
static Usr_Can_t ICanEditSessions[Rol_NUM_ROLES] =
{
[Rol_NET ] = Usr_I_CAN,
[Rol_TCH ] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_NET ] = Usr_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return ICanEditSessions[Gbl.Usrs.Me.Role.Logged];
@ -372,18 +372,18 @@ static Usr_ICan_t ExaSes_CheckIfICanEditSessions (void)
/************ Check if I can edit (remove/resume) an exam session ************/
/*****************************************************************************/
static Usr_ICan_t ExaSes_CheckIfICanEditThisSession (long UsrCod)
static Usr_Can_t ExaSes_CheckIfICanEditThisSession (long UsrCod)
{
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_NET:
return (UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) ? Usr_I_CAN : // Only if I am the creator
Usr_I_CAN_NOT;
return (UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) ? Usr_CAN : // Only if I am the creator
Usr_CAN_NOT;
case Rol_TCH:
case Rol_SYS_ADM:
return Usr_I_CAN;
return Usr_CAN;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}
@ -391,13 +391,13 @@ static Usr_ICan_t ExaSes_CheckIfICanEditThisSession (long UsrCod)
/********** Check if visibility of session results can be changed ************/
/*****************************************************************************/
static Usr_ICan_t ExaSes_CheckIfICanChangeVisibilityOfResults (const struct ExaSes_Session *Session)
static Usr_Can_t ExaSes_CheckIfICanChangeVisibilityOfResults (const struct ExaSes_Session *Session)
{
if (Session->ShowUsrResults || // Results are currently visible
Session->TimeUTC[Dat_END_TIME] < Dat_GetStartExecutionTimeUTC ()) // End of time is in the past
return ExaSes_CheckIfICanEditThisSession (Session->UsrCod);
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
/*****************************************************************************/
@ -420,7 +420,7 @@ static void ExaSes_ListOneOrMoreSessionsIcons (struct Exa_Exams *Exams,
/***** Begin cell *****/
HTM_TD_Begin ("rowspan=\"2\" class=\"BT %s\"",The_GetColorRows ());
if (ExaSes_CheckIfICanEditThisSession (Session->UsrCod) == Usr_I_CAN)
if (ExaSes_CheckIfICanEditThisSession (Session->UsrCod) == Usr_CAN)
{
/***** Icon to remove the exam session *****/
Ico_PutContextualIconToRemove (ActReqRemExaSes,NULL,
@ -499,7 +499,7 @@ static void ExaSes_ListOneOrMoreSessionsTitleGrps (struct Exa_Exams *Exams,
HTM_ARTICLE_Begin (Anchor);
switch (ExaSes_CheckIfICanAnswerThisSession (&Exams->Exam,Session))
{
case Usr_I_CAN:
case Usr_CAN:
Frm_BeginForm (ActSeeExaPrn);
Exa_PutPars (Exams);
ParCod_PutPar (ParCod_Ses,Session->SesCod);
@ -512,7 +512,7 @@ static void ExaSes_ListOneOrMoreSessionsTitleGrps (struct Exa_Exams *Exams,
HTM_BUTTON_End ();
Frm_EndForm ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
HTM_SPAN_Begin ("class=\"%s_%s\"",
HidVis_TitleClass[Session->HiddenOrVisible],
@ -643,7 +643,7 @@ static void ExaSes_ListOneOrMoreSessionsResultTch (struct Exa_Exams *Exams,
Exams->SesCod = Session->SesCod;
/***** Show exam session results *****/
if (ExaSes_CheckIfICanEditThisSession (Session->UsrCod) == Usr_I_CAN)
if (ExaSes_CheckIfICanEditThisSession (Session->UsrCod) == Usr_CAN)
Lay_PutContextualLinkOnlyIcon (ActSeeUsrExaResSes,ExaRes_RESULTS_BOX_ID,
ExaSes_PutParsEdit,Exams,
"trophy.svg",Ico_BLACK);
@ -651,7 +651,7 @@ static void ExaSes_ListOneOrMoreSessionsResultTch (struct Exa_Exams *Exams,
/***** Check if visibility of session results can be changed *****/
switch (ExaSes_CheckIfICanChangeVisibilityOfResults (Session))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Put form to change visibility of session results *****/
if (Session->ShowUsrResults)
Lay_PutContextualLinkOnlyIcon (ActChgVisExaRes,NULL,
@ -662,7 +662,7 @@ static void ExaSes_ListOneOrMoreSessionsResultTch (struct Exa_Exams *Exams,
ExaSes_PutParsEdit,Exams,
"eye-slash.svg",Ico_RED);
break;
case Usr_I_CAN_NOT: // Don't put form
case Usr_CAN_NOT: // Don't put form
default:
/***** Put icon showing the current visibility of session results *****/
if (Session->ShowUsrResults)
@ -691,7 +691,7 @@ void ExaSes_ToggleVisResultsSesUsr (void)
ExaSes_GetAndCheckPars (&Exams,&Session);
/***** Check if visibility of session results can be changed *****/
if (ExaSes_CheckIfICanChangeVisibilityOfResults (&Session) == Usr_I_CAN_NOT)
if (ExaSes_CheckIfICanChangeVisibilityOfResults (&Session) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Toggle visibility of exam session results *****/
@ -809,7 +809,7 @@ void ExaSes_RemoveSession (void)
ExaSes_GetAndCheckPars (&Exams,&Session);
/***** Check if I can remove this exam session *****/
if (ExaSes_CheckIfICanEditThisSession (Session.UsrCod) == Usr_I_CAN_NOT)
if (ExaSes_CheckIfICanEditThisSession (Session.UsrCod) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Remove questions of exams prints, and exam prints, in this session *****/
@ -863,7 +863,7 @@ static void ExaSes_HideUnhideSession (HidVis_HiddenOrVisible_t HiddenOrVisible)
ExaSes_GetAndCheckPars (&Exams,&Session);
/***** Check if I can remove this exam session *****/
if (ExaSes_CheckIfICanEditThisSession (Session.UsrCod) == Usr_I_CAN_NOT)
if (ExaSes_CheckIfICanEditThisSession (Session.UsrCod) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Hide session *****/
@ -1208,7 +1208,7 @@ static void ExaSes_CreateGrpsAssociatedToExamSession (long SesCod,
/******** Check if I belong to any of the groups of an exam session **********/
/*****************************************************************************/
Usr_ICan_t ExaSes_CheckIfICanAnswerThisSession (const struct Exa_Exam *Exam,
Usr_Can_t ExaSes_CheckIfICanAnswerThisSession (const struct Exa_Exam *Exam,
const struct ExaSes_Session *Session)
{
/***** 1. Sessions in hidden exams are not accesible
@ -1216,14 +1216,14 @@ Usr_ICan_t ExaSes_CheckIfICanAnswerThisSession (const struct Exa_Exam *Exam,
if (Exam->HiddenOrVisible == HidVis_HIDDEN ||
Session->HiddenOrVisible == HidVis_HIDDEN ||
Session->ClosedOrOpen == CloOpe_CLOSED)
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
/***** Exam is visible, session is visible and open ==>
==> I can answer this session if I can list it based on groups *****/
return ExaSes_CheckIfICanListThisSessionBasedOnGrps (Session->SesCod);
}
Usr_ICan_t ExaSes_CheckIfICanListThisSessionBasedOnGrps (long SesCod)
Usr_Can_t ExaSes_CheckIfICanListThisSessionBasedOnGrps (long SesCod)
{
switch (Gbl.Usrs.Me.Role.Logged)
{
@ -1234,8 +1234,8 @@ Usr_ICan_t ExaSes_CheckIfICanListThisSessionBasedOnGrps (long SesCod)
case Rol_NET:
case Rol_TCH:
case Rol_SYS_ADM:
return Usr_I_CAN;
return Usr_CAN;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}

View File

@ -69,8 +69,8 @@ void ExaSes_GetAndCheckPars (struct Exa_Exams *Exams,
void ExaSes_ReqCreatOrEditSes (void);
void ExaSes_ReceiveSession (void);
Usr_ICan_t ExaSes_CheckIfICanAnswerThisSession (const struct Exa_Exam *Exam,
Usr_Can_t ExaSes_CheckIfICanAnswerThisSession (const struct Exa_Exam *Exam,
const struct ExaSes_Session *Session);
Usr_ICan_t ExaSes_CheckIfICanListThisSessionBasedOnGrps (long SesCod);
Usr_Can_t ExaSes_CheckIfICanListThisSessionBasedOnGrps (long SesCod);
#endif

View File

@ -91,13 +91,13 @@ static void ExaSet_ListOneOrMoreSetsForEdition (struct Exa_Exams *Exams,
unsigned MaxSetInd,
unsigned NumSets,
MYSQL_RES *mysql_res,
Usr_ICan_t ICanEditSets);
Usr_Can_t ICanEditSets);
static void ExaSet_PutTableHeadingForSets (void);
static void ExaSet_ListOneOrMoreQuestionsForEdition (struct Exa_Exams *Exams,
unsigned NumQsts,
MYSQL_RES *mysql_res,
Usr_ICan_t ICanEditQuestions);
Usr_Can_t ICanEditQuestions);
static void ExaSet_ListQuestionForEdition (struct Qst_Question *Question,
unsigned QstInd,const char *Anchor);
@ -106,7 +106,7 @@ static void ExaSet_FreeListsSelectedQuestions (struct Exa_Exams *Exams);
static void ExaSet_CopyQstFromBankToExamSet (const struct ExaSet_Set *Set,long QstCod);
static Usr_ICan_t ExaSet_CheckIfICanEditExamSets (const struct Exa_Exam *Exam);
static Usr_Can_t ExaSet_CheckIfICanEditExamSets (const struct Exa_Exam *Exam);
static void ExaSet_RemoveMediaFromStemOfQst (long QstCod,long SetCod);
static void ExaSet_RemoveMediaFromAllAnsOfQst (long QstCod,long SetCod);
@ -253,7 +253,7 @@ void ExaSet_ReceiveSet (void)
Exa_GetExamDataByCod (&Exams.Exam);
/***** Check if exam is editable *****/
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_I_CAN_NOT)
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** If I can edit exams ==> receive set from form *****/
@ -320,7 +320,7 @@ void ExaSet_ChangeSetTitle (void)
char NewTitle[ExaSet_MAX_BYTES_TITLE + 1];
/***** Check if I can edit exams *****/
if (Exa_CheckIfICanEditExams () == Usr_I_CAN_NOT)
if (Exa_CheckIfICanEditExams () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Reset exams context *****/
@ -332,7 +332,7 @@ void ExaSet_ChangeSetTitle (void)
ExaSet_GetAndCheckPars (&Exams,&Set);
/***** Check if exam is editable *****/
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_I_CAN_NOT)
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Receive new title from form *****/
@ -363,7 +363,7 @@ void ExaSet_ChangeNumQstsToExam (void)
unsigned NumQstsToPrint;
/***** Check if I can edit exams *****/
if (Exa_CheckIfICanEditExams () == Usr_I_CAN_NOT)
if (Exa_CheckIfICanEditExams () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Reset exams context *****/
@ -375,7 +375,7 @@ void ExaSet_ChangeNumQstsToExam (void)
ExaSet_GetAndCheckPars (&Exams,&Set);
/***** Check if exam is editable *****/
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_I_CAN_NOT)
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get number of questions in set to appear in exam print *****/
@ -482,7 +482,7 @@ void ExaSet_ListExamSets (struct Exa_Exams *Exams)
MYSQL_RES *mysql_res;
unsigned MaxSetInd;
unsigned NumSets;
Usr_ICan_t ICanEditSets = ExaSet_CheckIfICanEditExamSets (&Exams->Exam);
Usr_Can_t ICanEditSets = ExaSet_CheckIfICanEditExamSets (&Exams->Exam);
/***** Get maximum set index *****/
MaxSetInd = Exa_DB_GetMaxSetIndexInExam (Exams->Exam.ExaCod);
@ -518,13 +518,13 @@ static void ExaSet_ListSetQuestions (struct Exa_Exams *Exams,
extern const char *Txt_Questions;
MYSQL_RES *mysql_res;
unsigned NumQsts;
Usr_ICan_t ICanEditQuestions = ExaSet_CheckIfICanEditExamSets (&Exams->Exam);
Usr_Can_t ICanEditQuestions = ExaSet_CheckIfICanEditExamSets (&Exams->Exam);
/***** Begin box *****/
Box_BoxBegin (Txt_Questions,
ICanEditQuestions == Usr_I_CAN ? ExaSet_PutIconToAddNewQuestions :
ICanEditQuestions == Usr_CAN ? ExaSet_PutIconToAddNewQuestions :
NULL,
ICanEditQuestions == Usr_I_CAN ? Exams :
ICanEditQuestions == Usr_CAN ? Exams :
NULL,
Hlp_ASSESSMENT_Exams_questions,Box_NOT_CLOSABLE);
@ -548,7 +548,7 @@ static void ExaSet_ListOneOrMoreSetsForEdition (struct Exa_Exams *Exams,
unsigned MaxSetInd,
unsigned NumSets,
MYSQL_RES *mysql_res,
Usr_ICan_t ICanEditSets)
Usr_Can_t ICanEditSets)
{
extern const char *Txt_Movement_not_allowed;
unsigned NumSet;
@ -590,18 +590,18 @@ static void ExaSet_ListOneOrMoreSetsForEdition (struct Exa_Exams *Exams,
/* Put icon to remove the set */
switch (ICanEditSets)
{
case Usr_I_CAN:
case Usr_CAN:
Ico_PutContextualIconToRemove (ActReqRemExaSet,NULL,
ExaSet_PutParsOneSet,Exams);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconRemovalNotAllowed ();
break;
}
/* Put icon to move up the question */
if (ICanEditSets == Usr_I_CAN && Set.SetInd > 1)
if (ICanEditSets == Usr_CAN && Set.SetInd > 1)
Lay_PutContextualLinkOnlyIcon (ActUp_ExaSet,Anchor,
ExaSet_PutParsOneSet,Exams,
"arrow-up.svg",Ico_BLACK);
@ -793,7 +793,7 @@ void ExaSet_GetSetDataFromRow (MYSQL_RES *mysql_res,struct ExaSet_Set *Set)
static void ExaSet_ListOneOrMoreQuestionsForEdition (struct Exa_Exams *Exams,
unsigned NumQsts,
MYSQL_RES *mysql_res,
Usr_ICan_t ICanEditQuestions)
Usr_Can_t ICanEditQuestions)
{
extern const char *Txt_Questions;
extern const char *Txt_No_INDEX;
@ -849,11 +849,11 @@ static void ExaSet_ListOneOrMoreQuestionsForEdition (struct Exa_Exams *Exams,
/* Put icon to remove the question */
switch (ICanEditQuestions)
{
case Usr_I_CAN:
case Usr_CAN:
Ico_PutContextualIconToRemove (ActReqRemSetQst,NULL,
ExaSet_PutParsOneQst,Exams);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconRemovalNotAllowed ();
break;
@ -1264,7 +1264,7 @@ void ExaSet_ReqRemSet (void)
ExaSet_GetAndCheckPars (&Exams,&Set);
/***** Check if exam is editable *****/
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_I_CAN_NOT)
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Show question and button to remove question *****/
@ -1296,7 +1296,7 @@ void ExaSet_RemoveSet (void)
ExaSet_GetAndCheckPars (&Exams,&Set);
/***** Check if exam is editable *****/
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_I_CAN_NOT)
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Remove the set from all tables *****/
@ -1337,7 +1337,7 @@ void ExaSet_MoveUpSet (void)
ExaSet_GetAndCheckPars (&Exams,&Set);
/***** Check if exam is editable *****/
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_I_CAN_NOT)
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get set index *****/
@ -1383,7 +1383,7 @@ void ExaSet_MoveDownSet (void)
ExaSet_GetAndCheckPars (&Exams,&Set);
/***** Check if exam is editable *****/
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_I_CAN_NOT)
if (ExaSet_CheckIfICanEditExamSets (&Exams.Exam) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get set index *****/
@ -1415,22 +1415,22 @@ void ExaSet_MoveDownSet (void)
/*****************************************************************************/
// Before calling this function, number of sessions must be calculated
static Usr_ICan_t ExaSet_CheckIfICanEditExamSets (const struct Exa_Exam *Exam)
static Usr_Can_t ExaSet_CheckIfICanEditExamSets (const struct Exa_Exam *Exam)
{
switch (Exa_CheckIfICanEditExams ())
{
case Usr_I_CAN:
case Usr_CAN:
/***** Questions are editable only if exam has no sessions *****/
return (Exam->NumSess == 0) ? Usr_I_CAN : // Exams with sessions should not be edited
Usr_I_CAN_NOT;
return (Exam->NumSess == 0) ? Usr_CAN : // Exams with sessions should not be edited
Usr_CAN_NOT;
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
return Usr_I_CAN_NOT; // Sets of questions are not editable
return Usr_CAN_NOT; // Sets of questions are not editable
break;
}
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
/*****************************************************************************/

View File

@ -572,13 +572,13 @@ static void Fol_ShowFollowedOrFollower (struct Usr_Data *UsrDat)
[PhoSha_SHAPE_OVAL ] = "PHOTOO60x80",
[PhoSha_SHAPE_RECTANGLE] = "PHOTOR60x80",
};
Usr_ICan_t ICanView = Pri_CheckIfICanView (UsrDat->BaPrfVisibility,UsrDat);
Usr_Can_t ICanView = Pri_CheckIfICanView (UsrDat->BaPrfVisibility,UsrDat);
HTM_DIV_Begin ("class=\"FOLLOW_USR\"");
/***** Show user's photo *****/
HTM_DIV_Begin ("class=\"FOLLOW_PHOTO\"");
if (ICanView == Usr_I_CAN)
if (ICanView == Usr_CAN)
Pho_ShowUsrPhotoIfAllowed (UsrDat,
ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM);
HTM_DIV_End ();
@ -586,7 +586,7 @@ static void Fol_ShowFollowedOrFollower (struct Usr_Data *UsrDat)
/***** Show user's name and icon to follow/unfollow *****/
HTM_DIV_Begin ("class=\"FOLLOW_TXT\"");
if (ICanView == Usr_I_CAN)
if (ICanView == Usr_CAN)
{
/* Put form to go to public profile */
Frm_BeginForm (ActSeeOthPubPrf);
@ -612,7 +612,7 @@ static void Fol_ShowFollowedOrFollower (struct Usr_Data *UsrDat)
UsrDat->UsrCod)) // I follow user
/* Form to unfollow */
Fol_PutIconToUnfollow (UsrDat->EnUsrCod);
else if (ICanView == Usr_I_CAN) // I do not follow this user and I can follow
else if (ICanView == Usr_CAN) // I do not follow this user and I can follow
/* Form to follow */
Fol_PutIconToFollow (UsrDat->EnUsrCod);
}
@ -636,13 +636,13 @@ static void Fol_WriteRowUsrToFollowOnRightColumn (struct Usr_Data *UsrDat)
[PhoSha_SHAPE_OVAL ] = "PHOTOO21x28",
[PhoSha_SHAPE_RECTANGLE] = "PHOTOR21x28",
};
Usr_ICan_t ICanView = Pri_CheckIfICanView (UsrDat->BaPrfVisibility,UsrDat);
Usr_Can_t ICanView = Pri_CheckIfICanView (UsrDat->BaPrfVisibility,UsrDat);
/***** Show user's photo *****/
HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"CON_PHOTO %s\"",The_GetColorRows ());
if (ICanView == Usr_I_CAN)
if (ICanView == Usr_CAN)
Pho_ShowUsrPhotoIfAllowed (UsrDat,
ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM);
HTM_TD_End ();
@ -650,7 +650,7 @@ static void Fol_WriteRowUsrToFollowOnRightColumn (struct Usr_Data *UsrDat)
/***** User's name *****/
HTM_TD_Begin ("class=\"CON_NAME_FOLLOW %s\"",
The_GetColorRows ());
if (ICanView == Usr_I_CAN)
if (ICanView == Usr_CAN)
{
/* Put form to go to public profile */
Frm_BeginForm (ActSeeOthPubPrf);
@ -679,7 +679,7 @@ static void Fol_WriteRowUsrToFollowOnRightColumn (struct Usr_Data *UsrDat)
UsrDat->UsrCod)) // I follow user
/* Form to unfollow */
Fol_PutIconToUnfollow (UsrDat->EnUsrCod);
else if (ICanView == Usr_I_CAN) // I do not follow this user and I can follow
else if (ICanView == Usr_CAN) // I do not follow this user and I can follow
/* Form to follow */
Fol_PutIconToFollow (UsrDat->EnUsrCod);
}

View File

@ -322,7 +322,7 @@ static void For_PutParsNewPost (void *Forums);
static void For_ShowAForumPost (struct For_Forums *Forums,
unsigned PstNum,
bool LastPst,char LastSubject[Cns_MAX_BYTES_SUBJECT + 1],
bool NewPst,Usr_ICan_t ICanModerateForum);
bool NewPst,Usr_Can_t ICanModerateForum);
static void For_GetPstData (long PstCod,long *UsrCod,time_t *CreatTimeUTC,
char Subject[Cns_MAX_BYTES_SUBJECT + 1],
char Content[Cns_MAX_BYTES_LONG_TEXT + 1],
@ -379,7 +379,7 @@ static void For_WriteFormForumPst (struct For_Forums *Forums,
static void For_PutParsRemThread (void *Forums);
static Usr_ICan_t For_CheckIfICanMoveThreads (void);
static Usr_Can_t For_CheckIfICanMoveThreads (void);
static void For_InsertThrInClipboard (long ThrCod);
static void For_ShowStatOfAForumType (For_ForumType_t ForumType,
@ -711,7 +711,7 @@ void For_ShowPostsOfAThread (struct For_Forums *Forums,
time_t CreatTimeUTC; // Creation time of post
struct Pag_Pagination PaginationPsts;
bool NewPst = false;
Usr_ICan_t ICanModerateForum = Usr_I_CAN_NOT;
Usr_Can_t ICanModerateForum = Usr_CAN_NOT;
/***** Get data of the thread *****/
Thread.ThrCod =
@ -720,7 +720,7 @@ void For_ShowPostsOfAThread (struct For_Forums *Forums,
For_GetThreadData (&Thread);
/***** Get if there is a thread ready to be moved *****/
if (For_CheckIfICanMoveThreads () == Usr_I_CAN)
if (For_CheckIfICanMoveThreads () == Usr_CAN)
Forums->Thread.ToMove = For_DB_GetThrInMyClipboard ();
/***** Get thread read time for the current user *****/
@ -751,31 +751,31 @@ void For_ShowPostsOfAThread (struct For_Forums *Forums,
case For_FORUM_GLOBAL_TCHS:
case For_FORUM__SWAD__USRS:
case For_FORUM__SWAD__TCHS:
ICanModerateForum = (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
ICanModerateForum = (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_CAN :
Usr_CAN_NOT;
break;
case For_FORUM_INSTIT_USRS:
case For_FORUM_INSTIT_TCHS:
ICanModerateForum = (Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
ICanModerateForum = (Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ? Usr_CAN :
Usr_CAN_NOT;
break;
case For_FORUM_CENTER_USRS:
case For_FORUM_CENTER_TCHS:
ICanModerateForum = (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
ICanModerateForum = (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ? Usr_CAN :
Usr_CAN_NOT;
break;
case For_FORUM_DEGREE_USRS:
case For_FORUM_DEGREE_TCHS:
case For_FORUM_COURSE_TCHS:
ICanModerateForum = (Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
ICanModerateForum = (Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM) ? Usr_CAN :
Usr_CAN_NOT;
break;
case For_FORUM_COURSE_USRS:
ICanModerateForum = (Gbl.Usrs.Me.Role.Logged >= Rol_TCH) ? Usr_I_CAN :
Usr_I_CAN_NOT;
ICanModerateForum = (Gbl.Usrs.Me.Role.Logged >= Rol_TCH) ? Usr_CAN :
Usr_CAN_NOT;
break;
default:
ICanModerateForum = Usr_I_CAN_NOT;
ICanModerateForum = Usr_CAN_NOT;
break;
}
@ -876,7 +876,7 @@ static void For_PutIconsOneThread (void *Forums)
/***** Put icon to get resource link *****/
if (((struct For_Forums *) Forums)->Forum.Type == For_FORUM_COURSE_USRS &&
Rsc_CheckIfICanGetLink () == Usr_I_CAN)
Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkForCrsUsr,NULL,
For_PutParsNewPost,Forums);
}
@ -901,7 +901,7 @@ static void For_PutParsNewPost (void *Forums)
static void For_ShowAForumPost (struct For_Forums *Forums,
unsigned PstNum,
bool LastPst,char LastSubject[Cns_MAX_BYTES_SUBJECT + 1],
bool NewPst,Usr_ICan_t ICanModerateForum)
bool NewPst,Usr_Can_t ICanModerateForum)
{
extern const char *Txt_MSG_New;
extern const char *Txt_MSG_Open;
@ -1006,7 +1006,7 @@ static void For_ShowAForumPost (struct For_Forums *Forums,
switch (ICanModerateForum)
{
case Usr_I_CAN:
case Usr_CAN:
NextAction = DisabledOrEnabled == Cns_ENABLED ? For_ActionsDisPstFor[Forums->Forum.Type] :
For_ActionsEnbPstFor[Forums->Forum.Type];
Frm_BeginFormAnchor (NextAction,For_FORUM_POSTS_SECTION_ID);
@ -1014,7 +1014,7 @@ static void For_ShowAForumPost (struct For_Forums *Forums,
Ico_PutIconLink (Icon[DisabledOrEnabled],Color[DisabledOrEnabled],NextAction);
Frm_EndForm ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
if (asprintf (&Title,*TxtAllowedBanned[DisabledOrEnabled],PstNum) < 0)
Err_NotEnoughMemoryExit ();
@ -1235,12 +1235,12 @@ void For_ShowForumList (struct For_Forums *Forums)
unsigned NumDegs;
unsigned NumCrs;
unsigned NumCrss;
Usr_ICan_t ICanSeeInsForum;
Usr_ICan_t ICanSeeCtrForum;
Usr_ICan_t ICanSeeDegForum;
Usr_Can_t ICanSeeInsForum;
Usr_Can_t ICanSeeCtrForum;
Usr_Can_t ICanSeeDegForum;
/***** Get if there is a thread ready to be moved *****/
if (For_CheckIfICanMoveThreads () == Usr_I_CAN)
if (For_CheckIfICanMoveThreads () == Usr_CAN)
Forums->Thread.ToMove = For_DB_GetThrInMyClipboard ();
/***** Fill the list with the institutions I belong to *****/
@ -1264,49 +1264,55 @@ void For_ShowForumList (struct For_Forums *Forums)
if (Gbl.Hierarchy.Node[Hie_INS].HieCod > 0)
{
if (Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM)
ICanSeeInsForum = Usr_I_CAN;
ICanSeeInsForum = Usr_CAN;
else
ICanSeeInsForum = Hie_CheckIfIBelongTo (Hie_INS,Gbl.Hierarchy.Node[Hie_INS].HieCod) ? Usr_I_CAN :
Usr_I_CAN_NOT;
ICanSeeInsForum = (Hie_CheckIfIBelongTo (Hie_INS,
Gbl.Hierarchy.Node[Hie_INS].HieCod)
== Usr_BELONG) ? Usr_CAN :
Usr_CAN_NOT;
}
else
ICanSeeInsForum = Usr_I_CAN_NOT;
ICanSeeInsForum = Usr_CAN_NOT;
/***** Links to forums about the platform *****/
For_WriteLinksToPlatformForums (Forums,true,IsLastItemInLevel);
if (ICanSeeInsForum == Usr_I_CAN)
if (ICanSeeInsForum == Usr_CAN)
{
if (Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM)
ICanSeeCtrForum = Usr_I_CAN;
ICanSeeCtrForum = Usr_CAN;
else
ICanSeeCtrForum = Hie_CheckIfIBelongTo (Hie_CTR,Gbl.Hierarchy.Node[Hie_CTR].HieCod) ? Usr_I_CAN :
Usr_I_CAN_NOT;
ICanSeeCtrForum = (Hie_CheckIfIBelongTo (Hie_CTR,
Gbl.Hierarchy.Node[Hie_CTR].HieCod)
== Usr_BELONG) ? Usr_CAN :
Usr_CAN_NOT;
/***** Links to forums of current institution *****/
if (For_WriteLinksToInsForums (Forums,Gbl.Hierarchy.Node[Hie_INS].HieCod,
true,
IsLastItemInLevel) > 0)
if (ICanSeeCtrForum == Usr_I_CAN)
if (ICanSeeCtrForum == Usr_CAN)
{
if (Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM)
ICanSeeDegForum = Usr_I_CAN;
ICanSeeDegForum = Usr_CAN;
else
ICanSeeDegForum = Hie_CheckIfIBelongTo (Hie_DEG,Gbl.Hierarchy.Node[Hie_DEG].HieCod) ? Usr_I_CAN :
Usr_I_CAN_NOT;
ICanSeeDegForum = (Hie_CheckIfIBelongTo (Hie_DEG,
Gbl.Hierarchy.Node[Hie_DEG].HieCod)
== Usr_BELONG) ? Usr_CAN :
Usr_CAN_NOT;
/***** Links to forums of current center *****/
if (For_WriteLinksToCtrForums (Forums,
Gbl.Hierarchy.Node[Hie_CTR].HieCod,
true,
IsLastItemInLevel) > 0)
if (ICanSeeDegForum == Usr_I_CAN)
if (ICanSeeDegForum == Usr_CAN)
/***** Links to forums of current degree *****/
if (For_WriteLinksToDegForums (Forums,
Gbl.Hierarchy.Node[Hie_DEG].HieCod,
true,
IsLastItemInLevel) > 0)
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] ||
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] == Usr_BELONG ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
/***** Links to forums of current degree *****/
For_WriteLinksToCrsForums (Forums,
@ -1465,15 +1471,15 @@ static void For_WriteLinksToGblForums (const struct For_Forums *Forums,
Lay_LastItem_t IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS])
{
Lay_Highlight_t Highlight;
Usr_ICan_t ICanSeeTeacherForum;
Usr_Can_t ICanSeeTeacherForum;
struct For_Forum Forum;
/***** Can I see teachers's forums? *****/
Rol_GetRolesInAllCrss (&Gbl.Usrs.Me.UsrDat);
ICanSeeTeacherForum = (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
(Gbl.Usrs.Me.UsrDat.Roles.InCrss & ((1 << Rol_NET) |
(1 << Rol_TCH)))) ? Usr_I_CAN :
Usr_I_CAN_NOT;
(1 << Rol_TCH)))) ? Usr_CAN :
Usr_CAN_NOT;
/***** Link to forum global *****/
Forum.Type = For_FORUM_GLOBAL_USRS;
@ -1485,7 +1491,7 @@ static void For_WriteLinksToGblForums (const struct For_Forums *Forums,
/***** Link to forum of teachers global *****/
Rol_GetRolesInAllCrss (&Gbl.Usrs.Me.UsrDat);
if (ICanSeeTeacherForum == Usr_I_CAN)
if (ICanSeeTeacherForum == Usr_CAN)
{
Forum.Type = For_FORUM_GLOBAL_TCHS;
Forum.HieCod = -1L;
@ -1505,15 +1511,15 @@ static void For_WriteLinksToPlatformForums (const struct For_Forums *Forums,
Lay_LastItem_t IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS])
{
Lay_Highlight_t Highlight;
Usr_ICan_t ICanSeeTeacherForum;
Usr_Can_t ICanSeeTeacherForum;
struct For_Forum Forum;
/***** Can I see teachers's forums? *****/
Rol_GetRolesInAllCrss (&Gbl.Usrs.Me.UsrDat);
ICanSeeTeacherForum = (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
(Gbl.Usrs.Me.UsrDat.Roles.InCrss & ((1 << Rol_NET) |
(1 << Rol_TCH)))) ? Usr_I_CAN :
Usr_I_CAN_NOT;
(1 << Rol_TCH)))) ? Usr_CAN :
Usr_CAN_NOT;
/***** Link to forum of users about the platform *****/
Forum.Type = For_FORUM__SWAD__USRS;
@ -1521,12 +1527,12 @@ static void For_WriteLinksToPlatformForums (const struct For_Forums *Forums,
Highlight = (Forums->Forum.Type == For_FORUM__SWAD__USRS) ? Lay_HIGHLIGHT :
Lay_NO_HIGHLIGHT;
IsLastItemInLevel[1] = (IsLastForum &&
ICanSeeTeacherForum == Usr_I_CAN_NOT) ? Lay_LAST_ITEM :
ICanSeeTeacherForum == Usr_CAN_NOT) ? Lay_LAST_ITEM :
Lay_NO_LAST_ITEM;
For_WriteLinkToForum (Forums,&Forum,Highlight,1,IsLastItemInLevel);
/***** Link to forum of teachers about the platform *****/
if (ICanSeeTeacherForum == Usr_I_CAN)
if (ICanSeeTeacherForum == Usr_CAN)
{
Forum.Type = For_FORUM__SWAD__TCHS;
Forum.HieCod = -1L;
@ -1549,7 +1555,7 @@ static long For_WriteLinksToInsForums (const struct For_Forums *Forums,
{
Lay_Highlight_t Highlight;
Rol_Role_t MaxRoleInIns;
Usr_ICan_t ICanSeeTeacherForum;
Usr_Can_t ICanSeeTeacherForum;
struct For_Forum Forum;
if (InsCod > 0)
@ -1557,8 +1563,8 @@ static long For_WriteLinksToInsForums (const struct For_Forums *Forums,
MaxRoleInIns = Rol_GetMyMaxRoleIn (Hie_INS,InsCod);
ICanSeeTeacherForum = ((Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
MaxRoleInIns == Rol_NET ||
MaxRoleInIns == Rol_TCH)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
MaxRoleInIns == Rol_TCH)) ? Usr_CAN :
Usr_CAN_NOT;
/***** Link to the forum of users from this institution *****/
Forum.Type = For_FORUM_INSTIT_USRS;
@ -1567,12 +1573,12 @@ static long For_WriteLinksToInsForums (const struct For_Forums *Forums,
Forums->Forum.HieCod == InsCod) ? Lay_HIGHLIGHT :
Lay_NO_HIGHLIGHT;
IsLastItemInLevel[2] = (IsLastIns &&
ICanSeeTeacherForum == Usr_I_CAN_NOT) ? Lay_LAST_ITEM :
ICanSeeTeacherForum == Usr_CAN_NOT) ? Lay_LAST_ITEM :
Lay_NO_LAST_ITEM;
For_WriteLinkToForum (Forums,&Forum,Highlight,2,IsLastItemInLevel);
/***** Link to forum of teachers from this institution *****/
if (ICanSeeTeacherForum == Usr_I_CAN)
if (ICanSeeTeacherForum == Usr_CAN)
{
Forum.Type = For_FORUM_INSTIT_TCHS;
Forum.HieCod = InsCod;
@ -1598,7 +1604,7 @@ static long For_WriteLinksToCtrForums (const struct For_Forums *Forums,
{
Lay_Highlight_t Highlight;
Rol_Role_t MaxRoleInCtr;
Usr_ICan_t ICanSeeTeacherForum;
Usr_Can_t ICanSeeTeacherForum;
struct For_Forum Forum;
if (CtrCod > 0)
@ -1606,8 +1612,8 @@ static long For_WriteLinksToCtrForums (const struct For_Forums *Forums,
MaxRoleInCtr = Rol_GetMyMaxRoleIn (Hie_CTR,CtrCod);
ICanSeeTeacherForum = ((Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
MaxRoleInCtr == Rol_NET ||
MaxRoleInCtr == Rol_TCH)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
MaxRoleInCtr == Rol_TCH)) ? Usr_CAN :
Usr_CAN_NOT;
/***** Link to the forum of users from this center *****/
Forum.Type = For_FORUM_CENTER_USRS;
@ -1616,12 +1622,12 @@ static long For_WriteLinksToCtrForums (const struct For_Forums *Forums,
Forums->Forum.HieCod == CtrCod) ? Lay_HIGHLIGHT :
Lay_NO_HIGHLIGHT;
IsLastItemInLevel[3] = (IsLastCtr &&
ICanSeeTeacherForum == Usr_I_CAN_NOT) ? Lay_LAST_ITEM :
ICanSeeTeacherForum == Usr_CAN_NOT) ? Lay_LAST_ITEM :
Lay_NO_LAST_ITEM;
For_WriteLinkToForum (Forums,&Forum,Highlight,3,IsLastItemInLevel);
/***** Link to forum of teachers from this center *****/
if (ICanSeeTeacherForum == Usr_I_CAN)
if (ICanSeeTeacherForum == Usr_CAN)
{
Forum.Type = For_FORUM_CENTER_TCHS;
Forum.HieCod = CtrCod;
@ -1647,7 +1653,7 @@ static long For_WriteLinksToDegForums (const struct For_Forums *Forums,
{
Lay_Highlight_t Highlight;
Rol_Role_t MaxRoleInDeg;
Usr_ICan_t ICanSeeTeacherForum;
Usr_Can_t ICanSeeTeacherForum;
struct For_Forum Forum;
if (DegCod > 0)
@ -1655,8 +1661,8 @@ static long For_WriteLinksToDegForums (const struct For_Forums *Forums,
MaxRoleInDeg = Rol_GetMyMaxRoleIn (Hie_DEG,DegCod);
ICanSeeTeacherForum = ((Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
MaxRoleInDeg == Rol_NET ||
MaxRoleInDeg == Rol_TCH)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
MaxRoleInDeg == Rol_TCH)) ? Usr_CAN :
Usr_CAN_NOT;
/***** Link to the forum of users from this degree *****/
Forum.Type = For_FORUM_DEGREE_USRS;
@ -1665,12 +1671,12 @@ static long For_WriteLinksToDegForums (const struct For_Forums *Forums,
Forums->Forum.HieCod == DegCod) ? Lay_HIGHLIGHT :
Lay_NO_HIGHLIGHT;
IsLastItemInLevel[4] = (IsLastDeg &&
ICanSeeTeacherForum == Usr_I_CAN_NOT) ? Lay_LAST_ITEM :
ICanSeeTeacherForum == Usr_CAN_NOT) ? Lay_LAST_ITEM :
Lay_NO_LAST_ITEM;
For_WriteLinkToForum (Forums,&Forum,Highlight,4,IsLastItemInLevel);
/***** Link to forum of teachers from this degree *****/
if (ICanSeeTeacherForum == Usr_I_CAN)
if (ICanSeeTeacherForum == Usr_CAN)
{
Forum.Type = For_FORUM_DEGREE_TCHS;
Forum.HieCod = DegCod;
@ -1696,7 +1702,7 @@ static long For_WriteLinksToCrsForums (const struct For_Forums *Forums,
{
Lay_Highlight_t Highlight;
Rol_Role_t MyRoleInCrs;
Usr_ICan_t ICanSeeTeacherForum;
Usr_Can_t ICanSeeTeacherForum;
struct For_Forum Forum;
if (CrsCod > 0)
@ -1704,8 +1710,8 @@ static long For_WriteLinksToCrsForums (const struct For_Forums *Forums,
MyRoleInCrs = Rol_GetMyRoleInCrs (CrsCod);
ICanSeeTeacherForum = ((Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
MyRoleInCrs == Rol_NET ||
MyRoleInCrs == Rol_TCH)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
MyRoleInCrs == Rol_TCH)) ? Usr_CAN :
Usr_CAN_NOT;
/***** Link to the forum of users from this course *****/
Forum.Type = For_FORUM_COURSE_USRS;
@ -1713,12 +1719,12 @@ static long For_WriteLinksToCrsForums (const struct For_Forums *Forums,
Highlight = (Forums->Forum.Type == For_FORUM_COURSE_USRS &&
Forums->Forum.HieCod == CrsCod) ? Lay_HIGHLIGHT :
Lay_NO_HIGHLIGHT;
IsLastItemInLevel[5] = (IsLastCrs && ICanSeeTeacherForum == Usr_I_CAN_NOT) ? Lay_LAST_ITEM :
IsLastItemInLevel[5] = (IsLastCrs && ICanSeeTeacherForum == Usr_CAN_NOT) ? Lay_LAST_ITEM :
Lay_NO_LAST_ITEM;
For_WriteLinkToForum (Forums,&Forum,Highlight,5,IsLastItemInLevel);
/***** Link to forum of teachers from this course *****/
if (ICanSeeTeacherForum == Usr_I_CAN)
if (ICanSeeTeacherForum == Usr_CAN)
{
Forum.Type = For_FORUM_COURSE_TCHS;
Forum.HieCod = CrsCod;
@ -2202,7 +2208,7 @@ static void For_PutIconsThreads (void *Forums)
/***** Put icon to get resource link *****/
if (((struct For_Forums *) Forums)->Forum.Type == For_FORUM_COURSE_USRS &&
Rsc_CheckIfICanGetLink () == Usr_I_CAN)
Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkForCrsUsr,NULL,
For_PutParsNewPost,Forums);
}
@ -2252,10 +2258,10 @@ static void For_ListForumThrs (struct For_Forums *Forums,
long ThreadInMyClipboard = -1L;
unsigned Column;
const char *BgColor;
Usr_ICan_t ICanMoveThreads = For_CheckIfICanMoveThreads ();
Usr_Can_t ICanMoveThreads = For_CheckIfICanMoveThreads ();
/***** Get if there is a thread ready to be moved *****/
if (ICanMoveThreads == Usr_I_CAN)
if (ICanMoveThreads == Usr_CAN)
ThreadInMyClipboard = For_DB_GetThrInMyClipboard ();
/***** Initialize structure with user's data *****/
@ -2308,7 +2314,7 @@ static void For_ListForumThrs (struct For_Forums *Forums,
}
/***** Put button to cut the thread for moving it to another forum *****/
if (ICanMoveThreads == Usr_I_CAN)
if (ICanMoveThreads == Usr_CAN)
{
HTM_BR ();
Frm_BeginFormAnchor (For_ActionsCutThrFor[Forums->Forum.Type],
@ -2694,87 +2700,87 @@ static void For_SetForumType (struct For_Forums *Forums)
static void For_RestrictAccess (const struct For_Forums *Forums)
{
Rol_Role_t MaxRole;
Usr_ICan_t ICanSeeForum;
Usr_Can_t ICanSeeForum;
/***** Restrict access *****/
switch (Forums->Forum.Type)
{
case For_FORUM_GLOBAL_USRS:
case For_FORUM__SWAD__USRS:
ICanSeeForum = Usr_I_CAN;
ICanSeeForum = Usr_CAN;
break;
case For_FORUM_GLOBAL_TCHS:
case For_FORUM__SWAD__TCHS:
Rol_GetRolesInAllCrss (&Gbl.Usrs.Me.UsrDat);
ICanSeeForum = (Gbl.Usrs.Me.UsrDat.Roles.InCrss & ((1 << Rol_NET) |
(1 << Rol_TCH))) ? Usr_I_CAN :
Usr_I_CAN_NOT;
(1 << Rol_TCH))) ? Usr_CAN :
Usr_CAN_NOT;
break;
case For_FORUM_INSTIT_USRS:
MaxRole = Rol_GetMyMaxRoleIn (Hie_INS,Forums->Forum.HieCod);
ICanSeeForum = (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
MaxRole == Rol_STD ||
MaxRole == Rol_NET ||
MaxRole == Rol_TCH) ? Usr_I_CAN :
Usr_I_CAN_NOT;
MaxRole == Rol_TCH) ? Usr_CAN :
Usr_CAN_NOT;
break;
case For_FORUM_INSTIT_TCHS:
MaxRole = Rol_GetMyMaxRoleIn (Hie_INS,Forums->Forum.HieCod);
ICanSeeForum = (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
MaxRole == Rol_NET ||
MaxRole == Rol_TCH) ? Usr_I_CAN :
Usr_I_CAN_NOT;
MaxRole == Rol_TCH) ? Usr_CAN :
Usr_CAN_NOT;
break;
case For_FORUM_CENTER_USRS:
MaxRole = Rol_GetMyMaxRoleIn (Hie_CTR,Forums->Forum.HieCod);
ICanSeeForum = (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
MaxRole >= Rol_STD ||
MaxRole == Rol_NET ||
MaxRole == Rol_TCH) ? Usr_I_CAN :
Usr_I_CAN_NOT;
MaxRole == Rol_TCH) ? Usr_CAN :
Usr_CAN_NOT;
break;
case For_FORUM_CENTER_TCHS:
MaxRole = Rol_GetMyMaxRoleIn (Hie_CTR,Forums->Forum.HieCod);
ICanSeeForum = (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
MaxRole == Rol_NET ||
MaxRole == Rol_TCH) ? Usr_I_CAN :
Usr_I_CAN_NOT;
MaxRole == Rol_TCH) ? Usr_CAN :
Usr_CAN_NOT;
break;
case For_FORUM_DEGREE_USRS:
MaxRole = Rol_GetMyMaxRoleIn (Hie_DEG,Forums->Forum.HieCod);
ICanSeeForum = (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
MaxRole >= Rol_STD ||
MaxRole == Rol_NET ||
MaxRole == Rol_TCH) ? Usr_I_CAN :
Usr_I_CAN_NOT;
MaxRole == Rol_TCH) ? Usr_CAN :
Usr_CAN_NOT;
break;
case For_FORUM_DEGREE_TCHS:
MaxRole = Rol_GetMyMaxRoleIn (Hie_DEG,Forums->Forum.HieCod);
ICanSeeForum = (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
MaxRole == Rol_NET ||
MaxRole == Rol_TCH) ? Usr_I_CAN :
Usr_I_CAN_NOT;
MaxRole == Rol_TCH) ? Usr_CAN :
Usr_CAN_NOT;
break;
case For_FORUM_COURSE_USRS:
MaxRole = Rol_GetMyRoleInCrs (Forums->Forum.HieCod);
ICanSeeForum = (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
MaxRole >= Rol_STD ||
MaxRole == Rol_NET ||
MaxRole == Rol_TCH) ? Usr_I_CAN :
Usr_I_CAN_NOT;
MaxRole == Rol_TCH) ? Usr_CAN :
Usr_CAN_NOT;
break;
case For_FORUM_COURSE_TCHS:
MaxRole = Rol_GetMyRoleInCrs (Forums->Forum.HieCod);
ICanSeeForum = (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
MaxRole == Rol_NET ||
MaxRole == Rol_TCH) ? Usr_I_CAN :
Usr_I_CAN_NOT;
MaxRole == Rol_TCH) ? Usr_CAN :
Usr_CAN_NOT;
break;
default:
ICanSeeForum = Usr_I_CAN_NOT;
ICanSeeForum = Usr_CAN_NOT;
break;
}
if (ICanSeeForum == Usr_I_CAN_NOT)
if (ICanSeeForum == Usr_CAN_NOT)
Err_NoPermissionExit ();
}
@ -3267,10 +3273,10 @@ void For_PasteThread (void)
/*********************** Check if I can move threads *************************/
/*****************************************************************************/
static Usr_ICan_t For_CheckIfICanMoveThreads (void)
static Usr_Can_t For_CheckIfICanMoveThreads (void)
{
return (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_I_CAN : // If I have permission to move threads...
Usr_I_CAN_NOT;
return (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_CAN : // If I have permission to move threads...
Usr_CAN_NOT;
}
/*****************************************************************************/

View File

@ -113,8 +113,8 @@ extern struct Globals Gbl;
static void Gam_ListAllGamesHeading (const struct Gam_Games *Games);
static Usr_ICan_t Gam_CheckIfICanEditGames (void);
static Usr_ICan_t Gam_CheckIfICanListGameQuestions (void);
static Usr_Can_t Gam_CheckIfICanEditGames (void);
static Usr_Can_t Gam_CheckIfICanListGameQuestions (void);
static void Gam_PutIconsListingGames (void *Games);
static void Gam_PutIconToCreateNewGame (struct Gam_Games *Games);
static void Gam_PutParsToCreateNewGame (void *Games);
@ -153,7 +153,7 @@ static void Gam_ListGameQuestions (struct Gam_Games *Games);
static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
unsigned NumQsts,
MYSQL_RES *mysql_res,
Usr_ICan_t ICanEditQuestions);
Usr_Can_t ICanEditQuestions);
static void Gam_PutIconToAddNewQuestions (void *Games);
@ -163,7 +163,7 @@ static void Gam_FreeListsSelectedQuestions (struct Gam_Games *Games);
static void Gam_ExchangeQuestions (long GamCod,
unsigned QstIndTop,unsigned QstIndBottom);
static Usr_ICan_t Gam_CheckIfICanEditGame (const struct Gam_Game *Game);
static Usr_Can_t Gam_CheckIfICanEditGame (const struct Gam_Game *Game);
/*****************************************************************************/
/*************************** Reset games context *****************************/
@ -346,12 +346,12 @@ static void Gam_ListAllGamesHeading (const struct Gam_Games *Games)
/************************ Check if I can edit games **************************/
/*****************************************************************************/
static Usr_ICan_t Gam_CheckIfICanEditGames (void)
static Usr_Can_t Gam_CheckIfICanEditGames (void)
{
static Usr_ICan_t ICanEditGames[Rol_NUM_ROLES] =
static Usr_Can_t ICanEditGames[Rol_NUM_ROLES] =
{
[Rol_TCH ] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return ICanEditGames[Gbl.Usrs.Me.Role.Logged];
@ -361,13 +361,13 @@ static Usr_ICan_t Gam_CheckIfICanEditGames (void)
/**************** Check if I can list questions in games *********************/
/*****************************************************************************/
static Usr_ICan_t Gam_CheckIfICanListGameQuestions (void)
static Usr_Can_t Gam_CheckIfICanListGameQuestions (void)
{
static Usr_ICan_t ICanListGameQuestions[Rol_NUM_ROLES] =
static Usr_Can_t ICanListGameQuestions[Rol_NUM_ROLES] =
{
[Rol_NET ] = Usr_I_CAN,
[Rol_TCH ] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_NET ] = Usr_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return ICanListGameQuestions[Gbl.Usrs.Me.Role.Logged];
@ -390,7 +390,7 @@ static void Gam_PutIconsListingGames (void *Games)
if (Games)
{
/***** Put icon to create a new game *****/
if (Gam_CheckIfICanEditGames () == Usr_I_CAN)
if (Gam_CheckIfICanEditGames () == Usr_CAN)
Gam_PutIconToCreateNewGame ((struct Gam_Games *) Games);
/***** Put icon to view matches results *****/
@ -399,7 +399,7 @@ static void Gam_PutIconsListingGames (void *Games)
NULL,NULL);
/***** Link to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkGam,NULL,Gam_PutPars,Games);
/***** Put icon to show a figure *****/
@ -730,7 +730,7 @@ static void Gam_PutIconsToRemEditOneGame (struct Gam_Games *Games,
[Rol_SYS_ADM] = ActSeeUsrMchResGam,
};
if (Gam_CheckIfICanEditGames () == Usr_I_CAN)
if (Gam_CheckIfICanEditGames () == Usr_CAN)
{
/***** Icon to remove game *****/
Ico_PutContextualIconToRemove (ActReqRemGam,NULL,
@ -745,7 +745,7 @@ static void Gam_PutIconsToRemEditOneGame (struct Gam_Games *Games,
Ico_PutContextualIconToEdit (ActEdiOneGam,NULL,Gam_PutPars,Games);
}
if (Gam_CheckIfICanListGameQuestions () == Usr_I_CAN)
if (Gam_CheckIfICanListGameQuestions () == Usr_CAN)
/***** Icon to view game listing its questions *****/
Ico_PutContextualIconToView (ActLstOneGam,NULL,Gam_PutPars,Games);
@ -755,7 +755,7 @@ static void Gam_PutIconsToRemEditOneGame (struct Gam_Games *Games,
Gam_PutPars,Games);
/***** Link to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkGam,NULL,Gam_PutPars,Games);
}
@ -1052,7 +1052,7 @@ void Gam_AskRemGame (void)
/***** Get data of the game from database *****/
Gam_GetGameDataByCod (&Games.Game);
if (Gam_CheckIfICanEditGames () == Usr_I_CAN_NOT)
if (Gam_CheckIfICanEditGames () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Show question and button to remove game *****/
@ -1085,7 +1085,7 @@ void Gam_RemoveGame (void)
/***** Get data of the game from database *****/
Gam_GetGameDataByCod (&Games.Game);
if (Gam_CheckIfICanEditGames () == Usr_I_CAN_NOT)
if (Gam_CheckIfICanEditGames () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Remove game from all tables *****/
@ -1161,7 +1161,7 @@ static void Gam_HideUnhideGame (HidVis_HiddenOrVisible_t HiddenOrVisible)
/***** Get data of the game from database *****/
Gam_GetGameDataByCod (&Games.Game);
if (Gam_CheckIfICanEditGames () == Usr_I_CAN_NOT)
if (Gam_CheckIfICanEditGames () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Unhide game *****/
@ -1187,7 +1187,7 @@ void Gam_ListGame (void)
Gam_ResetGame (&Games.Game);
/***** Check if I can list game questions *****/
if (Gam_CheckIfICanListGameQuestions () == Usr_I_CAN_NOT)
if (Gam_CheckIfICanListGameQuestions () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get parameters *****/
@ -1221,7 +1221,7 @@ void Gam_ReqCreatOrEditGame (void)
Gam_ResetGame (&Games.Game);
/***** Check if I can edit games *****/
if (Gam_CheckIfICanEditGames () == Usr_I_CAN_NOT)
if (Gam_CheckIfICanEditGames () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get parameters *****/
@ -1437,7 +1437,7 @@ void Gam_ReceiveGame (void)
Gam_ResetGame (&Games.Game);
/***** Check if I can edit games *****/
if (Gam_CheckIfICanEditGames () == Usr_I_CAN_NOT)
if (Gam_CheckIfICanEditGames () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get parameters *****/
@ -1566,7 +1566,7 @@ void Gam_ReqSelectQstsToAddToGame (void)
Gam_GetGameDataByCod (&Games.Game);
/***** Check if game has matches *****/
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_I_CAN_NOT)
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Show form to create a new question in this game *****/
@ -1598,7 +1598,7 @@ void Gam_ListQstsToAddToGame (void)
Gam_GetGameDataByCod (&Games.Game);
/***** Check if game has matches *****/
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_I_CAN_NOT)
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** List several test questions for selection *****/
@ -1638,16 +1638,16 @@ static void Gam_ListGameQuestions (struct Gam_Games *Games)
extern const char *Txt_Questions;
MYSQL_RES *mysql_res;
unsigned NumQsts;
Usr_ICan_t ICanEditQuestions = Gam_CheckIfICanEditGame (&Games->Game);
static void (*FunctionToDrawContextualIcons[Usr_NUM_I_CAN]) (void *Args) =
Usr_Can_t ICanEditQuestions = Gam_CheckIfICanEditGame (&Games->Game);
static void (*FunctionToDrawContextualIcons[Usr_NUM_CAN]) (void *Args) =
{
[Usr_I_CAN_NOT] = NULL,
[Usr_I_CAN ] = Gam_PutIconToAddNewQuestions,
[Usr_CAN_NOT] = NULL,
[Usr_CAN ] = Gam_PutIconToAddNewQuestions,
};
void *Args[Usr_NUM_I_CAN] =
void *Args[Usr_NUM_CAN] =
{
[Usr_I_CAN_NOT] = NULL,
[Usr_I_CAN ] = Games,
[Usr_CAN_NOT] = NULL,
[Usr_CAN ] = Games,
};
/***** Get data of questions from database *****/
@ -1678,7 +1678,7 @@ static void Gam_ListGameQuestions (struct Gam_Games *Games)
static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
unsigned NumQsts,
MYSQL_RES *mysql_res,
Usr_ICan_t ICanEditQuestions)
Usr_Can_t ICanEditQuestions)
{
extern const char *Txt_Questions;
extern const char *Txt_No_INDEX;
@ -1749,18 +1749,18 @@ static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
/* Put icon to remove the question */
switch (ICanEditQuestions)
{
case Usr_I_CAN:
case Usr_CAN:
Ico_PutContextualIconToRemove (ActReqRemGamQst,NULL,
Gam_PutParsOneQst,Games);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconRemovalNotAllowed ();
break;
}
/* Put icon to move up the question */
if (ICanEditQuestions == Usr_I_CAN && QstInd > 1)
if (ICanEditQuestions == Usr_CAN && QstInd > 1)
Lay_PutContextualLinkOnlyIcon (ActUp_GamQst,Anchor,
Gam_PutParsOneQst,Games,
"arrow-up.svg",Ico_BLACK);
@ -1769,7 +1769,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
Txt_Movement_not_allowed);
/* Put icon to move down the question */
if (ICanEditQuestions == Usr_I_CAN && QstInd < MaxQstInd)
if (ICanEditQuestions == Usr_CAN && QstInd < MaxQstInd)
Lay_PutContextualLinkOnlyIcon (ActDwnGamQst,Anchor,
Gam_PutParsOneQst,Games,
"arrow-down.svg",Ico_BLACK);
@ -1778,7 +1778,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
Txt_Movement_not_allowed);
/* Put icon to edit the question */
if (ICanEditQuestions == Usr_I_CAN)
if (ICanEditQuestions == Usr_CAN)
Ico_PutContextualIconToEdit (ActEdiOneTstQst,NULL,
Qst_PutParQstCod,&Question.QstCod);
@ -1839,7 +1839,7 @@ void Gam_AddQstsToGame (void)
Gam_GetGameDataByCod (&Games.Game);
/***** Check if game has matches *****/
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_I_CAN_NOT)
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get selected questions *****/
@ -1947,7 +1947,7 @@ void Gam_ReqRemQstFromGame (void)
Gam_GetGameDataByCod (&Games.Game);
/***** Check if game has matches *****/
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_I_CAN_NOT)
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get question index *****/
@ -1989,7 +1989,7 @@ void Gam_RemoveQstFromGame (void)
Gam_GetGameDataByCod (&Games.Game);
/***** Check if game has matches *****/
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_I_CAN_NOT)
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get question index *****/
@ -2038,7 +2038,7 @@ void Gam_MoveUpQst (void)
Gam_GetGameDataByCod (&Games.Game);
/***** Check if game has matches *****/
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_I_CAN_NOT)
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get question index *****/
@ -2088,7 +2088,7 @@ void Gam_MoveDownQst (void)
Gam_GetGameDataByCod (&Games.Game);
/***** Check if game has matches *****/
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_I_CAN_NOT)
if (Gam_CheckIfICanEditGame (&Games.Game) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get question index *****/
@ -2167,14 +2167,14 @@ static void Gam_ExchangeQuestions (long GamCod,
/*****************************************************************************/
// Before calling this function, number of matches must be calculated
static Usr_ICan_t Gam_CheckIfICanEditGame (const struct Gam_Game *Game)
static Usr_Can_t Gam_CheckIfICanEditGame (const struct Gam_Game *Game)
{
if (Gam_CheckIfICanEditGames () == Usr_I_CAN)
if (Gam_CheckIfICanEditGames () == Usr_CAN)
/***** Questions are editable only if game has no matches *****/
if (Game->NumMchs == 0)
return Usr_I_CAN;
return Usr_CAN;
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
/*****************************************************************************/

View File

@ -135,7 +135,7 @@ struct Globals
unsigned Num; // Number of courses/degrees/centers/institutions/countries
bool Filled; // List is already filled?
} Hierarchy[Hie_NUM_LEVELS]; // My hierarchy
bool IBelongToCurrent[Hie_NUM_LEVELS];
Usr_Belong_t IBelongToCurrent[Hie_NUM_LEVELS];
Set_ShowUsrsType_t ListType; // My preference about user's list type
unsigned NumFollowers; // Number of users who follow me
unsigned NumFollowing; // Number of users I follow

View File

@ -76,7 +76,7 @@ extern struct Globals Gbl;
/***************************** Private prototypes ****************************/
/*****************************************************************************/
static Usr_ICan_t Grp_CheckIfICanChangeGrps (void);
static Usr_Can_t Grp_CheckIfICanChangeGrps (void);
static void Grp_ReqEditGroupsInternal (Ale_AlertType_t AlertTypeGroupTypes,const char *AlertTextGroupTypes,
Ale_AlertType_t AlertTypeGroups,const char *AlertTextGroups);
@ -107,7 +107,7 @@ static void Grp_WriteHeadingGroups (void);
static void Grp_PutIconToEditGroups (__attribute__((unused)) void *Args);
static void Grp_ShowWarningToStdsToChangeGrps (void);
static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
unsigned *NumGrpsThisTypeIBelong);
static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod);
static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp);
@ -135,13 +135,13 @@ static void Grp_PutParGrpCod (void *GrpCod);
/************************ Check if I can change groups ***********************/
/*****************************************************************************/
static Usr_ICan_t Grp_CheckIfICanChangeGrps (void)
static Usr_Can_t Grp_CheckIfICanChangeGrps (void)
{
static Usr_ICan_t Grp_ICanChangeGrps[Rol_NUM_ROLES] =
static Usr_Can_t Grp_ICanChangeGrps[Rol_NUM_ROLES] =
{
[Rol_STD ] = Usr_I_CAN,
[Rol_TCH ] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_STD ] = Usr_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return Grp_ICanChangeGrps[Gbl.Usrs.Me.Role.Logged];
@ -348,11 +348,11 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,
extern const char *Txt_Groups;
extern const char *Txt_Update_users;
unsigned NumGrpTyp;
Usr_ICan_t ICanEdit;
static void (*FunctionToDrawContextualIcons[Usr_NUM_I_CAN]) (void *Args) =
Usr_Can_t ICanEdit;
static void (*FunctionToDrawContextualIcons[Usr_NUM_CAN]) (void *Args) =
{
[Usr_I_CAN_NOT] = NULL,
[Usr_I_CAN ] = Grp_PutIconToEditGroups,
[Usr_CAN_NOT] = NULL,
[Usr_CAN ] = Grp_PutIconToEditGroups,
};
/***** Trivial check: if no groups ==> nothing to do *****/
@ -362,8 +362,8 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,
/***** Begin box *****/
ICanEdit = (!Frm_CheckIfInside () &&
(Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_CAN :
Usr_CAN_NOT;
Box_BoxBegin (Txt_Groups,
FunctionToDrawContextualIcons[ICanEdit],NULL,
Hlp_USERS_Groups,Box_CLOSABLE);
@ -410,7 +410,7 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,
static void Grp_PutCheckboxAllGrps (void)
{
extern const char *Txt_All_groups;
Usr_ICan_t ICanSelUnselGroup;
Usr_Can_t ICanSelUnselGroup;
switch (Gbl.Usrs.Me.Role.Logged)
{
@ -419,10 +419,10 @@ static void Grp_PutCheckboxAllGrps (void)
case Rol_CTR_ADM:
case Rol_INS_ADM:
case Rol_SYS_ADM:
ICanSelUnselGroup = Usr_I_CAN;
ICanSelUnselGroup = Usr_CAN;
break;
default:
ICanSelUnselGroup = Usr_I_CAN_NOT;
ICanSelUnselGroup = Usr_CAN_NOT;
break;
}
@ -430,7 +430,7 @@ static void Grp_PutCheckboxAllGrps (void)
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
HTM_INPUT_CHECKBOX ("AllGroups",HTM_DONT_SUBMIT_ON_CHANGE,
"value=\"Y\"%s",
ICanSelUnselGroup == Usr_I_CAN ? (Gbl.Crs.Grps.AllGrps ? " checked=\"checked\""
ICanSelUnselGroup == Usr_CAN ? (Gbl.Crs.Grps.AllGrps ? " checked=\"checked\""
" onclick=\"togglecheckChildren(this,'GrpCods')\"" :
" onclick=\"togglecheckChildren(this,'GrpCods')\"") :
" disabled=\"disabled\"");
@ -633,7 +633,7 @@ void Grp_ChangeMyGrps (Cns_QuietOrVerbose_t QuietOrVerbose)
bool ChangesMade;
/***** Can I change my groups? *****/
if (Grp_CheckIfICanChangeGrps () == Usr_I_CAN_NOT)
if (Grp_CheckIfICanChangeGrps () == Usr_CAN_NOT)
return;
/***** Get list of groups types and groups in this course *****/
@ -692,7 +692,7 @@ void Grp_ChangeOtherUsrGrps (void)
bool SelectionIsValid;
/***** Can I change another user's groups? *****/
if (Grp_CheckIfICanChangeGrps () == Usr_I_CAN_NOT)
if (Grp_CheckIfICanChangeGrps () == Usr_CAN_NOT)
return;
/***** Get list of groups types and groups in current course *****/
@ -1723,15 +1723,15 @@ void Grp_ShowLstGrpsToChgMyGrps (void)
unsigned NumGrpsIBelong = 0;
Frm_PutForm_t PutFormToChangeGrps = Frm_CheckIfInside () ? Frm_DONT_PUT_FORM : // Inside another form (record card)?
Frm_PUT_FORM;
Usr_ICan_t ICanEdit = (!Frm_CheckIfInside () &&
Usr_Can_t ICanEdit = (!Frm_CheckIfInside () &&
(Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Usr_ICan_t ICanChangeMyGrps = Usr_I_CAN_NOT;
static void (*FunctionToDrawContextualIcons[Usr_NUM_I_CAN]) (void *Args) =
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_CAN :
Usr_CAN_NOT;
Usr_Can_t ICanChangeMyGrps = Usr_CAN_NOT;
static void (*FunctionToDrawContextualIcons[Usr_NUM_CAN]) (void *Args) =
{
[Usr_I_CAN_NOT] = NULL,
[Usr_I_CAN ] = Grp_PutIconToEditGroups,
[Usr_CAN_NOT] = NULL,
[Usr_CAN ] = Grp_PutIconToEditGroups,
};
if (Gbl.Crs.Grps.NumGrps) // This course has groups
@ -1764,8 +1764,8 @@ void Grp_ShowLstGrpsToChgMyGrps (void)
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) // If there are groups of this type
{
if (Grp_ListGrpsForChangeMySelection (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
&NumGrpsThisTypeIBelong) == Usr_I_CAN)
ICanChangeMyGrps = Usr_I_CAN;
&NumGrpsThisTypeIBelong) == Usr_CAN)
ICanChangeMyGrps = Usr_CAN;
NumGrpsIBelong += NumGrpsThisTypeIBelong;
}
HTM_TABLE_End ();
@ -1773,7 +1773,7 @@ void Grp_ShowLstGrpsToChgMyGrps (void)
/***** End form *****/
if (PutFormToChangeGrps)
{
if (ICanChangeMyGrps == Usr_I_CAN)
if (ICanChangeMyGrps == Usr_CAN)
Btn_PutConfirmButton (NumGrpsIBelong ? Txt_Change_my_groups :
Txt_Enrol_in_groups);
Frm_EndForm ();
@ -1842,7 +1842,7 @@ static void Grp_ShowWarningToStdsToChangeGrps (void)
/*****************************************************************************/
// Returns true if I can change my selection
static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
unsigned *NumGrpsThisTypeIBelong)
{
struct ListCodGrps LstGrpsIBelong;
@ -1850,8 +1850,8 @@ static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
struct Group *Grp;
bool IBelongToThisGroup;
bool IBelongToAClosedGroup;
Usr_ICan_t ICanChangeMySelectionForThisGrpTyp;
Usr_ICan_t ICanChangeMySelectionForThisGrp;
Usr_Can_t ICanChangeMySelectionForThisGrpTyp;
Usr_Can_t ICanChangeMySelectionForThisGrp;
char StrGrpCod[32];
/***** Write heading *****/
@ -1868,9 +1868,9 @@ static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
case Rol_STD:
if (GrpTyp->MultipleEnrolment) // Enrolment is multiple
{
for (NumGrpThisType = 0, ICanChangeMySelectionForThisGrpTyp = Usr_I_CAN_NOT;
for (NumGrpThisType = 0, ICanChangeMySelectionForThisGrpTyp = Usr_CAN_NOT;
NumGrpThisType < GrpTyp->NumGrps &&
ICanChangeMySelectionForThisGrpTyp == Usr_I_CAN_NOT;
ICanChangeMySelectionForThisGrpTyp == Usr_CAN_NOT;
NumGrpThisType++)
{
Grp = &(GrpTyp->LstGrps[NumGrpThisType]);
@ -1878,10 +1878,10 @@ static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
{
IBelongToThisGroup = Grp_CheckIfGrpIsInList (Grp->GrpCod,&LstGrpsIBelong);
if (IBelongToThisGroup) // I belong to this group
ICanChangeMySelectionForThisGrpTyp = Usr_I_CAN; // I can unregister from group
ICanChangeMySelectionForThisGrpTyp = Usr_CAN; // I can unregister from group
else // I don't belong
if (Grp->NumUsrs[Rol_STD] < Grp->MaxStudents) // Group is not full
ICanChangeMySelectionForThisGrpTyp = Usr_I_CAN; // I can register into group
ICanChangeMySelectionForThisGrpTyp = Usr_CAN; // I can register into group
}
}
}
@ -1902,12 +1902,12 @@ static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
}
if (IBelongToAClosedGroup) // I belong to a closed group
ICanChangeMySelectionForThisGrpTyp = Usr_I_CAN_NOT; // I can not unregister
ICanChangeMySelectionForThisGrpTyp = Usr_CAN_NOT; // I can not unregister
else // I don't belong to a closed group
/* Step 2: Check if I can register in at least one group to which I don't belong */
for (NumGrpThisType = 0, ICanChangeMySelectionForThisGrpTyp = Usr_I_CAN_NOT;
for (NumGrpThisType = 0, ICanChangeMySelectionForThisGrpTyp = Usr_CAN_NOT;
NumGrpThisType < GrpTyp->NumGrps &&
ICanChangeMySelectionForThisGrpTyp == Usr_I_CAN_NOT;
ICanChangeMySelectionForThisGrpTyp == Usr_CAN_NOT;
NumGrpThisType++)
{
Grp = &(GrpTyp->LstGrps[NumGrpThisType]);
@ -1916,17 +1916,17 @@ static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
{
IBelongToThisGroup = Grp_CheckIfGrpIsInList (Grp->GrpCod,&LstGrpsIBelong);
if (!IBelongToThisGroup) // I don't belong to this group
ICanChangeMySelectionForThisGrpTyp = Usr_I_CAN; // I can register into this group
ICanChangeMySelectionForThisGrpTyp = Usr_CAN; // I can register into this group
}
}
}
break;
case Rol_TCH:
case Rol_SYS_ADM:
ICanChangeMySelectionForThisGrpTyp = Usr_I_CAN; // I can not register/unregister
ICanChangeMySelectionForThisGrpTyp = Usr_CAN; // I can not register/unregister
break;
default:
ICanChangeMySelectionForThisGrpTyp = Usr_I_CAN_NOT; // I can not register/unregister
ICanChangeMySelectionForThisGrpTyp = Usr_CAN_NOT; // I can not register/unregister
break;
}
@ -1941,25 +1941,25 @@ static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
/* Selection disabled? */
switch (ICanChangeMySelectionForThisGrpTyp) // I can change my selection for this group type
{
case Usr_I_CAN:
ICanChangeMySelectionForThisGrp = Usr_I_CAN;
case Usr_CAN:
ICanChangeMySelectionForThisGrp = Usr_CAN;
if (Gbl.Usrs.Me.Role.Logged == Rol_STD)
switch (Grp->ClosedOrOpen)
{
case CloOpe_OPEN: // If group is open
if (!IBelongToThisGroup && // I don't belong to group
Grp->NumUsrs[Rol_STD] >= Grp->MaxStudents) // Group is full
ICanChangeMySelectionForThisGrp = Usr_I_CAN_NOT;
ICanChangeMySelectionForThisGrp = Usr_CAN_NOT;
break;
case CloOpe_CLOSED: // If group is closed
default:
ICanChangeMySelectionForThisGrp = Usr_I_CAN_NOT;
ICanChangeMySelectionForThisGrp = Usr_CAN_NOT;
break;
}
break;
case Usr_I_CAN_NOT: // I can not change my selection for this group type
case Usr_CAN_NOT: // I can not change my selection for this group type
default:
ICanChangeMySelectionForThisGrp = Usr_I_CAN_NOT;
ICanChangeMySelectionForThisGrp = Usr_CAN_NOT;
break;
}
@ -1980,7 +1980,7 @@ static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
"id=\"Grp%ld\" value=\"%ld\"%s%s",
Grp->GrpCod,Grp->GrpCod,
IBelongToThisGroup ? " checked=\"checked\"" : "", // Group selected?
ICanChangeMySelectionForThisGrp == Usr_I_CAN ? "" :
ICanChangeMySelectionForThisGrp == Usr_CAN ? "" :
IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted)
" disabled=\"disabled\""); // I can not register
else // If the enrolment is not mandatory, I can select no groups
@ -1989,7 +1989,7 @@ static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
" onclick=\"selectUnselectRadio(this,this.form.GrpCod%ld,%u)\"",
Grp->GrpCod,Grp->GrpCod,
IBelongToThisGroup ? " checked=\"checked\"" : "", // Group selected?
ICanChangeMySelectionForThisGrp == Usr_I_CAN ? "" :
ICanChangeMySelectionForThisGrp == Usr_CAN ? "" :
IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted)
" disabled=\"disabled\"", // I can not register
GrpTyp->GrpTypCod,GrpTyp->NumGrps);
@ -2000,7 +2000,7 @@ static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
"id=\"Grp%ld\" value=\"%ld\"%s%s",
Grp->GrpCod,Grp->GrpCod,
IBelongToThisGroup ? " checked=\"checked\"" : "",
ICanChangeMySelectionForThisGrp == Usr_I_CAN ? "" :
ICanChangeMySelectionForThisGrp == Usr_CAN ? "" :
IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted)
" disabled=\"disabled\""); // I can not register
@ -2126,7 +2126,7 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp)
unsigned NumGrpSel;
struct ListCodGrps LstGrpsIBelong;
bool IBelongToThisGroup;
Usr_ICan_t ICanSelUnselGroup;
Usr_Can_t ICanSelUnselGroup;
bool Checked;
struct Group *Grp;
Rol_Role_t Role;
@ -2151,24 +2151,24 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp)
/* Check if I can select / unselect this group */
if (IBelongToThisGroup)
ICanSelUnselGroup = Usr_I_CAN;
ICanSelUnselGroup = Usr_CAN;
else
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_STD:
case Rol_NET:
ICanSelUnselGroup = IBelongToThisGroup ? Usr_I_CAN :
Usr_I_CAN_NOT;
ICanSelUnselGroup = IBelongToThisGroup ? Usr_CAN :
Usr_CAN_NOT;
break;
case Rol_TCH:
case Rol_DEG_ADM:
case Rol_CTR_ADM:
case Rol_INS_ADM:
case Rol_SYS_ADM:
ICanSelUnselGroup = Usr_I_CAN;
ICanSelUnselGroup = Usr_CAN;
break;
default:
ICanSelUnselGroup = Usr_I_CAN_NOT;
ICanSelUnselGroup = Usr_CAN_NOT;
break;
}
@ -2195,7 +2195,7 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp)
Grp->GrpCod,Grp->GrpCod,
Checked ? " checked=\"checked\"" :
"",
ICanSelUnselGroup == Usr_I_CAN ? " onclick=\"checkParent(this,'AllGroups')\"" :
ICanSelUnselGroup == Usr_CAN ? " onclick=\"checkParent(this,'AllGroups')\"" :
" disabled=\"disabled\"");
HTM_TD_End ();
@ -2211,11 +2211,11 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp)
/***** Write rows to select the students who don't belong to any group *****/
/* To get the students who don't belong to a type of group, use group code -(GrpTyp->GrpTypCod) */
/* Write checkbox to select the group */
ICanSelUnselGroup = (Gbl.Usrs.Me.Role.Logged >= Rol_STD) ? Usr_I_CAN :
Usr_I_CAN_NOT;
ICanSelUnselGroup = (Gbl.Usrs.Me.Role.Logged >= Rol_STD) ? Usr_CAN :
Usr_CAN_NOT;
switch (ICanSelUnselGroup)
{
case Usr_I_CAN:
case Usr_CAN:
if (Gbl.Crs.Grps.AllGrps)
Checked = true;
else
@ -2228,7 +2228,7 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp)
break;
}
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Checked = false;
break;
@ -2241,7 +2241,7 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp)
"id=\"Grp%ld\" value=\"%ld\"%s"
" onclick=\"checkParent(this,'AllGroups')\"",
-GrpTyp->GrpTypCod,-GrpTyp->GrpTypCod,
ICanSelUnselGroup == Usr_I_CAN ? (Checked ? " checked=\"checked\"" :
ICanSelUnselGroup == Usr_CAN ? (Checked ? " checked=\"checked\"" :
"") :
" disabled=\"disabled\"");
HTM_TD_End ();
@ -3087,7 +3087,7 @@ bool Grp_CheckIfUsrSharesAnyOfMyGrpsInCurrentCrs (const struct Usr_Data *UsrDat)
return false;
/***** 4. Fast check: Do I belong to the current course? *****/
if (!Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS])
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] == Usr_DONT_BELONG)
return false;
/***** 5. Fast check: It's me? *****/
@ -4376,8 +4376,8 @@ Grp_WhichGroups_t Grp_GetParWhichGroups (void)
If I belong to this course ==> see only my groups
If I don't belong to this course ==> see all groups
*/
WhichGroupsDefault = Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] ? Grp_MY_GROUPS :
Grp_ALL_GROUPS;
WhichGroupsDefault = (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] == Usr_BELONG) ? Grp_MY_GROUPS :
Grp_ALL_GROUPS;
break;
case ActSeeMyTT: // Show my timetable
case ActPrnMyTT: // Print my timetable

View File

@ -130,34 +130,36 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
{
if (Gbl.Hierarchy.Level == Hie_CRS) // Course selected
{
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS]) // I belong to this course
{
if (Gbl.Action.Act != ActLogIn &&
Gbl.Action.Act != ActLogInNew &&
Gbl.Action.Act != ActLogInLan) // I am not just logged
if (ActionsRemoveMe[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs] != ActUnk)
{
/***** Request my removing from this course *****/
if (asprintf (&Description,Txt_Remove_me_from_THE_COURSE_X,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName) < 0)
Err_NotEnoughMemoryExit ();
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Description,
ActionsRemoveMe[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs],
Btn_REMOVE_BUTTON,Txt_Remove_me);
free (Description);
}
}
else // I do not belong to this course
{
/***** Request my registration in this course *****/
if (asprintf (&Description,Txt_Register_me_in_X,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName) < 0)
Err_NotEnoughMemoryExit ();
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Description,
ActReqSignUp,
Btn_CREATE_BUTTON,Txt_Sign_up);
free (Description);
}
switch (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS])
{
case Usr_BELONG: // I belong to this course
if (Gbl.Action.Act != ActLogIn &&
Gbl.Action.Act != ActLogInNew &&
Gbl.Action.Act != ActLogInLan) // I am not just logged
if (ActionsRemoveMe[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs] != ActUnk)
{
/***** Request my removing from this course *****/
if (asprintf (&Description,Txt_Remove_me_from_THE_COURSE_X,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName) < 0)
Err_NotEnoughMemoryExit ();
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Description,
ActionsRemoveMe[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs],
Btn_REMOVE_BUTTON,Txt_Remove_me);
free (Description);
}
break;
case Usr_DONT_BELONG: // I do not belong to this course
default:
/***** Request my registration in this course *****/
if (asprintf (&Description,Txt_Register_me_in_X,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName) < 0)
Err_NotEnoughMemoryExit ();
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Description,
ActReqSignUp,
Btn_CREATE_BUTTON,Txt_Sign_up);
free (Description);
break;
}
}
if (Gbl.Usrs.Me.Hierarchy[Hie_CRS].Num) // I am enroled in some courses

View File

@ -605,8 +605,7 @@ void Hie_ResetHierarchy (void)
Gbl.Hierarchy.Node[Level].ShrtName[0] =
Gbl.Hierarchy.Node[Level].FullName[0] = '\0';
Gbl.Hierarchy.Node[Level].WWW[0] = '\0';
Gbl.Usrs.Me.IBelongToCurrent[Level] = false;
Gbl.Usrs.Me.IBelongToCurrent[Level] = Usr_DONT_BELONG;
}
Gbl.Hierarchy.Node[Hie_CTR].Specific.PlcCod = -1L;
Gbl.Hierarchy.Node[Hie_DEG].Specific.TypCod = -1L;
@ -707,23 +706,23 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
/****************** Check if I can edit hierarchy elements *******************/
/*****************************************************************************/
Usr_ICan_t Hie_CheckIfICanEdit (void)
Usr_Can_t Hie_CheckIfICanEdit (void)
{
// Some admins can edit all hierarchy elements.
// Any user can edit the elements he/she has created...
// ...as long as they are in pending status.
static Usr_ICan_t ICanEdit[Rol_NUM_ROLES] =
static Usr_Can_t ICanEdit[Rol_NUM_ROLES] =
{
/* Users who can edit */
[Rol_GST ] = Usr_I_CAN,
[Rol_USR ] = Usr_I_CAN,
[Rol_STD ] = Usr_I_CAN,
[Rol_NET ] = Usr_I_CAN,
[Rol_TCH ] = Usr_I_CAN,
[Rol_DEG_ADM] = Usr_I_CAN,
[Rol_CTR_ADM] = Usr_I_CAN,
[Rol_INS_ADM] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_GST ] = Usr_CAN,
[Rol_USR ] = Usr_CAN,
[Rol_STD ] = Usr_CAN,
[Rol_NET ] = Usr_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_DEG_ADM] = Usr_CAN,
[Rol_CTR_ADM] = Usr_CAN,
[Rol_INS_ADM] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return ICanEdit[Gbl.Usrs.Me.Role.Logged];
@ -746,7 +745,7 @@ void Hie_WriteStatusCell (Hie_Status_t Status,
HTM_TD_End ();
}
void Hie_WriteStatusCellEditable (Usr_ICan_t ICanEdit,Hie_Status_t Status,
void Hie_WriteStatusCellEditable (Usr_Can_t ICanEdit,Hie_Status_t Status,
Act_Action_t NextAction,long HieCod,
const char *Txt[Hie_NUM_STATUS_TXT])
{
@ -755,7 +754,7 @@ void Hie_WriteStatusCellEditable (Usr_ICan_t ICanEdit,Hie_Status_t Status,
/***** Begin cell *****/
HTM_TD_Begin ("class=\"LM DAT_%s\"",The_GetSuffix ());
if (ICanEdit == Usr_I_CAN && StatusTxt == Hie_STATUS_PENDING)
if (ICanEdit == Usr_CAN && StatusTxt == Hie_STATUS_PENDING)
{
/* Begin form */
Frm_BeginForm (NextAction);
@ -906,7 +905,7 @@ void Hie_ResetMyHierarchy (void)
Gbl.Usrs.Me.Hierarchy[Level].Nodes = NULL;
Gbl.Usrs.Me.Hierarchy[Level].Num = 0;
Gbl.Usrs.Me.Hierarchy[Level].Filled = false;
Gbl.Usrs.Me.IBelongToCurrent[Level] = false;
Gbl.Usrs.Me.IBelongToCurrent[Level] = Usr_DONT_BELONG;
}
}
@ -1008,7 +1007,7 @@ void Hie_GetMyHierarchy (Hie_Level_t Level)
/****** Check if I belong to a course/degree/center/institution/country ******/
/*****************************************************************************/
bool Hie_CheckIfIBelongTo (Hie_Level_t Level,long HieCod)
Usr_Belong_t Hie_CheckIfIBelongTo (Hie_Level_t Level,long HieCod)
{
unsigned NumMyNode;
@ -1020,8 +1019,8 @@ bool Hie_CheckIfIBelongTo (Hie_Level_t Level,long HieCod)
NumMyNode < Gbl.Usrs.Me.Hierarchy[Level].Num;
NumMyNode++)
if (Gbl.Usrs.Me.Hierarchy[Level].Nodes[NumMyNode].HieCod == HieCod)
return true;
return false;
return Usr_BELONG;
return Usr_DONT_BELONG;
}
/*****************************************************************************/

View File

@ -49,12 +49,12 @@ void Hie_ResetHierarchy (void);
void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan);
Usr_ICan_t Hie_CheckIfICanEdit (void);
Usr_Can_t Hie_CheckIfICanEdit (void);
void Hie_WriteStatusCell (Hie_Status_t Status,
const char *Class,const char *BgColor,
const char *Txt[Hie_NUM_STATUS_TXT]);
void Hie_WriteStatusCellEditable (Usr_ICan_t ICanEdit,Hie_Status_t Status,
void Hie_WriteStatusCellEditable (Usr_Can_t ICanEdit,Hie_Status_t Status,
Act_Action_t NextAction,long HieCod,
const char *Txt[Hie_NUM_STATUS_TXT]);
Hie_Status_t Hie_GetParStatus (void);
@ -67,7 +67,7 @@ void Hie_FreeList (Hie_Level_t Level);
void Hie_ResetMyHierarchy (void);
void Hie_FreeMyHierarchy (void);
void Hie_GetMyHierarchy (Hie_Level_t Level);
bool Hie_CheckIfIBelongTo (Hie_Level_t Level,long HieCod);
Usr_Belong_t Hie_CheckIfIBelongTo (Hie_Level_t Level,long HieCod);
void Hie_FlushCacheUsrBelongsTo (Hie_Level_t Level);
bool Hie_CheckIfUsrBelongsTo (Hie_Level_t Level,long UsrCod,long HieCod,

View File

@ -60,7 +60,7 @@ static struct Hld_Holiday *Hld_EditingHld = NULL; // Static variable to keep the
/***************************** Private prototypes ****************************/
/*****************************************************************************/
static Usr_ICan_t Hld_CheckIfICanEditHlds (void);
static Usr_Can_t Hld_CheckIfICanEditHlds (void);
static Hld_Order_t Hld_GetParHldOrder (void);
static void Hld_PutIconsSeeHolidays (__attribute__((unused)) void *Args);
@ -88,13 +88,13 @@ static void Hld_EditingHolidayDestructor (void);
/************************ Check if I can edit holidays ***********************/
/*****************************************************************************/
static Usr_ICan_t Hld_CheckIfICanEditHlds (void)
static Usr_Can_t Hld_CheckIfICanEditHlds (void)
{
static Usr_ICan_t Hld_ICanEditHlds[Rol_NUM_ROLES] =
static Usr_Can_t Hld_ICanEditHlds[Rol_NUM_ROLES] =
{
/* Users who can edit */
[Rol_INS_ADM] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_INS_ADM] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return Hld_ICanEditHlds[Gbl.Usrs.Me.Role.Logged];
@ -241,7 +241,7 @@ static Hld_Order_t Hld_GetParHldOrder (void)
static void Hld_PutIconsSeeHolidays (__attribute__((unused)) void *Args)
{
/***** Edit holidays *****/
if (Hld_CheckIfICanEditHlds () == Usr_I_CAN)
if (Hld_CheckIfICanEditHlds () == Usr_CAN)
Ico_PutContextualIconToEdit (ActEdiHld,NULL,NULL,NULL);
/***** View calendar *****/

View File

@ -176,19 +176,19 @@ void Inf_ShowInfo (void)
struct Syl_Syllabus Syllabus;
struct Inf_FromDB FromDB;
bool Disabled;
Usr_ICan_t ICanEdit = (Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Usr_Can_t ICanEdit = (Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_CAN :
Usr_CAN_NOT;
bool ShowWarningNoInfo = false;
static void (*FunctionToDrawContextualIcons[Usr_NUM_I_CAN]) (void *Args) =
static void (*FunctionToDrawContextualIcons[Usr_NUM_CAN]) (void *Args) =
{
[Usr_I_CAN_NOT] = NULL,
[Usr_I_CAN ] = Inf_PutIconToEditInfo,
[Usr_CAN_NOT] = NULL,
[Usr_CAN ] = Inf_PutIconToEditInfo,
};
static void *Args[Usr_NUM_I_CAN] =
static void *Args[Usr_NUM_CAN] =
{
[Usr_I_CAN_NOT] = NULL,
[Usr_I_CAN ] = &Gbl.Crs.Info.Type,
[Usr_CAN_NOT] = NULL,
[Usr_CAN ] = &Gbl.Crs.Info.Type,
};
static const char **Help[Inf_NUM_TYPES] =
{

View File

@ -89,7 +89,7 @@ static void Ins_GetInstitDataFromRow (MYSQL_RES *mysql_res,
bool GetNumUsrsWhoClaimToBelongToIns);
static void Ins_ListInstitutionsForEdition (void);
static Usr_ICan_t Ins_CheckIfICanEdit (struct Hie_Node *Ins);
static Usr_Can_t Ins_CheckIfICanEdit (struct Hie_Node *Ins);
static void Ins_UpdateInsNameDB (long InsCod,const char *FldName,const char *NewName);
@ -331,7 +331,7 @@ static void Ins_ListInstitutions (void)
static void Ins_PutIconsListingInstitutions (__attribute__((unused)) void *Args)
{
/***** Put icon to edit institutions *****/
if (Hie_CheckIfICanEdit () == Usr_I_CAN)
if (Hie_CheckIfICanEdit () == Usr_CAN)
Ins_PutIconToEditInstitutions ();
/***** Put icon to show a figure *****/
@ -882,7 +882,7 @@ static void Ins_ListInstitutionsForEdition (void)
struct Hie_Node *Ins;
char WWW[Cns_MAX_BYTES_WWW + 1];
struct Usr_Data UsrDat;
Usr_ICan_t ICanEdit;
Usr_Can_t ICanEdit;
unsigned NumCtrs;
unsigned NumUsrsIns;
unsigned NumUsrsInCrssOfIns;
@ -918,7 +918,7 @@ static void Ins_ListInstitutionsForEdition (void)
/* Put icon to remove institution */
HTM_TD_Begin ("class=\"BT\"");
if (ICanEdit == Usr_I_CAN_NOT ||
if (ICanEdit == Usr_CAN_NOT ||
NumCtrs || // Institution has centers
NumUsrsIns || // Institution has users
NumUsrsInCrssOfIns) // Institution has users
@ -945,14 +945,14 @@ static void Ins_ListInstitutionsForEdition (void)
Nam_ExistingShortAndFullNames (ActionRename,
ParCod_OthHie,Ins->HieCod,
Names,
ICanEdit == Usr_I_CAN ? Frm_PUT_FORM :
ICanEdit == Usr_CAN ? Frm_PUT_FORM :
Frm_DONT_PUT_FORM);
/* Institution WWW */
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
switch (ICanEdit)
{
case Usr_I_CAN:
case Usr_CAN:
Frm_BeginForm (ActChgInsWWW);
ParCod_PutPar (ParCod_OthHie,Ins->HieCod);
HTM_INPUT_URL ("WWW",Ins->WWW,HTM_SUBMIT_ON_CHANGE,
@ -961,7 +961,7 @@ static void Ins_ListInstitutionsForEdition (void)
The_GetSuffix ());
Frm_EndForm ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Str_Copy (WWW,Ins->WWW,sizeof (WWW) - 1);
HTM_DIV_Begin ("class=\"EXTERNAL_WWW_SHRT\"");
@ -997,8 +997,8 @@ static void Ins_ListInstitutionsForEdition (void)
HTM_TD_End ();
/* Institution status */
Hie_WriteStatusCellEditable (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ? Usr_I_CAN :
Usr_I_CAN_NOT,
Hie_WriteStatusCellEditable (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ? Usr_CAN :
Usr_CAN_NOT,
Ins->Status,ActChgInsSta,Ins->HieCod,
Txt_INSTITUTION_STATUS);
@ -1016,12 +1016,12 @@ static void Ins_ListInstitutionsForEdition (void)
/************ Check if I can edit, remove, etc. an institution ***************/
/*****************************************************************************/
static Usr_ICan_t Ins_CheckIfICanEdit (struct Hie_Node *Ins)
static Usr_Can_t Ins_CheckIfICanEdit (struct Hie_Node *Ins)
{
return (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM || // I am a superuser
((Ins->Status & Hie_STATUS_BIT_PENDING) != 0 && // Institution is not yet activated
Gbl.Usrs.Me.UsrDat.UsrCod == Ins->RequesterUsrCod)) ? Usr_I_CAN : // I am the requester
Usr_I_CAN_NOT;
Gbl.Usrs.Me.UsrDat.UsrCod == Ins->RequesterUsrCod)) ? Usr_CAN : // I am the requester
Usr_CAN_NOT;
}
/*****************************************************************************/
@ -1045,7 +1045,7 @@ void Ins_RemoveInstitution (void)
Hie_GetDataByCod[Hie_INS] (Ins_EditingIns);
/***** Check if I can edit this institution *****/
if (Ins_CheckIfICanEdit (Ins_EditingIns) == Usr_I_CAN_NOT)
if (Ins_CheckIfICanEdit (Ins_EditingIns) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Check if this institution has centers or users *****/

View File

@ -71,7 +71,7 @@ static struct Lnk_Link *Lnk_EditingLnk = NULL; // Static variable to keep the li
/***************************** Private prototypes ****************************/
/*****************************************************************************/
static Usr_ICan_t Lnk_CheckIfICanEditLinks (void);
static Usr_Can_t Lnk_CheckIfICanEditLinks (void);
static void Lnk_PutIconsListingLinks (__attribute__((unused)) void *Args);
static void Lnk_PutIconToEditLinks (void);
@ -100,12 +100,12 @@ static void Lnk_EditingLinkDestructor (void);
/************************* Check if I can edit links *************************/
/*****************************************************************************/
static Usr_ICan_t Lnk_CheckIfICanEditLinks (void)
static Usr_Can_t Lnk_CheckIfICanEditLinks (void)
{
static Usr_ICan_t Lnk_ICanEditLinks[Rol_NUM_ROLES] =
static Usr_Can_t Lnk_ICanEditLinks[Rol_NUM_ROLES] =
{
/* Users who can edit */
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return Lnk_ICanEditLinks[Gbl.Usrs.Me.Role.Logged];
@ -149,7 +149,7 @@ void Lnk_SeeLinks (void)
static void Lnk_PutIconsListingLinks (__attribute__((unused)) void *Args)
{
/***** Put icon to edit links *****/
if (Lnk_CheckIfICanEditLinks () == Usr_I_CAN)
if (Lnk_CheckIfICanEditLinks () == Usr_CAN)
Lnk_PutIconToEditLinks ();
/***** Put icon to view banners *****/

View File

@ -1298,14 +1298,14 @@ void Mai_RemoveOtherUsrEmail (void)
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Remove user's email *****/
Mai_RemoveEmail (&Gbl.Usrs.Other.UsrDat);
/***** Show form again *****/
Acc_ShowFormChgOtherUsrAccount ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -1325,7 +1325,7 @@ static void Mai_RemoveEmail (struct Usr_Data *UsrDat)
switch (Usr_CheckIfICanEditOtherUsr (UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Get new email from form *****/
Par_GetParText ("Email",Email,Cns_MAX_BYTES_EMAIL_ADDRESS);
@ -1340,7 +1340,7 @@ static void Mai_RemoveEmail (struct Usr_Data *UsrDat)
/***** Update list of emails *****/
Mai_GetEmailFromUsrCod (UsrDat);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -1370,7 +1370,7 @@ void Mai_ChangeOtherUsrEmail (void)
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Change user's ID *****/
Mai_ChangeUsrEmail (&Gbl.Usrs.Other.UsrDat,
Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod));
@ -1378,7 +1378,7 @@ void Mai_ChangeOtherUsrEmail (void)
/***** Show form again *****/
Acc_ShowFormChgOtherUsrAccount ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -1401,7 +1401,7 @@ static void Mai_ChangeUsrEmail (struct Usr_Data *UsrDat,Usr_MeOrOther_t MeOrOthe
switch (Usr_CheckIfICanEditOtherUsr (UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Get new email from form *****/
Par_GetParText ("NewEmail",NewEmail,Cns_MAX_BYTES_EMAIL_ADDRESS);
@ -1441,7 +1441,7 @@ static void Mai_ChangeUsrEmail (struct Usr_Data *UsrDat,Usr_MeOrOther_t MeOrOthe
Txt_The_email_address_entered_X_is_not_valid,
NewEmail);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -1678,11 +1678,11 @@ void Mai_WriteFootNoteEMail (FILE *FileMail,Lan_Language_t Language)
/**************** Check if I can see another user's email ********************/
/*****************************************************************************/
Usr_ICan_t Mai_ICanSeeOtherUsrEmail (const struct Usr_Data *UsrDat)
Usr_Can_t Mai_ICanSeeOtherUsrEmail (const struct Usr_Data *UsrDat)
{
/***** I can see my email *****/
if (Usr_ItsMe (UsrDat->UsrCod) == Usr_ME)
return Usr_I_CAN;
return Usr_CAN;
/***** Check if I have permission to see another user's email *****/
switch (Gbl.Usrs.Me.Role.Logged)
@ -1692,40 +1692,40 @@ Usr_ICan_t Mai_ICanSeeOtherUsrEmail (const struct Usr_Data *UsrDat)
I can see the email of confirmed teachers */
return ((UsrDat->Roles.InCurrentCrs == Rol_NET || // A non-editing teacher
UsrDat->Roles.InCurrentCrs == Rol_TCH) && // or a teacher
UsrDat->Accepted) ? Usr_I_CAN : // who accepted registration
Usr_I_CAN_NOT;
UsrDat->Accepted) ? Usr_CAN : // who accepted registration
Usr_CAN_NOT;
case Rol_NET:
case Rol_TCH:
/* If I am a teacher in the current course,
I can see the email of confirmed students and teachers */
return (Enr_CheckIfUsrBelongsToCurrentCrs (UsrDat) && // A user belonging to the current course
UsrDat->Accepted) ? Usr_I_CAN : // who accepted registration
Usr_I_CAN_NOT;
UsrDat->Accepted) ? Usr_CAN : // who accepted registration
Usr_CAN_NOT;
case Rol_DEG_ADM:
/* If I am an administrator of current degree,
I only can see the user's email of users from current degree */
return Hie_CheckIfUsrBelongsTo (Hie_DEG,UsrDat->UsrCod,
Gbl.Hierarchy.Node[Hie_DEG].HieCod,
true) ? Usr_I_CAN : // count only accepted courses
Usr_I_CAN_NOT;
true) ? Usr_CAN : // count only accepted courses
Usr_CAN_NOT;
case Rol_CTR_ADM:
/* If I am an administrator of current center,
I only can see the user's email of users from current center */
return Hie_CheckIfUsrBelongsTo (Hie_CTR,UsrDat->UsrCod,
Gbl.Hierarchy.Node[Hie_CTR].HieCod,
true) ? Usr_I_CAN : // count only accepted courses
Usr_I_CAN_NOT;
true) ? Usr_CAN : // count only accepted courses
Usr_CAN_NOT;
case Rol_INS_ADM:
/* If I am an administrator of current institution,
I only can see the user's email of users from current institution */
return Hie_CheckIfUsrBelongsTo (Hie_INS,UsrDat->UsrCod,
Gbl.Hierarchy.Node[Hie_INS].HieCod,
true) ? Usr_I_CAN : // count only accepted courses
Usr_I_CAN_NOT;
true) ? Usr_CAN : // count only accepted courses
Usr_CAN_NOT;
case Rol_SYS_ADM:
return Usr_I_CAN;
return Usr_CAN;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}

View File

@ -100,7 +100,7 @@ void Mai_WriteWelcomeNoteEMail (FILE *FileMail,const struct Usr_Data *UsrDat,
Lan_Language_t ToUsrLanguage);
void Mai_WriteFootNoteEMail (FILE *FileMail,Lan_Language_t Language);
Usr_ICan_t Mai_ICanSeeOtherUsrEmail (const struct Usr_Data *UsrDat);
Usr_Can_t Mai_ICanSeeOtherUsrEmail (const struct Usr_Data *UsrDat);
int Mai_SendMailMsg (const char FileNameMail[PATH_MAX + 1],
const char *Subject,

View File

@ -147,7 +147,7 @@ int main (void)
Fir_CheckFirewallAndExitIfTooManyRequests ();
/***** Check if the user have permission to execute the action *****/
if (Act_CheckIfICanExecuteAction (Gbl.Action.Act) == Usr_I_CAN_NOT)
if (Act_CheckIfICanExecuteAction (Gbl.Action.Act) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Update most frequently used actions *****/

View File

@ -103,10 +103,10 @@ static void Mch_ListOneOrMoreMatches (struct Gam_Games *Games,
Frm_PutForm_t PutFormMatch,
unsigned NumMatches,
MYSQL_RES *mysql_res);
static void Mch_ListOneOrMoreMatchesHeading (Usr_ICan_t ICanEditMatches);
static Usr_ICan_t Mch_CheckIfICanEditMatches (void);
static Usr_ICan_t Mch_CheckIfICanEditThisMatch (const struct Mch_Match *Match);
static Usr_ICan_t Mch_CheckIfICanChangeVisibilityOfResults (const struct Mch_Match *Match);
static void Mch_ListOneOrMoreMatchesHeading (Usr_Can_t ICanEditMatches);
static Usr_Can_t Mch_CheckIfICanEditMatches (void);
static Usr_Can_t Mch_CheckIfICanEditThisMatch (const struct Mch_Match *Match);
static Usr_Can_t Mch_CheckIfICanChangeVisibilityOfResults (const struct Mch_Match *Match);
static void Mch_ListOneOrMoreMatchesIcons (struct Gam_Games *Games,
const struct Mch_Match *Match,
const char *Anchor);
@ -284,7 +284,7 @@ void Mch_ListMatches (struct Gam_Games *Games,
Hlp_ASSESSMENT_Games_matches,Box_NOT_CLOSABLE);
/***** Select whether show only my groups or all groups *****/
if (Gbl.Crs.Grps.NumGrps && Mch_CheckIfICanEditMatches () == Usr_I_CAN)
if (Gbl.Crs.Grps.NumGrps && Mch_CheckIfICanEditMatches () == Usr_CAN)
{
Set_BeginSettingsHead ();
Grp_ShowFormToSelWhichGrps (ActSeeOneGam,Gam_PutPars,Games);
@ -329,7 +329,7 @@ void Mch_GetMatchDataByCod (struct Mch_Match *Match)
static void Mch_PutIconsInListOfMatches (void *Games)
{
if (Games)
if (Mch_CheckIfICanEditMatches () == Usr_I_CAN)
if (Mch_CheckIfICanEditMatches () == Usr_CAN)
/***** Put icon to create a new match in current game *****/
Mch_PutIconToCreateNewMatch ((struct Gam_Games *) Games);
}
@ -357,7 +357,7 @@ static void Mch_ListOneOrMoreMatches (struct Gam_Games *Games,
unsigned UniqueId;
struct Mch_Match Match;
char *Anchor;
Usr_ICan_t ICanEditMatches = Mch_CheckIfICanEditMatches ();
Usr_Can_t ICanEditMatches = Mch_CheckIfICanEditMatches ();
long MchCodToBeEdited = PutFormMatch == Frm_PUT_FORM &&
Games->MchCod > 0 ? Games->MchCod :
-1L;
@ -380,7 +380,7 @@ static void Mch_ListOneOrMoreMatches (struct Gam_Games *Games,
/***** Get match data from row *****/
Mch_GetMatchDataFromRow (mysql_res,&Match);
if (Mch_CheckIfICanPlayThisMatchBasedOnGrps (&Match) == Usr_I_CAN)
if (Mch_CheckIfICanPlayThisMatchBasedOnGrps (&Match) == Usr_CAN)
{
/***** Build anchor string *****/
if (asprintf (&Anchor,"mch_%ld",Match.MchCod) < 0)
@ -390,7 +390,7 @@ static void Mch_ListOneOrMoreMatches (struct Gam_Games *Games,
HTM_TR_Begin (NULL);
/* Icons */
if (ICanEditMatches == Usr_I_CAN)
if (ICanEditMatches == Usr_CAN)
Mch_ListOneOrMoreMatchesIcons (Games,&Match,Anchor);
/* Start/end date/time */
@ -416,11 +416,11 @@ static void Mch_ListOneOrMoreMatches (struct Gam_Games *Games,
HTM_TR_End ();
/***** Third row for this match used for edition ****/
if (ICanEditMatches == Usr_I_CAN &&
if (ICanEditMatches == Usr_CAN &&
PutFormMatch == Frm_PUT_FORM && // Editing...
Match.MchCod == MchCodToBeEdited) // ...this match
/***** Check if I can edit this match *****/
if (Mch_CheckIfICanEditThisMatch (&Match) == Usr_I_CAN)
if (Mch_CheckIfICanEditThisMatch (&Match) == Usr_CAN)
{
HTM_TR_Begin (NULL);
HTM_TD_Begin ("colspan=\"7\" class=\"LT %s\"",
@ -436,7 +436,7 @@ static void Mch_ListOneOrMoreMatches (struct Gam_Games *Games,
}
/***** Put button to play a new match in this game *****/
if (ICanEditMatches == Usr_I_CAN &&
if (ICanEditMatches == Usr_CAN &&
PutFormMatch == Frm_PUT_FORM &&
MchCodToBeEdited <= 0)
{
@ -461,7 +461,7 @@ static void Mch_ListOneOrMoreMatches (struct Gam_Games *Games,
/***************** Put a column for match start and end times ****************/
/*****************************************************************************/
static void Mch_ListOneOrMoreMatchesHeading (Usr_ICan_t ICanEditMatches)
static void Mch_ListOneOrMoreMatchesHeading (Usr_Can_t ICanEditMatches)
{
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
extern const char *Txt_Match;
@ -473,7 +473,7 @@ static void Mch_ListOneOrMoreMatchesHeading (Usr_ICan_t ICanEditMatches)
HTM_TR_Begin (NULL);
/***** Column for icons *****/
if (ICanEditMatches == Usr_I_CAN)
if (ICanEditMatches == Usr_CAN)
HTM_TH_Empty (1);
/***** The rest of columns *****/
@ -494,13 +494,13 @@ static void Mch_ListOneOrMoreMatchesHeading (Usr_ICan_t ICanEditMatches)
/*********************** Check if I can edit matches *************************/
/*****************************************************************************/
static Usr_ICan_t Mch_CheckIfICanEditMatches (void)
static Usr_Can_t Mch_CheckIfICanEditMatches (void)
{
static Usr_ICan_t ICanEditMatches[Rol_NUM_ROLES] =
static Usr_Can_t ICanEditMatches[Rol_NUM_ROLES] =
{
[Rol_NET ] = Usr_I_CAN,
[Rol_TCH ] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_NET ] = Usr_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return ICanEditMatches[Gbl.Usrs.Me.Role.Logged];
@ -510,21 +510,21 @@ static Usr_ICan_t Mch_CheckIfICanEditMatches (void)
/***************** Check if I can edit (remove/resume) a match ***************/
/*****************************************************************************/
static Usr_ICan_t Mch_CheckIfICanEditThisMatch (const struct Mch_Match *Match)
static Usr_Can_t Mch_CheckIfICanEditThisMatch (const struct Mch_Match *Match)
{
if (Match->MchCod <= 0)
return Usr_I_CAN;
return Usr_CAN;
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_NET:
return (Match->UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) ? Usr_I_CAN : // Only if I am the creator
Usr_I_CAN_NOT;
return (Match->UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) ? Usr_CAN : // Only if I am the creator
Usr_CAN_NOT;
case Rol_TCH:
case Rol_SYS_ADM:
return Usr_I_CAN;
return Usr_CAN;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}
@ -532,13 +532,13 @@ static Usr_ICan_t Mch_CheckIfICanEditThisMatch (const struct Mch_Match *Match)
/*********** Check if visibility of match results can be changed *************/
/*****************************************************************************/
static Usr_ICan_t Mch_CheckIfICanChangeVisibilityOfResults (const struct Mch_Match *Match)
static Usr_Can_t Mch_CheckIfICanChangeVisibilityOfResults (const struct Mch_Match *Match)
{
if (Match->Status.ShowUsrResults || // Results are currently visible
Match->Status.Showing == Mch_END) // Match has finished
return Mch_CheckIfICanEditThisMatch (Match);
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
/*****************************************************************************/
@ -553,7 +553,7 @@ static void Mch_ListOneOrMoreMatchesIcons (struct Gam_Games *Games,
switch (Mch_CheckIfICanEditThisMatch (Match))
{
case Usr_I_CAN:
case Usr_CAN:
Games->MchCod = Match->MchCod;
/***** Put icon to remove the match *****/
@ -562,7 +562,7 @@ static void Mch_ListOneOrMoreMatchesIcons (struct Gam_Games *Games,
/***** Put icon to edit the match *****/
Ico_PutContextualIconToEdit (ActReqChgMch,Anchor,Mch_PutParsEdit,Games);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconRemovalNotAllowed ();
break;
@ -833,7 +833,7 @@ static void Mch_ListOneOrMoreMatchesResultTch (struct Gam_Games *Games,
Games->MchCod = Match->MchCod;
/***** Show match results *****/
if (Mch_CheckIfICanEditThisMatch (Match) == Usr_I_CAN)
if (Mch_CheckIfICanEditThisMatch (Match) == Usr_CAN)
Lay_PutContextualLinkOnlyIcon (ActSeeUsrMchResMch,MchRes_RESULTS_BOX_ID,
Mch_PutParsEdit,Games,
"trophy.svg",Ico_BLACK);
@ -841,7 +841,7 @@ static void Mch_ListOneOrMoreMatchesResultTch (struct Gam_Games *Games,
/***** Check if visibility of session results can be changed *****/
switch (Mch_CheckIfICanChangeVisibilityOfResults (Match))
{
case Usr_I_CAN:
case Usr_CAN:
/* I can edit visibility */
if (Match->Status.ShowUsrResults)
Lay_PutContextualLinkOnlyIcon (ActChgVisResMchUsr,NULL,
@ -852,7 +852,7 @@ static void Mch_ListOneOrMoreMatchesResultTch (struct Gam_Games *Games,
Mch_PutParsEdit,Games,
"eye-slash.svg",Ico_RED);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
/* I can not edit visibility */
if (Match->Status.ShowUsrResults)
@ -881,7 +881,7 @@ void Mch_ToggleVisResultsMchUsr (void)
Mch_GetAndCheckPars (&Games,&Match);
/***** Check if visibility of match results can be changed *****/
if (Mch_CheckIfICanChangeVisibilityOfResults (&Match) == Usr_I_CAN_NOT)
if (Mch_CheckIfICanChangeVisibilityOfResults (&Match) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Toggle visibility of match results *****/
@ -1029,7 +1029,7 @@ void Mch_RemoveMatch (void)
Mch_GetAndCheckPars (&Games,&Match);
/***** Check if I can remove this match *****/
if (Mch_CheckIfICanEditThisMatch (&Match) == Usr_I_CAN_NOT)
if (Mch_CheckIfICanEditThisMatch (&Match) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Remove the match from all database tables *****/
@ -1125,7 +1125,7 @@ void Mch_ReqCreatOrEditMatch (void)
Mch_GetAndCheckPars (&Games,&Match);
/***** Check if I can edit this match *****/
if (Mch_CheckIfICanEditThisMatch (&Match) == Usr_I_CAN_NOT)
if (Mch_CheckIfICanEditThisMatch (&Match) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Show game *****/
@ -1333,7 +1333,7 @@ void Mch_ChangeMatch (void)
Mch_GetAndCheckPars (&Games,&Match);
/***** Check if I can update this match *****/
if (Mch_CheckIfICanEditThisMatch (&Match) == Usr_I_CAN_NOT)
if (Mch_CheckIfICanEditThisMatch (&Match) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get match title and groups *****/
@ -1391,7 +1391,7 @@ void Mch_ResumeMatch (void)
Mch_GetMatchDataByCod (&Match);
/***** Check if I have permission to resume match *****/
if (Mch_CheckIfICanEditThisMatch (&Match) == Usr_I_CAN_NOT)
if (Mch_CheckIfICanEditThisMatch (&Match) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Update match status in database *****/
@ -1988,7 +1988,7 @@ static void Mch_ShowMatchStatusForStd (struct Mch_Match *Match,Mch_Update_t Upda
struct Mch_UsrAnswer UsrAnswer;
/***** Can I play this match? *****/
if (Mch_CheckIfICanPlayThisMatchBasedOnGrps (Match) == Usr_I_CAN_NOT)
if (Mch_CheckIfICanPlayThisMatchBasedOnGrps (Match) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get student's answer to this question
@ -2009,7 +2009,7 @@ static void Mch_ShowMatchStatusForStd (struct Mch_Match *Match,Mch_Update_t Upda
/************ Check if I belong to any of the groups of a match **************/
/*****************************************************************************/
Usr_ICan_t Mch_CheckIfICanPlayThisMatchBasedOnGrps (const struct Mch_Match *Match)
Usr_Can_t Mch_CheckIfICanPlayThisMatchBasedOnGrps (const struct Mch_Match *Match)
{
switch (Gbl.Usrs.Me.Role.Logged)
{
@ -2019,13 +2019,13 @@ Usr_ICan_t Mch_CheckIfICanPlayThisMatchBasedOnGrps (const struct Mch_Match *Matc
return Mch_DB_CheckIfICanPlayThisMatchBasedOnGrps (Match->MchCod);
case Rol_NET:
/***** Only if I am the creator *****/
return (Match->UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) ? Usr_I_CAN :
Usr_I_CAN_NOT;
return (Match->UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) ? Usr_CAN :
Usr_CAN_NOT;
case Rol_TCH:
case Rol_SYS_ADM:
return Usr_I_CAN;
return Usr_CAN;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}

View File

@ -126,7 +126,7 @@ void Mch_ToggleVisResultsMchQst (void);
void Mch_BackMatch (void);
void Mch_ForwardMatch (void);
Usr_ICan_t Mch_CheckIfICanPlayThisMatchBasedOnGrps (const struct Mch_Match *Match);
Usr_Can_t Mch_CheckIfICanPlayThisMatchBasedOnGrps (const struct Mch_Match *Match);
bool Mch_RegisterMeAsPlayerInMatch (struct Mch_Match *Match);

View File

@ -569,7 +569,7 @@ unsigned Mch_DB_GetGrpNamesAssociatedToMatch (MYSQL_RES **mysql_res,long MchCod)
/************ Check if I belong to any of the groups of a match **************/
/*****************************************************************************/
Usr_ICan_t Mch_DB_CheckIfICanPlayThisMatchBasedOnGrps (long MchCod)
Usr_Can_t Mch_DB_CheckIfICanPlayThisMatchBasedOnGrps (long MchCod)
{
return
DB_QueryEXISTS ("can not check if I can play a match",
@ -588,8 +588,8 @@ Usr_ICan_t Mch_DB_CheckIfICanPlayThisMatchBasedOnGrps (long MchCod)
" WHERE grp_users.UsrCod=%ld"
" AND grp_users.GrpCod=mch_groups.GrpCod)))",
MchCod,
Gbl.Usrs.Me.UsrDat.UsrCod) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Gbl.Usrs.Me.UsrDat.UsrCod) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/

View File

@ -66,7 +66,7 @@ void Mch_DB_AssociateGroupToMatch (long MchCod,long GrpCod);
unsigned Mch_DB_GetGrpCodsAssociatedToMatch (MYSQL_RES **mysql_res,long MchCod);
unsigned Mch_DB_GetGrpNamesAssociatedToMatch (MYSQL_RES **mysql_res,long MchCod);
Usr_ICan_t Mch_DB_CheckIfICanPlayThisMatchBasedOnGrps (long MchCod);
Usr_Can_t Mch_DB_CheckIfICanPlayThisMatchBasedOnGrps (long MchCod);
void Mch_DB_RemoveGroup (long GrpCod);
void Mch_DB_RemoveGroupsOfType (long GrpTypCod);

View File

@ -63,8 +63,8 @@ extern struct Globals Gbl;
struct MchRes_ICanView
{
Usr_ICan_t Result;
Usr_ICan_t Score;
Usr_Can_t Result;
Usr_Can_t Score;
};
/*****************************************************************************/
@ -304,7 +304,7 @@ static void MchRes_ListAllMchResultsInSelectedGames (struct Gam_Games *Games)
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,
Usr_DONT_GET_PREFS,
Usr_GET_ROLE_IN_CRS))
if (Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat) == Usr_CAN)
{
/***** Show matches results *****/
Gbl.Usrs.Other.UsrDat.Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (&Gbl.Usrs.Other.UsrDat);
@ -395,7 +395,7 @@ static void MchRes_ListAllMchResultsInGam (struct Gam_Games *Games)
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,
Usr_DONT_GET_PREFS,
Usr_GET_ROLE_IN_CRS))
if (Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat) == Usr_CAN)
{
/***** Show matches results *****/
Gbl.Usrs.Other.UsrDat.Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (&Gbl.Usrs.Other.UsrDat);
@ -467,7 +467,7 @@ static void MchRes_ListAllMchResultsInMch (struct Gam_Games *Games,long MchCod)
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,
Usr_DONT_GET_PREFS,
Usr_GET_ROLE_IN_CRS))
if (Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat) == Usr_CAN)
{
/***** Show matches results *****/
Gbl.Usrs.Other.UsrDat.Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (&Gbl.Usrs.Other.UsrDat);
@ -776,7 +776,7 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
HTM_TD_End ();
/* Accumulate questions and score */
if (ICanView.Score == Usr_I_CAN)
if (ICanView.Score == Usr_CAN)
{
NumTotalQsts.All += Print.NumQsts.All;
NumTotalQsts.NotBlank += Print.NumQsts.NotBlank;
@ -788,10 +788,10 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
HTM_Unsigned (Print.NumQsts.All);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -803,13 +803,13 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
if (Print.NumQsts.NotBlank)
HTM_Unsigned (Print.NumQsts.NotBlank);
else
HTM_Light0 ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -822,13 +822,13 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
NumQstsBlank = Print.NumQsts.All - Print.NumQsts.NotBlank;
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
if (NumQstsBlank)
HTM_Unsigned (NumQstsBlank);
else
HTM_Light0 ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -840,12 +840,12 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
HTM_Double2Decimals (Print.Score);
HTM_Txt ("/");
HTM_Unsigned (Print.NumQsts.All);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -857,12 +857,12 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
HTM_Double2Decimals (Print.NumQsts.All ? Print.Score /
(double) Print.NumQsts.All :
0.0);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -874,13 +874,13 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
The_GetSuffix (),The_GetColorRows ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
Grade = TstPrn_ComputeGrade (Print.NumQsts.All,Print.Score,
Games->Game.MaxGrade);
TstPrn_ShowGrade (Grade,Games->Game.MaxGrade);
TotalGrade += Grade;
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -892,7 +892,7 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
The_GetColorRows ());
switch (ICanView.Result)
{
case Usr_I_CAN:
case Usr_CAN:
Games->Game.GamCod = Match.GamCod;
Games->MchCod = Match.MchCod;
switch (MeOrOther)
@ -911,7 +911,7 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
}
Frm_EndForm ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -1108,7 +1108,7 @@ void MchRes_ShowOneMchResult (void)
/***** Check if I can view this match result and score *****/
MchRes_CheckIfICanViewMatchResult (&Games.Game,&Match,UsrDat->UsrCod,&ICanView);
if (ICanView.Result == Usr_I_CAN_NOT)
if (ICanView.Result == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get questions and user's answers of the match result from database *****/
@ -1128,7 +1128,7 @@ void MchRes_ShowOneMchResult (void)
Usr_DONT_GET_PREFS,
Usr_GET_ROLE_IN_CRS))
Err_WrongUserExit ();
if (Usr_CheckIfICanViewTstExaMchResult (UsrDat) == Usr_I_CAN_NOT)
if (Usr_CheckIfICanViewTstExaMchResult (UsrDat) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/* Get if user has accepted enrolment */
@ -1227,14 +1227,14 @@ void MchRes_ShowOneMchResult (void)
The_GetSuffix ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
HTM_STRONG_Begin ();
HTM_Double2Decimals (Print.Score);
HTM_Txt ("/");
HTM_Unsigned (Print.NumQsts.All);
HTM_STRONG_End ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -1255,13 +1255,13 @@ void MchRes_ShowOneMchResult (void)
The_GetSuffix ());
switch (ICanView.Score)
{
case Usr_I_CAN:
case Usr_CAN:
HTM_STRONG_Begin ();
TstPrn_ComputeAndShowGrade (Print.NumQsts.All,Print.Score,
Games.Game.MaxGrade);
HTM_STRONG_End ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ico_PutIconNotVisible ();
break;
@ -1315,21 +1315,21 @@ static void MchRes_CheckIfICanViewMatchResult (const struct Gam_Game *Game,
// Depends on visibility of game and result (eye icons)
ICanView->Result = (Game->HiddenOrVisible == HidVis_VISIBLE && // The game is visible
Match->Status.ShowUsrResults && // The results of the match are visible to users
Usr_ItsMe (UsrCod) == Usr_ME) ? Usr_I_CAN : // The result is mine
Usr_I_CAN_NOT;
Usr_ItsMe (UsrCod) == Usr_ME) ? Usr_CAN : // The result is mine
Usr_CAN_NOT;
// Whether I belong or not to groups of match is not checked here...
// ...because I should be able to see old matches made in old groups to which I belonged
switch (ICanView->Result)
{
case Usr_I_CAN:
case Usr_CAN:
// Depends on 5 visibility icons associated to game
ICanView->Score = TstVis_IsVisibleTotalScore (Game->Visibility) ? Usr_I_CAN :
Usr_I_CAN_NOT;
ICanView->Score = TstVis_IsVisibleTotalScore (Game->Visibility) ? Usr_CAN :
Usr_CAN_NOT;
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
ICanView->Score = Usr_I_CAN_NOT;
ICanView->Score = Usr_CAN_NOT;
break;
}
break;
@ -1340,11 +1340,11 @@ static void MchRes_CheckIfICanViewMatchResult (const struct Gam_Game *Game,
case Rol_INS_ADM:
case Rol_SYS_ADM:
ICanView->Result =
ICanView->Score = Usr_I_CAN;
ICanView->Score = Usr_CAN;
break;
default:
ICanView->Result =
ICanView->Score = Usr_I_CAN_NOT;
ICanView->Score = Usr_CAN_NOT;
break;
}
}

View File

@ -227,7 +227,7 @@ Act_Action_t Mnu_GetFirstActionAvailableInCurrentTab (void)
{
if ((Action = Mnu_Menu[Gbl.Action.Tab][NumOptInMenu].Action) == 0)
return ActUnk;
if (Act_CheckIfICanExecuteAction (Action) == Usr_I_CAN)
if (Act_CheckIfICanExecuteAction (Action) == Usr_CAN)
return Action;
}
return ActUnk;
@ -264,7 +264,7 @@ void Mnu_WriteMenuThisTab (void)
Action = Mnu_Menu[Gbl.Action.Tab][NumOptInMenu].Action;
if (Action == 0) // At the end of each tab, actions are initialized to 0, so 0 marks the end of the menu
break;
if (Act_CheckIfICanExecuteAction (Action) == Usr_I_CAN)
if (Act_CheckIfICanExecuteAction (Action) == Usr_CAN)
{
IsTheSelectedAction = (Action == Act_GetSuperAction (Gbl.Action.Act));

View File

@ -249,7 +249,7 @@ static void Msg_PutFormMsgUsrs (Act_Action_t NextAction,
Messages->ShowOnlyOneRecipient = false;
GetUsrsInCrs = !Messages->ShowOnlyOneRecipient && // Show list of potential recipients
(Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] || // If there is a course selected and I belong to it
(Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] == Usr_BELONG || // If there is a course selected and I belong to it
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM);
if (GetUsrsInCrs)
{
@ -524,7 +524,7 @@ static void Msg_WriteFormUsrsIDsOrNicksOtherRecipients (void)
char Nickname[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1];
unsigned ColSpan;
bool StdsAndTchsWritten = Gbl.Hierarchy.Level == Hie_CRS && // Course selected
(Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] || // I belong to it
(Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] == Usr_BELONG || // I belong to it
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM);
/***** How many columns? *****/

View File

@ -425,7 +425,7 @@ void Nck_RemoveOtherUsrNick (void)
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Get nickname from form *****/
Par_GetParText ("Nick",NickWithoutArr,
Nck_MAX_BYTES_NICK_WITHOUT_ARROBA);
@ -441,7 +441,7 @@ void Nck_RemoveOtherUsrNick (void)
/***** Show user's account again *****/
Acc_ShowFormChgOtherUsrAccount ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -473,14 +473,14 @@ void Nck_ChangeOtherUsrNick (void)
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Update user's nickname *****/
Nck_ChangeUsrNick (&Gbl.Usrs.Other.UsrDat);
/***** Show user's account again *****/
Acc_ShowFormChgOtherUsrAccount ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;

View File

@ -78,7 +78,7 @@ static unsigned Not_MaxCharsURLOnScreen[Not_NUM_TYPES_LISTING] =
static void Not_PutLinkToRSSFile (void);
static Usr_ICan_t Not_CheckIfICanEditNotices (void);
static Usr_Can_t Not_CheckIfICanEditNotices (void);
static void Not_PutIconsListNotices (__attribute__((unused)) void *Args);
static void Not_PutIconToAddNewNotice (void);
static void Not_GetDataAndShowNotice (long NotCod);
@ -401,11 +401,11 @@ static void Not_PutLinkToRSSFile (void)
/*********************** Check if I can edit notices *************************/
/*****************************************************************************/
static Usr_ICan_t Not_CheckIfICanEditNotices (void)
static Usr_Can_t Not_CheckIfICanEditNotices (void)
{
return (Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/
@ -415,7 +415,7 @@ static Usr_ICan_t Not_CheckIfICanEditNotices (void)
static void Not_PutIconsListNotices (__attribute__((unused)) void *Args)
{
/***** Put icon to add a new notice *****/
if (Not_CheckIfICanEditNotices () == Usr_I_CAN)
if (Not_CheckIfICanEditNotices () == Usr_CAN)
Not_PutIconToAddNewNotice ();
/***** Put icon to show a figure *****/
@ -552,7 +552,7 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing,
/***** Write the date in the top part of the yellow note *****/
/* Write symbol to indicate if notice is obsolete or active */
if (TypeNoticesListing == Not_LIST_FULL_NOTICES)
if (Not_CheckIfICanEditNotices () == Usr_I_CAN)
if (Not_CheckIfICanEditNotices () == Usr_CAN)
{
/***** Icon to remove announcement *****/
Ico_PutContextualIconToRemove (ActReqRemNot,NULL,

View File

@ -178,11 +178,11 @@ void Pwd_UpdateOtherUsrPwd (void)
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Check and update password *****/
Pwd_CheckAndUpdateNewPwd (&Gbl.Usrs.Other.UsrDat);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;

View File

@ -141,11 +141,11 @@ static void Pho_ComputePhotoSize (const struct Pho_DegPhotos *DegPhotos,
/************** Check if I can change the photo of another user **************/
/*****************************************************************************/
Usr_ICan_t Pho_ICanChangeOtherUsrPhoto (struct Usr_Data *UsrDat)
Usr_Can_t Pho_ICanChangeOtherUsrPhoto (struct Usr_Data *UsrDat)
{
/***** I can change my photo *****/
if (Usr_ItsMe (UsrDat->UsrCod) == Usr_ME)
return Usr_I_CAN;
return Usr_CAN;
/***** Check if I have permission to change user's photo *****/
switch (Gbl.Usrs.Me.Role.Logged)
@ -153,19 +153,19 @@ Usr_ICan_t Pho_ICanChangeOtherUsrPhoto (struct Usr_Data *UsrDat)
case Rol_TCH:
/* A teacher can change the photo of confirmed students */
if (UsrDat->Roles.InCurrentCrs != Rol_STD) // Not a student
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
/* It's a student in this course,
check if he/she has accepted registration */
return (UsrDat->Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (UsrDat)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
return (UsrDat->Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (UsrDat)) ? Usr_CAN :
Usr_CAN_NOT;
case Rol_DEG_ADM:
case Rol_CTR_ADM:
case Rol_INS_ADM:
case Rol_SYS_ADM:
return Usr_CheckIfICanEditOtherUsr (UsrDat);
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}
@ -198,7 +198,7 @@ void Pho_PutIconToChangeUsrPhoto (struct Usr_Data *UsrDat)
"camera.svg",Ico_BLACK);
break;
case Usr_OTHER:
if (Pho_ICanChangeOtherUsrPhoto (UsrDat) == Usr_I_CAN)
if (Pho_ICanChangeOtherUsrPhoto (UsrDat) == Usr_CAN)
Lay_PutContextualLinkOnlyIcon (NextAction[UsrDat->Roles.InCurrentCrs],NULL,
Rec_PutParUsrCodEncrypted,NULL,
"camera.svg",Ico_BLACK);
@ -353,7 +353,7 @@ void Pho_SendPhotoUsr (void)
}
/***** Check if I have permission to change user's photo *****/
if (Pho_ICanChangeOtherUsrPhoto (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN_NOT)
if (Pho_ICanChangeOtherUsrPhoto (&Gbl.Usrs.Other.UsrDat) == Usr_CAN_NOT)
{
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
return;
@ -520,7 +520,7 @@ void Pho_ReqRemUsrPhoto (void)
Usr_DONT_GET_ROLE_IN_CRS))
switch (Pho_ICanChangeOtherUsrPhoto (&Gbl.Usrs.Other.UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Show current photo and help message *****/
if (Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL))
{
@ -541,7 +541,7 @@ void Pho_ReqRemUsrPhoto (void)
else
Ale_ShowAlert (Ale_INFO,Txt_The_photo_no_longer_exists);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -992,7 +992,7 @@ bool Pho_ShowingUsrPhotoIsAllowed (struct Usr_Data *UsrDat,
char PhotoURL[Cns_MAX_BYTES_WWW + 1])
{
/***** Photo is shown if I can see it, and it exists *****/
return (Pri_CheckIfICanView (UsrDat->PhotoVisibility,UsrDat) == Usr_I_CAN) ? Pho_BuildLinkToPhoto (UsrDat,PhotoURL) :
return (Pri_CheckIfICanView (UsrDat->PhotoVisibility,UsrDat) == Usr_CAN) ? Pho_BuildLinkToPhoto (UsrDat,PhotoURL) :
false;
}

View File

@ -95,7 +95,7 @@ struct Pho_DegPhotos
/***************************** Public prototypes *****************************/
/*****************************************************************************/
Usr_ICan_t Pho_ICanChangeOtherUsrPhoto (struct Usr_Data *UsrDat);
Usr_Can_t Pho_ICanChangeOtherUsrPhoto (struct Usr_Data *UsrDat);
void Pho_PutIconToChangeUsrPhoto (struct Usr_Data *UsrDat);
void Pho_ReqMyPhoto (void);
void Pho_SendPhotoUsr (void);

View File

@ -61,7 +61,7 @@ static struct Plc_Place *Plc_EditingPlc = NULL; // Static variable to keep the p
/***************************** Private prototypes ****************************/
/*****************************************************************************/
static Usr_ICan_t Plc_CheckIfICanEditPlaces (void);
static Usr_Can_t Plc_CheckIfICanEditPlaces (void);
static Plc_Order_t Plc_GetParPlcOrder (void);
static void Plc_PutIconsListingPlaces (__attribute__((unused)) void *Args);
@ -86,13 +86,13 @@ static void Plc_EditingPlaceDestructor (void);
/************************* Check if I can edit places ************************/
/*****************************************************************************/
static Usr_ICan_t Plc_CheckIfICanEditPlaces (void)
static Usr_Can_t Plc_CheckIfICanEditPlaces (void)
{
static Usr_ICan_t Plc_ICanEditPlaces[Rol_NUM_ROLES] =
static Usr_Can_t Plc_ICanEditPlaces[Rol_NUM_ROLES] =
{
/* Users who can edit */
[Rol_INS_ADM] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_INS_ADM] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return Plc_ICanEditPlaces[Gbl.Usrs.Me.Role.Logged];
@ -238,7 +238,7 @@ static Plc_Order_t Plc_GetParPlcOrder (void)
static void Plc_PutIconsListingPlaces (__attribute__((unused)) void *Args)
{
/***** Put icon to edit places *****/
if (Plc_CheckIfICanEditPlaces () == Usr_I_CAN)
if (Plc_CheckIfICanEditPlaces () == Usr_CAN)
Plc_PutIconToEditPlaces ();
}

View File

@ -249,40 +249,40 @@ Pri_Visibility_t Pri_GetParVisibility (const char *ParName,
/*********** Check if user's photo or public profile can be shown ************/
/*****************************************************************************/
Usr_ICan_t Pri_CheckIfICanView (Pri_Visibility_t Visibility,
Usr_Can_t Pri_CheckIfICanView (Pri_Visibility_t Visibility,
struct Usr_Data *UsrDat)
{
/***** I always can see my things *****/
if (Usr_ItsMe (UsrDat->UsrCod) == Usr_ME)
return Usr_I_CAN;
return Usr_CAN;
/***** System admins always can see others' profiles *****/
if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
return Usr_I_CAN;
return Usr_CAN;
/***** Check if I can see the other's photo *****/
switch (Visibility)
{
case Pri_VISIBILITY_UNKNOWN:
return Usr_I_CAN_NOT; // It's not me
return Usr_CAN_NOT; // It's not me
case Pri_VISIBILITY_USER: // Only visible
// by me and my teachers if I am a student
// or me and my students if I am a teacher
// Do both users share the same course but whit different role?
return Enr_DB_CheckIfUsrSharesAnyOfMyCrsWithDifferentRole (UsrDat->UsrCod) ? Usr_I_CAN :
Usr_I_CAN_NOT;
return Enr_DB_CheckIfUsrSharesAnyOfMyCrsWithDifferentRole (UsrDat->UsrCod) ? Usr_CAN :
Usr_CAN_NOT;
case Pri_VISIBILITY_COURSE: // Visible by users sharing courses with me
// Do both users share the same course?
return Enr_CheckIfUsrSharesAnyOfMyCrs (UsrDat) ? Usr_I_CAN :
Usr_I_CAN_NOT;
return Enr_CheckIfUsrSharesAnyOfMyCrs (UsrDat) ? Usr_CAN :
Usr_CAN_NOT;
case Pri_VISIBILITY_SYSTEM: // Visible by any user logged in platform
return Gbl.Usrs.Me.Logged ? Usr_I_CAN :
Usr_I_CAN_NOT;
return Gbl.Usrs.Me.Logged ? Usr_CAN :
Usr_CAN_NOT;
case Pri_VISIBILITY_WORLD: // Public, visible by everyone, even unlogged visitors
return Usr_I_CAN;
return Usr_CAN;
}
return Usr_I_CAN_NOT; // Never reached. To avoid warning
return Usr_CAN_NOT; // Never reached. To avoid warning
}
/*****************************************************************************/

View File

@ -65,7 +65,7 @@ Pri_Visibility_t Pri_GetVisibilityFromStr (const char *Str);
Pri_Visibility_t Pri_GetParVisibility (const char *ParName,
unsigned MaskAllowedVisibility);
Usr_ICan_t Pri_CheckIfICanView (Pri_Visibility_t Visibility,struct Usr_Data *UsrDat);
Usr_Can_t Pri_CheckIfICanView (Pri_Visibility_t Visibility,struct Usr_Data *UsrDat);
//-------------------------------- Figures ------------------------------------
void Pri_GetAndShowNumUsrsPerPrivacy (void);

View File

@ -289,7 +289,7 @@ bool Prf_ShowUsrProfile (struct Usr_Data *UsrDat)
Usr_MeOrOther_t MeOrOther = Usr_ItsMe (UsrDat->UsrCod);
/***** Check if I can see the public profile *****/
if (Pri_CheckIfICanView (UsrDat->BaPrfVisibility,UsrDat) == Usr_I_CAN)
if (Pri_CheckIfICanView (UsrDat->BaPrfVisibility,UsrDat) == Usr_CAN)
{
if (Gbl.Usrs.Me.Logged)
{
@ -314,7 +314,7 @@ bool Prf_ShowUsrProfile (struct Usr_Data *UsrDat)
Rec_ShowSharedUsrRecord (Rec_SHA_RECORD_PUBLIC,UsrDat,NULL);
/***** Extended profile *****/
if (Pri_CheckIfICanView (UsrDat->ExPrfVisibility,UsrDat) == Usr_I_CAN)
if (Pri_CheckIfICanView (UsrDat->ExPrfVisibility,UsrDat) == Usr_CAN)
{
/***** Show details of user's profile *****/
Prf_ShowDetailsUserProfile (UsrDat);
@ -1337,7 +1337,7 @@ static void Prf_ShowUsrInRanking (struct Usr_Data *UsrDat,unsigned Rank,
[PhoSha_SHAPE_OVAL ] = "PHOTOO30x40",
[PhoSha_SHAPE_RECTANGLE] = "PHOTOR30x40",
};
Usr_ICan_t ICanView = Pri_CheckIfICanView (UsrDat->BaPrfVisibility,UsrDat);
Usr_Can_t ICanView = Pri_CheckIfICanView (UsrDat->BaPrfVisibility,UsrDat);
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
Class[MeOrOther],
@ -1348,7 +1348,7 @@ static void Prf_ShowUsrInRanking (struct Usr_Data *UsrDat,unsigned Rank,
/***** Check if I can see the public profile *****/
HTM_TD_Begin ("class=\"RANK_PHOTO %s\"",The_GetColorRows ());
if (ICanView == Usr_I_CAN)
if (ICanView == Usr_CAN)
/***** User's photo *****/
Pho_ShowUsrPhotoIfAllowed (UsrDat,
ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM);
@ -1359,7 +1359,7 @@ static void Prf_ShowUsrInRanking (struct Usr_Data *UsrDat,unsigned Rank,
Class[MeOrOther],
The_GetSuffix (),
The_GetColorRows ());
if (ICanView == Usr_I_CAN)
if (ICanView == Usr_CAN)
{
Frm_BeginForm (ActSeeOthPubPrf);
Usr_PutParUsrCodEncrypted (UsrDat->EnUsrCod);

View File

@ -323,11 +323,11 @@ void Prg_ShowAllItems (Prg_ListingType_t ListingType,
/******************* Check if I can create program items *********************/
/*****************************************************************************/
Usr_ICan_t Prg_CheckIfICanEditProgram (void)
Usr_Can_t Prg_CheckIfICanEditProgram (void)
{
return (Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/
@ -337,7 +337,7 @@ Usr_ICan_t Prg_CheckIfICanEditProgram (void)
static void Prg_PutIconsListItems (__attribute__((unused)) void *Args)
{
/***** Put icon to edit program *****/
if (Prg_CheckIfICanEditProgram () == Usr_I_CAN)
if (Prg_CheckIfICanEditProgram () == Usr_CAN)
Prg_PutIconToEditProgram ();
/***** Put icon to show a figure *****/
@ -353,7 +353,7 @@ static void Prg_PutIconsEditItems (__attribute__((unused)) void *Args)
/***** Put icon to view program *****/
Prg_PutIconToViewProgram ();
if (Prg_CheckIfICanEditProgram () == Usr_I_CAN)
if (Prg_CheckIfICanEditProgram () == Usr_CAN)
{
/***** Put icon to create a new program item *****/
Prg_PutIconToCreateNewItem ();
@ -438,7 +438,7 @@ static void Prg_WriteRowItem (Prg_ListingType_t ListingType,
[ConExp_CONTRACTED] = "", // Not expanded
[ConExp_EXPANDED ] = " rowspan=\"2\"", // Expanded
};
HidVis_HiddenOrVisible_t HiddenOrVisible = HidVis_HIDDEN; // Initialized to avoid warning
HidVis_HiddenOrVisible_t HiddenOrVisible;
char *Id;
unsigned ColSpan;
unsigned NumCol;
@ -450,12 +450,13 @@ static void Prg_WriteRowItem (Prg_ListingType_t ListingType,
Prg_SetHiddenLevel (Item->Hierarchy.Level,Item->Hierarchy.HiddenOrVisible);
switch (Item->Hierarchy.HiddenOrVisible)
{
case HidVis_HIDDEN: // this item is marked as hidden
HiddenOrVisible = HidVis_HIDDEN;
break;
case HidVis_VISIBLE: // this item is not marked as hidden
HiddenOrVisible = Prg_CheckIfAnyHigherLevelIsHidden (Item->Hierarchy.Level);
break;
case HidVis_HIDDEN: // this item is marked as hidden
default:
HiddenOrVisible = HidVis_HIDDEN;
break;
}
if (ViewingOrEditingProgram[ListingType] == Vie_EDIT ||

View File

@ -121,7 +121,7 @@ void Prg_EditCourseProgram (void);
void Prg_ShowAllItems (Prg_ListingType_t ListingType,
long SelectedItmCod,long SelectedRscCod);
Usr_ICan_t Prg_CheckIfICanEditProgram (void);
Usr_Can_t Prg_CheckIfICanEditProgram (void);
void Prg_PutParItmCod (void *ItmCod);
void Prg_GetPars (struct Prg_Item *Item);

View File

@ -305,7 +305,7 @@ static void PrgRsc_PutIconsViewResources (void *ItmCod)
/***** Put icon to create a new item resource *****/
if (ItmCod)
if (*(long *) ItmCod > 0)
if (Prg_CheckIfICanEditProgram () == Usr_I_CAN)
if (Prg_CheckIfICanEditProgram () == Usr_CAN)
Ico_PutContextualIconToView (ActFrmSeePrgRsc,PrgRsc_RESOURCE_SECTION_ID,
Prg_PutParItmCod,ItmCod);
}
@ -315,7 +315,7 @@ static void PrgRsc_PutIconsEditResources (void *ItmCod)
/***** Put icon to create a new item resource *****/
if (ItmCod)
if (*(long *) ItmCod > 0)
if (Prg_CheckIfICanEditProgram () == Usr_I_CAN)
if (Prg_CheckIfICanEditProgram () == Usr_CAN)
Ico_PutContextualIconToEdit (ActFrmEdiPrgRsc,PrgRsc_RESOURCE_SECTION_ID,
Prg_PutParItmCod,ItmCod);
}
@ -895,7 +895,7 @@ static void PrgRsc_ShowClipboard (void)
static void PrgRsc_PutIconsClipboard (__attribute__((unused)) void *Args)
{
/***** Put icon to remove resource clipboard in program *****/
if (Prg_CheckIfICanEditProgram () == Usr_I_CAN)
if (Prg_CheckIfICanEditProgram () == Usr_CAN)
if (Rsc_DB_GetNumResourcesInClipboard ()) // Only if there are resources
Ico_PutContextualIconToRemove (ActRemRscCli_InPrg,NULL,
NULL,NULL);

View File

@ -189,7 +189,7 @@ static void Prj_ShowFormToFilterByWarning (const struct Prj_Projects *Projects);
static void Prj_ShowFormToFilterByReview (const struct Prj_Projects *Projects);
static void Prj_ShowFormToFilterByDpt (const struct Prj_Projects *Projects);
static Usr_ICan_t Prj_CheckIfICanViewProjectFiles (long PrjCod);
static Usr_Can_t Prj_CheckIfICanViewProjectFiles (long PrjCod);
static void Prj_PutParAssign (unsigned Assign);
static void Prj_PutParHidden (unsigned Hidden);
@ -205,7 +205,7 @@ static Usr_Who_t Prj_GetParWho (void);
static void Prj_ShowProjectsHead (struct Prj_Projects *Projects);
static void Prj_ShowTableAllProjectsHead (void);
static Usr_ICan_t Prj_CheckIfICanCreateProjects (const struct Prj_Projects *Projects);
static Usr_Can_t Prj_CheckIfICanCreateProjects (const struct Prj_Projects *Projects);
static void Prj_PutIconToCreateNewPrj (struct Prj_Projects *Projects);
static void Prj_PutIconToShowAllData (struct Prj_Projects *Projects);
@ -226,7 +226,7 @@ static void Prj_ShowReviewStatus (struct Prj_Projects *Projects,
const struct Prj_Faults *Faults,
const char *Anchor);
static void Prj_PutSelectorReviewStatus (struct Prj_Projects *Projects);
static Usr_ICan_t Prj_CheckIfICanReviewProjects (void);
static Usr_Can_t Prj_CheckIfICanReviewProjects (void);
static void Prj_ShowAssigned (const struct Prj_Projects *Projects,
const char *ClassLabel,
const char *ClassData,
@ -288,7 +288,7 @@ static Prj_Order_t Prj_GetParPrjOrder (void);
static void Prj_PutIconsToRemEditOnePrj (struct Prj_Projects *Projects,
const char *Anchor);
static Usr_ICan_t Prj_CheckIfICanEditProject (const struct Prj_Project *Prj);
static Usr_Can_t Prj_CheckIfICanEditProject (const struct Prj_Project *Prj);
static void Prj_GetListProjects (struct Prj_Projects *Projects);
@ -317,8 +317,8 @@ static Prj_ReviewStatus_t Prj_GetParReviewStatus (void);
static void Prj_ShowRubrics (struct Prj_Projects *Projects);
static void Prj_ShowRubricsOfType (struct Prj_Projects *Projects,
PrjCfg_RubricType_t RubricType);
static Usr_ICan_t Prj_CheckIfICanViewRubric (long PrjCod,PrjCfg_RubricType_t WhichRubric);
static Usr_ICan_t Prj_CheckIfICanFillRubric (long PrjCod,PrjCfg_RubricType_t WhichRubric);
static Usr_Can_t Prj_CheckIfICanViewRubric (long PrjCod,PrjCfg_RubricType_t WhichRubric);
static Usr_Can_t Prj_CheckIfICanFillRubric (long PrjCod,PrjCfg_RubricType_t WhichRubric);
/*****************************************************************************/
/******* Set/get project code (used to pass parameter to file browser) *******/
@ -864,19 +864,19 @@ static void Prj_ShowFormToFilterByDpt (const struct Prj_Projects *Projects)
/******************** Can I view files of a given project? *******************/
/*****************************************************************************/
static Usr_ICan_t Prj_CheckIfICanViewProjectFiles (long PrjCod)
static Usr_Can_t Prj_CheckIfICanViewProjectFiles (long PrjCod)
{
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_STD:
case Rol_NET:
return (Prj_GetMyRolesInProject (PrjCod) != 0) ? Usr_I_CAN : // Am I a member?
Usr_I_CAN_NOT;
return (Prj_GetMyRolesInProject (PrjCod) != 0) ? Usr_CAN : // Am I a member?
Usr_CAN_NOT;
case Rol_TCH: // Editing teachers in a course can access to all files
case Rol_SYS_ADM:
return Usr_I_CAN;
return Usr_CAN;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}
@ -884,19 +884,19 @@ static Usr_ICan_t Prj_CheckIfICanViewProjectFiles (long PrjCod)
/******** Check if I have permission to view project documents zone **********/
/*****************************************************************************/
Usr_ICan_t Prj_CheckIfICanViewProjectDocuments (long PrjCod)
Usr_Can_t Prj_CheckIfICanViewProjectDocuments (long PrjCod)
{
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_STD:
case Rol_NET:
return (Prj_GetMyRolesInProject (PrjCod) != 0) ? Usr_I_CAN : // Am I a member?
Usr_I_CAN_NOT;
return (Prj_GetMyRolesInProject (PrjCod) != 0) ? Usr_CAN : // Am I a member?
Usr_CAN_NOT;
case Rol_TCH: // Editing teachers in a course can access to all files
case Rol_SYS_ADM:
return Usr_I_CAN;
return Usr_CAN;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}
@ -904,20 +904,20 @@ Usr_ICan_t Prj_CheckIfICanViewProjectDocuments (long PrjCod)
/******** Check if I have permission to view project assessment zone *********/
/*****************************************************************************/
Usr_ICan_t Prj_CheckIfICanViewProjectAssessment (long PrjCod)
Usr_Can_t Prj_CheckIfICanViewProjectAssessment (long PrjCod)
{
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_STD:
case Rol_NET:
return ((Prj_GetMyRolesInProject (PrjCod) & (1 << Prj_ROLE_TUT | // Tutor...
1 << Prj_ROLE_EVL)) != 0) ? Usr_I_CAN : // ...or evaluator
Usr_I_CAN_NOT;
1 << Prj_ROLE_EVL)) != 0) ? Usr_CAN : // ...or evaluator
Usr_CAN_NOT;
case Rol_TCH: // Editing teachers in a course can access to all files
case Rol_SYS_ADM:
return Usr_I_CAN;
return Usr_CAN;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}
@ -1229,18 +1229,18 @@ static void Prj_ShowTableAllProjectsHead (void)
/********************** Check if I can create projects ***********************/
/*****************************************************************************/
static Usr_ICan_t Prj_CheckIfICanCreateProjects (const struct Prj_Projects *Projects)
static Usr_Can_t Prj_CheckIfICanCreateProjects (const struct Prj_Projects *Projects)
{
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_NET:
return Projects->Config.NETCanCreate ? Usr_I_CAN :
Usr_I_CAN_NOT;
return Projects->Config.NETCanCreate ? Usr_CAN :
Usr_CAN_NOT;
case Rol_TCH:
case Rol_SYS_ADM:
return Usr_I_CAN;
return Usr_CAN;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}
@ -1250,14 +1250,14 @@ static Usr_ICan_t Prj_CheckIfICanCreateProjects (const struct Prj_Projects *Proj
void Prj_PutIconsListProjects (void *Projects)
{
Usr_ICan_t ICanConfigAllProjects;
Usr_Can_t ICanConfigAllProjects;
if (Projects)
{
ICanConfigAllProjects = PrjCfg_CheckIfICanConfig ();
/***** Put icon to create a new project *****/
if (Prj_CheckIfICanCreateProjects ((struct Prj_Projects *) Projects) == Usr_I_CAN)
if (Prj_CheckIfICanCreateProjects ((struct Prj_Projects *) Projects) == Usr_CAN)
Prj_PutIconToCreateNewPrj ((struct Prj_Projects *) Projects);
if (((struct Prj_Projects *) Projects)->Num)
@ -1265,19 +1265,19 @@ void Prj_PutIconsListProjects (void *Projects)
/***** Put icon to show all data in a table *****/
Prj_PutIconToShowAllData ((struct Prj_Projects *) Projects);
if (ICanConfigAllProjects == Usr_I_CAN)
if (ICanConfigAllProjects == Usr_CAN)
/****** Put icons to request locking/unlocking edition
of all selected projects *******/
Prj_PutIconsToLockUnlockAllProjects ((struct Prj_Projects *) Projects);
}
/***** Put form to go to configuration of projects *****/
if (ICanConfigAllProjects == Usr_I_CAN)
if (ICanConfigAllProjects == Usr_CAN)
Ico_PutContextualIconToConfigure (ActCfgPrj,NULL,
NULL,NULL);
/***** Link to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkPrj,NULL,
Prj_PutCurrentPars,Projects);
@ -1362,7 +1362,7 @@ void Prj_ShowBoxWithOneProject (struct Prj_Projects *Projects)
HTM_FIELDSET_End ();
/***** Show project file browsers *****/
if (Prj_CheckIfICanViewProjectFiles (Projects->Prj.PrjCod) == Usr_I_CAN)
if (Prj_CheckIfICanViewProjectFiles (Projects->Prj.PrjCod) == Usr_CAN)
Brw_ShowFileBrowserProject (Projects->Prj.PrjCod);
/***** Show project rubrics *****/
@ -1518,10 +1518,10 @@ static void Prj_ShowFirstRow (struct Prj_Projects *Projects,
extern const char *HidVis_DateBlueClass[HidVis_NUM_HIDDEN_VISIBLE];
extern const char *HidVis_TitleClass[HidVis_NUM_HIDDEN_VISIBLE];
extern const char *Txt_Actions[ActLst_NUM_ACTIONS];
static Act_Action_t NextActions[Usr_NUM_I_CAN] =
static Act_Action_t NextActions[Usr_NUM_CAN] =
{
[Usr_I_CAN_NOT] = ActSeeOnePrj,
[Usr_I_CAN ] = ActAdmDocPrj,
[Usr_CAN_NOT] = ActSeeOnePrj,
[Usr_CAN ] = ActAdmDocPrj,
};
Act_Action_t NextAction;
char *Id;
@ -1709,7 +1709,7 @@ static void Prj_ShowReviewStatus (struct Prj_Projects *Projects,
PutForm = Frm_DONT_PUT_FORM;
break;
default:
PutForm = (Prj_CheckIfICanReviewProjects () == Usr_I_CAN) ? Frm_PUT_FORM :
PutForm = (Prj_CheckIfICanReviewProjects () == Usr_CAN) ? Frm_PUT_FORM :
Frm_DONT_PUT_FORM;
break;
}
@ -1875,12 +1875,12 @@ static void Prj_PutSelectorReviewStatus (struct Prj_Projects *Projects)
/**************************** Can I review projects? *************************/
/*****************************************************************************/
static Usr_ICan_t Prj_CheckIfICanReviewProjects (void)
static Usr_Can_t Prj_CheckIfICanReviewProjects (void)
{
static Usr_ICan_t ICanReviewProjects[Rol_NUM_ROLES] =
static Usr_Can_t ICanReviewProjects[Rol_NUM_ROLES] =
{
[Rol_TCH ] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return ICanReviewProjects[Gbl.Usrs.Me.Role.Logged];
@ -3052,7 +3052,7 @@ static void Prj_ReqRemUsrFromPrj (struct Prj_Projects *Projects,
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Prj_CheckIfICanEditProject (&Projects->Prj))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Show question and button to remove user as a role from project *****/
/* Begin alert */
Ale_ShowAlertAndButtonBegin (Ale_QUESTION,Question[Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod)],
@ -3075,7 +3075,7 @@ static void Prj_ReqRemUsrFromPrj (struct Prj_Projects *Projects,
/* End alert */
Ale_ShowAlertAndButtonEnd (ActUnk,NULL,NULL,NULL,NULL,Btn_NO_BUTTON,NULL);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -3132,7 +3132,7 @@ static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInPrj)
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
switch (Prj_CheckIfICanEditProject (&Projects.Prj))
{
case Usr_I_CAN:
case Usr_CAN:
/***** Remove user from the table of project-users *****/
Prj_DB_RemoveUsrFromPrj (Projects.Prj.PrjCod,RoleInPrj,Gbl.Usrs.Other.UsrDat.UsrCod);
@ -3146,7 +3146,7 @@ static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInPrj)
Txt_PROJECT_ROLES_SINGUL_abc[RoleInPrj][Gbl.Usrs.Other.UsrDat.Sex],
Projects.Prj.Title);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
break;
@ -3187,7 +3187,7 @@ static void Prj_PutIconsToRemEditOnePrj (struct Prj_Projects *Projects,
[HidVis_VISIBLE] = ActHidPrj, // Visible ==> action to hide
};
if (Prj_CheckIfICanEditProject (&Projects->Prj) == Usr_I_CAN)
if (Prj_CheckIfICanEditProject (&Projects->Prj) == Usr_CAN)
{
/***** Icon to remove project *****/
Ico_PutContextualIconToRemove (ActReqRemPrj,NULL,
@ -3204,7 +3204,7 @@ static void Prj_PutIconsToRemEditOnePrj (struct Prj_Projects *Projects,
}
/***** Icon to admin project documents *****/
if (Prj_CheckIfICanViewProjectFiles (Projects->Prj.PrjCod) == Usr_I_CAN)
if (Prj_CheckIfICanViewProjectFiles (Projects->Prj.PrjCod) == Usr_CAN)
Ico_PutContextualIconToViewFiles (ActAdmDocPrj,
Prj_PutCurrentPars,Projects);
@ -3214,14 +3214,14 @@ static void Prj_PutIconsToRemEditOnePrj (struct Prj_Projects *Projects,
/***** Locked/unlocked project edition *****/
switch (PrjCfg_CheckIfICanConfig ())
{
case Usr_I_CAN:
case Usr_CAN:
/* Icon to lock/unlock project edition */
HTM_DIV_Begin ("id=\"prj_lck_%ld\" class=\"PRJ_LOCK\"",
Projects->Prj.PrjCod);
Prj_FormLockUnlock (&Projects->Prj);
HTM_DIV_End ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
/* Icon to inform about locked/unlocked project edition */
Prj_PutIconOffLockedUnlocked (&Projects->Prj);
@ -3229,7 +3229,7 @@ static void Prj_PutIconsToRemEditOnePrj (struct Prj_Projects *Projects,
}
/***** Link to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkPrj,NULL,
Prj_PutCurrentPars,Projects);
}
@ -3238,21 +3238,21 @@ static void Prj_PutIconsToRemEditOnePrj (struct Prj_Projects *Projects,
/************************ Can I edit a given project? ************************/
/*****************************************************************************/
static Usr_ICan_t Prj_CheckIfICanEditProject (const struct Prj_Project *Prj)
static Usr_Can_t Prj_CheckIfICanEditProject (const struct Prj_Project *Prj)
{
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_NET:
if (Prj->Locked == Prj_LOCKED) // Locked edition
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
return ((Prj_GetMyRolesInProject (Prj->PrjCod) &
(1 << Prj_ROLE_TUT)) != 0) ? Usr_I_CAN : // Am I a tutor?
Usr_I_CAN_NOT;
(1 << Prj_ROLE_TUT)) != 0) ? Usr_CAN : // Am I a tutor?
Usr_CAN_NOT;
case Rol_TCH:
case Rol_SYS_ADM:
return Usr_I_CAN;
return Usr_CAN;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}
@ -3517,7 +3517,7 @@ void Prj_ReqRemProject (void)
Prj_GetProjectDataByCod (&Projects.Prj);
/***** Check if I can edit this project *****/
if (Prj_CheckIfICanEditProject (&Projects.Prj) == Usr_I_CAN_NOT)
if (Prj_CheckIfICanEditProject (&Projects.Prj) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Show question and button to remove the project *****/
@ -3557,7 +3557,7 @@ void Prj_RemoveProject (void)
Prj_GetProjectDataByCod (&Projects.Prj); // Inside this function, the course is checked to be the current one
/***** Check if I can edit this project *****/
if (Prj_CheckIfICanEditProject (&Projects.Prj) == Usr_I_CAN_NOT)
if (Prj_CheckIfICanEditProject (&Projects.Prj) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Remove users in project *****/
@ -3621,7 +3621,7 @@ static void Prj_HideUnhideProject (HidVis_HiddenOrVisible_t HiddenOrVisible)
Prj_GetProjectDataByCod (&Projects.Prj);
/***** Check if I can edit this project *****/
if (Prj_CheckIfICanEditProject (&Projects.Prj) == Usr_I_CAN_NOT)
if (Prj_CheckIfICanEditProject (&Projects.Prj) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Hide/unhide project *****/
@ -3646,7 +3646,7 @@ void Prj_ReqCreatePrj (void)
Prj_ResetPrjsAndReadConfig (&Projects);
/***** Check if I can create new projects *****/
if (Prj_CheckIfICanCreateProjects (&Projects) == Usr_I_CAN_NOT)
if (Prj_CheckIfICanCreateProjects (&Projects) == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get parameters *****/
@ -4011,7 +4011,7 @@ void Prj_ReceiveProject (void)
extern const char *Txt_The_project_has_been_modified;
struct Prj_Projects Projects;
bool ItsANewProject;
Usr_ICan_t ICanEditProject;
Usr_Can_t ICanEditProject;
bool NewProjectIsCorrect = true;
/***** Reset projects *****/
@ -4040,7 +4040,7 @@ void Prj_ReceiveProject (void)
}
/* Check if I can create/edit project */
if (ICanEditProject == Usr_I_CAN_NOT)
if (ICanEditProject == Usr_CAN_NOT)
Err_NoPermissionExit ();
/* Get project title */
@ -4178,7 +4178,7 @@ void Prj_ReqLockSelectedPrjsEdition (void)
Prj_ResetPrjsAndReadConfig (&Projects);
/***** Check if I can configure projects *****/
if (PrjCfg_CheckIfICanConfig () == Usr_I_CAN_NOT)
if (PrjCfg_CheckIfICanConfig () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get parameters *****/
@ -4216,7 +4216,7 @@ void Prj_ReqUnloSelectedPrjsEdition (void)
Prj_ResetPrjsAndReadConfig (&Projects);
/***** Check if I can configure projects *****/
if (PrjCfg_CheckIfICanConfig () == Usr_I_CAN_NOT)
if (PrjCfg_CheckIfICanConfig () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get parameters *****/
@ -4257,7 +4257,7 @@ void Prj_LockSelectedPrjsEdition (void)
Prj_ResetPrjsAndReadConfig (&Projects);
/***** Check if I can configure projects *****/
if (PrjCfg_CheckIfICanConfig () == Usr_I_CAN_NOT)
if (PrjCfg_CheckIfICanConfig () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get parameters *****/
@ -4293,7 +4293,7 @@ void Prj_UnloSelectedPrjsEdition (void)
Prj_ResetPrjsAndReadConfig (&Projects);
/***** Check if I can configure projects *****/
if (PrjCfg_CheckIfICanConfig () == Usr_I_CAN_NOT)
if (PrjCfg_CheckIfICanConfig () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Get parameters *****/
@ -4383,7 +4383,7 @@ void Prj_LockProjectEdition (void)
Prj_ResetPrjsAndReadConfig (&Projects);
/***** Check if I can configure projects *****/
if (PrjCfg_CheckIfICanConfig () == Usr_I_CAN_NOT)
if (PrjCfg_CheckIfICanConfig () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Allocate memory for the project *****/
@ -4419,7 +4419,7 @@ void Prj_UnloProjectEdition (void)
Prj_ResetPrjsAndReadConfig (&Projects);
/***** Check if I can configure projects *****/
if (PrjCfg_CheckIfICanConfig () == Usr_I_CAN_NOT)
if (PrjCfg_CheckIfICanConfig () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Allocate memory for the project *****/
@ -4455,7 +4455,7 @@ void Prj_ChangeReviewStatus (void)
Prj_ResetPrjsAndReadConfig (&Projects);
/***** Check if I can review projects *****/
if (Prj_CheckIfICanReviewProjects () == Usr_I_CAN_NOT)
if (Prj_CheckIfICanReviewProjects () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Allocate memory for the project *****/
@ -4514,7 +4514,7 @@ static void Prj_ShowRubrics (struct Prj_Projects *Projects)
for (RubricType = (PrjCfg_RubricType_t) 1;
RubricType <= (PrjCfg_RubricType_t) (PrjCfg_NUM_RUBRIC_TYPES - 1);
RubricType++)
if (Prj_CheckIfICanViewRubric (Projects->Prj.PrjCod,RubricType) == Usr_I_CAN)
if (Prj_CheckIfICanViewRubric (Projects->Prj.PrjCod,RubricType) == Usr_CAN)
Prj_ShowRubricsOfType (Projects,RubricType);
/***** End table *****/
@ -4536,7 +4536,7 @@ static void Prj_ShowRubricsOfType (struct Prj_Projects *Projects,
unsigned NumRubricsThisType;
unsigned NumRubThisType;
struct Rub_Rubric Rubric;
Usr_ICan_t ICanFill = Prj_CheckIfICanFillRubric (Projects->Prj.PrjCod,RubricType);
Usr_Can_t ICanFill = Prj_CheckIfICanFillRubric (Projects->Prj.PrjCod,RubricType);
/***** Get project rubrics for current course from database *****/
NumRubricsThisType = Prj_DB_GetRubricsOfType (&mysql_res,RubricType);
@ -4602,7 +4602,7 @@ static void Prj_ShowRubricsOfType (struct Prj_Projects *Projects,
/************************* Who can view/fill rubrics *************************/
/*****************************************************************************/
static Usr_ICan_t Prj_CheckIfICanViewRubric (long PrjCod,PrjCfg_RubricType_t WhichRubric)
static Usr_Can_t Prj_CheckIfICanViewRubric (long PrjCod,PrjCfg_RubricType_t WhichRubric)
{
switch (Gbl.Usrs.Me.Role.Logged)
{
@ -4611,26 +4611,26 @@ static Usr_ICan_t Prj_CheckIfICanViewRubric (long PrjCod,PrjCfg_RubricType_t Whi
switch (WhichRubric)
{
case PrjCfg_RUBRIC_ERR:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
case PrjCfg_RUBRIC_TUT:
case PrjCfg_RUBRIC_EVL:
return ((Prj_GetMyRolesInProject (PrjCod) & (1 << Prj_ROLE_TUT | // I am a tutor...
1 << Prj_ROLE_EVL)) != 0) ? Usr_I_CAN : // ...or an evaluator
Usr_I_CAN_NOT;
1 << Prj_ROLE_EVL)) != 0) ? Usr_CAN : // ...or an evaluator
Usr_CAN_NOT;
case PrjCfg_RUBRIC_GBL:
return (Prj_GetMyRolesInProject (PrjCod) != 0) ? Usr_I_CAN : // I am a member
Usr_I_CAN_NOT;
return (Prj_GetMyRolesInProject (PrjCod) != 0) ? Usr_CAN : // I am a member
Usr_CAN_NOT;
}
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
case Rol_TCH: // Editing teachers in a course can view all rubrics
case Rol_SYS_ADM:
return Usr_I_CAN;
return Usr_CAN;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}
static Usr_ICan_t Prj_CheckIfICanFillRubric (long PrjCod,PrjCfg_RubricType_t WhichRubric)
static Usr_Can_t Prj_CheckIfICanFillRubric (long PrjCod,PrjCfg_RubricType_t WhichRubric)
{
switch (Gbl.Usrs.Me.Role.Logged)
{
@ -4639,22 +4639,22 @@ static Usr_ICan_t Prj_CheckIfICanFillRubric (long PrjCod,PrjCfg_RubricType_t Whi
switch (WhichRubric)
{
case PrjCfg_RUBRIC_ERR:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
case PrjCfg_RUBRIC_TUT:
return ((Prj_GetMyRolesInProject (PrjCod) & (1 << Prj_ROLE_TUT)) != 0) ? Usr_I_CAN : // I am a tutor
Usr_I_CAN_NOT;
return ((Prj_GetMyRolesInProject (PrjCod) & (1 << Prj_ROLE_TUT)) != 0) ? Usr_CAN : // I am a tutor
Usr_CAN_NOT;
case PrjCfg_RUBRIC_EVL:
return ((Prj_GetMyRolesInProject (PrjCod) & (1 << Prj_ROLE_EVL)) != 0) ? Usr_I_CAN : // Am I an evaluator
Usr_I_CAN_NOT;
return ((Prj_GetMyRolesInProject (PrjCod) & (1 << Prj_ROLE_EVL)) != 0) ? Usr_CAN : // Am I an evaluator
Usr_CAN_NOT;
case PrjCfg_RUBRIC_GBL:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
case Rol_TCH: // Editing teachers in a course can fill all rubrics
case Rol_SYS_ADM:
return Usr_I_CAN;
return Usr_CAN;
default:
return Usr_I_CAN_NOT;
return Usr_CAN_NOT;
}
}
@ -4690,10 +4690,10 @@ void Prj_ChangeCriterionScore (void)
/***** Update review *****/
switch (Prj_CheckIfICanFillRubric (Prj.PrjCod,WhichRubric))
{
case Usr_I_CAN:
case Usr_CAN:
Rub_DB_UpdateScore (Rsc_PROJECT,Prj.PrjCod,-1L,CriCod,Score);
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
Err_NoPermission ();
break;

View File

@ -205,8 +205,8 @@ void Prj_SeeAllProjects (void);
void Prj_ShowProjects (struct Prj_Projects *Projects);
void Prj_ShowTableSelectedPrjs (void);
Usr_ICan_t Prj_CheckIfICanViewProjectDocuments (long PrjCod);
Usr_ICan_t Prj_CheckIfICanViewProjectAssessment (long PrjCod);
Usr_Can_t Prj_CheckIfICanViewProjectDocuments (long PrjCod);
Usr_Can_t Prj_CheckIfICanViewProjectAssessment (long PrjCod);
void Prj_PutCurrentPars (void *Projects);
void Prj_PutPars (struct Prj_Filter *Filter,

View File

@ -82,12 +82,12 @@ void PrjCfg_GetConfig (struct PrjCfg_Config *Config)
/************************ Can I configure all projects? **********************/
/*****************************************************************************/
Usr_ICan_t PrjCfg_CheckIfICanConfig (void)
Usr_Can_t PrjCfg_CheckIfICanConfig (void)
{
static Usr_ICan_t ICanConfigAllProjects[Rol_NUM_ROLES] =
static Usr_Can_t ICanConfigAllProjects[Rol_NUM_ROLES] =
{
[Rol_TCH ] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return ICanConfigAllProjects[Gbl.Usrs.Me.Role.Logged];

View File

@ -61,7 +61,7 @@ struct PrgCfg_ListRubCods
void PrjCfg_GetConfig (struct PrjCfg_Config *Config);
Usr_ICan_t PrjCfg_CheckIfICanConfig (void);
Usr_Can_t PrjCfg_CheckIfICanConfig (void);
void PrjCfg_ShowFormConfig (void);
PrjCfg_RubricType_t PrjCfg_GetRubricFromString (const char *Str);
void PrjCfg_ChangeNETCanCreate (void);

View File

@ -129,7 +129,7 @@ static bool Rec_GetParShowOfficeHours (void);
static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
struct Usr_Data *UsrDat,const char *Anchor);
static void Rec_ShowMyCrsRecordUpdated (void);
static Usr_ICan_t Rec_CheckIfICanEditField (Rec_VisibilityRecordFields_t Visibility);
static Usr_Can_t Rec_CheckIfICanEditField (Rec_VisibilityRecordFields_t Visibility);
static void Rec_PutIconsCommands (__attribute__((unused)) void *Args);
static void Rec_PutParsMyResults (__attribute__((unused)) void *Args);
@ -962,7 +962,7 @@ void Rec_GetUsrAndShowRecOneStdCrs (void)
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat, // Get student's data from database
Usr_DONT_GET_PREFS,
Usr_GET_ROLE_IN_CRS))
if (Usr_CheckIfICanViewRecordStd (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewRecordStd (&Gbl.Usrs.Other.UsrDat) == Usr_CAN)
Rec_ShowRecordOneStdCrs ();
}
@ -1185,7 +1185,7 @@ void Rec_GetUsrAndShowRecOneTchCrs (void)
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat, // Get teacher's data from database
Usr_DONT_GET_PREFS,
Usr_GET_ROLE_IN_CRS))
if (Usr_CheckIfICanViewRecordTch (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewRecordTch (&Gbl.Usrs.Other.UsrDat) == Usr_CAN)
Rec_ShowRecordOneTchCrs ();
}
@ -1575,13 +1575,13 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
[Rec_CRS_PRINT_ONE_RECORD ] = NULL,
[Rec_CRS_PRINT_SEVERAL_RECORDS ] = NULL,
};
Usr_ICan_t ICanEdit = Usr_I_CAN_NOT;
Usr_Can_t ICanEdit = Usr_CAN_NOT;
unsigned NumField;
MYSQL_RES *mysql_res;
MYSQL_ROW row = NULL; // Initialized to avoid warning
bool ShowField;
bool ThisFieldHasText;
Usr_ICan_t ICanEditThisField;
Usr_Can_t ICanEditThisField;
char Text[Cns_MAX_BYTES_TEXT + 1];
switch (Gbl.Usrs.Me.Role.Logged)
@ -1614,7 +1614,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
NumField++)
if (Gbl.Crs.Records.LstFields.Lst[NumField].Visibility == Rec_EDITABLE_FIELD)
{
ICanEdit = Usr_I_CAN;
ICanEdit = Usr_CAN;
Frm_BeginForm (ActRcvRecCrs);
break;
}
@ -1626,7 +1626,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
if (TypeOfView == Rec_CRS_LIST_ONE_RECORD ||
TypeOfView == Rec_CRS_LIST_SEVERAL_RECORDS)
{
ICanEdit = Usr_I_CAN;
ICanEdit = Usr_CAN;
Frm_BeginFormAnchor (ActRcvRecOthUsr,Anchor);
ParCod_PutPar (ParCod_OrgAct,Act_GetActCod (ActSeeRecSevStd)); // Original action, used to know where we came from
Usr_PutParUsrCodEncrypted (UsrDat->EnUsrCod);
@ -1682,17 +1682,17 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
{
case Rol_STD:
ICanEditThisField = (TypeOfView == Rec_CRS_MY_RECORD_AS_STUDENT_FORM &&
Gbl.Crs.Records.LstFields.Lst[NumField].Visibility == Rec_EDITABLE_FIELD) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Gbl.Crs.Records.LstFields.Lst[NumField].Visibility == Rec_EDITABLE_FIELD) ? Usr_CAN :
Usr_CAN_NOT;
break;
case Rol_TCH:
case Rol_SYS_ADM:
ICanEditThisField = (TypeOfView == Rec_CRS_LIST_ONE_RECORD ||
TypeOfView == Rec_CRS_LIST_SEVERAL_RECORDS) ? Usr_I_CAN :
Usr_I_CAN_NOT;
TypeOfView == Rec_CRS_LIST_SEVERAL_RECORDS) ? Usr_CAN :
Usr_CAN_NOT;
break;
default:
ICanEditThisField = Usr_I_CAN_NOT;
ICanEditThisField = Usr_CAN_NOT;
break;
}
@ -1700,7 +1700,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"REC_C1_BOT %s_%s RT %s\"",
ICanEditThisField == Usr_I_CAN ? "FORM_IN" :
ICanEditThisField == Usr_CAN ? "FORM_IN" :
"REC_DAT_SMALL", // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
The_GetSuffix (),
The_GetColorRows ());
@ -1735,7 +1735,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
The_GetColorRows ());
switch (ICanEditThisField)
{
case Usr_I_CAN: // Show with form
case Usr_CAN: // Show with form
HTM_TEXTAREA_Begin ("name=\"Field%ld\" rows=\"%u\""
" class=\"REC_C2_BOT_INPUT INPUT_%s\"",
Gbl.Crs.Records.LstFields.Lst[NumField].FieldCod,
@ -1745,7 +1745,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
HTM_Txt (row[0]);
HTM_TEXTAREA_End ();
break;
case Usr_I_CAN_NOT: // Show without form
case Usr_CAN_NOT: // Show without form
default:
if (ThisFieldHasText)
{
@ -1771,14 +1771,14 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
/***** End box *****/
switch (ICanEdit)
{
case Usr_I_CAN:
case Usr_CAN:
/* End table, send button and end box */
Box_BoxTableWithButtonEnd (Btn_CONFIRM_BUTTON,Txt_Save_changes);
/* End form */
Frm_EndForm ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
/* End table and box */
Box_BoxTableEnd ();
@ -1798,7 +1798,7 @@ void Rec_GetFieldsCrsRecordFromForm (void)
for (NumField = 0;
NumField < Gbl.Crs.Records.LstFields.Num;
NumField++)
if (Rec_CheckIfICanEditField (Gbl.Crs.Records.LstFields.Lst[NumField].Visibility) == Usr_I_CAN)
if (Rec_CheckIfICanEditField (Gbl.Crs.Records.LstFields.Lst[NumField].Visibility) == Usr_CAN)
{
/* Get text from the form */
snprintf (FieldParName,sizeof (FieldParName),"Field%ld",
@ -1820,7 +1820,7 @@ void Rec_UpdateCrsRecord (long UsrCod)
for (NumField = 0;
NumField < Gbl.Crs.Records.LstFields.Num;
NumField++)
if (Rec_CheckIfICanEditField (Gbl.Crs.Records.LstFields.Lst[NumField].Visibility) == Usr_I_CAN)
if (Rec_CheckIfICanEditField (Gbl.Crs.Records.LstFields.Lst[NumField].Visibility) == Usr_CAN)
{
/***** Check if already exists this field for this user in database *****/
FieldAlreadyExists = (Rec_DB_GetFieldTxtFromUsrRecord (&mysql_res,
@ -1876,7 +1876,7 @@ void Rec_AllocMemFieldsRecordsCrs (void)
for (NumField = 0;
NumField < Gbl.Crs.Records.LstFields.Num;
NumField++)
if (Rec_CheckIfICanEditField (Gbl.Crs.Records.LstFields.Lst[NumField].Visibility) == Usr_I_CAN)
if (Rec_CheckIfICanEditField (Gbl.Crs.Records.LstFields.Lst[NumField].Visibility) == Usr_CAN)
/* Allocate memory for the texts of the fields */
if ((Gbl.Crs.Records.LstFields.Lst[NumField].Text = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Err_NotEnoughMemoryExit ();
@ -1893,7 +1893,7 @@ void Rec_FreeMemFieldsRecordsCrs (void)
for (NumField = 0;
NumField < Gbl.Crs.Records.LstFields.Num;
NumField++)
if (Rec_CheckIfICanEditField (Gbl.Crs.Records.LstFields.Lst[NumField].Visibility) == Usr_I_CAN)
if (Rec_CheckIfICanEditField (Gbl.Crs.Records.LstFields.Lst[NumField].Visibility) == Usr_CAN)
/* Free memory of the text of the field */
if (Gbl.Crs.Records.LstFields.Lst[NumField].Text)
{
@ -1906,14 +1906,14 @@ void Rec_FreeMemFieldsRecordsCrs (void)
/* Check if I can edit a field depending on my role and the field visibility */
/*****************************************************************************/
static Usr_ICan_t Rec_CheckIfICanEditField (Rec_VisibilityRecordFields_t Visibility)
static Usr_Can_t Rec_CheckIfICanEditField (Rec_VisibilityRecordFields_t Visibility)
{
// Non-editing teachers can not edit fields
return ( Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ||
(Gbl.Usrs.Me.Role.Logged == Rol_STD &&
Visibility == Rec_EDITABLE_FIELD)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Visibility == Rec_EDITABLE_FIELD)) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/
@ -2074,7 +2074,7 @@ void Rec_ShowSharedUsrRecord (Rec_SharedRecordViewType_t TypeOfView,
ViewType = Vie_EDIT;
break;
case Rec_SHA_OTHER_EXISTING_USR_FORM:
ViewType = (Usr_ICanChangeOtherUsrData (UsrDat) == Usr_I_CAN) ? Vie_EDIT :
ViewType = (Usr_ICanChangeOtherUsrData (UsrDat) == Usr_CAN) ? Vie_EDIT :
Vie_VIEW;
break;
default: // In other options, I can not edit user's data
@ -2256,7 +2256,7 @@ void Rec_ShowSharedUsrRecord (Rec_SharedRecordViewType_t TypeOfView,
{
case Usr_ME:
// Don't show groups if I don't belong to course
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS])
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] == Usr_BELONG)
Grp_ShowLstGrpsToChgMyGrps ();
break;
case Usr_OTHER:
@ -2289,7 +2289,7 @@ void Rec_ShowSharedUsrRecord (Rec_SharedRecordViewType_t TypeOfView,
static void Rec_PutIconsCommands (__attribute__((unused)) void *Args)
{
Usr_MeOrOther_t MeOrOther = Usr_ItsMe (Rec_Record.UsrDat->UsrCod);
Usr_ICan_t ICanViewUsrProfile;
Usr_Can_t ICanViewUsrProfile;
bool RecipientHasBannedMe;
static Act_Action_t NextAction[Rol_NUM_ROLES] =
{
@ -2372,25 +2372,25 @@ static void Rec_PutIconsCommands (__attribute__((unused)) void *Args)
"pen.svg",Ico_BLACK);
/***** Button to view user's profile *****/
if (ICanViewUsrProfile == Usr_I_CAN)
if (ICanViewUsrProfile == Usr_CAN)
Lay_PutContextualLinkOnlyIcon (ActSeeOthPubPrf,NULL,
Rec_PutParUsrCodEncrypted,NULL,
"user.svg",Ico_BLACK);
/***** Button to view user's record card *****/
if (Usr_CheckIfICanViewRecordStd (Rec_Record.UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewRecordStd (Rec_Record.UsrDat) == Usr_CAN)
/* View student's records: common record card and course record card */
Lay_PutContextualLinkOnlyIcon (ActSeeRecOneStd,NULL,
Rec_PutParUsrCodEncrypted,NULL,
"address-card.svg",Ico_BLACK);
else if (Usr_CheckIfICanViewRecordTch (Rec_Record.UsrDat) == Usr_I_CAN)
else if (Usr_CheckIfICanViewRecordTch (Rec_Record.UsrDat) == Usr_CAN)
/* View teacher's record card and timetable */
Lay_PutContextualLinkOnlyIcon (ActSeeRecOneTch,NULL,
Rec_PutParUsrCodEncrypted,NULL,
"address-card.svg",Ico_BLACK);
/***** Button to view user's agenda *****/
if (Agd_CheckIfICanViewUsrAgenda (Rec_Record.UsrDat) == Usr_I_CAN)
if (Agd_CheckIfICanViewUsrAgenda (Rec_Record.UsrDat) == Usr_CAN)
Lay_PutContextualLinkOnlyIcon (ActSeeAgd[MeOrOther],NULL,
FuncPutParsAgd[MeOrOther],NULL,
"calendar.svg",Ico_BLACK);
@ -2411,7 +2411,7 @@ static void Rec_PutIconsCommands (__attribute__((unused)) void *Args)
if (Rec_Record.UsrDat->Roles.InCurrentCrs == Rol_STD) // He/she is a student in current course
{
/***** Buttons to view student's test, exam and match results *****/
if (Usr_CheckIfICanViewTstExaMchResult (Rec_Record.UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewTstExaMchResult (Rec_Record.UsrDat) == Usr_CAN)
{
/* Test results in course */
Lay_PutContextualLinkOnlyIcon (ActSeeTstResCrs[MeOrOther],NULL,
@ -2428,13 +2428,13 @@ static void Rec_PutIconsCommands (__attribute__((unused)) void *Args)
}
/***** Button to view student's assignments and works *****/
if (Usr_CheckIfICanViewAsgWrk (Rec_Record.UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewAsgWrk (Rec_Record.UsrDat) == Usr_CAN)
Lay_PutContextualLinkOnlyIcon (ActAdmAsgWrk[MeOrOther],NULL,
FuncPutParsAdmAsgWrk[MeOrOther],NULL,
"folder-open.svg",Ico_BLACK);
/***** Button to view student's attendance *****/
if (Usr_CheckIfICanViewAtt (Rec_Record.UsrDat) == Usr_I_CAN)
if (Usr_CheckIfICanViewAtt (Rec_Record.UsrDat) == Usr_CAN)
Lay_PutContextualLinkOnlyIcon (ActSeeLstAtt[MeOrOther],NULL,
FuncPutParsSeeLstAtt[MeOrOther],NULL,
"calendar-check.svg",Ico_BLACK);
@ -2462,7 +2462,7 @@ static void Rec_PutIconsCommands (__attribute__((unused)) void *Args)
Lay_PutContextualLinkOnlyIcon (ActUnfUsr,NULL,
Rec_PutParUsrCodEncrypted,NULL,
"user-check.svg",Ico_BLACK); // Put button to unfollow, even if I can not view user's profile
else if (ICanViewUsrProfile == Usr_I_CAN)
else if (ICanViewUsrProfile == Usr_CAN)
Lay_PutContextualLinkOnlyIcon (ActFolUsr,NULL,
Rec_PutParUsrCodEncrypted,NULL,
"user-plus.svg",Ico_BLACK); // Put button to follow
@ -2688,13 +2688,13 @@ static void Rec_ShowEmail (struct Usr_Data *UsrDat)
if (UsrDat->Email[0])
switch (Mai_ICanSeeOtherUsrEmail (UsrDat))
{
case Usr_I_CAN:
case Usr_CAN:
HTM_A_Begin ("href=\"mailto:%s\" class=\"DAT_STRONG_%s\"",
UsrDat->Email,The_GetSuffix ());
HTM_Txt (UsrDat->Email);
HTM_A_End ();
break;
case Usr_I_CAN_NOT:
case Usr_CAN_NOT:
default:
HTM_Txt ("********");
break;

View File

@ -472,12 +472,12 @@ bool Rsc_GetParLink (struct Rsc_Link *Link)
/************************** Check if I can get link **************************/
/*****************************************************************************/
Usr_ICan_t Rsc_CheckIfICanGetLink (void)
Usr_Can_t Rsc_CheckIfICanGetLink (void)
{
static Usr_ICan_t ICanGetLink[Rol_NUM_ROLES] =
static Usr_Can_t ICanGetLink[Rol_NUM_ROLES] =
{
[Rol_TCH ] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return ICanGetLink[Gbl.Usrs.Me.Role.Logged];

View File

@ -89,6 +89,6 @@ Rsc_Type_t Rsc_GetTypeFromString (const char *Str);
bool Rsc_GetParLink (struct Rsc_Link *Link);
Usr_ICan_t Rsc_CheckIfICanGetLink (void);
Usr_Can_t Rsc_CheckIfICanGetLink (void);
#endif

View File

@ -70,11 +70,11 @@ extern struct Globals Gbl;
void Rol_SetMyRoles (void)
{
Usr_ICan_t ICanBeAdm[Hie_NUM_LEVELS] =
Usr_Can_t ICanBeAdm[Hie_NUM_LEVELS] =
{
[Hie_INS] = Usr_I_CAN_NOT,
[Hie_CTR] = Usr_I_CAN_NOT,
[Hie_DEG] = Usr_I_CAN_NOT,
[Hie_INS] = Usr_CAN_NOT,
[Hie_CTR] = Usr_CAN_NOT,
[Hie_DEG] = Usr_CAN_NOT,
};
/***** Get my role in current course if not yet filled *****/
@ -109,90 +109,116 @@ void Rol_SetMyRoles (void)
{
/* Check if I am and administrator of current institution */
ICanBeAdm[Hie_INS] = Adm_DB_CheckIfUsrIsAdm (Gbl.Usrs.Me.UsrDat.UsrCod,
Hie_INS) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Hie_INS) ? Usr_CAN :
Usr_CAN_NOT;
if (Gbl.Hierarchy.Node[Hie_CTR].HieCod > 0)
{
/* Check if I am and administrator of current center */
ICanBeAdm[Hie_CTR] = Adm_DB_CheckIfUsrIsAdm (Gbl.Usrs.Me.UsrDat.UsrCod,
Hie_CTR) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Hie_CTR) ? Usr_CAN :
Usr_CAN_NOT;
if (Gbl.Hierarchy.Node[Hie_DEG].HieCod > 0)
/* Check if I am and administrator of current degree */
ICanBeAdm[Hie_DEG] = Adm_DB_CheckIfUsrIsAdm (Gbl.Usrs.Me.UsrDat.UsrCod,
Hie_DEG) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Hie_DEG) ? Usr_CAN :
Usr_CAN_NOT;
}
}
/***** Check if I belong to current course *****/
if (Gbl.Hierarchy.Level == Hie_CRS) // Course selected
{
Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] = Enr_CheckIfUsrBelongsToCurrentCrs (&Gbl.Usrs.Me.UsrDat);
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS])
Gbl.Usrs.Me.UsrDat.Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (&Gbl.Usrs.Me.UsrDat);
else
Gbl.Usrs.Me.UsrDat.Accepted = false;
Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] =
Enr_CheckIfUsrBelongsToCurrentCrs (&Gbl.Usrs.Me.UsrDat) ? Usr_BELONG :
Usr_DONT_BELONG;
switch (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS])
{
case Usr_BELONG:
Gbl.Usrs.Me.UsrDat.Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (&Gbl.Usrs.Me.UsrDat);
break;
case Usr_DONT_BELONG:
default:
Gbl.Usrs.Me.UsrDat.Accepted = false;
break;
}
}
else // No course selected
{
Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] = false;
Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS] = Usr_DONT_BELONG;
Gbl.Usrs.Me.UsrDat.Accepted = false;
}
/***** Check if I belong to current degree *****/
if (Gbl.Hierarchy.Node[Hie_DEG].HieCod > 0)
{
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS])
Gbl.Usrs.Me.IBelongToCurrent[Hie_DEG] = true;
else
Gbl.Usrs.Me.IBelongToCurrent[Hie_DEG] = Hie_CheckIfIBelongTo (Hie_DEG,Gbl.Hierarchy.Node[Hie_DEG].HieCod);
}
switch (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS])
{
case Usr_BELONG:
Gbl.Usrs.Me.IBelongToCurrent[Hie_DEG] = Usr_BELONG;
break;
case Usr_DONT_BELONG:
default:
Gbl.Usrs.Me.IBelongToCurrent[Hie_DEG] = Hie_CheckIfIBelongTo (Hie_DEG,Gbl.Hierarchy.Node[Hie_DEG].HieCod);
break;
}
else
Gbl.Usrs.Me.IBelongToCurrent[Hie_DEG] = false;
Gbl.Usrs.Me.IBelongToCurrent[Hie_DEG] = Usr_DONT_BELONG;
/***** Check if I belong to current center *****/
if (Gbl.Hierarchy.Node[Hie_CTR].HieCod > 0)
{
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_DEG])
Gbl.Usrs.Me.IBelongToCurrent[Hie_CTR] = true;
else
Gbl.Usrs.Me.IBelongToCurrent[Hie_CTR] = Hie_CheckIfIBelongTo (Hie_CTR,Gbl.Hierarchy.Node[Hie_CTR].HieCod);
}
switch (Gbl.Usrs.Me.IBelongToCurrent[Hie_DEG])
{
case Usr_BELONG:
Gbl.Usrs.Me.IBelongToCurrent[Hie_CTR] = Usr_BELONG;
break;
case Usr_DONT_BELONG:
default:
Gbl.Usrs.Me.IBelongToCurrent[Hie_CTR] = Hie_CheckIfIBelongTo (Hie_CTR,Gbl.Hierarchy.Node[Hie_CTR].HieCod);
break;
}
else
Gbl.Usrs.Me.IBelongToCurrent[Hie_CTR] = false;
Gbl.Usrs.Me.IBelongToCurrent[Hie_CTR] = Usr_DONT_BELONG;
/***** Check if I belong to current institution *****/
if (Gbl.Hierarchy.Node[Hie_INS].HieCod > 0)
{
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CTR])
Gbl.Usrs.Me.IBelongToCurrent[Hie_INS] = true;
else
Gbl.Usrs.Me.IBelongToCurrent[Hie_INS] = Hie_CheckIfIBelongTo (Hie_INS,Gbl.Hierarchy.Node[Hie_INS].HieCod);
}
switch (Gbl.Usrs.Me.IBelongToCurrent[Hie_CTR])
{
case Usr_BELONG:
Gbl.Usrs.Me.IBelongToCurrent[Hie_INS] = Usr_BELONG;
break;
case Usr_DONT_BELONG:
default:
Gbl.Usrs.Me.IBelongToCurrent[Hie_INS] = Hie_CheckIfIBelongTo (Hie_INS,
Gbl.Hierarchy.Node[Hie_INS].HieCod);
break;
}
else
Gbl.Usrs.Me.IBelongToCurrent[Hie_INS] = false;
Gbl.Usrs.Me.IBelongToCurrent[Hie_INS] = Usr_DONT_BELONG;
/***** Build my list of available roles for current course *****/
if (Gbl.Hierarchy.Level == Hie_CRS)
{
if (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS])
Gbl.Usrs.Me.Role.Available = (1 << Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs);
else if (Gbl.Usrs.Me.Role.Max >= Rol_STD)
Gbl.Usrs.Me.Role.Available = (1 << Rol_USR);
else
Gbl.Usrs.Me.Role.Available = (1 << Rol_GST);
}
switch (Gbl.Usrs.Me.IBelongToCurrent[Hie_CRS])
{
case Usr_BELONG:
Gbl.Usrs.Me.Role.Available = (1 << Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs);
break;
case Usr_DONT_BELONG:
default:
if (Gbl.Usrs.Me.Role.Max >= Rol_STD)
Gbl.Usrs.Me.Role.Available = (1 << Rol_USR);
else
Gbl.Usrs.Me.Role.Available = (1 << Rol_GST);
break;
}
else if (Gbl.Usrs.Me.Role.Max >= Rol_STD)
Gbl.Usrs.Me.Role.Available = (1 << Rol_USR);
else
Gbl.Usrs.Me.Role.Available = (1 << Rol_GST);
if (ICanBeAdm[Hie_INS] == Usr_I_CAN)
if (ICanBeAdm[Hie_INS] == Usr_CAN)
Gbl.Usrs.Me.Role.Available |= (1 << Rol_INS_ADM);
if (ICanBeAdm[Hie_CTR] == Usr_I_CAN)
if (ICanBeAdm[Hie_CTR] == Usr_CAN)
Gbl.Usrs.Me.Role.Available |= (1 << Rol_CTR_ADM);
if (ICanBeAdm[Hie_DEG] == Usr_I_CAN)
if (ICanBeAdm[Hie_DEG] == Usr_CAN)
Gbl.Usrs.Me.Role.Available |= (1 << Rol_DEG_ADM);
if (Usr_CheckIfUsrIsSuperuser (Gbl.Usrs.Me.UsrDat.UsrCod))
Gbl.Usrs.Me.Role.Available |= (1 << Rol_SYS_ADM);

View File

@ -97,7 +97,7 @@ static void Roo_GetAndListMACAddresses (long RooCod);
static void Roo_GetAndEditMACAddresses (long RooCod,const char *Anchor);
static Roo_Order_t Roo_GetParRoomOrder (void);
static Usr_ICan_t Roo_CheckIfICanCreateRooms (void);
static Usr_Can_t Roo_CheckIfICanCreateRooms (void);
static void Roo_PutIconsListingRooms (__attribute__((unused)) void *Args);
static void Roo_PutIconToEditRooms (void);
static void Roo_PutIconsEditingRooms (__attribute__((unused)) void *Args);
@ -377,10 +377,10 @@ static Roo_Order_t Roo_GetParRoomOrder (void)
/*********************** Check if I can create rooms *************************/
/*****************************************************************************/
static Usr_ICan_t Roo_CheckIfICanCreateRooms (void)
static Usr_Can_t Roo_CheckIfICanCreateRooms (void)
{
return (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
return (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/
@ -390,7 +390,7 @@ static Usr_ICan_t Roo_CheckIfICanCreateRooms (void)
static void Roo_PutIconsListingRooms (__attribute__((unused)) void *Args)
{
/***** Put icon to edit rooms *****/
if (Roo_CheckIfICanCreateRooms () == Usr_I_CAN)
if (Roo_CheckIfICanCreateRooms () == Usr_CAN)
Roo_PutIconToEditRooms ();
}

View File

@ -396,7 +396,7 @@ long Roo_DB_CheckIn (long RooCod)
/********************** Check if I can see user's location *******************/
/*****************************************************************************/
Usr_ICan_t Roo_DB_CheckIfICanSeeUsrLocation (long UsrCod)
Usr_Can_t Roo_DB_CheckIfICanSeeUsrLocation (long UsrCod)
{
/*
I can only consult the location of another user
@ -426,8 +426,8 @@ Usr_ICan_t Roo_DB_CheckIfICanSeeUsrLocation (long UsrCod)
" AND crs_courses.DegCod=deg_degrees.DegCod) AS C2" // centers of user's courses
" WHERE C1.CtrCod=C2.CtrCod)",
Gbl.Usrs.Me.UsrDat.UsrCod,
UsrCod) ? Usr_I_CAN :
Usr_I_CAN_NOT;
UsrCod) ? Usr_CAN :
Usr_CAN_NOT;
}
/*****************************************************************************/

View File

@ -55,7 +55,7 @@ void Roo_DB_RemoveAllRoomsInCtr (long CtrCod);
//--------------------------------- Check in ----------------------------------
long Roo_DB_CheckIn (long RooCod);
Usr_ICan_t Roo_DB_CheckIfICanSeeUsrLocation (long UsrCod);
Usr_Can_t Roo_DB_CheckIfICanSeeUsrLocation (long UsrCod);
unsigned Roo_DB_GetUsrLastLocation (MYSQL_RES **mysql_res,long UsrCod);
unsigned Roo_DB_GetLocationByMAC (MYSQL_RES **mysql_res,unsigned long long MACnum);

View File

@ -228,12 +228,12 @@ void Rub_ListAllRubrics (struct Rub_Rubrics *Rubrics)
/************************ Check if I can edit rubrics ************************/
/*****************************************************************************/
Usr_ICan_t Rub_CheckIfICanEditRubrics (void)
Usr_Can_t Rub_CheckIfICanEditRubrics (void)
{
static Usr_ICan_t ICanEditRubrics[Rol_NUM_ROLES] =
static Usr_Can_t ICanEditRubrics[Rol_NUM_ROLES] =
{
[Rol_TCH ] = Usr_I_CAN,
[Rol_SYS_ADM] = Usr_I_CAN,
[Rol_TCH ] = Usr_CAN,
[Rol_SYS_ADM] = Usr_CAN,
};
return ICanEditRubrics[Gbl.Usrs.Me.Role.Logged];
@ -245,7 +245,7 @@ Usr_ICan_t Rub_CheckIfICanEditRubrics (void)
bool Rub_CheckIfEditable (void)
{
if (Rub_CheckIfICanEditRubrics () == Usr_I_CAN)
if (Rub_CheckIfICanEditRubrics () == Usr_CAN)
{
/***** Rubric is editable only if ... *****/
// TODO: Change to control that a rubric is not edited in some circunstances?
@ -267,7 +267,7 @@ static void Rub_PutIconsListRubrics (void *Rubrics)
{
if (Rubrics)
{
if (Rub_CheckIfICanEditRubrics () == Usr_I_CAN)
if (Rub_CheckIfICanEditRubrics () == Usr_CAN)
{
/***** Put icon to create a new rubric *****/
Rub_PutIconToCreateNewRubric ((struct Rub_Rubrics *) Rubrics);
@ -277,7 +277,7 @@ static void Rub_PutIconsListRubrics (void *Rubrics)
}
/***** Link to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkRub,NULL,Rub_PutPars,Rubrics);
/***** Put icon to show a figure *****/
@ -477,7 +477,7 @@ static void Rub_PutIconsEditingOneRubric (void *Rubrics)
static void Rub_PutIconsToRemEditOneRubric (struct Rub_Rubrics *Rubrics)
{
if (Rub_CheckIfICanEditRubrics () == Usr_I_CAN)
if (Rub_CheckIfICanEditRubrics () == Usr_CAN)
{
/***** Icon to remove rubric *****/
Ico_PutContextualIconToRemove (ActReqRemRub,NULL,Rub_PutPars,Rubrics);
@ -486,7 +486,7 @@ static void Rub_PutIconsToRemEditOneRubric (struct Rub_Rubrics *Rubrics)
Ico_PutContextualIconToEdit (ActEdiOneRub,NULL,Rub_PutPars,Rubrics);
/***** Link to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
if (Rsc_CheckIfICanGetLink () == Usr_CAN)
Ico_PutContextualIconToGetLink (ActReqLnkRub,NULL,Rub_PutPars,Rubrics);
}
}
@ -648,7 +648,7 @@ void Rub_AskRemRubric (void)
/***** Get data of the rubric from database *****/
Rub_GetRubricDataByCod (&Rubrics.Rubric);
if (Rub_CheckIfICanEditRubrics () == Usr_I_CAN_NOT)
if (Rub_CheckIfICanEditRubrics () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Show criterion and button to remove rubric *****/
@ -682,7 +682,7 @@ void Rub_RemoveRubric (void)
/***** Get data of the rubric from database *****/
Rub_GetRubricDataByCod (&Rubrics.Rubric);
if (Rub_CheckIfICanEditRubrics () == Usr_I_CAN_NOT)
if (Rub_CheckIfICanEditRubrics () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Remove rubric from all tables *****/
@ -734,7 +734,7 @@ void Rub_ReqCreatOrEditRubric (void)
Rub_ExistingNewRubric_t ExistingNewRubric;
/***** Check if I can edit rubrics *****/
if (Rub_CheckIfICanEditRubrics () == Usr_I_CAN_NOT)
if (Rub_CheckIfICanEditRubrics () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Reset rubrics context *****/
@ -906,7 +906,7 @@ void Rub_ReceiveRubric (void)
Rub_ExistingNewRubric_t ExistingNewRubric;
/***** Check if I can edit rubrics *****/
if (Rub_CheckIfICanEditRubrics () == Usr_I_CAN_NOT)
if (Rub_CheckIfICanEditRubrics () == Usr_CAN_NOT)
Err_NoPermissionExit ();
/***** Reset rubrics context *****/

View File

@ -54,7 +54,7 @@ void Rub_RubricDestructor (struct Rub_Rubric *Rubric);
void Rub_SeeAllRubrics (void);
void Rub_ListAllRubrics (struct Rub_Rubrics *Rubrics);
Usr_ICan_t Rub_CheckIfICanEditRubrics (void);
Usr_Can_t Rub_CheckIfICanEditRubrics (void);
bool Rub_CheckIfEditable (void);
void Rub_SeeOneRubric (void);
void Rub_ShowOnlyOneRubric (struct Rub_Rubrics *Rubrics);

View File

@ -527,8 +527,8 @@ void RubCri_ListCriteriaForEdition (struct Rub_Rubrics *Rubrics)
MYSQL_RES *mysql_res;
unsigned MaxCriInd;
unsigned NumCriteria;
Usr_ICan_t ICanEditCriteria = Rub_CheckIfEditable () ? Usr_I_CAN :
Usr_I_CAN_NOT;
Usr_Can_t ICanEditCriteria = Rub_CheckIfEditable () ? Usr_CAN :
Usr_CAN_NOT;
/***** Get maximum criterion index *****/
MaxCriInd = Rub_DB_GetMaxCriterionIndexInRubric (Rubrics->Rubric.RubCod);
@ -547,7 +547,7 @@ void RubCri_ListCriteriaForEdition (struct Rub_Rubrics *Rubrics)
NumCriteria,mysql_res);
/***** Put forms to create/edit a criterion *****/
if (ICanEditCriteria == Usr_I_CAN)
if (ICanEditCriteria == Usr_CAN)
RubCri_PutFormNewCriterion (Rubrics,MaxCriInd);
/***** End box *****/
@ -562,7 +562,7 @@ void RubCri_ListCriteriaForEdition (struct Rub_Rubrics *Rubrics)
/*****************************************************************************/
void RubCri_ListCriteriaInProject (struct Prj_Projects *Projects,long RubCod,
Usr_ICan_t ICanFill)
Usr_Can_t ICanFill)
{
MYSQL_RES *mysql_res;
unsigned NumCriteria;

View File

@ -45,7 +45,7 @@ void RubCri_ChangeWeight (void);
void RubCri_ListCriteriaForSeeing (const struct Rub_Rubrics *Rubrics);
void RubCri_ListCriteriaForEdition (struct Rub_Rubrics *Rubrics);
void RubCri_ListCriteriaInProject (struct Prj_Projects *Projects,long RubCod,
Usr_ICan_t ICanFill);
Usr_Can_t ICanFill);
void Rub_PushRubCod (struct Rub_Node **TOS,long RubCod);
void Rub_PopRubCod (struct Rub_Node **TOS);

Some files were not shown because too many files have changed in this diff Show More