mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-20 23:45:41 +02:00
Version 14.85.2
This commit is contained in:
parent
47ba602209
commit
b1aa6514ca
|
@ -103,12 +103,13 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 14.85.1 (2015/03/11)"
|
#define Log_PLATFORM_VERSION "SWAD 14.85.2 (2015/03/11)"
|
||||||
|
|
||||||
// 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.85.1: Mar 11, 2015 Remove user's figures when removing a user. (181472 lines)
|
Version 14.85.2: Mar 11, 2015 Refactoring in user's figures. (181478 lines)
|
||||||
|
Version 14.85.1: Mar 11, 2015 Remove user's figures when removing user's account. (181472 lines)
|
||||||
Version 14.85: Mar 11, 2015 Number of messages sent is stored in user's figures. (181457 lines)
|
Version 14.85: Mar 11, 2015 Number of messages sent is stored in user's figures. (181457 lines)
|
||||||
2 changes necessary in database:
|
2 changes necessary in database:
|
||||||
ALTER TABLE usr_figures ADD COLUMN NumForPst INT NOT NULL DEFAULT -1 AFTER NumClicks;
|
ALTER TABLE usr_figures ADD COLUMN NumForPst INT NOT NULL DEFAULT -1 AFTER NumClicks;
|
||||||
|
|
107
swad_user.c
107
swad_user.c
|
@ -188,6 +188,8 @@ static void Usr_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod);
|
||||||
static void Usr_GetNumClicksAndStoreAsUsrFigure (long UsrCod);
|
static void Usr_GetNumClicksAndStoreAsUsrFigure (long UsrCod);
|
||||||
static void Usr_GetNumForPstAndStoreAsUsrFigure (long UsrCod);
|
static void Usr_GetNumForPstAndStoreAsUsrFigure (long UsrCod);
|
||||||
static void Usr_GetNumMsgSntAndStoreAsUsrFigure (long UsrCod);
|
static void Usr_GetNumMsgSntAndStoreAsUsrFigure (long UsrCod);
|
||||||
|
static void Usr_ResetUsrFigures (struct UsrFigures *UsrFigures);
|
||||||
|
static void Usr_CreateUsrFigures (long UsrCod,const struct UsrFigures *UsrFigures);
|
||||||
static bool Usr_CheckIfUsrFiguresExists (long UsrCod);
|
static bool Usr_CheckIfUsrFiguresExists (long UsrCod);
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -7829,14 +7831,8 @@ static void Usr_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures)
|
||||||
UsrFigures->NumMsgSnt = -1L;
|
UsrFigures->NumMsgSnt = -1L;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
/***** Return special user's figures indicating "not present" *****/
|
/***** Return special user's figures indicating "not present" *****/
|
||||||
if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&(UsrFigures->FirstClickTime),"00000000000000")))
|
Usr_ResetUsrFigures (UsrFigures);
|
||||||
Lay_ShowErrorAndExit ("Error when reading first click time.");
|
|
||||||
UsrFigures->NumClicks = -1L;
|
|
||||||
UsrFigures->NumForPst = -1L;
|
|
||||||
UsrFigures->NumMsgSnt = -1L;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
@ -7867,11 +7863,13 @@ static void Usr_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod)
|
||||||
char Query[256];
|
char Query[256];
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
struct DateTime FirstClickTime;
|
struct UsrFigures UsrFigures;
|
||||||
bool UsrIsInLog = false;
|
|
||||||
|
|
||||||
if (Usr_ChkIfUsrCodExists (UsrCod))
|
if (Usr_ChkIfUsrCodExists (UsrCod))
|
||||||
{
|
{
|
||||||
|
/***** Reset user's figures *****/
|
||||||
|
Usr_ResetUsrFigures (&UsrFigures);
|
||||||
|
|
||||||
/***** Get first click from log table *****/
|
/***** Get first click from log table *****/
|
||||||
sprintf (Query,"SELECT DATE_FORMAT(ClickTime,'%%Y%%m%%d%%H%%i%%S') FROM log"
|
sprintf (Query,"SELECT DATE_FORMAT(ClickTime,'%%Y%%m%%d%%H%%i%%S') FROM log"
|
||||||
" WHERE UsrCod='%ld' ORDER BY ClickTime LIMIT 1",
|
" WHERE UsrCod='%ld' ORDER BY ClickTime LIMIT 1",
|
||||||
|
@ -7882,32 +7880,22 @@ static void Usr_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod)
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
/* Get first click (row[0] holds the start date in YYYYMMDDHHMMSS format) */
|
/* Get first click (row[0] holds the start date in YYYYMMDDHHMMSS format) */
|
||||||
if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&FirstClickTime,row[0])))
|
if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&(UsrFigures.FirstClickTime),row[0])))
|
||||||
Lay_ShowErrorAndExit ("Error when reading first click time.");
|
Lay_ShowErrorAndExit ("Error when reading first click time.");
|
||||||
|
|
||||||
UsrIsInLog = true;
|
|
||||||
}
|
}
|
||||||
/* Free structure that stores the query result */
|
/* Free structure that stores the query result */
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
|
||||||
/***** Update first click time in user's figures *****/
|
/***** Update first click time in user's figures *****/
|
||||||
if (UsrIsInLog) // If first click time found
|
|
||||||
{
|
|
||||||
if (Usr_CheckIfUsrFiguresExists (UsrCod))
|
if (Usr_CheckIfUsrFiguresExists (UsrCod))
|
||||||
{
|
{
|
||||||
sprintf (Query,"UPDATE usr_figures SET FirstClickTime='%s'"
|
sprintf (Query,"UPDATE usr_figures SET FirstClickTime='%s'"
|
||||||
" WHERE UsrCod='%ld'",
|
" WHERE UsrCod='%ld'",
|
||||||
FirstClickTime.YYYYMMDDHHMMSS,UsrCod);
|
UsrFigures.FirstClickTime.YYYYMMDDHHMMSS,UsrCod);
|
||||||
DB_QueryUPDATE (Query,"can not update user's figures");
|
DB_QueryUPDATE (Query,"can not update user's figures");
|
||||||
}
|
}
|
||||||
else // User entry does not exist
|
else // User entry does not exist
|
||||||
{
|
Usr_CreateUsrFigures (UsrCod,&UsrFigures);
|
||||||
sprintf (Query,"INSERT INTO usr_figures (UsrCod,FirstClickTime,NumClicks,NumForPst,NumMsgSnt)"
|
|
||||||
" VALUES ('%ld','%s','-1','-1','-1')",
|
|
||||||
UsrCod,FirstClickTime.YYYYMMDDHHMMSS);
|
|
||||||
DB_QueryINSERT (Query,"can not create user's figures");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7934,30 +7922,28 @@ void Usr_CalculateNumClicks (void)
|
||||||
static void Usr_GetNumClicksAndStoreAsUsrFigure (long UsrCod)
|
static void Usr_GetNumClicksAndStoreAsUsrFigure (long UsrCod)
|
||||||
{
|
{
|
||||||
char Query[256];
|
char Query[256];
|
||||||
unsigned long NumClicks;
|
struct UsrFigures UsrFigures;
|
||||||
|
|
||||||
if (Usr_ChkIfUsrCodExists (UsrCod))
|
if (Usr_ChkIfUsrCodExists (UsrCod))
|
||||||
{
|
{
|
||||||
|
/***** Reset user's figures *****/
|
||||||
|
Usr_ResetUsrFigures (&UsrFigures);
|
||||||
|
|
||||||
/***** Get number of clicks from database *****/
|
/***** Get number of clicks from database *****/
|
||||||
sprintf (Query,"SELECT COUNT(*) FROM log WHERE UsrCod='%ld'",
|
sprintf (Query,"SELECT COUNT(*) FROM log WHERE UsrCod='%ld'",
|
||||||
UsrCod);
|
UsrCod);
|
||||||
NumClicks = (long) DB_QueryCOUNT (Query,"can not get number of clicks");
|
UsrFigures.NumClicks = (long) DB_QueryCOUNT (Query,"can not get number of clicks");
|
||||||
|
|
||||||
/***** Update number of clicks in user's figures *****/
|
/***** Update number of clicks in user's figures *****/
|
||||||
if (Usr_CheckIfUsrFiguresExists (UsrCod))
|
if (Usr_CheckIfUsrFiguresExists (UsrCod))
|
||||||
{
|
{
|
||||||
sprintf (Query,"UPDATE usr_figures SET NumClicks='%ld'"
|
sprintf (Query,"UPDATE usr_figures SET NumClicks='%ld'"
|
||||||
" WHERE UsrCod='%ld'",
|
" WHERE UsrCod='%ld'",
|
||||||
NumClicks,UsrCod);
|
UsrFigures.NumClicks,UsrCod);
|
||||||
DB_QueryUPDATE (Query,"can not update user's figures");
|
DB_QueryUPDATE (Query,"can not update user's figures");
|
||||||
}
|
}
|
||||||
else // User entry does not exist
|
else // User entry does not exist
|
||||||
{
|
Usr_CreateUsrFigures (UsrCod,&UsrFigures);
|
||||||
sprintf (Query,"INSERT INTO usr_figures (UsrCod,FirstClickTime,NumClicks,NumForPst,NumMsgSnt)"
|
|
||||||
" VALUES ('%ld','00000000000000','%ld','-1','-1')",
|
|
||||||
UsrCod,NumClicks);
|
|
||||||
DB_QueryINSERT (Query,"can not create user's figures");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7984,28 +7970,26 @@ void Usr_CalculateNumForPst (void)
|
||||||
static void Usr_GetNumForPstAndStoreAsUsrFigure (long UsrCod)
|
static void Usr_GetNumForPstAndStoreAsUsrFigure (long UsrCod)
|
||||||
{
|
{
|
||||||
char Query[256];
|
char Query[256];
|
||||||
unsigned long NumForPst;
|
struct UsrFigures UsrFigures;
|
||||||
|
|
||||||
if (Usr_ChkIfUsrCodExists (UsrCod))
|
if (Usr_ChkIfUsrCodExists (UsrCod))
|
||||||
{
|
{
|
||||||
|
/***** Reset user's figures *****/
|
||||||
|
Usr_ResetUsrFigures (&UsrFigures);
|
||||||
|
|
||||||
/***** Get number of forum posts from database *****/
|
/***** Get number of forum posts from database *****/
|
||||||
NumForPst = For_GetNumPostsUsr (UsrCod);
|
UsrFigures.NumForPst = For_GetNumPostsUsr (UsrCod);
|
||||||
|
|
||||||
/***** Update number of forum posts in user's figures *****/
|
/***** Update number of forum posts in user's figures *****/
|
||||||
if (Usr_CheckIfUsrFiguresExists (UsrCod))
|
if (Usr_CheckIfUsrFiguresExists (UsrCod))
|
||||||
{
|
{
|
||||||
sprintf (Query,"UPDATE usr_figures SET NumForPst='%ld'"
|
sprintf (Query,"UPDATE usr_figures SET NumForPst='%ld'"
|
||||||
" WHERE UsrCod='%ld'",
|
" WHERE UsrCod='%ld'",
|
||||||
NumForPst,UsrCod);
|
UsrFigures.NumForPst,UsrCod);
|
||||||
DB_QueryUPDATE (Query,"can not update user's figures");
|
DB_QueryUPDATE (Query,"can not update user's figures");
|
||||||
}
|
}
|
||||||
else // User entry does not exist
|
else // User entry does not exist
|
||||||
{
|
Usr_CreateUsrFigures (UsrCod,&UsrFigures);
|
||||||
sprintf (Query,"INSERT INTO usr_figures (UsrCod,FirstClickTime,NumClicks,NumForPst,NumMsgSnt)"
|
|
||||||
" VALUES ('%ld','00000000000000','-1','%ld','-1')",
|
|
||||||
UsrCod,NumForPst);
|
|
||||||
DB_QueryINSERT (Query,"can not create user's figures");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8032,30 +8016,59 @@ void Usr_CalculateNumMsgSnt (void)
|
||||||
static void Usr_GetNumMsgSntAndStoreAsUsrFigure (long UsrCod)
|
static void Usr_GetNumMsgSntAndStoreAsUsrFigure (long UsrCod)
|
||||||
{
|
{
|
||||||
char Query[256];
|
char Query[256];
|
||||||
unsigned long NumMsgSnt;
|
struct UsrFigures UsrFigures;
|
||||||
|
|
||||||
if (Usr_ChkIfUsrCodExists (UsrCod))
|
if (Usr_ChkIfUsrCodExists (UsrCod))
|
||||||
{
|
{
|
||||||
|
/***** Reset user's figures *****/
|
||||||
|
Usr_ResetUsrFigures (&UsrFigures);
|
||||||
|
|
||||||
/***** Get number of messages sent from database *****/
|
/***** Get number of messages sent from database *****/
|
||||||
NumMsgSnt = Msg_GetNumMsgsSentByUsr (UsrCod);
|
UsrFigures.NumMsgSnt = Msg_GetNumMsgsSentByUsr (UsrCod);
|
||||||
|
|
||||||
/***** Update number of messages sent in user's figures *****/
|
/***** Update number of messages sent in user's figures *****/
|
||||||
if (Usr_CheckIfUsrFiguresExists (UsrCod))
|
if (Usr_CheckIfUsrFiguresExists (UsrCod))
|
||||||
{
|
{
|
||||||
sprintf (Query,"UPDATE usr_figures SET NumMsgSnt='%ld'"
|
sprintf (Query,"UPDATE usr_figures SET NumMsgSnt='%ld'"
|
||||||
" WHERE UsrCod='%ld'",
|
" WHERE UsrCod='%ld'",
|
||||||
NumMsgSnt,UsrCod);
|
UsrFigures.NumMsgSnt,UsrCod);
|
||||||
DB_QueryUPDATE (Query,"can not update user's figures");
|
DB_QueryUPDATE (Query,"can not update user's figures");
|
||||||
}
|
}
|
||||||
else // User entry does not exist
|
else // User entry does not exist
|
||||||
|
Usr_CreateUsrFigures (UsrCod,&UsrFigures);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/********************** Reset values of user's figures ***********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Usr_ResetUsrFigures (struct UsrFigures *UsrFigures)
|
||||||
{
|
{
|
||||||
|
Dat_GetDateTimeFromYYYYMMDDHHMMSS (&(UsrFigures->FirstClickTime),"00000000000000"); // unknown first click time or user never logged
|
||||||
|
UsrFigures->NumClicks = -1L; // unknown number of clicks
|
||||||
|
UsrFigures->NumForPst = -1L; // unknown number of forum posts
|
||||||
|
UsrFigures->NumMsgSnt = -1L; // unknown number of messages sent
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/***** Get number of messages sent by a user and store in user's figures *****/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Usr_CreateUsrFigures (long UsrCod,const struct UsrFigures *UsrFigures)
|
||||||
|
{
|
||||||
|
char Query[256];
|
||||||
|
|
||||||
|
/***** Create user's figures *****/
|
||||||
sprintf (Query,"INSERT INTO usr_figures (UsrCod,FirstClickTime,NumClicks,NumForPst,NumMsgSnt)"
|
sprintf (Query,"INSERT INTO usr_figures (UsrCod,FirstClickTime,NumClicks,NumForPst,NumMsgSnt)"
|
||||||
" VALUES ('%ld','00000000000000','-1','-1','-1','%ld')",
|
" VALUES ('%ld','%s','%ld','%ld','%ld')",
|
||||||
UsrCod,NumMsgSnt);
|
UsrCod,
|
||||||
|
UsrFigures->FirstClickTime.YYYYMMDDHHMMSS, // 0 ==> unknown first click time or user never logged
|
||||||
|
UsrFigures->NumClicks, // -1L ==> unknown number of clicks
|
||||||
|
UsrFigures->NumForPst, // -1L ==> unknown number of forum posts
|
||||||
|
UsrFigures->NumMsgSnt); // -1L ==> unknown number of messages sent
|
||||||
DB_QueryINSERT (Query,"can not create user's figures");
|
DB_QueryINSERT (Query,"can not create user's figures");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/**************************** Remove user's figures **************************/
|
/**************************** Remove user's figures **************************/
|
||||||
|
|
Loading…
Reference in New Issue
Block a user