mirror of https://github.com/acanas/swad-core.git
Version 18.53
This commit is contained in:
parent
1c98d3828e
commit
f53f29fac9
|
@ -1407,6 +1407,7 @@ CREATE TABLE IF NOT EXISTS usr_last (
|
|||
LastTab TINYINT NOT NULL,
|
||||
LastTime DATETIME NOT NULL,
|
||||
LastAccNotif DATETIME NOT NULL,
|
||||
TimelineUsrs TINYINT NOT NULL DEFAULT 0,
|
||||
UNIQUE INDEX(UsrCod),
|
||||
INDEX(LastTime));
|
||||
--
|
||||
|
|
|
@ -429,11 +429,15 @@ En OpenSWAD:
|
|||
ps2pdf source.ps destination.pdf
|
||||
*/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 18.52.4 (2019-02-21)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 18.53 (2019-02-21)"
|
||||
#define CSS_FILE "swad18.52.4.css"
|
||||
#define JS_FILE "swad18.51.js"
|
||||
/*
|
||||
Version 18.52.4: Feb 21, 2019 Changes in pink theme. (? lines)
|
||||
Version 18.53: Feb 21, 2019 Last selection of users scope in timeline is saved in database. (237538 lines)
|
||||
1 change necessary in database:
|
||||
ALTER TABLE usr_last ADD COLUMN TimelineUsrs TINYINT NOT NULL DEFAULT 0 AFTER LastAccNotif;
|
||||
|
||||
Version 18.52.4: Feb 21, 2019 Changes in pink theme. (237459 lines)
|
||||
Version 18.52.3: Feb 21, 2019 Fixed bug in removing of old temporary files. (237458 lines)
|
||||
Version 18.52.2: Feb 20, 2019 Fixed bug in reception of images. (237458 lines)
|
||||
Version 18.52.1: Feb 20, 2019 Messages to debug problem with files. (237425 lines)
|
||||
|
|
|
@ -2969,8 +2969,9 @@ mysql> DESCRIBE usr_last;
|
|||
| LastTab | tinyint(4) | NO | | NULL | |
|
||||
| LastTime | datetime | NO | MUL | NULL | |
|
||||
| LastAccNotif | datetime | NO | | NULL | |
|
||||
| TimelineUsrs | tinyint(4) | NO | | 0 | |
|
||||
+--------------+------------+------+-----+---------+-------+
|
||||
6 rows in set (0.00 sec)
|
||||
7 rows in set (0.00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS usr_last ("
|
||||
"UsrCod INT NOT NULL,"
|
||||
|
@ -2979,6 +2980,7 @@ mysql> DESCRIBE usr_last;
|
|||
"LastTab TINYINT NOT NULL,"
|
||||
"LastTime DATETIME NOT NULL,"
|
||||
"LastAccNotif DATETIME NOT NULL,"
|
||||
"TimelineUsrs TINYINT NOT NULL DEFAULT 0,"
|
||||
"UNIQUE INDEX(UsrCod),"
|
||||
"INDEX(LastTime))");
|
||||
|
||||
|
|
|
@ -287,7 +287,8 @@ void Sch_GetParamWhatToSearch (void)
|
|||
Sch_NUM_WHAT_TO_SEARCH - 1,
|
||||
(unsigned long) Sch_SEARCH_UNKNOWN);
|
||||
|
||||
// If parameter WhatToSearch is not present, use parameter from session
|
||||
/***** If parameter WhatToSearch is not present,
|
||||
use parameter from session *****/
|
||||
if (WhatToSearch != Sch_SEARCH_UNKNOWN)
|
||||
Gbl.Search.WhatToSearch = WhatToSearch;
|
||||
}
|
||||
|
|
101
swad_social.c
101
swad_social.c
|
@ -148,6 +148,8 @@ static void Soc_FormStart (Act_Action_t ActionGbl,Act_Action_t ActionUsr);
|
|||
static void Soc_PutFormWhichUsrs (void);
|
||||
static void Soc_PutParamWhichUsrs (void);
|
||||
static void Soc_GetParamsWhichUsrs (void);
|
||||
static Soc_WhichUsrs_t Soc_GetWhichUsrsFromDB (void);
|
||||
static void Soc_SaveWhichUsersInDB (void);
|
||||
|
||||
static void Soc_ShowWarningYouDontFollowAnyUser (void);
|
||||
|
||||
|
@ -277,6 +279,10 @@ void Soc_ShowTimelineGbl1 (void)
|
|||
|
||||
/***** Get which users *****/
|
||||
Soc_GetParamsWhichUsrs ();
|
||||
|
||||
/***** Save which users in database *****/
|
||||
if (Gbl.Action.Act == ActSeeSocTmlGbl) // Only in action to see global timeline
|
||||
Soc_SaveWhichUsersInDB ();
|
||||
}
|
||||
|
||||
void Soc_ShowTimelineGbl2 (void)
|
||||
|
@ -572,7 +578,7 @@ static void Soc_BuildQueryToGetTimeline (char **Query,
|
|||
case Soc_TIMELINE_GBL: // Show the global timeline
|
||||
switch (Gbl.Social.WhichUsrs)
|
||||
{
|
||||
case Soc_FOLLOWED: // Show the timeline of the users I follow
|
||||
case Soc_USRS_FOLLOWED: // Show the timeline of the users I follow
|
||||
DB_Query ("can not create temporary table",
|
||||
"CREATE TEMPORARY TABLE publishers "
|
||||
"(UsrCod INT NOT NULL,UNIQUE INDEX(UsrCod)) ENGINE=MEMORY"
|
||||
|
@ -585,9 +591,12 @@ static void Soc_BuildQueryToGetTimeline (char **Query,
|
|||
|
||||
sprintf (SubQueryPublishers,"social_pubs.PublisherCod=publishers.UsrCod AND ");
|
||||
break;
|
||||
case Soc_ALL_USRS: // Show the timeline of all users
|
||||
case Soc_USRS_ALL: // Show the timeline of all users
|
||||
SubQueryPublishers[0] = '\0';
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong parameter which users.");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -700,12 +709,15 @@ static void Soc_BuildQueryToGetTimeline (char **Query,
|
|||
case Soc_TIMELINE_GBL: // Show the global timeline
|
||||
switch (Gbl.Social.WhichUsrs)
|
||||
{
|
||||
case Soc_FOLLOWED: // Show the timeline of the users I follow
|
||||
case Soc_USRS_FOLLOWED: // Show the timeline of the users I follow
|
||||
sprintf (SubQueryRangeBottom,"social_pubs.PubCod>%ld AND ",RangePubsToGet.Bottom);
|
||||
break;
|
||||
case Soc_ALL_USRS: // Show the timeline of all users
|
||||
case Soc_USRS_ALL: // Show the timeline of all users
|
||||
sprintf (SubQueryRangeBottom,"PubCod>%ld AND ",RangePubsToGet.Bottom);
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong parameter which users.");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -721,12 +733,15 @@ static void Soc_BuildQueryToGetTimeline (char **Query,
|
|||
case Soc_TIMELINE_GBL: // Show the global timeline
|
||||
switch (Gbl.Social.WhichUsrs)
|
||||
{
|
||||
case Soc_FOLLOWED: // Show the timeline of the users I follow
|
||||
case Soc_USRS_FOLLOWED: // Show the timeline of the users I follow
|
||||
sprintf (SubQueryRangeTop,"social_pubs.PubCod<%ld AND ",RangePubsToGet.Top);
|
||||
break;
|
||||
case Soc_ALL_USRS: // Show the timeline of all users
|
||||
case Soc_USRS_ALL: // Show the timeline of all users
|
||||
sprintf (SubQueryRangeTop,"PubCod<%ld AND ",RangePubsToGet.Top);
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong parameter which users.");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -750,7 +765,7 @@ static void Soc_BuildQueryToGetTimeline (char **Query,
|
|||
case Soc_TIMELINE_GBL: // Show the global timeline
|
||||
switch (Gbl.Social.WhichUsrs)
|
||||
{
|
||||
case Soc_FOLLOWED: // Show the timeline of the users I follow
|
||||
case Soc_USRS_FOLLOWED: // Show the timeline of the users I follow
|
||||
NumPubs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get publishing",
|
||||
"SELECT PubCod,NotCod FROM social_pubs,publishers"
|
||||
|
@ -760,7 +775,7 @@ static void Soc_BuildQueryToGetTimeline (char **Query,
|
|||
SubQueryPublishers,
|
||||
SubQueryAlreadyExists);
|
||||
break;
|
||||
case Soc_ALL_USRS: // Show the timeline of all users
|
||||
case Soc_USRS_ALL: // Show the timeline of all users
|
||||
NumPubs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get publishing",
|
||||
"SELECT PubCod,NotCod FROM social_pubs"
|
||||
|
@ -769,6 +784,9 @@ static void Soc_BuildQueryToGetTimeline (char **Query,
|
|||
SubQueryRangeBottom,SubQueryRangeTop,
|
||||
SubQueryAlreadyExists);
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong parameter which users.");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -1057,7 +1075,7 @@ static void Soc_PutFormWhichUsrs (void)
|
|||
fprintf (Gbl.F.Out,"<div class=\"SEL_BELOW_TITLE\">"
|
||||
"<ul>");
|
||||
|
||||
for (WhichUsrs = (Soc_WhichUsrs_t) 0;
|
||||
for (WhichUsrs = (Soc_WhichUsrs_t) 1;
|
||||
WhichUsrs < Soc_NUM_WHICH_USRS;
|
||||
WhichUsrs++)
|
||||
{
|
||||
|
@ -1079,7 +1097,7 @@ static void Soc_PutFormWhichUsrs (void)
|
|||
Frm_EndForm ();
|
||||
|
||||
/***** Show warning if I do not follow anyone *****/
|
||||
if (Gbl.Social.WhichUsrs == Soc_FOLLOWED)
|
||||
if (Gbl.Social.WhichUsrs == Soc_USRS_FOLLOWED)
|
||||
Soc_ShowWarningYouDontFollowAnyUser ();
|
||||
}
|
||||
|
||||
|
@ -1101,9 +1119,68 @@ static void Soc_GetParamsWhichUsrs (void)
|
|||
/***** Get which users I want to see *****/
|
||||
Gbl.Social.WhichUsrs = (Soc_WhichUsrs_t)
|
||||
Par_GetParToUnsignedLong ("WhichUsrs",
|
||||
0,
|
||||
1,
|
||||
Soc_NUM_WHICH_USRS - 1,
|
||||
(unsigned long) Soc_DEFAULT_WHICH_USRS);
|
||||
(unsigned long) Soc_USRS_UNKNOWN);
|
||||
|
||||
/***** If parameter WhichUsrs is not present, get it from database *****/
|
||||
if (Gbl.Social.WhichUsrs == Soc_USRS_UNKNOWN)
|
||||
Gbl.Social.WhichUsrs = Soc_GetWhichUsrsFromDB ();
|
||||
|
||||
/***** If parameter WhichUsrs is unknown, set it to default *****/
|
||||
if (Gbl.Social.WhichUsrs == Soc_USRS_UNKNOWN)
|
||||
Gbl.Social.WhichUsrs = Soc_DEFAULT_WHICH_USRS;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********** Get user's last data from database giving a user's code **********/
|
||||
/*****************************************************************************/
|
||||
|
||||
static Soc_WhichUsrs_t Soc_GetWhichUsrsFromDB (void)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned UnsignedNum;
|
||||
Soc_WhichUsrs_t WhichUsrs = Soc_USRS_UNKNOWN;
|
||||
|
||||
/***** Get which users from database *****/
|
||||
if (DB_QuerySELECT (&mysql_res,"can not get timeline users from user's last data",
|
||||
"SELECT TimelineUsrs" // row[0]
|
||||
" FROM usr_last WHERE UsrCod=%ld",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod) == 1)
|
||||
{
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
/* Get which users */
|
||||
if (sscanf (row[0],"%u",&UnsignedNum) == 1)
|
||||
if (UnsignedNum < Soc_NUM_WHICH_USRS)
|
||||
WhichUsrs = (Soc_WhichUsrs_t) UnsignedNum;
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
||||
return WhichUsrs;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** Save which users into database ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Soc_SaveWhichUsersInDB (void)
|
||||
{
|
||||
if (Gbl.Usrs.Me.Logged)
|
||||
{
|
||||
if (Gbl.Social.WhichUsrs == Soc_USRS_UNKNOWN)
|
||||
Gbl.Social.WhichUsrs = Soc_DEFAULT_WHICH_USRS;
|
||||
|
||||
/***** Update which users in database *****/
|
||||
// WhichUsrs is stored in usr_last for next time I log in
|
||||
DB_QueryUPDATE ("can not update timeline users in user's last data",
|
||||
"UPDATE usr_last SET TimelineUsrs=%u WHERE UsrCod=%ld",
|
||||
(unsigned) Gbl.Social.WhichUsrs,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -43,13 +43,14 @@
|
|||
/******************************** Public types *******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Soc_NUM_WHICH_USRS 2
|
||||
#define Soc_NUM_WHICH_USRS 3
|
||||
typedef enum
|
||||
{
|
||||
Soc_FOLLOWED = 0,
|
||||
Soc_ALL_USRS = 1,
|
||||
Soc_USRS_UNKNOWN = 0,
|
||||
Soc_USRS_FOLLOWED = 1,
|
||||
Soc_USRS_ALL = 2,
|
||||
} Soc_WhichUsrs_t; // Which users I want to see: only users I follow or all users
|
||||
#define Soc_DEFAULT_WHICH_USRS Soc_ALL_USRS
|
||||
#define Soc_DEFAULT_WHICH_USRS Soc_USRS_ALL
|
||||
|
||||
#define Soc_NUM_PUB_TYPES 4
|
||||
// If the numbers assigned to each event type change,
|
||||
|
|
|
@ -49054,7 +49054,10 @@ const char *Txt_Timeline_OF_A_USER = // Warning: it is very important to include
|
|||
|
||||
const char *Txt_TIMELINE_WHICH_USERS[Soc_NUM_WHICH_USRS] =
|
||||
{
|
||||
// Soc_FOLLOWED
|
||||
// Soc_USRS_UNKNOWN
|
||||
NULL
|
||||
,
|
||||
// Soc_USRS_FOLLOWED
|
||||
#if L==1 // ca
|
||||
"Usuaris que segueixo"
|
||||
#elif L==2 // de
|
||||
|
@ -49075,7 +49078,7 @@ const char *Txt_TIMELINE_WHICH_USERS[Soc_NUM_WHICH_USRS] =
|
|||
"Usuários que estou seguindo"
|
||||
#endif
|
||||
,
|
||||
// Soc_ALL_USRS
|
||||
// Soc_USRS_ALL
|
||||
#if L==1 // ca
|
||||
"Tots els usuaris"
|
||||
#elif L==2 // de
|
||||
|
|
Loading…
Reference in New Issue