Version 21.58.1: Nov 21, 2021 Code refactoring in timeline.

This commit is contained in:
acanas 2021-11-21 11:40:57 +01:00
parent 9d46cff420
commit 0d0bb5c887
5 changed files with 32 additions and 43 deletions

View File

@ -602,14 +602,15 @@ TODO: FIX BUG, URGENT! En las fechas como par
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo. TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
*/ */
#define Log_PLATFORM_VERSION "SWAD 21.58 (2021-11-21)" #define Log_PLATFORM_VERSION "SWAD 21.58.1 (2021-11-21)"
#define CSS_FILE "swad21.57.css" #define CSS_FILE "swad21.57.css"
#define JS_FILE "swad21.58.js" #define JS_FILE "swad21.58.js"
/* /*
TODO: Rename CENTRE to CENTER in help wiki. TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 21.58: Nov 21, 2021 Code refactoring in timeline. (319157 lines) Version 21.58.1: Nov 21, 2021 Code refactoring in timeline. (319131 lines)
Version 21.58: Nov 21, 2021 Code refactoring in timeline. (319140 lines)
Version 21.57.5: Nov 18, 2021 Code refactoring related to check if user logged is me. (319174 lines) Version 21.57.5: Nov 18, 2021 Code refactoring related to check if user logged is me. (319174 lines)
Version 21.57.4: Nov 17, 2021 Code refactoring in timeline. (319235 lines) Version 21.57.4: Nov 17, 2021 Code refactoring in timeline. (319235 lines)
Version 21.57.3: Nov 17, 2021 Code refactoring in timeline. (319225 lines) Version 21.57.3: Nov 17, 2021 Code refactoring in timeline. (319225 lines)

View File

@ -891,39 +891,22 @@ void Tml_DB_CreateSubQueryPublishers (Tml_Usr_UsrOrGbl_t UsrOrGbl,Usr_Who_t Who,
} }
} }
/*****************************************************************************/
/********* Create subquery to get only notes not present in timeline *********/
/*****************************************************************************/
void Tml_DB_CreateSubQueryAlreadyExists (char AlreadyExists[Tml_Pub_MAX_BYTES_SUBQUERY + 1])
{
Str_Copy (AlreadyExists,
" tml_pubs.NotCod NOT IN"
" (SELECT NotCod"
" FROM tml_tmp_timeline)",
Tml_Pub_MAX_BYTES_SUBQUERY);
}
/*****************************************************************************/ /*****************************************************************************/
/***** Create subqueries with range of publications to get from tml_pubs *****/ /***** Create subqueries with range of publications to get from tml_pubs *****/
/*****************************************************************************/ /*****************************************************************************/
void Tml_DB_CreateSubQueryRangeBottom (long Bottom, void Tml_DB_CreateSubQueryRange (Tml_Pub_Range_t Range,long PubCod,
char SubQuery[Tml_Pub_MAX_BYTES_SUBQUERY + 1]) char SubQuery[Tml_Pub_MAX_BYTES_SUBQUERY + 1])
{ {
if (Bottom > 0) static const char Operator[Tml_Pub_NUM_RANGES] =
snprintf (SubQuery,Tml_Pub_MAX_BYTES_SUBQUERY + 1, {
"tml_pubs.PubCod>%ld AND ",Bottom); [Tml_Pub_TOP ] = '<',
else [Tml_Pub_BOTTOM] = '>',
SubQuery[0] = '\0'; };
}
void Tml_DB_CreateSubQueryRangeTop (long Top, if (PubCod > 0)
char SubQuery[Tml_Pub_MAX_BYTES_SUBQUERY + 1])
{
if (Top > 0)
snprintf (SubQuery,Tml_Pub_MAX_BYTES_SUBQUERY + 1, snprintf (SubQuery,Tml_Pub_MAX_BYTES_SUBQUERY + 1,
"tml_pubs.PubCod<%ld AND ",Top); "tml_pubs.PubCod%c%ld AND ",Operator[Range],PubCod);
else else
SubQuery[0] = '\0'; SubQuery[0] = '\0';
} }
@ -943,14 +926,16 @@ unsigned Tml_DB_SelectTheMostRecentPub (MYSQL_RES **mysql_res,
"tml_pubs.PublisherCod," // row[2] "tml_pubs.PublisherCod," // row[2]
"tml_pubs.PubType" // row[3] "tml_pubs.PubType" // row[3]
" FROM tml_pubs%s" " FROM tml_pubs%s"
" WHERE %s%s%s%s" " WHERE %s%s%s"
" tml_pubs.NotCod NOT IN"
" (SELECT NotCod"
" FROM tml_tmp_timeline)"
" ORDER BY tml_pubs.PubCod DESC" " ORDER BY tml_pubs.PubCod DESC"
" LIMIT 1", " LIMIT 1",
SubQueries->Publishers.Table, SubQueries->Publishers.Table,
SubQueries->RangeBottom, SubQueries->RangeBottom,
SubQueries->RangeTop, SubQueries->RangeTop,
SubQueries->Publishers.SubQuery, SubQueries->Publishers.SubQuery);
SubQueries->AlreadyExists);
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -96,11 +96,8 @@ void Tml_DB_RemoveAllCommsMadeBy (long UsrCod);
void Tml_DB_CreateSubQueryPublishers (Tml_Usr_UsrOrGbl_t UsrOrGbl,Usr_Who_t Who, void Tml_DB_CreateSubQueryPublishers (Tml_Usr_UsrOrGbl_t UsrOrGbl,Usr_Who_t Who,
char **Table, char **Table,
char SubQuery[Tml_Pub_MAX_BYTES_SUBQUERY + 1]); char SubQuery[Tml_Pub_MAX_BYTES_SUBQUERY + 1]);
void Tml_DB_CreateSubQueryAlreadyExists (char AlreadyExists[Tml_Pub_MAX_BYTES_SUBQUERY + 1]); void Tml_DB_CreateSubQueryRange (Tml_Pub_Range_t Range,long PubCod,
void Tml_DB_CreateSubQueryRangeBottom (long Bottom, char SubQuery[Tml_Pub_MAX_BYTES_SUBQUERY + 1]);
char SubQuery[Tml_Pub_MAX_BYTES_SUBQUERY + 1]);
void Tml_DB_CreateSubQueryRangeTop (long Top,
char SubQuery[Tml_Pub_MAX_BYTES_SUBQUERY + 1]);
unsigned Tml_DB_SelectTheMostRecentPub (MYSQL_RES **mysql_res, unsigned Tml_DB_SelectTheMostRecentPub (MYSQL_RES **mysql_res,
const struct Tml_Pub_SubQueries *SubQueries); const struct Tml_Pub_SubQueries *SubQueries);
unsigned Tml_DB_GetDataOfPubByCod (long PubCod,MYSQL_RES **mysql_res); unsigned Tml_DB_GetDataOfPubByCod (long PubCod,MYSQL_RES **mysql_res);

View File

@ -105,13 +105,11 @@ void Tml_Pub_GetListPubsToShowInTimeline (struct Tml_Timeline *Timeline)
&SubQueries.Publishers.Table, &SubQueries.Publishers.Table,
SubQueries.Publishers.SubQuery); SubQueries.Publishers.SubQuery);
/* Create subquery to get only notes not present in timeline */
Tml_DB_CreateSubQueryAlreadyExists (SubQueries.AlreadyExists);
/* Create subquery with bottom range of publications to get from tml_pubs. /* Create subquery with bottom range of publications to get from tml_pubs.
Bottom pub. code remains unchanged in all iterations of the loop. */ Bottom pub. code remains unchanged in all iterations of the loop. */
Tml_DB_CreateSubQueryRangeBottom (RangePubsToGet.Bottom, Tml_DB_CreateSubQueryRange (Tml_Pub_BOTTOM,
SubQueries.RangeBottom); RangePubsToGet.Bottom,
SubQueries.RangeBottom);
/***** Initialize list of publications *****/ /***** Initialize list of publications *****/
/* Chained list of publications: /* Chained list of publications:
@ -158,7 +156,9 @@ void Tml_Pub_GetListPubsToShowInTimeline (struct Tml_Timeline *Timeline)
{ {
/* Create subquery with top range of publications to get from tml_pubs /* Create subquery with top range of publications to get from tml_pubs
In each iteration of this loop, top publication code is changed to a lower value */ In each iteration of this loop, top publication code is changed to a lower value */
Tml_DB_CreateSubQueryRangeTop (RangePubsToGet.Top,SubQueries.RangeTop); Tml_DB_CreateSubQueryRange (Tml_Pub_TOP,
RangePubsToGet.Top,
SubQueries.RangeTop);
/* Select the most recent publication from tml_pubs */ /* Select the most recent publication from tml_pubs */
Pub = Tml_Pub_SelectTheMostRecentPub (&SubQueries); Pub = Tml_Pub_SelectTheMostRecentPub (&SubQueries);

View File

@ -65,6 +65,13 @@ struct Tml_Pub_Publication
struct Tml_Pub_Publication *Next; // Used for chained list struct Tml_Pub_Publication *Next; // Used for chained list
}; };
#define Tml_Pub_NUM_RANGES 2
typedef enum
{
Tml_Pub_TOP = 0,
Tml_Pub_BOTTOM = 1,
} Tml_Pub_Range_t;
struct Tml_Pub_RangePubsToGet struct Tml_Pub_RangePubsToGet
{ {
long Top; // Top pub code long Top; // Top pub code
@ -88,7 +95,6 @@ struct Tml_Pub_SubQueries
} Publishers; } Publishers;
char RangeBottom [Tml_Pub_MAX_BYTES_SUBQUERY + 1]; char RangeBottom [Tml_Pub_MAX_BYTES_SUBQUERY + 1];
char RangeTop [Tml_Pub_MAX_BYTES_SUBQUERY + 1]; char RangeTop [Tml_Pub_MAX_BYTES_SUBQUERY + 1];
char AlreadyExists[Tml_Pub_MAX_BYTES_SUBQUERY + 1];
}; };
/*****************************************************************************/ /*****************************************************************************/