Version 20.36.21: Feb 27, 2021 Function moved to module swad_timeline_database.

This commit is contained in:
acanas 2021-02-27 22:13:05 +01:00
parent 77ac719879
commit bb8957e584
6 changed files with 71 additions and 58 deletions

View File

@ -553,7 +553,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 20.36.19 (2021-02-27)"
#define Log_PLATFORM_VERSION "SWAD 20.36.21 (2021-02-27)"
#define CSS_FILE "swad20.33.9.css"
#define JS_FILE "swad20.6.2.js"
/*
@ -601,6 +601,8 @@ TODO: DNI de un estudiante sale err
TODO: BUG: Cuando un tipo de grupo sólo tiene un grupo, inscribirse es voluntario, el estudiante sólo puede pertenecer a un grupo, y se inscribe en él, debería poder desapuntarse. Ahora no puede.
TODO: Salvador Romero Cortés: @acanas opción para editar posts
Version 20.36.21: Feb 27, 2021 Function moved to module swad_timeline_database. (305376 lines)
Version 20.36.20: Feb 27, 2021 Query moved to module swad_timeline_database. (305374 lines)
Version 20.36.19: Feb 27, 2021 Queries moved to module swad_timeline_database. (305363 lines)
Version 20.36.18: Feb 27, 2021 Function moved to module swad_timeline_database. (305334 lines)
Version 20.36.17: Feb 27, 2021 Query moved to module swad_timeline_database. (305328 lines)

View File

@ -135,6 +135,7 @@ mysql> SHOW TABLES LIKE 'tl_%';
#include "swad_photo.h"
#include "swad_profile.h"
#include "swad_timeline.h"
#include "swad_timeline_database.h"
#include "swad_timeline_favourite.h"
#include "swad_timeline_note.h"
#include "swad_timeline_notification.h"
@ -238,7 +239,7 @@ void TL_ShowNoteAndTimelineGbl (struct TL_Timeline *Timeline)
/***** If a note should be highlighted ==> get code of note from database *****/
if (PubCod > 0)
Not.NotCod = TL_Pub_GetNotCodFromPubCod (PubCod);
Not.NotCod = TL_DB_GetNotCodFromPubCod (PubCod);
/***** If a note should be highlighted ==> show it above the timeline *****/
if (Not.NotCod > 0)

View File

@ -590,6 +590,57 @@ static long TL_DB_GetMedCodFromPub (long PubCod,const char *DBTable)
return MedCod;
}
/*****************************************************************************/
/******************** Select the most recent publication *********************/
/*****************************************************************************/
// Returns the number of rows got
unsigned TL_DB_SelectTheMostRecentPub (const struct TL_Pub_SubQueries *SubQueries,
MYSQL_RES **mysql_res)
{
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get publication",
"SELECT tl_pubs.PubCod," // row[0]
"tl_pubs.NotCod," // row[1]
"tl_pubs.PublisherCod," // row[2]
"tl_pubs.PubType" // row[3]
" FROM tl_pubs%s"
" WHERE %s%s%s%s"
" ORDER BY tl_pubs.PubCod DESC LIMIT 1",
SubQueries->TablePublishers,
SubQueries->RangeBottom,
SubQueries->RangeTop,
SubQueries->Publishers,
SubQueries->AlreadyExists);
}
/*****************************************************************************/
/*********************** Get code of note of a publication *******************/
/*****************************************************************************/
long TL_DB_GetNotCodFromPubCod (long PubCod)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
long NotCod = -1L; // Default value
/***** Get code of note from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get code of note",
"SELECT NotCod FROM tl_pubs"
" WHERE PubCod=%ld",
PubCod) == 1) // Result should have a unique row
{
/* Get code of note */
row = mysql_fetch_row (mysql_res);
NotCod = Str_ConvertStrCodToLongCod (row[0]);
}
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
return NotCod;
}
/*****************************************************************************/
/************* Get last/first publication code stored in session *************/
/*****************************************************************************/

View File

@ -31,6 +31,7 @@
#include "swad_file_browser.h"
#include "swad_timeline_note.h"
#include "swad_timeline_post.h"
#include "swad_timeline_publication.h"
/*****************************************************************************/
/****************************** Public constants *****************************/
@ -91,6 +92,9 @@ void TL_DB_RemoveCommentContent (long PubCod);
void TL_DB_RemoveCommentPub (long PubCod,long PublisherCod);
/* Publications */
unsigned TL_DB_SelectTheMostRecentPub (const struct TL_Pub_SubQueries *SubQueries,
MYSQL_RES **mysql_res);
long TL_DB_GetNotCodFromPubCod (long PubCod);
long TL_DB_GetPubCodFromSession (const char *FieldName,
const char SessionId[Cns_BYTES_SESSION_ID + 1]);
void TL_DB_UpdateFirstPubCodInSession (long FirstPubCod,

View File

@ -47,16 +47,6 @@
/************************* Private constants and types ***********************/
/*****************************************************************************/
#define TL_Pub_MAX_BYTES_SUBQUERY (128 - 1)
struct TL_Pub_SubQueries
{
char *TablePublishers;
char Publishers [TL_Pub_MAX_BYTES_SUBQUERY + 1];
char RangeBottom [TL_Pub_MAX_BYTES_SUBQUERY + 1];
char RangeTop [TL_Pub_MAX_BYTES_SUBQUERY + 1];
char AlreadyExists[TL_Pub_MAX_BYTES_SUBQUERY + 1];
};
struct TL_Pub_RangePubsToGet
{
long Top;
@ -424,25 +414,9 @@ void TL_Pub_FreeListPubs (struct TL_Timeline *Timeline)
static struct TL_Pub_Publication *TL_Pub_SelectTheMostRecentPub (const struct TL_Pub_SubQueries *SubQueries)
{
MYSQL_RES *mysql_res;
unsigned NumPubs = 0; // Initialized to avoid warning
struct TL_Pub_Publication *Pub;
NumPubs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get publication",
"SELECT tl_pubs.PubCod," // row[0]
"tl_pubs.NotCod," // row[1]
"tl_pubs.PublisherCod," // row[2]
"tl_pubs.PubType" // row[3]
" FROM tl_pubs%s"
" WHERE %s%s%s%s"
" ORDER BY tl_pubs.PubCod DESC LIMIT 1",
SubQueries->TablePublishers,
SubQueries->RangeBottom,
SubQueries->RangeTop,
SubQueries->Publishers,
SubQueries->AlreadyExists);
if (NumPubs == 1)
if (TL_DB_SelectTheMostRecentPub (SubQueries,&mysql_res) == 1)
{
/* Allocate space for publication */
if ((Pub = malloc (sizeof (*Pub))) == NULL)
@ -608,33 +582,6 @@ long TL_Pub_GetParamPubCod (void)
return Par_GetParToLong ("PubCod");
}
/*****************************************************************************/
/*********************** Get code of note of a publication *******************/
/*****************************************************************************/
long TL_Pub_GetNotCodFromPubCod (long PubCod)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
long NotCod = -1L;
/***** Get code of note from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get code of note",
"SELECT NotCod FROM tl_pubs"
" WHERE PubCod=%ld",
PubCod) == 1) // Result should have a unique row
{
/* Get code of note */
row = mysql_fetch_row (mysql_res);
NotCod = Str_ConvertStrCodToLongCod (row[0]);
}
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
return NotCod;
}
/*****************************************************************************/
/***************** Get data of publication using its code ********************/
/*****************************************************************************/

View File

@ -65,6 +65,16 @@ struct TL_Pub_Publication
struct TL_Pub_Publication *Next; // Used for chained list
};
#define TL_Pub_MAX_BYTES_SUBQUERY (128 - 1)
struct TL_Pub_SubQueries
{
char *TablePublishers;
char Publishers [TL_Pub_MAX_BYTES_SUBQUERY + 1];
char RangeBottom [TL_Pub_MAX_BYTES_SUBQUERY + 1];
char RangeTop [TL_Pub_MAX_BYTES_SUBQUERY + 1];
char AlreadyExists[TL_Pub_MAX_BYTES_SUBQUERY + 1];
};
/*****************************************************************************/
/****************************** Public prototypes ****************************/
/*****************************************************************************/
@ -83,8 +93,6 @@ void TL_Pub_PutLinkToViewOldPublications (void);
void TL_Pub_PutHiddenParamPubCod (long PubCod);
long TL_Pub_GetParamPubCod (void);
long TL_Pub_GetNotCodFromPubCod (long PubCod);
void TL_Pub_GetDataOfPublicationFromNextRow (MYSQL_RES *mysql_res,
struct TL_Pub_Publication *Pub);