Version19.24.1

This commit is contained in:
Antonio Cañas Vargas 2019-09-30 01:10:57 +02:00
parent 00d3c3c0d0
commit 1d0f18e2ce
13 changed files with 95 additions and 65 deletions

View File

@ -5492,4 +5492,3 @@ void Act_NoPermissionExit (void)
Lay_ShowErrorAndExit (Txt_You_dont_have_permission_to_perform_this_action);
}

View File

@ -2511,7 +2511,7 @@ static void Ctr_PutFormToCreateCentre (void)
else if (Gbl.Usrs.Me.Role.Max >= Rol_GST)
Frm_StartForm (ActReqCtr);
else
Lay_ShowErrorAndExit ("You can not edit centres.");
Act_NoPermissionExit ();
/***** Start box and table *****/
Box_StartBoxTable (NULL,Txt_New_centre,NULL,

View File

@ -474,11 +474,14 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 19.23 (2019-09-29)"
#define Log_PLATFORM_VERSION "SWAD 19.24.1 (2019-09-30)"
#define CSS_FILE "swad19.15.css"
#define JS_FILE "swad19.15.js"
/*
Version 19.23: Sep 29, 2019 Non-editing teachers can not remove matches from other teachers. (246730 lines)
Version 19.24.1: Sep 30, 2019 Fixed bug in match results. (246759 lines)
Version 19.24: Sep 30, 2019 Non-editing teachers can not change visibility of matches created by other teachers.
Non-editing teachers can not resume matches created by other teachers. (246755 lines)
Version 19.23: Sep 29, 2019 Non-editing teachers can not remove matches created by other teachers. (246730 lines)
Version 19.22: Sep 29, 2019 Remove user from match tables in course. (246703 lines)
Version 19.21: Sep 29, 2019 Code refactoring in games and matches. (246674 lines)
Version 19.20: Sep 29, 2019 Code refactoring in games and matches. (246631 lines)

View File

@ -1694,7 +1694,7 @@ static void Crs_PutFormToCreateCourse (void)
else if (Gbl.Usrs.Me.Role.Max >= Rol_GST)
Frm_StartForm (ActReqCrs);
else
Lay_ShowErrorAndExit ("You can not edit courses.");
Act_NoPermissionExit ();
/***** Start box and table *****/
Box_StartBoxTable (NULL,Txt_New_course,NULL,

View File

@ -955,7 +955,7 @@ static void Deg_PutFormToCreateDegree (void)
else if (Gbl.Usrs.Me.Role.Max >= Rol_GST)
Frm_StartForm (ActReqDeg);
else
Lay_ShowErrorAndExit ("You can not edit degrees.");
Act_NoPermissionExit ();
/***** Start box and table *****/
Box_StartBoxTable (NULL,Txt_New_degree,NULL,

View File

@ -4170,11 +4170,11 @@ void For_RemovePost (void)
/* Check if I am the author of the message */
ItsMe = Usr_ItsMe (UsrDat.UsrCod);
if (!ItsMe)
Lay_ShowErrorAndExit ("You can not remove post because you aren't the author.");
Act_NoPermissionExit ();
/* Check if the message is the last message in the thread */
if (Gbl.Forum.ForumSelected.PstCod != For_GetLastPstCod (Gbl.Forum.ForumSelected.ThrCod))
Lay_ShowErrorAndExit ("You can not remove post because it is not the last of the thread.");
Act_NoPermissionExit ();
/***** Remove the post *****/
ThreadDeleted = For_RemoveForumPst (Gbl.Forum.ForumSelected.PstCod,Media.MedCod);
@ -4306,7 +4306,7 @@ void For_RemoveThread (void)
Ale_SUCCESS,Txt_Thread_removed);
}
else
Lay_ShowErrorAndExit ("You can not remove threads in this forum.");
Act_NoPermissionExit ();
}
/*****************************************************************************/

View File

@ -915,7 +915,7 @@ void Gam_AskRemGame (void)
/***** Get data of the game from database *****/
Gam_GetDataOfGameByCod (&Game);
if (!Gam_CheckIfICanEditGames ())
Lay_ShowErrorAndExit ("You can not remove this game.");
Act_NoPermissionExit ();
/***** Show question and button to remove game *****/
Gam_SetParamCurrentGamCod (Game.GamCod); // Used to pass parameter
@ -944,7 +944,7 @@ void Gam_RemoveGame (void)
/***** Get data of the game from database *****/
Gam_GetDataOfGameByCod (&Game);
if (!Gam_CheckIfICanEditGames ())
Lay_ShowErrorAndExit ("You can not remove this game.");
Act_NoPermissionExit ();
/***** Remove game from all tables *****/
Gam_RemoveGameFromAllTables (Game.GamCod);
@ -1016,7 +1016,7 @@ void Gam_HideGame (void)
/***** Get data of the game from database *****/
Gam_GetDataOfGameByCod (&Game);
if (!Gam_CheckIfICanEditGames ())
Lay_ShowErrorAndExit ("You can not hide this game.");
Act_NoPermissionExit ();
/***** Hide game *****/
DB_QueryUPDATE ("can not hide game",
@ -1042,7 +1042,7 @@ void Gam_UnhideGame (void)
/***** Get data of the game from database *****/
Gam_GetDataOfGameByCod (&Game);
if (!Gam_CheckIfICanEditGames ())
Lay_ShowErrorAndExit ("You can not unhide this game.");
Act_NoPermissionExit ();
/***** Show game *****/
DB_QueryUPDATE ("can not show game",
@ -1099,7 +1099,7 @@ void Gam_RequestCreatOrEditGame (void)
{
/***** Put link (form) to create new game *****/
if (!Gam_CheckIfICanEditGames ())
Lay_ShowErrorAndExit ("You can not create a new game here.");
Act_NoPermissionExit ();
/* Initialize to empty game */
Gam_ResetGame (&Game);
@ -1109,7 +1109,7 @@ void Gam_RequestCreatOrEditGame (void)
/* Get data of the game from database */
Gam_GetDataOfGameByCod (&Game);
if (!Gam_CheckIfICanEditGames ())
Lay_ShowErrorAndExit ("You can not update this game.");
Act_NoPermissionExit ();
/* Get text of the game from database */
Gam_GetGameTxtFromDB (Game.GamCod,Txt);
@ -1208,7 +1208,7 @@ void Gam_RecFormGame (void)
OldGame.GamCod = NewGame.GamCod;
Gam_GetDataOfGameByCod (&OldGame);
if (!Gam_CheckIfICanEditGames ())
Lay_ShowErrorAndExit ("You can not update this game.");
Act_NoPermissionExit ();
}
/***** Get game title *****/

View File

@ -2230,7 +2230,7 @@ static void Ins_PutFormToCreateInstitution (void)
else if (Gbl.Usrs.Me.Role.Max >= Rol_GST)
Frm_StartForm (ActReqIns);
else
Lay_ShowErrorAndExit ("You can not edit institutions.");
Act_NoPermissionExit ();
/***** Start box and table *****/
Box_StartBoxTable (NULL,Txt_New_institution,NULL,

View File

@ -100,7 +100,7 @@ static void Mch_ListOneOrMoreMatches (struct Game *Game,
MYSQL_RES *mysql_res);
static void Mch_ListOneOrMoreMatchesHeading (bool ICanEditMatches);
static bool Mch_CheckIfICanEditMatches (void);
static bool Mch_CheckIfICanRemoveMatch (const struct Match *Match);
static bool Mch_CheckIfICanEditThisMatch (const struct Match *Match);
static void Mch_ListOneOrMoreMatchesIcons (const struct Match *Match);
static void Mch_ListOneOrMoreMatchesAuthor (const struct Match *Match);
static void Mch_ListOneOrMoreMatchesTimes (const struct Match *Match,unsigned UniqueId);
@ -122,8 +122,8 @@ static void Mch_RemoveMatchesInGameFromTable (long GamCod,const char *TableName)
static void Mch_RemoveMatchInCourseFromTable (long CrsCod,const char *TableName);
static void Mch_RemoveUsrMchResultsInCrs (long UsrCod,long CrsCod,const char *TableName);
static void Mch_PutParamsEdit (void);
static void Mch_PutParamsPlay (void);
static void Mch_PutParamMchCod (long MchCod);
static void Mch_PutFormNewMatch (struct Game *Game);
static void Mch_ShowLstGrpsToCreateMatch (void);
@ -191,7 +191,6 @@ static unsigned Mch_GetNumUsrsWhoHaveChosenAns (long MchCod,unsigned QstInd,unsi
static unsigned Mch_GetNumUsrsWhoHaveAnswerMch (long MchCod);
static void Mch_DrawBarNumUsrs (unsigned NumAnswerersAns,unsigned NumAnswerersQst,bool Correct);
static void Mch_SetParamCurrentMchCod (long MchCod);
static long Mch_GetParamCurrentMchCod (void);
/*****************************************************************************/
@ -494,10 +493,10 @@ static bool Mch_CheckIfICanEditMatches (void)
}
/*****************************************************************************/
/*********************** Check if I can remove a match ***********************/
/***************** Check if I can edit (remove/resume) a match ***************/
/*****************************************************************************/
static bool Mch_CheckIfICanRemoveMatch (const struct Match *Match)
static bool Mch_CheckIfICanEditThisMatch (const struct Match *Match)
{
switch (Gbl.Usrs.Me.Role.Logged)
{
@ -520,7 +519,7 @@ static void Mch_ListOneOrMoreMatchesIcons (const struct Match *Match)
fprintf (Gbl.F.Out,"<td class=\"BT%u\">",Gbl.RowEvenOdd);
/***** Put icon to remove the match *****/
if (Mch_CheckIfICanRemoveMatch (Match))
if (Mch_CheckIfICanEditThisMatch (Match))
{
Gam_SetParamCurrentGamCod (Match->GamCod); // Used to pass parameter
Mch_SetParamCurrentMchCod (Match->MchCod); // Used to pass parameter
@ -708,12 +707,15 @@ static void Mch_ListOneOrMoreMatchesStatus (const struct Match *Match,unsigned N
case Rol_TCH:
case Rol_SYS_ADM:
/* Icon to resume */
Mch_SetParamCurrentMchCod (Match->MchCod); // Used to pass parameter
Lay_PutContextualLinkOnlyIcon (ActResMch,NULL,
Mch_PutParamsPlay,
Match->Status.QstInd < Mch_AFTER_LAST_QUESTION ? "play.svg" :
"flag-checkered.svg",
Txt_Resume);
if (Mch_CheckIfICanEditThisMatch (Match))
{
Mch_SetParamCurrentMchCod (Match->MchCod); // Used to pass parameter
Lay_PutContextualLinkOnlyIcon (ActResMch,NULL,
Mch_PutParamsPlay,
Match->Status.QstInd < Mch_AFTER_LAST_QUESTION ? "play.svg" :
"flag-checkered.svg",
Txt_Resume);
}
break;
default:
break;
@ -743,6 +745,7 @@ static void Mch_ListOneOrMoreMatchesResult (const struct Match *Match,
/* Match result visible or hidden? */
if (Match->Status.ShowUsrResults)
{
/* Result is visible by me */
Gam_SetParamCurrentGamCod (Match->GamCod); // Used to pass parameter
Mch_SetParamCurrentMchCod (Match->MchCod); // Used to pass parameter
Frm_StartForm (ActSeeOneMchResMe);
@ -751,6 +754,7 @@ static void Mch_ListOneOrMoreMatchesResult (const struct Match *Match,
Frm_EndForm ();
}
else
/* Result is forbidden to me */
Ico_PutIconOff ("eye-slash.svg",Txt_Hidden_result);
}
break;
@ -758,14 +762,24 @@ static void Mch_ListOneOrMoreMatchesResult (const struct Match *Match,
case Rol_TCH:
case Rol_SYS_ADM:
/* Match result visible or hidden? */
Gam_SetParamCurrentGamCod (Match->GamCod); // Used to pass parameter
Mch_SetParamCurrentMchCod (Match->MchCod); // Used to pass parameter
Lay_PutContextualLinkOnlyIcon (ActChgVisResMchUsr,NULL,
Mch_PutParamsEdit,
Match->Status.ShowUsrResults ? "eye.svg" :
"eye-slash.svg",
Match->Status.ShowUsrResults ? Txt_Visible_result :
Txt_Hidden_result);
if (Mch_CheckIfICanEditThisMatch (Match))
{
/* I can edit visibility */
Gam_SetParamCurrentGamCod (Match->GamCod); // Used to pass parameter
Mch_SetParamCurrentMchCod (Match->MchCod); // Used to pass parameter
Lay_PutContextualLinkOnlyIcon (ActChgVisResMchUsr,NULL,
Mch_PutParamsEdit,
Match->Status.ShowUsrResults ? "eye.svg" :
"eye-slash.svg",
Match->Status.ShowUsrResults ? Txt_Visible_result :
Txt_Hidden_result);
}
else
/* I can not edit visibility */
Ico_PutIconOff (Match->Status.ShowUsrResults ? "eye.svg" :
"eye-slash.svg",
Match->Status.ShowUsrResults ? Txt_Visible_result :
Txt_Hidden_result);
break;
default:
break;
@ -786,6 +800,10 @@ void Mch_ToggleVisibilResultsMchUsr (void)
/***** Get and check parameters *****/
Mch_GetAndCheckParameters (&Game,&Match);
/***** Check if I have permission to change visibility *****/
if (!Mch_CheckIfICanEditThisMatch (&Match))
Act_NoPermissionExit ();
/***** Toggle visibility of match results *****/
Match.Status.ShowUsrResults = !Match.Status.ShowUsrResults;
DB_QueryUPDATE ("can not toggle visibility of match results",
@ -938,8 +956,8 @@ void Mch_RemoveMatch (void)
Mch_GetAndCheckParameters (&Game,&Match);
/***** Check if I can remove this match *****/
if (!Mch_CheckIfICanRemoveMatch (&Match))
Lay_ShowErrorAndExit ("You can not remove this match.");
if (!Mch_CheckIfICanEditThisMatch (&Match))
Act_NoPermissionExit ();
/***** Remove the match from all database tables *****/
Mch_RemoveMatchFromAllTables (Match.MchCod);
@ -1095,7 +1113,7 @@ static void Mch_RemoveUsrMchResultsInCrs (long UsrCod,long CrsCod,const char *Ta
/*********************** Params used to edit a match *************************/
/*****************************************************************************/
static void Mch_PutParamsEdit (void)
void Mch_PutParamsEdit (void)
{
Gam_PutParams ();
Mch_PutParamsPlay ();
@ -1117,7 +1135,7 @@ static void Mch_PutParamsPlay (void)
/******************** Write parameter with code of match **********************/
/*****************************************************************************/
void Mch_PutParamMchCod (long MchCod)
static void Mch_PutParamMchCod (long MchCod)
{
Par_PutHiddenParamLong ("MchCod",MchCod);
}
@ -1322,6 +1340,10 @@ void Mch_ResumeMatch (void)
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
Mch_GetDataOfMatchByCod (&Match);
/***** Check if I have permission to resume match *****/
if (!Mch_CheckIfICanEditThisMatch (&Match))
Act_NoPermissionExit ();
/***** Update match status in database *****/
Mch_UpdateMatchStatusInDB (&Match);
@ -2000,7 +2022,7 @@ static void Mch_ShowMatchStatusForStd (struct Match *Match)
/***** Can I play this match? *****/
ICanPlayThisMatchBasedOnGrps = Mch_CheckIfICanPlayThisMatchBasedOnGrps (Match->MchCod);
if (!ICanPlayThisMatchBasedOnGrps)
Lay_ShowErrorAndExit ("You can not play this match!");
Act_NoPermissionExit ();
/***** Left column *****/
Mch_ShowLeftColumnStd (Match);
@ -3079,7 +3101,7 @@ static void Mch_DrawBarNumUsrs (unsigned NumAnswerersAns,unsigned NumAnswerersQs
/**************** Access to variable used to pass parameter ******************/
/*****************************************************************************/
static void Mch_SetParamCurrentMchCod (long MchCod)
void Mch_SetParamCurrentMchCod (long MchCod)
{
Mch_CurrentMchCod = MchCod;
}

View File

@ -89,7 +89,7 @@ void Mch_RemoveMatchesInGameFromAllTables (long GamCod);
void Mch_RemoveMatchInCourseFromAllTables (long CrsCod);
void Mch_RemoveUsrFromMatchTablesInCrs (long UsrCod,long CrsCod);
void Mch_PutParamMchCod (long MchCod);
void Mch_PutParamsEdit (void);
void Mch_GetAndCheckParameters (struct Game *Game,struct Match *Match);
long Mch_GetParamMchCod (void);
@ -124,4 +124,6 @@ void Mch_GetAndDrawBarNumUsrsWhoHaveChosenAns (long MchCod,unsigned QstInd,unsig
unsigned NumAnswerersQst,bool Correct);
unsigned Mch_GetNumUsrsWhoHaveAnswerQst (long MchCod,unsigned QstInd);
void Mch_SetParamCurrentMchCod (long MchCod);
#endif

View File

@ -385,7 +385,7 @@ static void Mch_ShowMchResults (Usr_MeOrOther_t MeOrOther)
unsigned NumResults;
unsigned NumResult;
static unsigned UniqueId = 0;
long MchCod;
struct Match Match;
Dat_StartEndTime_t StartEndTime;
unsigned NumQstsInThisResult;
unsigned NumQstsNotBlankInThisResult;
@ -436,11 +436,12 @@ static void Mch_ShowMchResults (Usr_MeOrOther_t MeOrOther)
row = mysql_fetch_row (mysql_res);
/* Get match code (row[0]) */
if ((MchCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
if ((Match.MchCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_ShowErrorAndExit ("Wrong code of match.");
Mch_GetDataOfMatchByCod (&Match);
/* Show match result? */
ShowResultThisMatch = Mch_CheckIfICanSeeMatchResult (MchCod,UsrDat->UsrCod);
ShowResultThisMatch = Mch_CheckIfICanSeeMatchResult (Match.MchCod,UsrDat->UsrCod);
ShowSummaryResults = ShowSummaryResults && ShowResultThisMatch;
if (NumResult)
@ -526,15 +527,17 @@ static void Mch_ShowMchResults (Usr_MeOrOther_t MeOrOther)
Gbl.RowEvenOdd);
if (ShowResultThisMatch)
{
Gam_SetParamCurrentGamCod (Match.GamCod); // Used to pass parameter
Mch_SetParamCurrentMchCod (Match.MchCod); // Used to pass parameter
switch (MeOrOther)
{
case Usr_ME:
Frm_StartForm (ActSeeOneMchResMe);
Mch_PutParamMchCod (MchCod);
Mch_PutParamsEdit ();
break;
case Usr_OTHER:
Frm_StartForm (ActSeeOneMchResOth);
Mch_PutParamMchCod (MchCod);
Mch_PutParamsEdit ();
Usr_PutParamOtherUsrCodEncrypted ();
break;
}
@ -645,6 +648,7 @@ void Mch_ShowOneMchResult (void)
{
extern const char *Hlp_ASSESSMENT_Games_results;
extern const char *Txt_Match_result;
extern const char *Txt_The_user_does_not_exist;
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
extern const char *Txt_Today;
@ -772,9 +776,9 @@ void Mch_ShowOneMchResult (void)
/***** Header row *****/
/* Get data of the user who answer the match */
if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (UsrDat,Usr_DONT_GET_PREFS))
Lay_ShowErrorAndExit ("User does not exists.");
Lay_ShowErrorAndExit (Txt_The_user_does_not_exist);
if (!Usr_CheckIfICanViewTst (UsrDat))
Lay_ShowErrorAndExit ("You can not view this match result.");
Act_NoPermissionExit ();
/* User */
fprintf (Gbl.F.Out,"<tr>"
@ -876,7 +880,7 @@ void Mch_ShowOneMchResult (void)
Box_EndBox ();
}
else // I am not allowed to view this match result
Lay_ShowErrorAndExit ("You can not view this match result.");
Act_NoPermissionExit ();
}
/*****************************************************************************/
@ -1074,4 +1078,3 @@ static bool Mch_GetVisibilityMchResultFromDB (long MchCod)
return ShowUsrResults;
}

View File

@ -1518,7 +1518,7 @@ void Svy_AskRemSurvey (void)
/***** Get data of the survey from database *****/
Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit)
Lay_ShowErrorAndExit ("You can not remove this survey.");
Act_NoPermissionExit ();
/***** Show question and button to remove survey *****/
Svy_CurrentSvyCod = Svy.SvyCod;
@ -1551,7 +1551,7 @@ void Svy_RemoveSurvey (void)
/***** Get data of the survey from database *****/
Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit)
Lay_ShowErrorAndExit ("You can not remove this survey.");
Act_NoPermissionExit ();
/***** Remove all the users in this survey *****/
DB_QueryDELETE ("can not remove users who are answered a survey",
@ -1615,7 +1615,7 @@ void Svy_AskResetSurvey (void)
/***** Get data of the survey from database *****/
Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit)
Lay_ShowErrorAndExit ("You can not reset this survey.");
Act_NoPermissionExit ();
/***** Ask for confirmation of reset *****/
Ale_ShowAlert (Ale_WARNING,Txt_Do_you_really_want_to_reset_the_survey_X,
@ -1663,7 +1663,7 @@ void Svy_ResetSurvey (void)
/***** Get data of the survey from database *****/
Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit)
Lay_ShowErrorAndExit ("You can not reset this survey.");
Act_NoPermissionExit ();
/***** Remove all the users in this survey *****/
DB_QueryDELETE ("can not remove users who are answered a survey",
@ -1709,7 +1709,7 @@ void Svy_HideSurvey (void)
/***** Get data of the survey from database *****/
Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit)
Lay_ShowErrorAndExit ("You can not hide this survey.");
Act_NoPermissionExit ();
/***** Hide survey *****/
DB_QueryUPDATE ("can not hide survey",
@ -1744,7 +1744,7 @@ void Svy_UnhideSurvey (void)
/***** Get data of the survey from database *****/
Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit)
Lay_ShowErrorAndExit ("You can not unhide this survey.");
Act_NoPermissionExit ();
/***** Show survey *****/
DB_QueryUPDATE ("can not show survey",
@ -1808,7 +1808,7 @@ void Svy_RequestCreatOrEditSvy (void)
{
/***** Put link (form) to create new survey *****/
if (!Svy_CheckIfICanCreateSvy ())
Lay_ShowErrorAndExit ("You can not create a new survey here.");
Act_NoPermissionExit ();
/* Initialize to empty survey */
Svy.SvyCod = -1L;
@ -1833,7 +1833,7 @@ void Svy_RequestCreatOrEditSvy (void)
/* Get data of the survey from database */
Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit)
Lay_ShowErrorAndExit ("You can not update this survey.");
Act_NoPermissionExit ();
/* Get text of the survey from database */
Svy_GetSurveyTxtFromDB (Svy.SvyCod,Txt);
@ -2108,7 +2108,7 @@ void Svy_RecFormSurvey (void)
OldSvy.SvyCod = NewSvy.SvyCod;
Svy_GetDataOfSurveyByCod (&OldSvy);
if (!OldSvy.Status.ICanEdit)
Lay_ShowErrorAndExit ("You can not update this survey.");
Act_NoPermissionExit ();
NewSvy.Scope = OldSvy.Scope;
}

View File

@ -8018,6 +8018,7 @@ void Tst_ShowOneTstResult (void)
{
extern const char *Hlp_ASSESSMENT_Tests_results;
extern const char *Txt_Test_result;
extern const char *Txt_The_user_does_not_exist;
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Date;
extern const char *Txt_Today;
@ -8109,9 +8110,9 @@ void Tst_ShowOneTstResult (void)
/***** Header row *****/
/* Get data of the user who made the test */
if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,Usr_DONT_GET_PREFS))
Lay_ShowErrorAndExit ("User does not exists.");
Lay_ShowErrorAndExit (Txt_The_user_does_not_exist);
if (!Usr_CheckIfICanViewTst (&Gbl.Usrs.Other.UsrDat))
Lay_ShowErrorAndExit ("You can not view this test result.");
Act_NoPermissionExit ();
/* User */
fprintf (Gbl.F.Out,"<tr>"
@ -8208,7 +8209,7 @@ void Tst_ShowOneTstResult (void)
Box_EndBox ();
}
else // I am not allowed to view this test result
Lay_ShowErrorAndExit ("You can not view this test result.");
Act_NoPermissionExit ();
}
/*****************************************************************************/