mirror of https://github.com/acanas/swad-core.git
Version 14.84
This commit is contained in:
parent
889eb34e94
commit
43425e4aa1
|
@ -1176,6 +1176,7 @@ CREATE TABLE IF NOT EXISTS usr_figures (
|
|||
UsrCod INT NOT NULL,
|
||||
FirstClickTime DATETIME NOT NULL,
|
||||
NumClicks INT NOT NULL DEFAULT -1,
|
||||
NumMsgSnt INT NOT NULL DEFAULT -1,
|
||||
PRIMARY KEY(UsrCod));
|
||||
--
|
||||
-- Table usr_last: stores some variable data related to users
|
||||
|
|
|
@ -947,6 +947,7 @@ Users:
|
|||
793. ActSeePubPrf Show a public user's profile
|
||||
---. ActCal1stClkTim Calculate first click time from log and store into user's figures
|
||||
---. ActCalNumClk Calculate number of clicks from log and store into user's figures
|
||||
---. ActCalNumMsgSnt Calculate number of messages sent from log and store into user's figures
|
||||
Messages:
|
||||
794. ActSeeNtf Show my recent notifications
|
||||
795. ActSeeAnn Show global announcements
|
||||
|
@ -2329,6 +2330,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
/* ActSeePubPrf */{1402,-1,TabUsr,ActReqPubPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_GetUsrCodAndShowUserProfile,NULL},
|
||||
/* ActCal1stClkTim */{1405,-1,TabUsr,ActReqPubPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_CalculateFirstClickTime ,NULL},
|
||||
/* ActCalNumClk */{1406,-1,TabUsr,ActReqPubPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_CalculateNumClicks ,NULL},
|
||||
/* ActCalNumMsgSnt */{1407,-1,TabUsr,ActReqPubPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_CalculateNumMsgSnt ,NULL},
|
||||
|
||||
// TabMsg ******************************************************************
|
||||
// Actions in menu:
|
||||
|
@ -4065,6 +4067,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
|||
ActChgPriPrf, // #1404
|
||||
ActCal1stClkTim, // #1405
|
||||
ActCalNumClk, // #1406
|
||||
ActCalNumMsgSnt, // #1407
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
341
swad_action.h
341
swad_action.h
|
@ -69,9 +69,9 @@ typedef enum
|
|||
|
||||
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
||||
|
||||
#define Act_NUM_ACTIONS (7+52+15+90+73+68+204+184+102+168+28+77)
|
||||
#define Act_NUM_ACTIONS (7+52+15+90+73+68+204+184+103+168+28+77)
|
||||
|
||||
#define Act_MAX_ACTION_COD 1406
|
||||
#define Act_MAX_ACTION_COD 1407
|
||||
|
||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
|
||||
|
||||
|
@ -982,180 +982,181 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
|
|||
#define ActSeePubPrf (ActChgNumRowFooGrp+100)
|
||||
#define ActCal1stClkTim (ActChgNumRowFooGrp+101)
|
||||
#define ActCalNumClk (ActChgNumRowFooGrp+102)
|
||||
#define ActCalNumMsgSnt (ActChgNumRowFooGrp+103)
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************* Messages tab ********************************/
|
||||
/*****************************************************************************/
|
||||
// Actions in menu
|
||||
#define ActSeeNtf (ActCalNumClk+ 1)
|
||||
#define ActSeeAnn (ActCalNumClk+ 2)
|
||||
#define ActSeeNot (ActCalNumClk+ 3)
|
||||
#define ActSeeFor (ActCalNumClk+ 4)
|
||||
#define ActSeeChtRms (ActCalNumClk+ 5)
|
||||
#define ActReqMsgUsr (ActCalNumClk+ 6)
|
||||
#define ActSeeRcvMsg (ActCalNumClk+ 7)
|
||||
#define ActSeeSntMsg (ActCalNumClk+ 8)
|
||||
#define ActMaiStd (ActCalNumClk+ 9)
|
||||
#define ActSeeNtf (ActCalNumMsgSnt+ 1)
|
||||
#define ActSeeAnn (ActCalNumMsgSnt+ 2)
|
||||
#define ActSeeNot (ActCalNumMsgSnt+ 3)
|
||||
#define ActSeeFor (ActCalNumMsgSnt+ 4)
|
||||
#define ActSeeChtRms (ActCalNumMsgSnt+ 5)
|
||||
#define ActReqMsgUsr (ActCalNumMsgSnt+ 6)
|
||||
#define ActSeeRcvMsg (ActCalNumMsgSnt+ 7)
|
||||
#define ActSeeSntMsg (ActCalNumMsgSnt+ 8)
|
||||
#define ActMaiStd (ActCalNumMsgSnt+ 9)
|
||||
// Secondary actions
|
||||
#define ActWriAnn (ActCalNumClk+ 10)
|
||||
#define ActRcvAnn (ActCalNumClk+ 11)
|
||||
#define ActRemAnn (ActCalNumClk+ 12)
|
||||
#define ActShoNot (ActCalNumClk+ 13)
|
||||
#define ActWriNot (ActCalNumClk+ 14)
|
||||
#define ActRcvNot (ActCalNumClk+ 15)
|
||||
#define ActHidNot (ActCalNumClk+ 16)
|
||||
#define ActRevNot (ActCalNumClk+ 17)
|
||||
#define ActRemNot (ActCalNumClk+ 18)
|
||||
#define ActSeeNewNtf (ActCalNumClk+ 19)
|
||||
#define ActMrkNtfSee (ActCalNumClk+ 20)
|
||||
#define ActSeeForCrsUsr (ActCalNumClk+ 21)
|
||||
#define ActSeeForCrsTch (ActCalNumClk+ 22)
|
||||
#define ActSeeForDegUsr (ActCalNumClk+ 23)
|
||||
#define ActSeeForDegTch (ActCalNumClk+ 24)
|
||||
#define ActSeeForCtrUsr (ActCalNumClk+ 25)
|
||||
#define ActSeeForCtrTch (ActCalNumClk+ 26)
|
||||
#define ActSeeForInsUsr (ActCalNumClk+ 27)
|
||||
#define ActSeeForInsTch (ActCalNumClk+ 28)
|
||||
#define ActSeeForGenUsr (ActCalNumClk+ 29)
|
||||
#define ActSeeForGenTch (ActCalNumClk+ 30)
|
||||
#define ActSeeForSWAUsr (ActCalNumClk+ 31)
|
||||
#define ActSeeForSWATch (ActCalNumClk+ 32)
|
||||
#define ActSeePstForCrsUsr (ActCalNumClk+ 33)
|
||||
#define ActSeePstForCrsTch (ActCalNumClk+ 34)
|
||||
#define ActSeePstForDegUsr (ActCalNumClk+ 35)
|
||||
#define ActSeePstForDegTch (ActCalNumClk+ 36)
|
||||
#define ActSeePstForCtrUsr (ActCalNumClk+ 37)
|
||||
#define ActSeePstForCtrTch (ActCalNumClk+ 38)
|
||||
#define ActSeePstForInsUsr (ActCalNumClk+ 39)
|
||||
#define ActSeePstForInsTch (ActCalNumClk+ 40)
|
||||
#define ActSeePstForGenUsr (ActCalNumClk+ 41)
|
||||
#define ActSeePstForGenTch (ActCalNumClk+ 42)
|
||||
#define ActSeePstForSWAUsr (ActCalNumClk+ 43)
|
||||
#define ActSeePstForSWATch (ActCalNumClk+ 44)
|
||||
#define ActRcvThrForCrsUsr (ActCalNumClk+ 45)
|
||||
#define ActRcvThrForCrsTch (ActCalNumClk+ 46)
|
||||
#define ActRcvThrForDegUsr (ActCalNumClk+ 47)
|
||||
#define ActRcvThrForDegTch (ActCalNumClk+ 48)
|
||||
#define ActRcvThrForCtrUsr (ActCalNumClk+ 49)
|
||||
#define ActRcvThrForCtrTch (ActCalNumClk+ 50)
|
||||
#define ActRcvThrForInsUsr (ActCalNumClk+ 51)
|
||||
#define ActRcvThrForInsTch (ActCalNumClk+ 52)
|
||||
#define ActRcvThrForGenUsr (ActCalNumClk+ 53)
|
||||
#define ActRcvThrForGenTch (ActCalNumClk+ 54)
|
||||
#define ActRcvThrForSWAUsr (ActCalNumClk+ 55)
|
||||
#define ActRcvThrForSWATch (ActCalNumClk+ 56)
|
||||
#define ActRcvRepForCrsUsr (ActCalNumClk+ 57)
|
||||
#define ActRcvRepForCrsTch (ActCalNumClk+ 58)
|
||||
#define ActRcvRepForDegUsr (ActCalNumClk+ 59)
|
||||
#define ActRcvRepForDegTch (ActCalNumClk+ 60)
|
||||
#define ActRcvRepForCtrUsr (ActCalNumClk+ 61)
|
||||
#define ActRcvRepForCtrTch (ActCalNumClk+ 62)
|
||||
#define ActRcvRepForInsUsr (ActCalNumClk+ 63)
|
||||
#define ActRcvRepForInsTch (ActCalNumClk+ 64)
|
||||
#define ActRcvRepForGenUsr (ActCalNumClk+ 65)
|
||||
#define ActRcvRepForGenTch (ActCalNumClk+ 66)
|
||||
#define ActRcvRepForSWAUsr (ActCalNumClk+ 67)
|
||||
#define ActRcvRepForSWATch (ActCalNumClk+ 68)
|
||||
#define ActReqDelThrCrsUsr (ActCalNumClk+ 69)
|
||||
#define ActReqDelThrCrsTch (ActCalNumClk+ 70)
|
||||
#define ActReqDelThrDegUsr (ActCalNumClk+ 71)
|
||||
#define ActReqDelThrDegTch (ActCalNumClk+ 72)
|
||||
#define ActReqDelThrCtrUsr (ActCalNumClk+ 73)
|
||||
#define ActReqDelThrCtrTch (ActCalNumClk+ 74)
|
||||
#define ActReqDelThrInsUsr (ActCalNumClk+ 75)
|
||||
#define ActReqDelThrInsTch (ActCalNumClk+ 76)
|
||||
#define ActReqDelThrGenUsr (ActCalNumClk+ 77)
|
||||
#define ActReqDelThrGenTch (ActCalNumClk+ 78)
|
||||
#define ActReqDelThrSWAUsr (ActCalNumClk+ 79)
|
||||
#define ActReqDelThrSWATch (ActCalNumClk+ 80)
|
||||
#define ActDelThrForCrsUsr (ActCalNumClk+ 81)
|
||||
#define ActDelThrForCrsTch (ActCalNumClk+ 82)
|
||||
#define ActDelThrForDegUsr (ActCalNumClk+ 83)
|
||||
#define ActDelThrForDegTch (ActCalNumClk+ 84)
|
||||
#define ActDelThrForCtrUsr (ActCalNumClk+ 85)
|
||||
#define ActDelThrForCtrTch (ActCalNumClk+ 86)
|
||||
#define ActDelThrForInsUsr (ActCalNumClk+ 87)
|
||||
#define ActDelThrForInsTch (ActCalNumClk+ 88)
|
||||
#define ActDelThrForGenUsr (ActCalNumClk+ 89)
|
||||
#define ActDelThrForGenTch (ActCalNumClk+ 90)
|
||||
#define ActDelThrForSWAUsr (ActCalNumClk+ 91)
|
||||
#define ActDelThrForSWATch (ActCalNumClk+ 92)
|
||||
#define ActCutThrForCrsUsr (ActCalNumClk+ 93)
|
||||
#define ActCutThrForCrsTch (ActCalNumClk+ 94)
|
||||
#define ActCutThrForDegUsr (ActCalNumClk+ 95)
|
||||
#define ActCutThrForDegTch (ActCalNumClk+ 96)
|
||||
#define ActCutThrForCtrUsr (ActCalNumClk+ 97)
|
||||
#define ActCutThrForCtrTch (ActCalNumClk+ 98)
|
||||
#define ActCutThrForInsUsr (ActCalNumClk+ 99)
|
||||
#define ActCutThrForInsTch (ActCalNumClk+100)
|
||||
#define ActCutThrForGenUsr (ActCalNumClk+101)
|
||||
#define ActCutThrForGenTch (ActCalNumClk+102)
|
||||
#define ActCutThrForSWAUsr (ActCalNumClk+103)
|
||||
#define ActCutThrForSWATch (ActCalNumClk+104)
|
||||
#define ActPasThrForCrsUsr (ActCalNumClk+105)
|
||||
#define ActPasThrForCrsTch (ActCalNumClk+106)
|
||||
#define ActPasThrForDegUsr (ActCalNumClk+107)
|
||||
#define ActPasThrForDegTch (ActCalNumClk+108)
|
||||
#define ActPasThrForCtrUsr (ActCalNumClk+109)
|
||||
#define ActPasThrForCtrTch (ActCalNumClk+110)
|
||||
#define ActPasThrForInsUsr (ActCalNumClk+111)
|
||||
#define ActPasThrForInsTch (ActCalNumClk+112)
|
||||
#define ActPasThrForGenUsr (ActCalNumClk+113)
|
||||
#define ActPasThrForGenTch (ActCalNumClk+114)
|
||||
#define ActPasThrForSWAUsr (ActCalNumClk+115)
|
||||
#define ActPasThrForSWATch (ActCalNumClk+116)
|
||||
#define ActDelPstForCrsUsr (ActCalNumClk+117)
|
||||
#define ActDelPstForCrsTch (ActCalNumClk+118)
|
||||
#define ActDelPstForDegUsr (ActCalNumClk+119)
|
||||
#define ActDelPstForDegTch (ActCalNumClk+120)
|
||||
#define ActDelPstForCtrUsr (ActCalNumClk+121)
|
||||
#define ActDelPstForCtrTch (ActCalNumClk+122)
|
||||
#define ActDelPstForInsUsr (ActCalNumClk+123)
|
||||
#define ActDelPstForInsTch (ActCalNumClk+124)
|
||||
#define ActDelPstForGenUsr (ActCalNumClk+125)
|
||||
#define ActDelPstForGenTch (ActCalNumClk+126)
|
||||
#define ActDelPstForSWAUsr (ActCalNumClk+127)
|
||||
#define ActDelPstForSWATch (ActCalNumClk+128)
|
||||
#define ActEnbPstForCrsUsr (ActCalNumClk+129)
|
||||
#define ActEnbPstForCrsTch (ActCalNumClk+130)
|
||||
#define ActEnbPstForDegUsr (ActCalNumClk+131)
|
||||
#define ActEnbPstForDegTch (ActCalNumClk+132)
|
||||
#define ActEnbPstForCtrUsr (ActCalNumClk+133)
|
||||
#define ActEnbPstForCtrTch (ActCalNumClk+134)
|
||||
#define ActEnbPstForInsUsr (ActCalNumClk+135)
|
||||
#define ActEnbPstForInsTch (ActCalNumClk+136)
|
||||
#define ActEnbPstForGenUsr (ActCalNumClk+137)
|
||||
#define ActEnbPstForGenTch (ActCalNumClk+138)
|
||||
#define ActEnbPstForSWAUsr (ActCalNumClk+139)
|
||||
#define ActEnbPstForSWATch (ActCalNumClk+140)
|
||||
#define ActDisPstForCrsUsr (ActCalNumClk+141)
|
||||
#define ActDisPstForCrsTch (ActCalNumClk+142)
|
||||
#define ActDisPstForDegUsr (ActCalNumClk+143)
|
||||
#define ActDisPstForDegTch (ActCalNumClk+144)
|
||||
#define ActDisPstForCtrUsr (ActCalNumClk+145)
|
||||
#define ActDisPstForCtrTch (ActCalNumClk+146)
|
||||
#define ActDisPstForInsUsr (ActCalNumClk+147)
|
||||
#define ActDisPstForInsTch (ActCalNumClk+148)
|
||||
#define ActDisPstForGenUsr (ActCalNumClk+149)
|
||||
#define ActDisPstForGenTch (ActCalNumClk+150)
|
||||
#define ActDisPstForSWAUsr (ActCalNumClk+151)
|
||||
#define ActDisPstForSWATch (ActCalNumClk+152)
|
||||
#define ActRcvMsgUsr (ActCalNumClk+153)
|
||||
#define ActReqDelAllSntMsg (ActCalNumClk+154)
|
||||
#define ActReqDelAllRcvMsg (ActCalNumClk+155)
|
||||
#define ActDelAllSntMsg (ActCalNumClk+156)
|
||||
#define ActDelAllRcvMsg (ActCalNumClk+157)
|
||||
#define ActDelSntMsg (ActCalNumClk+158)
|
||||
#define ActDelRcvMsg (ActCalNumClk+159)
|
||||
#define ActExpSntMsg (ActCalNumClk+160)
|
||||
#define ActExpRcvMsg (ActCalNumClk+161)
|
||||
#define ActConSntMsg (ActCalNumClk+162)
|
||||
#define ActConRcvMsg (ActCalNumClk+163)
|
||||
#define ActLstBanUsr (ActCalNumClk+164)
|
||||
#define ActBanUsrMsg (ActCalNumClk+165)
|
||||
#define ActUnbUsrMsg (ActCalNumClk+166)
|
||||
#define ActUnbUsrLst (ActCalNumClk+167)
|
||||
#define ActCht (ActCalNumClk+168)
|
||||
#define ActWriAnn (ActCalNumMsgSnt+ 10)
|
||||
#define ActRcvAnn (ActCalNumMsgSnt+ 11)
|
||||
#define ActRemAnn (ActCalNumMsgSnt+ 12)
|
||||
#define ActShoNot (ActCalNumMsgSnt+ 13)
|
||||
#define ActWriNot (ActCalNumMsgSnt+ 14)
|
||||
#define ActRcvNot (ActCalNumMsgSnt+ 15)
|
||||
#define ActHidNot (ActCalNumMsgSnt+ 16)
|
||||
#define ActRevNot (ActCalNumMsgSnt+ 17)
|
||||
#define ActRemNot (ActCalNumMsgSnt+ 18)
|
||||
#define ActSeeNewNtf (ActCalNumMsgSnt+ 19)
|
||||
#define ActMrkNtfSee (ActCalNumMsgSnt+ 20)
|
||||
#define ActSeeForCrsUsr (ActCalNumMsgSnt+ 21)
|
||||
#define ActSeeForCrsTch (ActCalNumMsgSnt+ 22)
|
||||
#define ActSeeForDegUsr (ActCalNumMsgSnt+ 23)
|
||||
#define ActSeeForDegTch (ActCalNumMsgSnt+ 24)
|
||||
#define ActSeeForCtrUsr (ActCalNumMsgSnt+ 25)
|
||||
#define ActSeeForCtrTch (ActCalNumMsgSnt+ 26)
|
||||
#define ActSeeForInsUsr (ActCalNumMsgSnt+ 27)
|
||||
#define ActSeeForInsTch (ActCalNumMsgSnt+ 28)
|
||||
#define ActSeeForGenUsr (ActCalNumMsgSnt+ 29)
|
||||
#define ActSeeForGenTch (ActCalNumMsgSnt+ 30)
|
||||
#define ActSeeForSWAUsr (ActCalNumMsgSnt+ 31)
|
||||
#define ActSeeForSWATch (ActCalNumMsgSnt+ 32)
|
||||
#define ActSeePstForCrsUsr (ActCalNumMsgSnt+ 33)
|
||||
#define ActSeePstForCrsTch (ActCalNumMsgSnt+ 34)
|
||||
#define ActSeePstForDegUsr (ActCalNumMsgSnt+ 35)
|
||||
#define ActSeePstForDegTch (ActCalNumMsgSnt+ 36)
|
||||
#define ActSeePstForCtrUsr (ActCalNumMsgSnt+ 37)
|
||||
#define ActSeePstForCtrTch (ActCalNumMsgSnt+ 38)
|
||||
#define ActSeePstForInsUsr (ActCalNumMsgSnt+ 39)
|
||||
#define ActSeePstForInsTch (ActCalNumMsgSnt+ 40)
|
||||
#define ActSeePstForGenUsr (ActCalNumMsgSnt+ 41)
|
||||
#define ActSeePstForGenTch (ActCalNumMsgSnt+ 42)
|
||||
#define ActSeePstForSWAUsr (ActCalNumMsgSnt+ 43)
|
||||
#define ActSeePstForSWATch (ActCalNumMsgSnt+ 44)
|
||||
#define ActRcvThrForCrsUsr (ActCalNumMsgSnt+ 45)
|
||||
#define ActRcvThrForCrsTch (ActCalNumMsgSnt+ 46)
|
||||
#define ActRcvThrForDegUsr (ActCalNumMsgSnt+ 47)
|
||||
#define ActRcvThrForDegTch (ActCalNumMsgSnt+ 48)
|
||||
#define ActRcvThrForCtrUsr (ActCalNumMsgSnt+ 49)
|
||||
#define ActRcvThrForCtrTch (ActCalNumMsgSnt+ 50)
|
||||
#define ActRcvThrForInsUsr (ActCalNumMsgSnt+ 51)
|
||||
#define ActRcvThrForInsTch (ActCalNumMsgSnt+ 52)
|
||||
#define ActRcvThrForGenUsr (ActCalNumMsgSnt+ 53)
|
||||
#define ActRcvThrForGenTch (ActCalNumMsgSnt+ 54)
|
||||
#define ActRcvThrForSWAUsr (ActCalNumMsgSnt+ 55)
|
||||
#define ActRcvThrForSWATch (ActCalNumMsgSnt+ 56)
|
||||
#define ActRcvRepForCrsUsr (ActCalNumMsgSnt+ 57)
|
||||
#define ActRcvRepForCrsTch (ActCalNumMsgSnt+ 58)
|
||||
#define ActRcvRepForDegUsr (ActCalNumMsgSnt+ 59)
|
||||
#define ActRcvRepForDegTch (ActCalNumMsgSnt+ 60)
|
||||
#define ActRcvRepForCtrUsr (ActCalNumMsgSnt+ 61)
|
||||
#define ActRcvRepForCtrTch (ActCalNumMsgSnt+ 62)
|
||||
#define ActRcvRepForInsUsr (ActCalNumMsgSnt+ 63)
|
||||
#define ActRcvRepForInsTch (ActCalNumMsgSnt+ 64)
|
||||
#define ActRcvRepForGenUsr (ActCalNumMsgSnt+ 65)
|
||||
#define ActRcvRepForGenTch (ActCalNumMsgSnt+ 66)
|
||||
#define ActRcvRepForSWAUsr (ActCalNumMsgSnt+ 67)
|
||||
#define ActRcvRepForSWATch (ActCalNumMsgSnt+ 68)
|
||||
#define ActReqDelThrCrsUsr (ActCalNumMsgSnt+ 69)
|
||||
#define ActReqDelThrCrsTch (ActCalNumMsgSnt+ 70)
|
||||
#define ActReqDelThrDegUsr (ActCalNumMsgSnt+ 71)
|
||||
#define ActReqDelThrDegTch (ActCalNumMsgSnt+ 72)
|
||||
#define ActReqDelThrCtrUsr (ActCalNumMsgSnt+ 73)
|
||||
#define ActReqDelThrCtrTch (ActCalNumMsgSnt+ 74)
|
||||
#define ActReqDelThrInsUsr (ActCalNumMsgSnt+ 75)
|
||||
#define ActReqDelThrInsTch (ActCalNumMsgSnt+ 76)
|
||||
#define ActReqDelThrGenUsr (ActCalNumMsgSnt+ 77)
|
||||
#define ActReqDelThrGenTch (ActCalNumMsgSnt+ 78)
|
||||
#define ActReqDelThrSWAUsr (ActCalNumMsgSnt+ 79)
|
||||
#define ActReqDelThrSWATch (ActCalNumMsgSnt+ 80)
|
||||
#define ActDelThrForCrsUsr (ActCalNumMsgSnt+ 81)
|
||||
#define ActDelThrForCrsTch (ActCalNumMsgSnt+ 82)
|
||||
#define ActDelThrForDegUsr (ActCalNumMsgSnt+ 83)
|
||||
#define ActDelThrForDegTch (ActCalNumMsgSnt+ 84)
|
||||
#define ActDelThrForCtrUsr (ActCalNumMsgSnt+ 85)
|
||||
#define ActDelThrForCtrTch (ActCalNumMsgSnt+ 86)
|
||||
#define ActDelThrForInsUsr (ActCalNumMsgSnt+ 87)
|
||||
#define ActDelThrForInsTch (ActCalNumMsgSnt+ 88)
|
||||
#define ActDelThrForGenUsr (ActCalNumMsgSnt+ 89)
|
||||
#define ActDelThrForGenTch (ActCalNumMsgSnt+ 90)
|
||||
#define ActDelThrForSWAUsr (ActCalNumMsgSnt+ 91)
|
||||
#define ActDelThrForSWATch (ActCalNumMsgSnt+ 92)
|
||||
#define ActCutThrForCrsUsr (ActCalNumMsgSnt+ 93)
|
||||
#define ActCutThrForCrsTch (ActCalNumMsgSnt+ 94)
|
||||
#define ActCutThrForDegUsr (ActCalNumMsgSnt+ 95)
|
||||
#define ActCutThrForDegTch (ActCalNumMsgSnt+ 96)
|
||||
#define ActCutThrForCtrUsr (ActCalNumMsgSnt+ 97)
|
||||
#define ActCutThrForCtrTch (ActCalNumMsgSnt+ 98)
|
||||
#define ActCutThrForInsUsr (ActCalNumMsgSnt+ 99)
|
||||
#define ActCutThrForInsTch (ActCalNumMsgSnt+100)
|
||||
#define ActCutThrForGenUsr (ActCalNumMsgSnt+101)
|
||||
#define ActCutThrForGenTch (ActCalNumMsgSnt+102)
|
||||
#define ActCutThrForSWAUsr (ActCalNumMsgSnt+103)
|
||||
#define ActCutThrForSWATch (ActCalNumMsgSnt+104)
|
||||
#define ActPasThrForCrsUsr (ActCalNumMsgSnt+105)
|
||||
#define ActPasThrForCrsTch (ActCalNumMsgSnt+106)
|
||||
#define ActPasThrForDegUsr (ActCalNumMsgSnt+107)
|
||||
#define ActPasThrForDegTch (ActCalNumMsgSnt+108)
|
||||
#define ActPasThrForCtrUsr (ActCalNumMsgSnt+109)
|
||||
#define ActPasThrForCtrTch (ActCalNumMsgSnt+110)
|
||||
#define ActPasThrForInsUsr (ActCalNumMsgSnt+111)
|
||||
#define ActPasThrForInsTch (ActCalNumMsgSnt+112)
|
||||
#define ActPasThrForGenUsr (ActCalNumMsgSnt+113)
|
||||
#define ActPasThrForGenTch (ActCalNumMsgSnt+114)
|
||||
#define ActPasThrForSWAUsr (ActCalNumMsgSnt+115)
|
||||
#define ActPasThrForSWATch (ActCalNumMsgSnt+116)
|
||||
#define ActDelPstForCrsUsr (ActCalNumMsgSnt+117)
|
||||
#define ActDelPstForCrsTch (ActCalNumMsgSnt+118)
|
||||
#define ActDelPstForDegUsr (ActCalNumMsgSnt+119)
|
||||
#define ActDelPstForDegTch (ActCalNumMsgSnt+120)
|
||||
#define ActDelPstForCtrUsr (ActCalNumMsgSnt+121)
|
||||
#define ActDelPstForCtrTch (ActCalNumMsgSnt+122)
|
||||
#define ActDelPstForInsUsr (ActCalNumMsgSnt+123)
|
||||
#define ActDelPstForInsTch (ActCalNumMsgSnt+124)
|
||||
#define ActDelPstForGenUsr (ActCalNumMsgSnt+125)
|
||||
#define ActDelPstForGenTch (ActCalNumMsgSnt+126)
|
||||
#define ActDelPstForSWAUsr (ActCalNumMsgSnt+127)
|
||||
#define ActDelPstForSWATch (ActCalNumMsgSnt+128)
|
||||
#define ActEnbPstForCrsUsr (ActCalNumMsgSnt+129)
|
||||
#define ActEnbPstForCrsTch (ActCalNumMsgSnt+130)
|
||||
#define ActEnbPstForDegUsr (ActCalNumMsgSnt+131)
|
||||
#define ActEnbPstForDegTch (ActCalNumMsgSnt+132)
|
||||
#define ActEnbPstForCtrUsr (ActCalNumMsgSnt+133)
|
||||
#define ActEnbPstForCtrTch (ActCalNumMsgSnt+134)
|
||||
#define ActEnbPstForInsUsr (ActCalNumMsgSnt+135)
|
||||
#define ActEnbPstForInsTch (ActCalNumMsgSnt+136)
|
||||
#define ActEnbPstForGenUsr (ActCalNumMsgSnt+137)
|
||||
#define ActEnbPstForGenTch (ActCalNumMsgSnt+138)
|
||||
#define ActEnbPstForSWAUsr (ActCalNumMsgSnt+139)
|
||||
#define ActEnbPstForSWATch (ActCalNumMsgSnt+140)
|
||||
#define ActDisPstForCrsUsr (ActCalNumMsgSnt+141)
|
||||
#define ActDisPstForCrsTch (ActCalNumMsgSnt+142)
|
||||
#define ActDisPstForDegUsr (ActCalNumMsgSnt+143)
|
||||
#define ActDisPstForDegTch (ActCalNumMsgSnt+144)
|
||||
#define ActDisPstForCtrUsr (ActCalNumMsgSnt+145)
|
||||
#define ActDisPstForCtrTch (ActCalNumMsgSnt+146)
|
||||
#define ActDisPstForInsUsr (ActCalNumMsgSnt+147)
|
||||
#define ActDisPstForInsTch (ActCalNumMsgSnt+148)
|
||||
#define ActDisPstForGenUsr (ActCalNumMsgSnt+149)
|
||||
#define ActDisPstForGenTch (ActCalNumMsgSnt+150)
|
||||
#define ActDisPstForSWAUsr (ActCalNumMsgSnt+151)
|
||||
#define ActDisPstForSWATch (ActCalNumMsgSnt+152)
|
||||
#define ActRcvMsgUsr (ActCalNumMsgSnt+153)
|
||||
#define ActReqDelAllSntMsg (ActCalNumMsgSnt+154)
|
||||
#define ActReqDelAllRcvMsg (ActCalNumMsgSnt+155)
|
||||
#define ActDelAllSntMsg (ActCalNumMsgSnt+156)
|
||||
#define ActDelAllRcvMsg (ActCalNumMsgSnt+157)
|
||||
#define ActDelSntMsg (ActCalNumMsgSnt+158)
|
||||
#define ActDelRcvMsg (ActCalNumMsgSnt+159)
|
||||
#define ActExpSntMsg (ActCalNumMsgSnt+160)
|
||||
#define ActExpRcvMsg (ActCalNumMsgSnt+161)
|
||||
#define ActConSntMsg (ActCalNumMsgSnt+162)
|
||||
#define ActConRcvMsg (ActCalNumMsgSnt+163)
|
||||
#define ActLstBanUsr (ActCalNumMsgSnt+164)
|
||||
#define ActBanUsrMsg (ActCalNumMsgSnt+165)
|
||||
#define ActUnbUsrMsg (ActCalNumMsgSnt+166)
|
||||
#define ActUnbUsrLst (ActCalNumMsgSnt+167)
|
||||
#define ActCht (ActCalNumMsgSnt+168)
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************************** Statistics tab *******************************/
|
||||
|
|
|
@ -103,11 +103,16 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 14.83 (2015/03/10)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 14.84 (2015/03/10)"
|
||||
|
||||
// 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.84: Mar 10, 2015 Number of messages sent is stored in user's figures. (181374 lines)
|
||||
2 changes necessary in database:
|
||||
ALTER TABLE usr_figures ADD COLUMN NumMsgSnt INT NOT NULL DEFAULT -1;
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1407','es','N','Calcular número de mensajes enviados');
|
||||
|
||||
Version 14.83: Mar 10, 2015 New action to compute first click when not available in public profile. (181287 lines)
|
||||
3 changes necessary in database:
|
||||
ALTER TABLE usr_figures CHANGE COLUMN NumClicks NumClicks INT NOT NULL DEFAULT -1;
|
||||
|
|
|
@ -2346,13 +2346,15 @@ mysql> DESCRIBE usr_figures;
|
|||
| UsrCod | int(11) | NO | PRI | NULL | |
|
||||
| FirstClickTime | datetime | NO | | NULL | |
|
||||
| NumClicks | int(11) | NO | | -1 | |
|
||||
| NumMsgSnt | int(11) | NO | | -1 | |
|
||||
+----------------+----------+------+-----+---------+-------+
|
||||
3 rows in set (0.00 sec)
|
||||
4 rows in set (0.01 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS usr_figures ("
|
||||
"UsrCod INT NOT NULL,"
|
||||
"FirstClickTime DATETIME NOT NULL,"
|
||||
"NumClicks INT NOT NULL DEFAULT -1,"
|
||||
"NumMsgSnt INT NOT NULL DEFAULT -1,"
|
||||
"PRIMARY KEY(UsrCod))");
|
||||
|
||||
/***** Table usr_IDs *****/
|
||||
|
|
|
@ -87,6 +87,8 @@ static void Msg_ExpandReceivedMsg (long MsgCod);
|
|||
static void Msg_ContractSentMsg (long MsgCod);
|
||||
static void Msg_ContractReceivedMsg (long MsgCod);
|
||||
|
||||
static long Msg_InsertNewMsg (const char *Subject,const char *Content);
|
||||
|
||||
static unsigned long Msg_DelSomeRecOrSntMsgsUsr (Msg_TypeOfMessages_t TypeOfMessages,long UsrCod,
|
||||
long FilterCrsCod,const char *FilterFromToSubquery);
|
||||
static void Msg_InsertReceivedMsgIntoDB (long MsgCod,long UsrCod,bool NotifyByEmail);
|
||||
|
@ -642,7 +644,7 @@ void Msg_RecMsgFromUsr (void)
|
|||
if (!MsgAlreadyInserted)
|
||||
{
|
||||
// The message is inserted only once in the table of messages sent
|
||||
NewMsgCod = Msg_InsertNewMsg (Gbl.CurrentCrs.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod,Gbl.Msg.Subject,Content);
|
||||
NewMsgCod = Msg_InsertNewMsg (Gbl.Msg.Subject,Content);
|
||||
MsgAlreadyInserted = true;
|
||||
}
|
||||
|
||||
|
@ -1163,7 +1165,7 @@ void Msg_SetReceivedMsgAsOpen (long MsgCod,long UsrCod)
|
|||
/*****************************************************************************/
|
||||
// Return the code of the new inserted message
|
||||
|
||||
long Msg_InsertNewMsg (long CrsCod,long UsrCod,const char *Subject,const char *Content)
|
||||
static long Msg_InsertNewMsg (const char *Subject,const char *Content)
|
||||
{
|
||||
char Query[128+Cns_MAX_BYTES_SUBJECT+Cns_MAX_BYTES_LONG_TEXT];
|
||||
long MsgCod;
|
||||
|
@ -1177,9 +1179,14 @@ long Msg_InsertNewMsg (long CrsCod,long UsrCod,const char *Subject,const char *C
|
|||
/***** Insert message in sent messages *****/
|
||||
sprintf (Query,"INSERT INTO msg_snt (MsgCod,CrsCod,UsrCod,Expanded,CreatTime)"
|
||||
" VALUES ('%ld','%ld','%ld','N',NOW())",
|
||||
MsgCod,CrsCod,UsrCod);
|
||||
MsgCod,
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
DB_QueryINSERT (Query,"can not create message");
|
||||
|
||||
/***** Increment number of messages sent by me *****/
|
||||
Usr_IncrementNumMsgSntUsr ();
|
||||
|
||||
return MsgCod;
|
||||
}
|
||||
|
||||
|
|
|
@ -80,8 +80,6 @@ void Msg_ConSntMsg (void);
|
|||
void Msg_ConRecMsg (void);
|
||||
void Msg_SetReceivedMsgAsOpen (long MsgCod,long UsrCod);
|
||||
|
||||
long Msg_InsertNewMsg (long CrsCod,long UsrCod,const char *Subject,const char *Content);
|
||||
|
||||
void Msg_DelAllRecAndSntMsgsUsr (long UsrCod);
|
||||
void Msg_MoveUnusedMsgsContentToDeleted (void);
|
||||
|
||||
|
|
125
swad_user.c
125
swad_user.c
|
@ -95,6 +95,7 @@ struct UsrFigures
|
|||
{
|
||||
struct DateTime FirstClickTime; // 0 ==> unknown first click time of user never logged
|
||||
long NumClicks; // -1L ==> unknown number of clicks
|
||||
long NumMsgSnt; // -1L ==> unknown number of messages sent
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -182,8 +183,9 @@ static float Usr_GetNumUsrsPerCrs (Rol_Role_t Role);
|
|||
|
||||
static void Usr_ShowUserProfile (void);
|
||||
static void Usr_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures);
|
||||
static void Usr_FetchFirstClickFromLogAndStoreAsUsrFigure (long UsrCod);
|
||||
static void Usr_FetchNumClicksFromLogAndStoreAsUsrFigure (long UsrCod);
|
||||
static void Usr_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod);
|
||||
static void Usr_GetNumClicksFromLogAndStoreAsUsrFigure (long UsrCod);
|
||||
static void Usr_GetNumMsgSntFromLogAndStoreAsUsrFigure (long UsrCod);
|
||||
static bool Usr_CheckIfUsrFiguresExists (long UsrCod);
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -7758,14 +7760,22 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
|||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"DAT\""
|
||||
" style=\"text-align:left; vertical-align:middle;\">"
|
||||
"%u"
|
||||
"</a>"
|
||||
"</td>"
|
||||
"</tr>",
|
||||
" style=\"text-align:left; vertical-align:middle;\">",
|
||||
The_ClassFormul[Gbl.Prefs.Theme],
|
||||
Txt_Messages_sent,
|
||||
Msg_GetNumMsgsSentByUsr (UsrDat->UsrCod));
|
||||
Txt_Messages_sent);
|
||||
if (UsrFigures.NumMsgSnt >= 0)
|
||||
fprintf (Gbl.F.Out,"%ld",UsrFigures.NumMsgSnt);
|
||||
else // Number of clicks is unknown
|
||||
{
|
||||
/***** Button to fetch and store number of messages sent *****/
|
||||
Act_FormStart (ActCalNumMsgSnt);
|
||||
Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod);
|
||||
Act_LinkFormSubmit (Txt_Calculate,The_ClassFormul[Gbl.Prefs.Theme]);
|
||||
Lay_PutSendIcon ("recycle",Txt_Calculate,Txt_Calculate);
|
||||
fprintf (Gbl.F.Out,"</form>");
|
||||
}
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
/***** End of table *****/
|
||||
Lay_EndRoundFrameTable10 ();
|
||||
|
@ -7783,7 +7793,7 @@ static void Usr_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures)
|
|||
unsigned NumRows;
|
||||
|
||||
/***** Get user's code from database *****/
|
||||
sprintf (Query,"SELECT DATE_FORMAT(FirstClickTime,'%%Y%%m%%d%%H%%i%%S'),NumClicks"
|
||||
sprintf (Query,"SELECT DATE_FORMAT(FirstClickTime,'%%Y%%m%%d%%H%%i%%S'),NumClicks,NumMsgSnt"
|
||||
" FROM usr_figures WHERE UsrCod='%ld'",
|
||||
UsrCod);
|
||||
if ((NumRows = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get user's figures")))
|
||||
|
@ -7798,14 +7808,18 @@ static void Usr_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures)
|
|||
/* Get number of clicks */
|
||||
if (sscanf (row[1],"%ld",&UsrFigures->NumClicks) != 1)
|
||||
UsrFigures->NumClicks = -1L;
|
||||
|
||||
/* Get number of messages sent */
|
||||
if (sscanf (row[2],"%ld",&UsrFigures->NumMsgSnt) != 1)
|
||||
UsrFigures->NumMsgSnt = -1L;
|
||||
}
|
||||
else
|
||||
{
|
||||
/***** Return special user's figures indicating "not present" *****/
|
||||
if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&(UsrFigures->FirstClickTime),"00000000000000")))
|
||||
Lay_ShowErrorAndExit ("Error when reading first click time.");
|
||||
|
||||
UsrFigures->NumClicks = -1L;
|
||||
UsrFigures->NumMsgSnt = -1L;
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
|
@ -7822,17 +7836,17 @@ void Usr_CalculateFirstClickTime (void)
|
|||
Usr_GetParamOtherUsrCodEncrypted ();
|
||||
|
||||
/***** Get first click time from log and store as user's figure *****/
|
||||
Usr_FetchFirstClickFromLogAndStoreAsUsrFigure (Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
Usr_GetFirstClickFromLogAndStoreAsUsrFigure (Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
|
||||
/***** Show user's profile again *****/
|
||||
Usr_ShowUserProfile ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/** Fetch first click of a user from log table and store in user's figures ***/
|
||||
/*** Get first click of a user from log table and store in user's figures ****/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Usr_FetchFirstClickFromLogAndStoreAsUsrFigure (long UsrCod)
|
||||
static void Usr_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod)
|
||||
{
|
||||
char Query[256];
|
||||
MYSQL_RES *mysql_res;
|
||||
|
@ -7872,8 +7886,8 @@ static void Usr_FetchFirstClickFromLogAndStoreAsUsrFigure (long UsrCod)
|
|||
}
|
||||
else // User entry does not exist
|
||||
{
|
||||
sprintf (Query,"INSERT INTO usr_figures (UsrCod,FirstClickTime,NumClicks)"
|
||||
" VALUES ('%ld','%s','-1')",
|
||||
sprintf (Query,"INSERT INTO usr_figures (UsrCod,FirstClickTime,NumClicks,NumMsgSnt)"
|
||||
" VALUES ('%ld','%s','-1','-1')",
|
||||
UsrCod,FirstClickTime.YYYYMMDDHHMMSS);
|
||||
DB_QueryINSERT (Query,"can not create user's figures");
|
||||
}
|
||||
|
@ -7891,17 +7905,17 @@ void Usr_CalculateNumClicks (void)
|
|||
Usr_GetParamOtherUsrCodEncrypted ();
|
||||
|
||||
/***** Get number of clicks from log and store as user's figure *****/
|
||||
Usr_FetchNumClicksFromLogAndStoreAsUsrFigure (Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
Usr_GetNumClicksFromLogAndStoreAsUsrFigure (Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
|
||||
/***** Show user's profile again *****/
|
||||
Usr_ShowUserProfile ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/** Fetch first click of a user from log table and store in user's figures ***/
|
||||
/* Get number of clicks of a user from log table and store in user's figures */
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Usr_FetchNumClicksFromLogAndStoreAsUsrFigure (long UsrCod)
|
||||
static void Usr_GetNumClicksFromLogAndStoreAsUsrFigure (long UsrCod)
|
||||
{
|
||||
char Query[256];
|
||||
unsigned long NumClicks;
|
||||
|
@ -7923,14 +7937,62 @@ static void Usr_FetchNumClicksFromLogAndStoreAsUsrFigure (long UsrCod)
|
|||
}
|
||||
else // User entry does not exist
|
||||
{
|
||||
sprintf (Query,"INSERT INTO usr_figures (UsrCod,FirstClickTime,NumClicks)"
|
||||
" VALUES ('%ld','00000000000000','%ld')",
|
||||
sprintf (Query,"INSERT INTO usr_figures (UsrCod,FirstClickTime,NumClicks,NumMsgSnt)"
|
||||
" VALUES ('%ld','00000000000000','%ld','-1')",
|
||||
UsrCod,NumClicks);
|
||||
DB_QueryINSERT (Query,"can not create user's figures");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/****** Calculate number of messages sent and show user's profile again ******/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Usr_CalculateNumMsgSnt (void)
|
||||
{
|
||||
/***** Get user's code *****/
|
||||
Usr_GetParamOtherUsrCodEncrypted ();
|
||||
|
||||
/***** Get number of clicks from log and store as user's figure *****/
|
||||
Usr_GetNumMsgSntFromLogAndStoreAsUsrFigure (Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
|
||||
/***** Show user's profile again *****/
|
||||
Usr_ShowUserProfile ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Get number of clicks of a user from log table and store in user's figures */
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Usr_GetNumMsgSntFromLogAndStoreAsUsrFigure (long UsrCod)
|
||||
{
|
||||
char Query[256];
|
||||
unsigned long NumMsgSnt;
|
||||
|
||||
if (Usr_ChkIfUsrCodExists (UsrCod))
|
||||
{
|
||||
/***** Get number of clicks from database *****/
|
||||
NumMsgSnt = Msg_GetNumMsgsSentByUsr (UsrCod);
|
||||
|
||||
/***** Update number of clicks in user's figures *****/
|
||||
if (Usr_CheckIfUsrFiguresExists (UsrCod))
|
||||
{
|
||||
sprintf (Query,"UPDATE usr_figures SET NumMsgSnt='%ld'"
|
||||
" WHERE UsrCod='%ld'",
|
||||
NumMsgSnt,UsrCod);
|
||||
DB_QueryUPDATE (Query,"can not update user's figures");
|
||||
}
|
||||
else // User entry does not exist
|
||||
{
|
||||
sprintf (Query,"INSERT INTO usr_figures (UsrCod,FirstClickTime,NumClicks,NumMsgSnt)"
|
||||
" VALUES ('%ld','00000000000000','-1','%ld')",
|
||||
UsrCod,NumMsgSnt);
|
||||
DB_QueryINSERT (Query,"can not create user's figures");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*** Check if it exists an entry for this user in table of user's figures ****/
|
||||
/*****************************************************************************/
|
||||
|
@ -7950,11 +8012,28 @@ static bool Usr_CheckIfUsrFiguresExists (long UsrCod)
|
|||
|
||||
void Usr_IncrementNumClicksUsr (void)
|
||||
{
|
||||
char Query[512];
|
||||
char Query[256];
|
||||
|
||||
/***** Increment my number of clicks *****/
|
||||
// If NumClicks < 0 ==> not yet calculated, so do nothing
|
||||
sprintf (Query,"UPDATE IGNORE usr_figures SET NumClicks=NumClicks+1"
|
||||
" WHERE UsrCod='%ld'",
|
||||
" WHERE UsrCod='%ld' AND NumClicks>=0",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
DB_QueryINSERT (Query,"can not increment user's clicks");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** Select values on user's figures **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Usr_IncrementNumMsgSntUsr (void)
|
||||
{
|
||||
char Query[256];
|
||||
|
||||
/***** Increment my number of messages sent *****/
|
||||
// If NumMsgSnt < 0 ==> not yet calculated, so do nothing
|
||||
sprintf (Query,"UPDATE IGNORE usr_figures SET NumMsgSnt=NumMsgSnt+1"
|
||||
" WHERE UsrCod='%ld' AND NumMsgSnt>=0",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
DB_QueryINSERT (Query,"can not increment user's messages sent");
|
||||
}
|
||||
|
|
|
@ -330,6 +330,8 @@ void Usr_ChangeProfileVisibility (void);
|
|||
void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat);
|
||||
void Usr_CalculateFirstClickTime (void);
|
||||
void Usr_CalculateNumClicks (void);
|
||||
void Usr_CalculateNumMsgSnt (void);
|
||||
void Usr_IncrementNumClicksUsr (void);
|
||||
void Usr_IncrementNumMsgSntUsr (void);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue