diff --git a/sql/cambios.sql b/sql/cambios.sql index 69019e49..fb9c4ae6 100644 --- a/sql/cambios.sql +++ b/sql/cambios.sql @@ -10573,3 +10573,9 @@ UPDATE usr_data SET EmailNtfEvent =(((EmailNtfEvent & ~0xFF) << 1) | (EmailNtfE UPDATE usr_data SET NotifNtfEvents=(NotifNtfEvents | 0x2000); +----------------- + + +CREATE TABLE IF NOT EXISTS usr_banned ( + UsrCod INT NOT NULL, + UNIQUE INDEX(UsrCod)); diff --git a/sql/swad.sql b/sql/swad.sql index 7549160b..a8f81761 100644 --- a/sql/swad.sql +++ b/sql/swad.sql @@ -1100,15 +1100,11 @@ CREATE TABLE IF NOT EXISTS tst_tags ( INDEX(CrsCod,ChangeTime), INDEX(TagTxt)); -- --- Table usr_IDs: stores the users' IDs +-- Table usr_banned: stores users banned for ranking -- -CREATE TABLE IF NOT EXISTS usr_IDs ( +CREATE TABLE IF NOT EXISTS usr_banned ( UsrCod INT NOT NULL, - UsrID CHAR(16) NOT NULL, - CreatTime DATETIME NOT NULL, - Confirmed ENUM('N','Y') NOT NULL DEFAULT 'N', - UNIQUE INDEX(UsrCod,UsrID), - INDEX(UsrID)); + UNIQUE INDEX(UsrCod)); -- -- Table usr_data: stores users' data -- @@ -1158,7 +1154,6 @@ CREATE TABLE IF NOT EXISTS usr_data ( INDEX(CtrCod), INDEX(Menu), INDEX(SideCols)); -); -- -- Table usr_emails: stores the users' e-mails -- @@ -1193,6 +1188,16 @@ CREATE TABLE IF NOT EXISTS usr_follow ( UNIQUE INDEX (FollowedCod,FollowerCod), INDEX (FollowTime)); -- +-- Table usr_IDs: stores the users' IDs +-- +CREATE TABLE IF NOT EXISTS usr_IDs ( + UsrCod INT NOT NULL, + UsrID CHAR(16) NOT NULL, + CreatTime DATETIME NOT NULL, + Confirmed ENUM('N','Y') NOT NULL DEFAULT 'N', + UNIQUE INDEX(UsrCod,UsrID), + INDEX(UsrID)); +-- -- Table usr_last: stores some variable data related to users -- CREATE TABLE IF NOT EXISTS usr_last ( diff --git a/swad_account.c b/swad_account.c index 9e3b2e1a..5e49b229 100644 --- a/swad_account.c +++ b/swad_account.c @@ -737,7 +737,8 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat, Lay_ShowAlert (Lay_SUCCESS,Gbl.Message); } - /***** Remove user from table of banned users *****/ + /***** Remove user from tables of banned users *****/ + Usr_RemoveUsrFromUsrBanned (UsrDat->UsrCod); Msg_RemoveUsrFromBanned (UsrDat->UsrCod); /***** Delete thread read status for this user *****/ diff --git a/swad_changelog.h b/swad_changelog.h index a04b7dda..cafdc168 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -103,11 +103,15 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 14.102.12 (2015/03/28)" +#define Log_PLATFORM_VERSION "SWAD 14.103 (2015/03/28)" // Number of lines (includes comments but not blank lines) has been got with the following command: // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1 /* + Version 14.103: Mar 29, 2015 New table to ban users out of ranking. (184014 lines) + 1 change necessary in database: +CREATE TABLE IF NOT EXISTS usr_banned (UsrCod INT NOT NULL,UNIQUE INDEX(UsrCod)); + Version 14.102.12:Mar 28, 2015 Some help messages changed. (183953 lines) Version 14.102.11:Mar 28, 2015 Some help messages changed. (183943 lines) Version 14.102.10:Mar 28, 2015 Create user's figures when a user account is created. (183942 lines) diff --git a/swad_database.c b/swad_database.c index ee9dcecf..3c0ad29f 100644 --- a/swad_database.c +++ b/swad_database.c @@ -2241,6 +2241,21 @@ mysql> DESCRIBE tst_tags; "TagHidden ENUM('N','Y') NOT NULL," "UNIQUE INDEX(TagCod),INDEX(CrsCod,ChangeTime),INDEX(TagTxt))"); + /***** Table usr_banned *****/ +/* +mysql> DESCRIBE usr_banned; ++--------+---------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++--------+---------+------+-----+---------+-------+ +| UsrCod | int(11) | NO | PRI | NULL | | ++--------+---------+------+-----+---------+-------+ +1 row in set (0.01 sec) + +*/ + DB_CreateTable ("CREATE TABLE IF NOT EXISTS usr_banned (" + "UsrCod INT NOT NULL," + "UNIQUE INDEX(UsrCod))"); + /***** Table usr_data *****/ /* mysql> DESCRIBE usr_data; diff --git a/swad_profile.c b/swad_profile.c index 3c271f5b..8c11dbf7 100644 --- a/swad_profile.c +++ b/swad_profile.c @@ -321,6 +321,7 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat) extern const char *Txt_Messages; extern const char *Txt_message; extern const char *Txt_messages; + bool UsrIsBannedFromRanking; struct UsrFigures UsrFigures; unsigned NumCrssUsrIsTeacher; unsigned NumCrssUsrIsStudent; @@ -445,154 +446,159 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat) fprintf (Gbl.F.Out,"" ""); - /* Number of clicks */ - fprintf (Gbl.F.Out,"" - "" - "" - "" - "", - Gbl.Prefs.IconsURL, - Txt_Clicks); - if (UsrFigures.NumClicks >= 0) + UsrIsBannedFromRanking = Usr_CheckIfUsrBanned (UsrDat->UsrCod); + if (!UsrIsBannedFromRanking) { - fprintf (Gbl.F.Out,"%ld %s ", - UsrFigures.NumClicks,Txt_clicks); - Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumClicks"), - Prf_GetNumUsrsWithFigure ("NumClicks")); - if (UsrFigures.NumDays > 0) - { - fprintf (Gbl.F.Out," ("); - Str_WriteFloatNum ((float) UsrFigures.NumClicks / - (float) UsrFigures.NumDays); - fprintf (Gbl.F.Out," / %s ",Txt_day); - Prf_ShowRanking (Prf_GetRankingNumClicksPerDay (UsrDat->UsrCod), - Prf_GetNumUsrsWithNumClicksPerDay ()); - fprintf (Gbl.F.Out,")"); - } - } - else // Number of clicks is unknown - { - /***** Button to fetch and store number of clicks *****/ - Act_FormStart (ActCalNumClk); - Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod); - Act_LinkFormSubmitAnimated (Txt_Calculate,The_ClassFormul[Gbl.Prefs.Theme]); - Lay_PutCalculateIcon (Txt_Calculate,Txt_Calculate); - Act_FormEnd (); - } - fprintf (Gbl.F.Out,"" - ""); + /* Number of clicks */ + fprintf (Gbl.F.Out,"" + "" + "" + "" + "", + Gbl.Prefs.IconsURL, + Txt_Clicks); - /***** Number of file views *****/ - fprintf (Gbl.F.Out,"" - "" - "" - "" - "", - Gbl.Prefs.IconsURL, - Txt_Downloads); - if (UsrFigures.NumFileViews >= 0) - { - fprintf (Gbl.F.Out,"%ld %s ", - UsrFigures.NumFileViews, - (UsrFigures.NumFileViews == 1) ? Txt_download : - Txt_downloads); - Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumFileViews"), - Prf_GetNumUsrsWithFigure ("NumFileViews")); - if (UsrFigures.NumDays > 0) + if (UsrFigures.NumClicks >= 0) { - fprintf (Gbl.F.Out," ("); - Str_WriteFloatNum ((float) UsrFigures.NumFileViews / - (float) UsrFigures.NumDays); - fprintf (Gbl.F.Out," / %s)",Txt_day); + fprintf (Gbl.F.Out,"%ld %s ", + UsrFigures.NumClicks,Txt_clicks); + Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumClicks"), + Prf_GetNumUsrsWithFigure ("NumClicks")); + if (UsrFigures.NumDays > 0) + { + fprintf (Gbl.F.Out," ("); + Str_WriteFloatNum ((float) UsrFigures.NumClicks / + (float) UsrFigures.NumDays); + fprintf (Gbl.F.Out," / %s ",Txt_day); + Prf_ShowRanking (Prf_GetRankingNumClicksPerDay (UsrDat->UsrCod), + Prf_GetNumUsrsWithNumClicksPerDay ()); + fprintf (Gbl.F.Out,")"); + } } - } - else // Number of file views is unknown - { - /***** Button to fetch and store number of file views *****/ - Act_FormStart (ActCalNumFilVie); - Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod); - Act_LinkFormSubmitAnimated (Txt_Calculate,The_ClassFormul[Gbl.Prefs.Theme]); - Lay_PutCalculateIcon (Txt_Calculate,Txt_Calculate); - Act_FormEnd (); - } - fprintf (Gbl.F.Out,"" - ""); + else // Number of clicks is unknown + { + /***** Button to fetch and store number of clicks *****/ + Act_FormStart (ActCalNumClk); + Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod); + Act_LinkFormSubmitAnimated (Txt_Calculate,The_ClassFormul[Gbl.Prefs.Theme]); + Lay_PutCalculateIcon (Txt_Calculate,Txt_Calculate); + Act_FormEnd (); + } + fprintf (Gbl.F.Out,"" + ""); - /***** Number of posts in forums *****/ - fprintf (Gbl.F.Out,"" - "" - "" - "" - "", - Gbl.Prefs.IconsURL, - Txt_Forums); - if (UsrFigures.NumForPst >= 0) - { - fprintf (Gbl.F.Out,"%ld %s ", - UsrFigures.NumForPst, - (UsrFigures.NumForPst == 1) ? Txt_post : - Txt_posts); - Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumForPst"), - Prf_GetNumUsrsWithFigure ("NumForPst")); - if (UsrFigures.NumDays > 0) + /***** Number of file views *****/ + fprintf (Gbl.F.Out,"" + "" + "" + "" + "", + Gbl.Prefs.IconsURL, + Txt_Downloads); + if (UsrFigures.NumFileViews >= 0) { - fprintf (Gbl.F.Out," ("); - Str_WriteFloatNum ((float) UsrFigures.NumForPst / - (float) UsrFigures.NumDays); - fprintf (Gbl.F.Out," / %s)",Txt_day); + fprintf (Gbl.F.Out,"%ld %s ", + UsrFigures.NumFileViews, + (UsrFigures.NumFileViews == 1) ? Txt_download : + Txt_downloads); + Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumFileViews"), + Prf_GetNumUsrsWithFigure ("NumFileViews")); + if (UsrFigures.NumDays > 0) + { + fprintf (Gbl.F.Out," ("); + Str_WriteFloatNum ((float) UsrFigures.NumFileViews / + (float) UsrFigures.NumDays); + fprintf (Gbl.F.Out," / %s)",Txt_day); + } } - } - else // Number of forum posts is unknown - { - /***** Button to fetch and store number of forum posts *****/ - Act_FormStart (ActCalNumForPst); - Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod); - Act_LinkFormSubmitAnimated (Txt_Calculate,The_ClassFormul[Gbl.Prefs.Theme]); - Lay_PutCalculateIcon (Txt_Calculate,Txt_Calculate); - Act_FormEnd (); - } - fprintf (Gbl.F.Out,"" - ""); + else // Number of file views is unknown + { + /***** Button to fetch and store number of file views *****/ + Act_FormStart (ActCalNumFilVie); + Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod); + Act_LinkFormSubmitAnimated (Txt_Calculate,The_ClassFormul[Gbl.Prefs.Theme]); + Lay_PutCalculateIcon (Txt_Calculate,Txt_Calculate); + Act_FormEnd (); + } + fprintf (Gbl.F.Out,"" + ""); - /***** Number of messages sent *****/ - fprintf (Gbl.F.Out,"" - "" - "" - "" - "", - Gbl.Prefs.IconsURL, - Txt_Messages); - if (UsrFigures.NumMsgSnt >= 0) - { - fprintf (Gbl.F.Out,"%ld %s ", - UsrFigures.NumMsgSnt, - (UsrFigures.NumMsgSnt == 1) ? Txt_message : - Txt_messages); - Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumMsgSnt"), - Prf_GetNumUsrsWithFigure ("NumMsgSnt")); - if (UsrFigures.NumDays > 0) + /***** Number of posts in forums *****/ + fprintf (Gbl.F.Out,"" + "" + "" + "" + "", + Gbl.Prefs.IconsURL, + Txt_Forums); + if (UsrFigures.NumForPst >= 0) { - fprintf (Gbl.F.Out," ("); - Str_WriteFloatNum ((float) UsrFigures.NumMsgSnt / - (float) UsrFigures.NumDays); - fprintf (Gbl.F.Out," / %s)",Txt_day); + fprintf (Gbl.F.Out,"%ld %s ", + UsrFigures.NumForPst, + (UsrFigures.NumForPst == 1) ? Txt_post : + Txt_posts); + Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumForPst"), + Prf_GetNumUsrsWithFigure ("NumForPst")); + if (UsrFigures.NumDays > 0) + { + fprintf (Gbl.F.Out," ("); + Str_WriteFloatNum ((float) UsrFigures.NumForPst / + (float) UsrFigures.NumDays); + fprintf (Gbl.F.Out," / %s)",Txt_day); + } } + else // Number of forum posts is unknown + { + /***** Button to fetch and store number of forum posts *****/ + Act_FormStart (ActCalNumForPst); + Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod); + Act_LinkFormSubmitAnimated (Txt_Calculate,The_ClassFormul[Gbl.Prefs.Theme]); + Lay_PutCalculateIcon (Txt_Calculate,Txt_Calculate); + Act_FormEnd (); + } + fprintf (Gbl.F.Out,"" + ""); + + /***** Number of messages sent *****/ + fprintf (Gbl.F.Out,"" + "" + "" + "" + "", + Gbl.Prefs.IconsURL, + Txt_Messages); + if (UsrFigures.NumMsgSnt >= 0) + { + fprintf (Gbl.F.Out,"%ld %s ", + UsrFigures.NumMsgSnt, + (UsrFigures.NumMsgSnt == 1) ? Txt_message : + Txt_messages); + Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumMsgSnt"), + Prf_GetNumUsrsWithFigure ("NumMsgSnt")); + if (UsrFigures.NumDays > 0) + { + fprintf (Gbl.F.Out," ("); + Str_WriteFloatNum ((float) UsrFigures.NumMsgSnt / + (float) UsrFigures.NumDays); + fprintf (Gbl.F.Out," / %s)",Txt_day); + } + } + else // Number of clicks is unknown + { + /***** Button to fetch and store number of messages sent *****/ + Act_FormStart (ActCalNumMsgSnt); + Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod); + Act_LinkFormSubmitAnimated (Txt_Calculate,The_ClassFormul[Gbl.Prefs.Theme]); + Lay_PutCalculateIcon (Txt_Calculate,Txt_Calculate); + Act_FormEnd (); + } + fprintf (Gbl.F.Out,"" + ""); } - else // Number of clicks is unknown - { - /***** Button to fetch and store number of messages sent *****/ - Act_FormStart (ActCalNumMsgSnt); - Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod); - Act_LinkFormSubmitAnimated (Txt_Calculate,The_ClassFormul[Gbl.Prefs.Theme]); - Lay_PutCalculateIcon (Txt_Calculate,Txt_Calculate); - Act_FormEnd (); - } - fprintf (Gbl.F.Out,"" - ""); /***** End of table *****/ fprintf (Gbl.F.Out,""); @@ -1167,7 +1173,7 @@ void Prf_GetAndShowRankingMsgSnt (void) static void Prf_GetAndShowRankingFigure (const char *FieldName) { - char Query[512]; + char Query[1024]; /***** Get ranking from database *****/ switch (Gbl.Scope.Current) @@ -1176,6 +1182,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName) sprintf (Query,"SELECT UsrCod,%s" " FROM usr_figures" " WHERE %s>='0'" + " AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " ORDER BY %s DESC,UsrCod LIMIT 100", FieldName, FieldName,FieldName); @@ -1190,6 +1197,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName) " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=usr_figures.UsrCod" " AND usr_figures.%s>='0'" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100", FieldName, Gbl.CurrentCty.Cty.CtyCod, @@ -1204,6 +1212,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName) " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=usr_figures.UsrCod" " AND usr_figures.%s>='0'" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100", FieldName, Gbl.CurrentIns.Ins.InsCod, @@ -1217,6 +1226,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName) " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=usr_figures.UsrCod" " AND usr_figures.%s>='0'" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100", FieldName, Gbl.CurrentCtr.Ctr.CtrCod, @@ -1229,6 +1239,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName) " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=usr_figures.UsrCod" " AND usr_figures.%s>='0'" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100", FieldName, Gbl.CurrentDeg.Deg.DegCod, @@ -1240,6 +1251,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName) " WHERE crs_usr.CrsCod='%ld'" " AND crs_usr.UsrCod=usr_figures.UsrCod" " AND usr_figures.%s>='0'" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100", FieldName, Gbl.CurrentCrs.Crs.CrsCod, @@ -1317,7 +1329,7 @@ void Prf_ShowRankingFigure (const char *Query) void Prf_GetAndShowRankingClicksPerDay (void) { - char Query[512]; + char Query[1024]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumUsrs; @@ -1335,6 +1347,7 @@ void Prf_GetAndShowRankingClicksPerDay (void) "NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1) AS NumClicksPerDay" " FROM usr_figures" " WHERE FirstClickTime>0" + " AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " ORDER BY NumClicksPerDay DESC,UsrCod LIMIT 100"); break; case Sco_SCOPE_CTY: @@ -1348,6 +1361,7 @@ void Prf_GetAndShowRankingClicksPerDay (void) " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=usr_figures.UsrCod" " AND usr_figures.FirstClickTime>0" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", Gbl.CurrentCty.Cty.CtyCod); break; @@ -1361,6 +1375,7 @@ void Prf_GetAndShowRankingClicksPerDay (void) " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=usr_figures.UsrCod" " AND usr_figures.FirstClickTime>0" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", Gbl.CurrentIns.Ins.InsCod); break; @@ -1373,6 +1388,7 @@ void Prf_GetAndShowRankingClicksPerDay (void) " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=usr_figures.UsrCod" " AND usr_figures.FirstClickTime>0" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", Gbl.CurrentCtr.Ctr.CtrCod); break; @@ -1384,6 +1400,7 @@ void Prf_GetAndShowRankingClicksPerDay (void) " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=usr_figures.UsrCod" " AND usr_figures.FirstClickTime>0" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", Gbl.CurrentDeg.Deg.DegCod); break; @@ -1394,6 +1411,7 @@ void Prf_GetAndShowRankingClicksPerDay (void) " WHERE crs_usr.CrsCod='%ld'" " AND crs_usr.UsrCod=usr_figures.UsrCod" " AND usr_figures.FirstClickTime>0" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", Gbl.CurrentCrs.Crs.CrsCod); break; diff --git a/swad_user.c b/swad_user.c index e69e3707..c3dba97d 100644 --- a/swad_user.c +++ b/swad_user.c @@ -7440,3 +7440,30 @@ static float Usr_GetNumUsrsPerCrs (Rol_Role_t Role) return NumUsrsPerCrs; } + +/*****************************************************************************/ +/****************** Check if a user is banned in ranking *********************/ +/*****************************************************************************/ + +bool Usr_CheckIfUsrBanned (long UsrCod) + { + char Query[128]; + + sprintf (Query,"SELECT COUNT(*) FROM usr_banned WHERE UsrCod='%ld'", + UsrCod); + return (DB_QueryCOUNT (Query,"can not check if user is banned") != 0); + } + +/*****************************************************************************/ +/****************** Check if a user is banned in ranking *********************/ +/*****************************************************************************/ + +void Usr_RemoveUsrFromUsrBanned (long UsrCod) + { + char Query[128]; + + sprintf (Query,"DELETE FROM usr_banned WHERE UsrCod='%ld'", + UsrCod); + DB_QueryDELETE (Query,"can not remove user from users banned"); + } + diff --git a/swad_user.h b/swad_user.h index c76befca..15766dd4 100644 --- a/swad_user.h +++ b/swad_user.h @@ -327,4 +327,7 @@ void Usr_ShowWarningNoUsersFound (Rol_Role_t Role); void Usr_GetAndShowNumUsrsInPlatform (Rol_Role_t Role); +bool Usr_CheckIfUsrBanned (long UsrCod); +void Usr_RemoveUsrFromUsrBanned (long UsrCod); + #endif