diff --git a/swad_changelog.h b/swad_changelog.h
index 9c6c8b0a7..278ddff40 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -471,10 +471,11 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
-#define Log_PLATFORM_VERSION "SWAD 19.19.4 (2019-09-29)"
+#define Log_PLATFORM_VERSION "SWAD 19.19.5 (2019-09-29)"
#define CSS_FILE "swad19.15.css"
#define JS_FILE "swad19.15.js"
/*
+ Version 19.19.5: Sep 29, 2019 Code refactoring in games. (246612 lines)
Version 19.19.4: Sep 29, 2019 Code refactoring in games. (246638 lines)
Version 19.19.3: Sep 29, 2019 Students will not see matches results for groups to which they don't belong. (246645 lines)
Version 19.19.2: Sep 29, 2019 Students will not see icons to remove matches. (246619 lines)
diff --git a/swad_game.c b/swad_game.c
index 6d733c2cd..4be5beb0a 100644
--- a/swad_game.c
+++ b/swad_game.c
@@ -402,7 +402,7 @@ void Gam_ShowOneGame (long GamCod,
fprintf (Gbl.F.Out,"
");
/***** Icons related to this game *****/
- if (Game.Status.ICanEdit)
+ if (Gam_CheckIfICanEditGames ())
{
fprintf (Gbl.F.Out,"");
@@ -451,8 +451,8 @@ void Gam_ShowOneGame (long GamCod,
Frm_StartForm (ActSeeGam);
Gam_PutParams ();
Frm_LinkFormSubmit (Txt_View_game,
- Game.Status.Visible ? "ASG_TITLE" :
- "ASG_TITLE_LIGHT",NULL);
+ Game.Hidden ? "ASG_TITLE_LIGHT":
+ "ASG_TITLE",NULL);
fprintf (Gbl.F.Out,"%s",
Game.Title);
Frm_EndForm ();
@@ -460,8 +460,8 @@ void Gam_ShowOneGame (long GamCod,
/* Number of questions */
fprintf (Gbl.F.Out," %s: %u ",
- Game.Status.Visible ? "ASG_GRP" :
- "ASG_GRP_LIGHT",
+ Game.Hidden ? "ASG_GRP_LIGHT" :
+ "ASG_GRP",
Txt_No_of_questions,
Game.NumQsts);
@@ -477,8 +477,8 @@ void Gam_ShowOneGame (long GamCod,
Frm_StartForm (ActSeeGam);
Gam_PutParams ();
Frm_LinkFormSubmit (Txt_Matches,
- Game.Status.Visible ? "ASG_TITLE" :
- "ASG_TITLE_LIGHT",NULL);
+ Game.Hidden ? "ASG_TITLE_LIGHT" :
+ "ASG_TITLE",NULL);
if (ShowOnlyThisGame)
fprintf (Gbl.F.Out,"%s: ",Txt_Matches);
fprintf (Gbl.F.Out,"%u",Game.NumMchs);
@@ -511,8 +511,8 @@ void Gam_ShowOneGame (long GamCod,
Str_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links
fprintf (Gbl.F.Out,"%s "
" | ",
- Game.Status.Visible ? "DAT" :
- "DAT_LIGHT",
+ Game.Hidden ? "DAT_LIGHT" :
+ "DAT",
Txt);
/***** End 2nd row of this game *****/
@@ -547,7 +547,7 @@ void Gam_ShowOneGame (long GamCod,
static void Gam_WriteAuthor (struct Game *Game)
{
- Usr_WriteAuthor1Line (Game->UsrCod,!Game->Status.Visible);
+ Usr_WriteAuthor1Line (Game->UsrCod,Game->Hidden);
}
/*****************************************************************************/
@@ -569,11 +569,11 @@ static void Gam_PutFormsToRemEditOneGame (const struct Game *Game,
/***** Put icon to remove game *****/
Ico_PutContextualIconToRemove (ActReqRemGam,Gam_PutParams);
- /***** Put icon to hide/show game *****/
- if (Game->Status.Visible)
- Ico_PutContextualIconToHide (ActHidGam,Anchor,Gam_PutParams);
- else
+ /***** Put icon to unhide/hide game *****/
+ if (Game->Hidden)
Ico_PutContextualIconToUnhide (ActShoGam,Anchor,Gam_PutParams);
+ else
+ Ico_PutContextualIconToHide (ActHidGam,Anchor,Gam_PutParams);
/***** Put icon to edit game *****/
if (!Game->NumMchs) // Edit only if match has no matches
@@ -754,7 +754,7 @@ void Gam_GetDataOfGameByCod (struct Game *Game)
Game->CrsCod = Str_ConvertStrCodToLongCod (row[1]);
/* Get whether the game is hidden (row[2]) */
- Game->Status.Visible = (row[2][0] == 'N');
+ Game->Hidden = (row[2][0] == 'Y');
/* Get author of the game (row[3]) */
Game->UsrCod = Str_ConvertStrCodToLongCod (row[3]);
@@ -768,30 +768,6 @@ void Gam_GetDataOfGameByCod (struct Game *Game)
/* Get number of matches */
Game->NumMchs = Mch_GetNumMchsInGame (Game->GamCod);
-
- /* Can I view results of the game?
- Can I edit game? */
- switch (Gbl.Usrs.Me.Role.Logged)
- {
- case Rol_STD:
- Game->Status.ICanEdit = false;
- break;
- case Rol_NET:
- Game->Status.ICanEdit = false;
- break;
- case Rol_TCH:
- case Rol_DEG_ADM:
- case Rol_CTR_ADM:
- case Rol_INS_ADM:
- Game->Status.ICanEdit = true;
- break;
- case Rol_SYS_ADM:
- Game->Status.ICanEdit = true;
- break;
- default:
- Game->Status.ICanEdit = false;
- break;
- }
}
else
/* Initialize to empty game */
@@ -846,8 +822,7 @@ static void Gam_ResetGame (struct Game *Game)
Game->Title[0] = '\0';
Game->NumQsts = 0;
Game->NumMchs = 0;
- Game->Status.Visible = true;
- Game->Status.ICanEdit = false;
+ Game->Hidden = false;
}
/*****************************************************************************/
@@ -934,7 +909,7 @@ void Gam_AskRemGame (void)
/***** Get data of the game from database *****/
Gam_GetDataOfGameByCod (&Game);
- if (!Game.Status.ICanEdit)
+ if (!Gam_CheckIfICanEditGames ())
Lay_ShowErrorAndExit ("You can not remove this game.");
/***** Show question and button to remove game *****/
@@ -963,7 +938,7 @@ void Gam_RemoveGame (void)
/***** Get data of the game from database *****/
Gam_GetDataOfGameByCod (&Game);
- if (!Game.Status.ICanEdit)
+ if (!Gam_CheckIfICanEditGames ())
Lay_ShowErrorAndExit ("You can not remove this game.");
/***** Remove game from all tables *****/
@@ -1035,7 +1010,7 @@ void Gam_HideGame (void)
/***** Get data of the game from database *****/
Gam_GetDataOfGameByCod (&Game);
- if (!Game.Status.ICanEdit)
+ if (!Gam_CheckIfICanEditGames ())
Lay_ShowErrorAndExit ("You can not hide this game.");
/***** Hide game *****/
@@ -1061,7 +1036,7 @@ void Gam_UnhideGame (void)
/***** Get data of the game from database *****/
Gam_GetDataOfGameByCod (&Game);
- if (!Game.Status.ICanEdit)
+ if (!Gam_CheckIfICanEditGames ())
Lay_ShowErrorAndExit ("You can not unhide this game.");
/***** Show game *****/
@@ -1128,7 +1103,7 @@ void Gam_RequestCreatOrEditGame (void)
{
/* Get data of the game from database */
Gam_GetDataOfGameByCod (&Game);
- if (!Game.Status.ICanEdit)
+ if (!Gam_CheckIfICanEditGames ())
Lay_ShowErrorAndExit ("You can not update this game.");
/* Get text of the game from database */
@@ -1227,7 +1202,7 @@ void Gam_RecFormGame (void)
/* Get data of the old (current) game from database */
OldGame.GamCod = NewGame.GamCod;
Gam_GetDataOfGameByCod (&OldGame);
- if (!OldGame.Status.ICanEdit)
+ if (!Gam_CheckIfICanEditGames ())
Lay_ShowErrorAndExit ("You can not update this game.");
}
@@ -1581,6 +1556,7 @@ static void Gam_ListGameQuestions (struct Game *Game)
unsigned NumQsts;
bool Editing = (Gbl.Action.Act == ActEdiOneGam ||
Gbl.Action.Act == ActAddOneGamQst); // TODO: Ampliar casos en los que se está editando para que se muestre el botón de Añadir preguntas
+ bool ICanEditGames = Gam_CheckIfICanEditGames ();
/***** Get data of questions from database *****/
NumQsts = (unsigned) DB_QuerySELECT (&mysql_res,"can not get data of a question",
@@ -1598,8 +1574,8 @@ static void Gam_ListGameQuestions (struct Game *Game)
/***** Start box *****/
Gam_CurrentGamCod = Game->GamCod;
- Box_StartBox (NULL,Txt_Questions,Game->Status.ICanEdit ? Gam_PutIconToAddNewQuestions :
- NULL,
+ Box_StartBox (NULL,Txt_Questions,ICanEditGames ? Gam_PutIconToAddNewQuestions :
+ NULL,
Hlp_ASSESSMENT_Games_questions,Box_NOT_CLOSABLE);
if (NumQsts)
@@ -1608,9 +1584,9 @@ static void Gam_ListGameQuestions (struct Game *Game)
else // This game has no questions
Ale_ShowAlert (Ale_INFO,Txt_This_game_has_no_questions);
- if (Game->Status.ICanEdit && // I can edit
- (!NumQsts || // This game has no questions
- Editing)) // I am editing
+ if (ICanEditGames && // I can edit
+ (!NumQsts || // This game has no questions
+ Editing)) // I am editing
/***** Put button to add a new question in this game *****/
Gam_PutButtonToAddNewQuestions ();
diff --git a/swad_game.h b/swad_game.h
index 200e8a3f3..dc5dc63f5 100644
--- a/swad_game.h
+++ b/swad_game.h
@@ -44,13 +44,9 @@ struct Game
long UsrCod; // Author code
char Title[Gam_MAX_BYTES_TITLE + 1];
time_t TimeUTC[Dat_NUM_START_END_TIME];
+ bool Hidden; // Game is hidden
unsigned NumQsts; // Number of questions in the game
unsigned NumMchs; // Number of matches in the game
- struct
- {
- bool Visible; // Game is not hidden
- bool ICanEdit;
- } Status;
};
#define Gam_NUM_ORDERS 3