mirror of https://github.com/acanas/swad-core.git
Version 15.22
This commit is contained in:
parent
98f14fd94d
commit
801dd37d00
|
@ -108,11 +108,12 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.21.3 (2015/10/26)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.22 (2015/10/26)"
|
||||
|
||||
// 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 15.22: Oct 26, 2015 First click time in users' profiles is displayed in client local date-time. (186328 lines)
|
||||
Version 15.21.3: Oct 26, 2015 Changes in date-times of test exams. (186325 lines)
|
||||
Version 15.21.2: Oct 26, 2015 Date-times in tests are displayed in client local date-time. (186315 lines)
|
||||
Version 15.21.1: Oct 26, 2015 New forms to enter range of date-times in statistic and test. (186313 lines)
|
||||
|
|
|
@ -54,12 +54,12 @@
|
|||
|
||||
struct UsrFigures
|
||||
{
|
||||
struct DateTime FirstClickTime; // 0 ==> unknown first click time of user never logged
|
||||
int NumDays; // -1 ==> not applicable
|
||||
long NumClicks; // -1L ==> unknown number of clicks
|
||||
long NumFileViews; // -1L ==> unknown number of file views
|
||||
long NumForPst; // -1L ==> unknown number of forum posts
|
||||
long NumMsgSnt; // -1L ==> unknown number of messages sent
|
||||
time_t FirstClickTimeUTC; // 0 ==> unknown first click time of user never logged
|
||||
int NumDays; // -1 ==> not applicable
|
||||
long NumClicks; // -1L ==> unknown number of clicks
|
||||
long NumFileViews; // -1L ==> unknown number of file views
|
||||
long NumForPst; // -1L ==> unknown number of forum posts
|
||||
long NumMsgSnt; // -1L ==> unknown number of messages sent
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -421,14 +421,18 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
|||
Gbl.Prefs.IconsURL,
|
||||
Txt_From_TIME,
|
||||
Txt_From_TIME);
|
||||
if (UsrFigures.FirstClickTime.Date.Year)
|
||||
if (UsrFigures.FirstClickTimeUTC)
|
||||
{
|
||||
Dat_WriteDate (UsrFigures.FirstClickTime.Date.YYYYMMDD);
|
||||
fprintf (Gbl.F.Out,"<span id=\"first_click_time\"></span>");
|
||||
if (UsrFigures.NumDays > 0)
|
||||
fprintf (Gbl.F.Out," (%d %s)",
|
||||
UsrFigures.NumDays,
|
||||
(UsrFigures.NumDays == 1) ? Txt_day :
|
||||
Txt_days);
|
||||
fprintf (Gbl.F.Out,"<script type=\"text/javascript\">"
|
||||
"writeLocalDateTimeFromUTC('first_click_time',%ld,' ');"
|
||||
"</script>",
|
||||
(long) UsrFigures.FirstClickTimeUTC);
|
||||
}
|
||||
else // First click time is unknown or user never logged
|
||||
{
|
||||
|
@ -620,7 +624,7 @@ static void Prf_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures)
|
|||
unsigned NumRows;
|
||||
|
||||
/***** Get user's figures from database *****/
|
||||
sprintf (Query,"SELECT DATE_FORMAT(FirstClickTime,'%%Y%%m%%d%%H%%i%%S'),"
|
||||
sprintf (Query,"SELECT UNIX_TIMESTAMP(FirstClickTime),"
|
||||
"DATEDIFF(NOW(),FirstClickTime)+1,"
|
||||
"NumClicks,NumFileViews,NumForPst,NumMsgSnt"
|
||||
" FROM usr_figures WHERE UsrCod='%ld'",
|
||||
|
@ -630,12 +634,11 @@ static void Prf_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures)
|
|||
/***** Get user's figures *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
/* Get first click (row[0] holds the start date in YYYYMMDDHHMMSS format) */
|
||||
if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&(UsrFigures->FirstClickTime),row[0])))
|
||||
Lay_ShowErrorAndExit ("Error when reading first click time.");
|
||||
/* Get first click (row[0] holds first click time UTC) */
|
||||
UsrFigures->FirstClickTimeUTC = Dat_GetUNIXTimeFromStr (row[0]);
|
||||
|
||||
/* Get number of days since first click (row[1]) */
|
||||
if (UsrFigures->FirstClickTime.Date.Year)
|
||||
if (UsrFigures->FirstClickTimeUTC)
|
||||
{
|
||||
if (sscanf (row[1],"%d",&UsrFigures->NumDays) != 1)
|
||||
UsrFigures->NumDays = -1;
|
||||
|
@ -794,19 +797,18 @@ static void Prf_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod)
|
|||
Prf_ResetUsrFigures (&UsrFigures);
|
||||
|
||||
/***** Get first click from log table *****/
|
||||
sprintf (Query,"SELECT DATE_FORMAT("
|
||||
sprintf (Query,"SELECT UNIX_TIMESTAMP("
|
||||
"(SELECT MIN(ClickTime) FROM log_full WHERE UsrCod='%ld')"
|
||||
",'%%Y%%m%%d%%H%%i%%S')",
|
||||
")",
|
||||
UsrCod);
|
||||
if (DB_QuerySELECT (Query,&mysql_res,"can not get user's first click"))
|
||||
{
|
||||
/* Get first click */
|
||||
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-time UTC) */
|
||||
if (row[0]) // It is NULL when user never logged
|
||||
if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&(UsrFigures.FirstClickTime),row[0])))
|
||||
Lay_ShowErrorAndExit ("Error when reading first click time.");
|
||||
UsrFigures.FirstClickTimeUTC = Dat_GetUNIXTimeFromStr (row[0]);
|
||||
}
|
||||
/* Free structure that stores the query result */
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
@ -814,9 +816,9 @@ static void Prf_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod)
|
|||
/***** Update first click time in user's figures *****/
|
||||
if (Prf_CheckIfUsrFiguresExists (UsrCod))
|
||||
{
|
||||
sprintf (Query,"UPDATE usr_figures SET FirstClickTime='%s'"
|
||||
sprintf (Query,"UPDATE usr_figures SET FirstClickTime=FROM_UNIXTIME('%ld')"
|
||||
" WHERE UsrCod='%ld'",
|
||||
UsrFigures.FirstClickTime.YYYYMMDDHHMMSS,UsrCod);
|
||||
(long) UsrFigures.FirstClickTimeUTC,UsrCod);
|
||||
DB_QueryUPDATE (Query,"can not update user's figures");
|
||||
}
|
||||
else // User entry does not exist
|
||||
|
@ -1031,7 +1033,7 @@ void Prf_CreateNewUsrFigures (long UsrCod)
|
|||
|
||||
static void Prf_ResetUsrFigures (struct UsrFigures *UsrFigures)
|
||||
{
|
||||
Dat_GetDateTimeFromYYYYMMDDHHMMSS (&(UsrFigures->FirstClickTime),"00000000000000"); // unknown first click time or user never logged
|
||||
UsrFigures->FirstClickTimeUTC = (time_t) 0; // unknown first click time or user never logged
|
||||
UsrFigures->NumDays = -1; // not applicable
|
||||
UsrFigures->NumClicks = -1L; // unknown number of clicks
|
||||
UsrFigures->NumFileViews = -1L; // unknown number of file views
|
||||
|
@ -1049,10 +1051,10 @@ static void Prf_CreateUsrFigures (long UsrCod,const struct UsrFigures *UsrFigure
|
|||
|
||||
/***** Create user's figures *****/
|
||||
sprintf (Query,"INSERT INTO usr_figures"
|
||||
"(UsrCod,FirstClickTime,NumClicks,NumFileViews,NumForPst,NumMsgSnt)"
|
||||
" VALUES ('%ld','%s','%ld','%ld','%ld','%ld')",
|
||||
"(UsrCod,FROM_UNIXTIME(FirstClickTime),NumClicks,NumFileViews,NumForPst,NumMsgSnt)"
|
||||
" VALUES ('%ld','%ld','%ld','%ld','%ld','%ld')",
|
||||
UsrCod,
|
||||
UsrFigures->FirstClickTime.YYYYMMDDHHMMSS, // 0 ==> unknown first click time or user never logged
|
||||
(long) UsrFigures->FirstClickTimeUTC, // 0 ==> unknown first click time or user never logged
|
||||
UsrFigures->NumClicks, // -1L ==> unknown number of clicks
|
||||
UsrFigures->NumFileViews, // -1L ==> unknown number of file views
|
||||
UsrFigures->NumForPst, // -1L ==> unknown number of forum posts
|
||||
|
|
Loading…
Reference in New Issue