mirror of https://github.com/acanas/swad-core.git
Version 23.76: Apr 19, 2024 Code refactoring related to don't belong/belong.
This commit is contained in:
parent
b785e884ba
commit
9309bf9580
20
swad_API.c
20
swad_API.c
|
@ -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));
|
||||
|
|
68
swad_ID.c
68
swad_ID.c
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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:
|
||||
-------------
|
||||
|
|
|
@ -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);
|
||||
|
|
44
swad_admin.c
44
swad_admin.c
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
813
swad_browser.c
813
swad_browser.c
File diff suppressed because it is too large
Load Diff
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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]);
|
||||
|
|
|
@ -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 ();
|
||||
}
|
||||
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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/
|
||||
|
|
|
@ -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)",
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 *****/
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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;
|
||||
|
|
26
swad_exam.c
26
swad_exam.c
|
@ -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 *****/
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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): %u; "
|
||||
"%s(-1≤<em>p<sub>i</sub></em><0): %u; "
|
||||
"%s(<em>p<sub>i</sub></em>=0): %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]);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
196
swad_forum.c
196
swad_forum.c
|
@ -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;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
96
swad_game.c
96
swad_game.c
|
@ -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;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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
|
||||
|
|
132
swad_group.c
132
swad_group.c
|
@ -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
|
||||
|
|
58
swad_help.c
58
swad_help.c
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 *****/
|
||||
|
|
18
swad_info.c
18
swad_info.c
|
@ -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] =
|
||||
{
|
||||
|
|
|
@ -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 *****/
|
||||
|
|
10
swad_link.c
10
swad_link.c
|
@ -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 *****/
|
||||
|
|
44
swad_mail.c
44
swad_mail.c
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 *****/
|
||||
|
|
86
swad_match.c
86
swad_match.c
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
|
||||
|
|
|
@ -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? *****/
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
22
swad_photo.c
22
swad_photo.c
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
12
swad_place.c
12
swad_place.c
|
@ -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 ();
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 ||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
182
swad_project.c
182
swad_project.c
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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
|
||||
|
|
122
swad_role.c
122
swad_role.c
|
@ -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);
|
||||
|
|
10
swad_room.c
10
swad_room.c
|
@ -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 ();
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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 *****/
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue