mirror of https://github.com/acanas/swad-core.git
Version 14.103
This commit is contained in:
parent
e3f56e826e
commit
2859d080de
|
@ -10573,3 +10573,9 @@ UPDATE usr_data SET EmailNtfEvent =(((EmailNtfEvent & ~0xFF) << 1) | (EmailNtfE
|
||||||
UPDATE usr_data SET NotifNtfEvents=(NotifNtfEvents | 0x2000);
|
UPDATE usr_data SET NotifNtfEvents=(NotifNtfEvents | 0x2000);
|
||||||
|
|
||||||
|
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS usr_banned (
|
||||||
|
UsrCod INT NOT NULL,
|
||||||
|
UNIQUE INDEX(UsrCod));
|
||||||
|
|
21
sql/swad.sql
21
sql/swad.sql
|
@ -1100,15 +1100,11 @@ CREATE TABLE IF NOT EXISTS tst_tags (
|
||||||
INDEX(CrsCod,ChangeTime),
|
INDEX(CrsCod,ChangeTime),
|
||||||
INDEX(TagTxt));
|
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,
|
UsrCod INT NOT NULL,
|
||||||
UsrID CHAR(16) NOT NULL,
|
UNIQUE INDEX(UsrCod));
|
||||||
CreatTime DATETIME NOT NULL,
|
|
||||||
Confirmed ENUM('N','Y') NOT NULL DEFAULT 'N',
|
|
||||||
UNIQUE INDEX(UsrCod,UsrID),
|
|
||||||
INDEX(UsrID));
|
|
||||||
--
|
--
|
||||||
-- Table usr_data: stores users' data
|
-- Table usr_data: stores users' data
|
||||||
--
|
--
|
||||||
|
@ -1158,7 +1154,6 @@ CREATE TABLE IF NOT EXISTS usr_data (
|
||||||
INDEX(CtrCod),
|
INDEX(CtrCod),
|
||||||
INDEX(Menu),
|
INDEX(Menu),
|
||||||
INDEX(SideCols));
|
INDEX(SideCols));
|
||||||
);
|
|
||||||
--
|
--
|
||||||
-- Table usr_emails: stores the users' e-mails
|
-- Table usr_emails: stores the users' e-mails
|
||||||
--
|
--
|
||||||
|
@ -1193,6 +1188,16 @@ CREATE TABLE IF NOT EXISTS usr_follow (
|
||||||
UNIQUE INDEX (FollowedCod,FollowerCod),
|
UNIQUE INDEX (FollowedCod,FollowerCod),
|
||||||
INDEX (FollowTime));
|
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
|
-- Table usr_last: stores some variable data related to users
|
||||||
--
|
--
|
||||||
CREATE TABLE IF NOT EXISTS usr_last (
|
CREATE TABLE IF NOT EXISTS usr_last (
|
||||||
|
|
|
@ -737,7 +737,8 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
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);
|
Msg_RemoveUsrFromBanned (UsrDat->UsrCod);
|
||||||
|
|
||||||
/***** Delete thread read status for this user *****/
|
/***** Delete thread read status for this user *****/
|
||||||
|
|
|
@ -103,11 +103,15 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** 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:
|
// 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
|
// 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.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.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)
|
Version 14.102.10:Mar 28, 2015 Create user's figures when a user account is created. (183942 lines)
|
||||||
|
|
|
@ -2241,6 +2241,21 @@ mysql> DESCRIBE tst_tags;
|
||||||
"TagHidden ENUM('N','Y') NOT NULL,"
|
"TagHidden ENUM('N','Y') NOT NULL,"
|
||||||
"UNIQUE INDEX(TagCod),INDEX(CrsCod,ChangeTime),INDEX(TagTxt))");
|
"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 *****/
|
/***** Table usr_data *****/
|
||||||
/*
|
/*
|
||||||
mysql> DESCRIBE usr_data;
|
mysql> DESCRIBE usr_data;
|
||||||
|
|
296
swad_profile.c
296
swad_profile.c
|
@ -321,6 +321,7 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
||||||
extern const char *Txt_Messages;
|
extern const char *Txt_Messages;
|
||||||
extern const char *Txt_message;
|
extern const char *Txt_message;
|
||||||
extern const char *Txt_messages;
|
extern const char *Txt_messages;
|
||||||
|
bool UsrIsBannedFromRanking;
|
||||||
struct UsrFigures UsrFigures;
|
struct UsrFigures UsrFigures;
|
||||||
unsigned NumCrssUsrIsTeacher;
|
unsigned NumCrssUsrIsTeacher;
|
||||||
unsigned NumCrssUsrIsStudent;
|
unsigned NumCrssUsrIsStudent;
|
||||||
|
@ -445,154 +446,159 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
"</tr>");
|
"</tr>");
|
||||||
|
|
||||||
/* Number of clicks */
|
UsrIsBannedFromRanking = Usr_CheckIfUsrBanned (UsrDat->UsrCod);
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
if (!UsrIsBannedFromRanking)
|
||||||
"<td class=\"PRF_ICON_CONTAINER\">"
|
|
||||||
"<img src=\"%s/click64x64.gif\" title=\"%s\""
|
|
||||||
" class=\"PRF_ICON\" />"
|
|
||||||
"</td>"
|
|
||||||
"<td class=\"PRF_FIG DAT\">",
|
|
||||||
Gbl.Prefs.IconsURL,
|
|
||||||
Txt_Clicks);
|
|
||||||
if (UsrFigures.NumClicks >= 0)
|
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"%ld %s ",
|
/* Number of clicks */
|
||||||
UsrFigures.NumClicks,Txt_clicks);
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumClicks"),
|
"<td class=\"PRF_ICON_CONTAINER\">"
|
||||||
Prf_GetNumUsrsWithFigure ("NumClicks"));
|
"<img src=\"%s/click64x64.gif\" title=\"%s\""
|
||||||
if (UsrFigures.NumDays > 0)
|
" class=\"PRF_ICON\" />"
|
||||||
{
|
"</td>"
|
||||||
fprintf (Gbl.F.Out," (");
|
"<td class=\"PRF_FIG DAT\">",
|
||||||
Str_WriteFloatNum ((float) UsrFigures.NumClicks /
|
Gbl.Prefs.IconsURL,
|
||||||
(float) UsrFigures.NumDays);
|
Txt_Clicks);
|
||||||
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,"</td>"
|
|
||||||
"</tr>");
|
|
||||||
|
|
||||||
/***** Number of file views *****/
|
if (UsrFigures.NumClicks >= 0)
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
|
||||||
"<td class=\"PRF_ICON_CONTAINER\">"
|
|
||||||
"<img src=\"%s/download64x64.gif\" title=\"%s\""
|
|
||||||
" class=\"PRF_ICON\" />"
|
|
||||||
"</td>"
|
|
||||||
"<td class=\"PRF_FIG DAT\">",
|
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out," (");
|
fprintf (Gbl.F.Out,"%ld %s ",
|
||||||
Str_WriteFloatNum ((float) UsrFigures.NumFileViews /
|
UsrFigures.NumClicks,Txt_clicks);
|
||||||
(float) UsrFigures.NumDays);
|
Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumClicks"),
|
||||||
fprintf (Gbl.F.Out," / %s)",Txt_day);
|
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
|
||||||
else // Number of file views is unknown
|
{
|
||||||
{
|
/***** Button to fetch and store number of clicks *****/
|
||||||
/***** Button to fetch and store number of file views *****/
|
Act_FormStart (ActCalNumClk);
|
||||||
Act_FormStart (ActCalNumFilVie);
|
Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod);
|
||||||
Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod);
|
Act_LinkFormSubmitAnimated (Txt_Calculate,The_ClassFormul[Gbl.Prefs.Theme]);
|
||||||
Act_LinkFormSubmitAnimated (Txt_Calculate,The_ClassFormul[Gbl.Prefs.Theme]);
|
Lay_PutCalculateIcon (Txt_Calculate,Txt_Calculate);
|
||||||
Lay_PutCalculateIcon (Txt_Calculate,Txt_Calculate);
|
Act_FormEnd ();
|
||||||
Act_FormEnd ();
|
}
|
||||||
}
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
"</tr>");
|
||||||
"</tr>");
|
|
||||||
|
|
||||||
/***** Number of posts in forums *****/
|
/***** Number of file views *****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"PRF_ICON_CONTAINER\">"
|
"<td class=\"PRF_ICON_CONTAINER\">"
|
||||||
"<img src=\"%s/forum64x64.gif\" title=\"%s\""
|
"<img src=\"%s/download64x64.gif\" title=\"%s\""
|
||||||
" class=\"PRF_ICON\" />"
|
" class=\"PRF_ICON\" />"
|
||||||
"</td>"
|
"</td>"
|
||||||
"<td class=\"PRF_FIG DAT\">",
|
"<td class=\"PRF_FIG DAT\">",
|
||||||
Gbl.Prefs.IconsURL,
|
Gbl.Prefs.IconsURL,
|
||||||
Txt_Forums);
|
Txt_Downloads);
|
||||||
if (UsrFigures.NumForPst >= 0)
|
if (UsrFigures.NumFileViews >= 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)
|
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out," (");
|
fprintf (Gbl.F.Out,"%ld %s ",
|
||||||
Str_WriteFloatNum ((float) UsrFigures.NumForPst /
|
UsrFigures.NumFileViews,
|
||||||
(float) UsrFigures.NumDays);
|
(UsrFigures.NumFileViews == 1) ? Txt_download :
|
||||||
fprintf (Gbl.F.Out," / %s)",Txt_day);
|
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 file views is unknown
|
||||||
else // Number of forum posts is unknown
|
{
|
||||||
{
|
/***** Button to fetch and store number of file views *****/
|
||||||
/***** Button to fetch and store number of forum posts *****/
|
Act_FormStart (ActCalNumFilVie);
|
||||||
Act_FormStart (ActCalNumForPst);
|
Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod);
|
||||||
Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod);
|
Act_LinkFormSubmitAnimated (Txt_Calculate,The_ClassFormul[Gbl.Prefs.Theme]);
|
||||||
Act_LinkFormSubmitAnimated (Txt_Calculate,The_ClassFormul[Gbl.Prefs.Theme]);
|
Lay_PutCalculateIcon (Txt_Calculate,Txt_Calculate);
|
||||||
Lay_PutCalculateIcon (Txt_Calculate,Txt_Calculate);
|
Act_FormEnd ();
|
||||||
Act_FormEnd ();
|
}
|
||||||
}
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
"</tr>");
|
||||||
"</tr>");
|
|
||||||
|
|
||||||
/***** Number of messages sent *****/
|
/***** Number of posts in forums *****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"PRF_ICON_CONTAINER\">"
|
"<td class=\"PRF_ICON_CONTAINER\">"
|
||||||
"<img src=\"%s/msg64x64.gif\" title=\"%s\""
|
"<img src=\"%s/forum64x64.gif\" title=\"%s\""
|
||||||
" class=\"PRF_ICON\" />"
|
" class=\"PRF_ICON\" />"
|
||||||
"</td>"
|
"</td>"
|
||||||
"<td class=\"PRF_FIG DAT\">",
|
"<td class=\"PRF_FIG DAT\">",
|
||||||
Gbl.Prefs.IconsURL,
|
Gbl.Prefs.IconsURL,
|
||||||
Txt_Messages);
|
Txt_Forums);
|
||||||
if (UsrFigures.NumMsgSnt >= 0)
|
if (UsrFigures.NumForPst >= 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," (");
|
fprintf (Gbl.F.Out,"%ld %s ",
|
||||||
Str_WriteFloatNum ((float) UsrFigures.NumMsgSnt /
|
UsrFigures.NumForPst,
|
||||||
(float) UsrFigures.NumDays);
|
(UsrFigures.NumForPst == 1) ? Txt_post :
|
||||||
fprintf (Gbl.F.Out," / %s)",Txt_day);
|
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,"</td>"
|
||||||
|
"</tr>");
|
||||||
|
|
||||||
|
/***** Number of messages sent *****/
|
||||||
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
"<td class=\"PRF_ICON_CONTAINER\">"
|
||||||
|
"<img src=\"%s/msg64x64.gif\" title=\"%s\""
|
||||||
|
" class=\"PRF_ICON\" />"
|
||||||
|
"</td>"
|
||||||
|
"<td class=\"PRF_FIG DAT\">",
|
||||||
|
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,"</td>"
|
||||||
|
"</tr>");
|
||||||
}
|
}
|
||||||
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,"</td>"
|
|
||||||
"</tr>");
|
|
||||||
|
|
||||||
/***** End of table *****/
|
/***** End of table *****/
|
||||||
fprintf (Gbl.F.Out,"</table>");
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
@ -1167,7 +1173,7 @@ void Prf_GetAndShowRankingMsgSnt (void)
|
||||||
|
|
||||||
static void Prf_GetAndShowRankingFigure (const char *FieldName)
|
static void Prf_GetAndShowRankingFigure (const char *FieldName)
|
||||||
{
|
{
|
||||||
char Query[512];
|
char Query[1024];
|
||||||
|
|
||||||
/***** Get ranking from database *****/
|
/***** Get ranking from database *****/
|
||||||
switch (Gbl.Scope.Current)
|
switch (Gbl.Scope.Current)
|
||||||
|
@ -1176,6 +1182,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
|
||||||
sprintf (Query,"SELECT UsrCod,%s"
|
sprintf (Query,"SELECT UsrCod,%s"
|
||||||
" FROM usr_figures"
|
" FROM usr_figures"
|
||||||
" WHERE %s>='0'"
|
" WHERE %s>='0'"
|
||||||
|
" AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||||
" ORDER BY %s DESC,UsrCod LIMIT 100",
|
" ORDER BY %s DESC,UsrCod LIMIT 100",
|
||||||
FieldName,
|
FieldName,
|
||||||
FieldName,FieldName);
|
FieldName,FieldName);
|
||||||
|
@ -1190,6 +1197,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
|
||||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
" AND usr_figures.%s>='0'"
|
" 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",
|
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
|
||||||
FieldName,
|
FieldName,
|
||||||
Gbl.CurrentCty.Cty.CtyCod,
|
Gbl.CurrentCty.Cty.CtyCod,
|
||||||
|
@ -1204,6 +1212,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
|
||||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
" AND usr_figures.%s>='0'"
|
" 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",
|
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
|
||||||
FieldName,
|
FieldName,
|
||||||
Gbl.CurrentIns.Ins.InsCod,
|
Gbl.CurrentIns.Ins.InsCod,
|
||||||
|
@ -1217,6 +1226,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
|
||||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
" AND usr_figures.%s>='0'"
|
" 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",
|
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
|
||||||
FieldName,
|
FieldName,
|
||||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||||
|
@ -1229,6 +1239,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
|
||||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
" AND usr_figures.%s>='0'"
|
" 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",
|
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
|
||||||
FieldName,
|
FieldName,
|
||||||
Gbl.CurrentDeg.Deg.DegCod,
|
Gbl.CurrentDeg.Deg.DegCod,
|
||||||
|
@ -1240,6 +1251,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
|
||||||
" WHERE crs_usr.CrsCod='%ld'"
|
" WHERE crs_usr.CrsCod='%ld'"
|
||||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
" AND usr_figures.%s>='0'"
|
" 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",
|
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
|
||||||
FieldName,
|
FieldName,
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
|
@ -1317,7 +1329,7 @@ void Prf_ShowRankingFigure (const char *Query)
|
||||||
|
|
||||||
void Prf_GetAndShowRankingClicksPerDay (void)
|
void Prf_GetAndShowRankingClicksPerDay (void)
|
||||||
{
|
{
|
||||||
char Query[512];
|
char Query[1024];
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned NumUsrs;
|
unsigned NumUsrs;
|
||||||
|
@ -1335,6 +1347,7 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
||||||
"NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1) AS NumClicksPerDay"
|
"NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1) AS NumClicksPerDay"
|
||||||
" FROM usr_figures"
|
" FROM usr_figures"
|
||||||
" WHERE FirstClickTime>0"
|
" WHERE FirstClickTime>0"
|
||||||
|
" AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||||
" ORDER BY NumClicksPerDay DESC,UsrCod LIMIT 100");
|
" ORDER BY NumClicksPerDay DESC,UsrCod LIMIT 100");
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CTY:
|
case Sco_SCOPE_CTY:
|
||||||
|
@ -1348,6 +1361,7 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
||||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
" AND usr_figures.FirstClickTime>0"
|
" 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",
|
" ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100",
|
||||||
Gbl.CurrentCty.Cty.CtyCod);
|
Gbl.CurrentCty.Cty.CtyCod);
|
||||||
break;
|
break;
|
||||||
|
@ -1361,6 +1375,7 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
||||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
" AND usr_figures.FirstClickTime>0"
|
" 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",
|
" ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100",
|
||||||
Gbl.CurrentIns.Ins.InsCod);
|
Gbl.CurrentIns.Ins.InsCod);
|
||||||
break;
|
break;
|
||||||
|
@ -1373,6 +1388,7 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
||||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
" AND usr_figures.FirstClickTime>0"
|
" 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",
|
" ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100",
|
||||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||||
break;
|
break;
|
||||||
|
@ -1384,6 +1400,7 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
||||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
" AND usr_figures.FirstClickTime>0"
|
" 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",
|
" ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100",
|
||||||
Gbl.CurrentDeg.Deg.DegCod);
|
Gbl.CurrentDeg.Deg.DegCod);
|
||||||
break;
|
break;
|
||||||
|
@ -1394,6 +1411,7 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
||||||
" WHERE crs_usr.CrsCod='%ld'"
|
" WHERE crs_usr.CrsCod='%ld'"
|
||||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
" AND usr_figures.FirstClickTime>0"
|
" 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",
|
" ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod);
|
Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
break;
|
break;
|
||||||
|
|
27
swad_user.c
27
swad_user.c
|
@ -7440,3 +7440,30 @@ static float Usr_GetNumUsrsPerCrs (Rol_Role_t Role)
|
||||||
|
|
||||||
return NumUsrsPerCrs;
|
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");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -327,4 +327,7 @@ void Usr_ShowWarningNoUsersFound (Rol_Role_t Role);
|
||||||
|
|
||||||
void Usr_GetAndShowNumUsrsInPlatform (Rol_Role_t Role);
|
void Usr_GetAndShowNumUsrsInPlatform (Rol_Role_t Role);
|
||||||
|
|
||||||
|
bool Usr_CheckIfUsrBanned (long UsrCod);
|
||||||
|
void Usr_RemoveUsrFromUsrBanned (long UsrCod);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue