Version 16.49

This commit is contained in:
Antonio Cañas Vargas 2016-11-08 00:58:32 +01:00
parent 84835270ad
commit d7f7e0fc75
9 changed files with 57 additions and 38 deletions

View File

@ -538,7 +538,7 @@ static void Acc_PrintAccountSeparator (void)
// Return true if no error and user can be logged in // Return true if no error and user can be logged in
// Return false on error // Return false on error
bool Acc_CreateNewAccountAndLogIn (void) bool Acc_CreateMyNewAccountAndLogIn (void)
{ {
char NewNicknameWithoutArroba[Nck_MAX_BYTES_NICKNAME_WITH_ARROBA+1]; char NewNicknameWithoutArroba[Nck_MAX_BYTES_NICKNAME_WITH_ARROBA+1];
char NewEmail[Usr_MAX_BYTES_USR_EMAIL+1]; char NewEmail[Usr_MAX_BYTES_USR_EMAIL+1];
@ -554,7 +554,8 @@ bool Acc_CreateNewAccountAndLogIn (void)
strcpy (Gbl.Usrs.Me.UsrDat.Password,NewEncryptedPassword); strcpy (Gbl.Usrs.Me.UsrDat.Password,NewEncryptedPassword);
/***** User does not exist in the platform, so create him/her! *****/ /***** User does not exist in the platform, so create him/her! *****/
Acc_CreateNewUsr (&Gbl.Usrs.Me.UsrDat); Acc_CreateNewUsr (&Gbl.Usrs.Me.UsrDat,
true); // I am creating my own account
/***** Save nickname *****/ /***** Save nickname *****/
Nck_UpdateMyNick (NewNicknameWithoutArroba); Nck_UpdateMyNick (NewNicknameWithoutArroba);
@ -678,7 +679,7 @@ static bool Acc_GetParamsNewAccount (char *NewNicknameWithoutArroba,
// UsrDat->UsrCod must be <= 0 // UsrDat->UsrCod must be <= 0
// UsrDat->UsrDat.IDs must contain a list of IDs for the new user // UsrDat->UsrDat.IDs must contain a list of IDs for the new user
void Acc_CreateNewUsr (struct UsrData *UsrDat) void Acc_CreateNewUsr (struct UsrData *UsrDat,bool CreatingMyOwnAccount)
{ {
extern const char *The_ThemeId[The_NUM_THEMES]; extern const char *The_ThemeId[The_NUM_THEMES];
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS]; extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
@ -754,7 +755,7 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat)
Fil_CreateDirIfNotExists (PathRelUsr); Fil_CreateDirIfNotExists (PathRelUsr);
/***** Create user's figures *****/ /***** Create user's figures *****/
Prf_CreateNewUsrFigures (UsrDat->UsrCod); Prf_CreateNewUsrFigures (UsrDat->UsrCod,CreatingMyOwnAccount);
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -57,8 +57,8 @@ void Acc_CheckIfEmptyAccountExists (void);
void Acc_ShowFormGoToRequestNewAccount (void); void Acc_ShowFormGoToRequestNewAccount (void);
void Acc_ShowFormChangeMyAccount (void); void Acc_ShowFormChangeMyAccount (void);
bool Acc_CreateNewAccountAndLogIn (void); bool Acc_CreateMyNewAccountAndLogIn (void);
void Acc_CreateNewUsr (struct UsrData *UsrDat); void Acc_CreateNewUsr (struct UsrData *UsrDat,bool CreatingMyOwnAccount);
void Acc_AfterCreationNewAccount (void); void Acc_AfterCreationNewAccount (void);
void Acc_GetUsrCodAndRemUsrGbl (void); void Acc_GetUsrCodAndRemUsrGbl (void);

View File

@ -156,13 +156,14 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.48.12 (2016-11-07)" #define Log_PLATFORM_VERSION "SWAD 16.49 (2016-11-08)"
#define CSS_FILE "swad16.48.4.css" #define CSS_FILE "swad16.48.4.css"
#define JS_FILE "swad16.46.1.js" #define JS_FILE "swad16.46.1.js"
// 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 16.49: Nov 08, 2016 Set some user's figures to 0 when creating an account. (206555 lines)
Version 16.48.12: Nov 07, 2016 Icon in my webs / social networks to show figure (statistics). (206537 lines) Version 16.48.12: Nov 07, 2016 Icon in my webs / social networks to show figure (statistics). (206537 lines)
Version 16.48.11: Nov 07, 2016 Changes in order of figures (statistics). (206523 lines) Version 16.48.11: Nov 07, 2016 Changes in order of figures (statistics). (206523 lines)
Version 16.48.10: Nov 07, 2016 Changes in text related to notifications stats. (206522 lines) Version 16.48.10: Nov 07, 2016 Changes in text related to notifications stats. (206522 lines)

View File

@ -1630,9 +1630,10 @@ static void Enr_RegisterUsr (struct UsrData *UsrDat,Rol_Role_t RegRemRole,
// Reset user's data // Reset user's data
Usr_ResetUsrDataExceptUsrCodAndIDs (UsrDat); // It's necessary, because the same struct UsrDat was used for former user Usr_ResetUsrDataExceptUsrCodAndIDs (UsrDat); // It's necessary, because the same struct UsrDat was used for former user
// User does not exist in database;list of IDs is initialized // User does not exist in database; list of IDs is initialized
UsrDat->IDs.List[0].Confirmed = true; // If he/she is a new user ==> his/her ID will be stored as confirmed in database UsrDat->IDs.List[0].Confirmed = true; // If he/she is a new user ==> his/her ID will be stored as confirmed in database
Acc_CreateNewUsr (UsrDat); Acc_CreateNewUsr (UsrDat,
false); // I am NOT creating my own account
} }
/***** Register user in current course in database *****/ /***** Register user in current course in database *****/
@ -3496,7 +3497,8 @@ void Enr_CreateNewUsr (void)
/***** Create user *****/ /***** Create user *****/
Gbl.Usrs.Other.UsrDat.IDs.List[0].Confirmed = true; // User's ID will be stored as confirmed Gbl.Usrs.Other.UsrDat.IDs.List[0].Confirmed = true; // User's ID will be stored as confirmed
Acc_CreateNewUsr (&Gbl.Usrs.Other.UsrDat); Acc_CreateNewUsr (&Gbl.Usrs.Other.UsrDat,
false); // I am NOT creating my own account
/***** Register user in current course in database *****/ /***** Register user in current course in database *****/
if (Gbl.CurrentCrs.Crs.CrsCod > 0) // Course selected if (Gbl.CurrentCrs.Crs.CrsCod > 0) // Course selected

View File

@ -1654,7 +1654,7 @@ static void Msg_ShowSentOrReceivedMessages (void)
unsigned long NumRow; unsigned long NumRow;
unsigned long NumRows; unsigned long NumRows;
unsigned long NumMsg = 0; // Initialized to avoid warning unsigned long NumMsg = 0; // Initialized to avoid warning
unsigned NumUnreadMsgs; unsigned NumUnreadMsgs = 0; // Initialized to avoid warning
struct Pagination Pagination; struct Pagination Pagination;
long MsgCod; long MsgCod;
static const Pag_WhatPaginate_t WhatPaginate[Msg_NUM_TYPES_OF_MSGS] = static const Pag_WhatPaginate_t WhatPaginate[Msg_NUM_TYPES_OF_MSGS] =
@ -2798,7 +2798,7 @@ static void Msg_ShowASentOrReceivedMessage (long MsgNum,long MsgCod)
extern const char *Txt_MSG_To; extern const char *Txt_MSG_To;
extern const char *Txt_MSG_Message; extern const char *Txt_MSG_Message;
struct UsrData UsrDat; struct UsrData UsrDat;
const char *Title; const char *Title = NULL; // Initialized to avoid warning
bool FromThisCrs = false; // Initialized to avoid warning bool FromThisCrs = false; // Initialized to avoid warning
time_t CreatTimeUTC; // Creation time of a message time_t CreatTimeUTC; // Creation time of a message
long CrsCod; long CrsCod;

View File

@ -26,6 +26,7 @@
/*****************************************************************************/ /*****************************************************************************/
#include <linux/stddef.h> // For NULL #include <linux/stddef.h> // For NULL
#include <string.h> // For string functions
#include "swad_config.h" #include "swad_config.h"
#include "swad_database.h" #include "swad_database.h"
@ -86,7 +87,8 @@ static void Prf_GetNumForPstAndStoreAsUsrFigure (long UsrCod);
static void Prf_GetNumMsgSntAndStoreAsUsrFigure (long UsrCod); static void Prf_GetNumMsgSntAndStoreAsUsrFigure (long UsrCod);
static void Prf_ResetUsrFigures (struct UsrFigures *UsrFigures); static void Prf_ResetUsrFigures (struct UsrFigures *UsrFigures);
static void Prf_CreateUsrFigures (long UsrCod,const struct UsrFigures *UsrFigures); static void Prf_CreateUsrFigures (long UsrCod,const struct UsrFigures *UsrFigures,
bool CreatingMyOwnAccount);
static bool Prf_CheckIfUsrFiguresExists (long UsrCod); static bool Prf_CheckIfUsrFiguresExists (long UsrCod);
static void Prf_GetAndShowRankingFigure (const char *FieldName); static void Prf_GetAndShowRankingFigure (const char *FieldName);
@ -860,7 +862,7 @@ static void Prf_GetFirstClickFromLogAndStoreAsUsrFigure (long 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
Prf_CreateUsrFigures (UsrCod,&UsrFigures); Prf_CreateUsrFigures (UsrCod,&UsrFigures,false);
} }
} }
@ -892,7 +894,7 @@ static void Prf_GetNumClicksAndStoreAsUsrFigure (long 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
Prf_CreateUsrFigures (UsrCod,&UsrFigures); Prf_CreateUsrFigures (UsrCod,&UsrFigures,false);
} }
} }
@ -922,7 +924,7 @@ static void Prf_GetNumFileViewsAndStoreAsUsrFigure (long 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
Prf_CreateUsrFigures (UsrCod,&UsrFigures); Prf_CreateUsrFigures (UsrCod,&UsrFigures,false);
} }
} }
@ -952,7 +954,7 @@ static void Prf_GetNumForPstAndStoreAsUsrFigure (long 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
Prf_CreateUsrFigures (UsrCod,&UsrFigures); Prf_CreateUsrFigures (UsrCod,&UsrFigures,false);
} }
} }
@ -982,7 +984,7 @@ static void Prf_GetNumMsgSntAndStoreAsUsrFigure (long 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
Prf_CreateUsrFigures (UsrCod,&UsrFigures); Prf_CreateUsrFigures (UsrCod,&UsrFigures,false);
} }
} }
@ -990,15 +992,19 @@ static void Prf_GetNumMsgSntAndStoreAsUsrFigure (long UsrCod)
/******************* Create user's figures for a new user ********************/ /******************* Create user's figures for a new user ********************/
/*****************************************************************************/ /*****************************************************************************/
void Prf_CreateNewUsrFigures (long UsrCod) void Prf_CreateNewUsrFigures (long UsrCod,bool CreatingMyOwnAccount)
{ {
struct UsrFigures UsrFigures; struct UsrFigures UsrFigures;
/***** Reset user's figures *****/ /***** Reset user's figures *****/
Prf_ResetUsrFigures (&UsrFigures); Prf_ResetUsrFigures (&UsrFigures);
UsrFigures.NumClicks = 0; // set number of clicks to 0
UsrFigures.NumFileViews = 0; // set number of file views to 0
UsrFigures.NumForPst = 0; // set number of forum posts to 0
UsrFigures.NumMsgSnt = 0; // set number of messages sent to 0
/***** Create user's figures *****/ /***** Create user's figures *****/
Prf_CreateUsrFigures (UsrCod,&UsrFigures); Prf_CreateUsrFigures (UsrCod,&UsrFigures,CreatingMyOwnAccount);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1008,31 +1014,39 @@ void Prf_CreateNewUsrFigures (long UsrCod)
static void Prf_ResetUsrFigures (struct UsrFigures *UsrFigures) static void Prf_ResetUsrFigures (struct UsrFigures *UsrFigures)
{ {
UsrFigures->FirstClickTimeUTC = (time_t) 0; // 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->NumDays = -1; // not applicable
UsrFigures->NumClicks = -1L; // unknown number of clicks UsrFigures->NumClicks = -1L; // unknown number of clicks
UsrFigures->NumFileViews = -1L; // unknown number of file views UsrFigures->NumFileViews = -1L; // unknown number of file views
UsrFigures->NumForPst = -1L; // unknown number of forum posts UsrFigures->NumForPst = -1L; // unknown number of forum posts
UsrFigures->NumMsgSnt = -1L; // unknown number of messages sent UsrFigures->NumMsgSnt = -1L; // unknown number of messages sent
} }
/*****************************************************************************/ /*****************************************************************************/
/***** Get number of messages sent by a user and store in user's figures *****/ /***** Get number of messages sent by a user and store in user's figures *****/
/*****************************************************************************/ /*****************************************************************************/
static void Prf_CreateUsrFigures (long UsrCod,const struct UsrFigures *UsrFigures) static void Prf_CreateUsrFigures (long UsrCod,const struct UsrFigures *UsrFigures,
bool CreatingMyOwnAccount)
{ {
char Query[512]; char Query[512];
char SubQueryFirstClickTime[64];
if (CreatingMyOwnAccount)
strcpy (SubQueryFirstClickTime,"NOW()"); // This is the first click
else
sprintf (SubQueryFirstClickTime,"FROM_UNIXTIME('%ld')",
(long) UsrFigures->FirstClickTimeUTC); // 0 ==> unknown first click time or user never logged
/***** Create user's figures *****/ /***** Create user's figures *****/
sprintf (Query,"INSERT INTO usr_figures" sprintf (Query,"INSERT INTO usr_figures"
"(UsrCod,FirstClickTime,NumClicks,NumFileViews,NumForPst,NumMsgSnt)" "(UsrCod,FirstClickTime,NumClicks,NumFileViews,NumForPst,NumMsgSnt)"
" VALUES ('%ld',FROM_UNIXTIME('%ld'),'%ld','%ld','%ld','%ld')", " VALUES ('%ld',%s,'%ld','%ld','%ld','%ld')",
UsrCod, UsrCod,
(long) UsrFigures->FirstClickTimeUTC, // 0 ==> unknown first click time or user never logged SubQueryFirstClickTime,
UsrFigures->NumClicks, // -1L ==> unknown number of clicks UsrFigures->NumClicks, // -1L ==> unknown number of clicks
UsrFigures->NumFileViews, // -1L ==> unknown number of file views UsrFigures->NumFileViews, // -1L ==> unknown number of file views
UsrFigures->NumForPst, // -1L ==> unknown number of forum posts UsrFigures->NumForPst, // -1L ==> unknown number of forum posts
UsrFigures->NumMsgSnt); // -1L ==> unknown number of messages sent 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");
} }

View File

@ -64,7 +64,7 @@ void Prf_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures);
void Prf_CalculateFigures (void); void Prf_CalculateFigures (void);
bool Prf_GetAndStoreAllUsrFigures (long UsrCod,struct UsrFigures *UsrFigures); bool Prf_GetAndStoreAllUsrFigures (long UsrCod,struct UsrFigures *UsrFigures);
void Prf_CreateNewUsrFigures (long UsrCod); void Prf_CreateNewUsrFigures (long UsrCod,bool CreatingMyOwnAccount);
void Prf_RemoveUsrFigures (long UsrCod); void Prf_RemoveUsrFigures (long UsrCod);
void Prf_IncrementNumClicksUsr (long UsrCod); void Prf_IncrementNumClicksUsr (long UsrCod);
void Prf_IncrementNumFileViewsUsr (long UsrCod); void Prf_IncrementNumFileViewsUsr (long UsrCod);

View File

@ -2208,8 +2208,8 @@ void Usr_ChkUsrAndGetUsrData (void)
/***** Check user and get user's data *****/ /***** Check user and get user's data *****/
if (Gbl.Action.Act == ActCreUsrAcc) if (Gbl.Action.Act == ActCreUsrAcc)
{ {
/***** Create new account and login *****/ /***** Create my new account and login *****/
if (Acc_CreateNewAccountAndLogIn ()) // User logged in if (Acc_CreateMyNewAccountAndLogIn ()) // User logged in
{ {
Gbl.Usrs.Me.Logged = true; Gbl.Usrs.Me.Logged = true;
Usr_SetUsrRoleAndPrefs (); Usr_SetUsrRoleAndPrefs ();
@ -2229,7 +2229,7 @@ void Usr_ChkUsrAndGetUsrData (void)
/***** Check user and get user's data *****/ /***** Check user and get user's data *****/
if (Gbl.Session.IsOpen) if (Gbl.Session.IsOpen)
{ {
if (Usr_ChkUsrAndGetUsrDataFromSession ()) // User logged in if (Usr_ChkUsrAndGetUsrDataFromSession ()) // User logged in
{ {
Gbl.Usrs.Me.Logged = true; Gbl.Usrs.Me.Logged = true;
Usr_SetUsrRoleAndPrefs (); Usr_SetUsrRoleAndPrefs ();

View File

@ -672,7 +672,7 @@ static bool Svc_GetSomeUsrDataFromUsrCod (struct UsrData *UsrDat,long CrsCod)
int swad__createAccount (struct soap *soap, int swad__createAccount (struct soap *soap,
char *userNickname,char *userEmail,char *userPassword,char *appKey, // input char *userNickname,char *userEmail,char *userPassword,char *appKey, // input
struct swad__createAccountOutput *createAccountOut) // output struct swad__createAccountOutput *createAccountOut) // output
{ {
char NewNicknameWithoutArroba[Nck_MAX_BYTES_NICKNAME_WITH_ARROBA+1]; char NewNicknameWithoutArroba[Nck_MAX_BYTES_NICKNAME_WITH_ARROBA+1];
char NewEncryptedPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64+1]; char NewEncryptedPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64+1];
@ -714,7 +714,8 @@ int swad__createAccount (struct soap *soap,
strcpy (Gbl.Usrs.Me.UsrDat.Password,NewEncryptedPassword); strcpy (Gbl.Usrs.Me.UsrDat.Password,NewEncryptedPassword);
/***** User does not exist in the platform, so create him/her! *****/ /***** User does not exist in the platform, so create him/her! *****/
Acc_CreateNewUsr (&Gbl.Usrs.Me.UsrDat); Acc_CreateNewUsr (&Gbl.Usrs.Me.UsrDat,
true); // I am creating my own account
/***** Save nickname *****/ /***** Save nickname *****/
Nck_UpdateMyNick (NewNicknameWithoutArroba); Nck_UpdateMyNick (NewNicknameWithoutArroba);