mirror of https://github.com/acanas/swad-core.git
Version 20.36.29: Feb 28, 2021 Code refactoring in module swad_timeline_database.
This commit is contained in:
parent
a38ab09b97
commit
e779ee524e
|
@ -553,7 +553,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
|
||||||
En OpenSWAD:
|
En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 20.36.28 (2021-02-28)"
|
#define Log_PLATFORM_VERSION "SWAD 20.36.29 (2021-02-28)"
|
||||||
#define CSS_FILE "swad20.33.9.css"
|
#define CSS_FILE "swad20.33.9.css"
|
||||||
#define JS_FILE "swad20.6.2.js"
|
#define JS_FILE "swad20.6.2.js"
|
||||||
/*
|
/*
|
||||||
|
@ -601,6 +601,7 @@ 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: 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
|
TODO: Salvador Romero Cortés: @acanas opción para editar posts
|
||||||
|
|
||||||
|
Version 20.36.29: Feb 28, 2021 Code refactoring in module swad_timeline_database. (305457 lines)
|
||||||
Version 20.36.28: Feb 28, 2021 Functions moved to module swad_timeline_database. (305426 lines)
|
Version 20.36.28: Feb 28, 2021 Functions moved to module swad_timeline_database. (305426 lines)
|
||||||
Version 20.36.27: Feb 28, 2021 Functions moved to module swad_timeline_database. (305424 lines)
|
Version 20.36.27: Feb 28, 2021 Functions moved to module swad_timeline_database. (305424 lines)
|
||||||
Version 20.36.26: Feb 28, 2021 Queries moved to module swad_timeline_database. (305423 lines)
|
Version 20.36.26: Feb 28, 2021 Queries moved to module swad_timeline_database. (305423 lines)
|
||||||
|
|
|
@ -54,8 +54,21 @@ extern struct Globals Gbl;
|
||||||
/***************************** Private prototypes ****************************/
|
/***************************** Private prototypes ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
/****************************** Publications *********************************/
|
||||||
static long TL_DB_GetMedCodFromPub (long PubCod,const char *DBTable);
|
static long TL_DB_GetMedCodFromPub (long PubCod,const char *DBTable);
|
||||||
|
|
||||||
|
/******************************* Favourites **********************************/
|
||||||
|
static bool TL_DB_CheckIfFavedByUsr (const char *Table,const char *Field,
|
||||||
|
long Cod,long UsrCod);
|
||||||
|
static unsigned TL_DB_GetNumTimesHasBeenFav (const char *Table,const char *Field,
|
||||||
|
long Cod,long UsrCod);
|
||||||
|
static unsigned TL_DB_GetListUsrsHaveFaved (const char *Table,const char *Field,
|
||||||
|
long Cod,long UsrCod,
|
||||||
|
unsigned MaxUsrs,
|
||||||
|
MYSQL_RES **mysql_res);
|
||||||
|
static void TL_DB_MarkAsFav (const char *Table,const char *Field,long Cod);
|
||||||
|
static void TL_DB_UnmarkAsFav (const char *Table,const char *Field,long Cod);
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************* Get data of note using its code ***********************/
|
/********************* Get data of note using its code ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -855,115 +868,143 @@ void TL_DB_UpdateFirstLastPubCodsInSession (long FirstPubCod)
|
||||||
|
|
||||||
bool TL_DB_CheckIfNoteIsFavedByUsr (long NotCod,long UsrCod)
|
bool TL_DB_CheckIfNoteIsFavedByUsr (long NotCod,long UsrCod)
|
||||||
{
|
{
|
||||||
return (DB_QueryCOUNT ("can not check if a user"
|
return TL_DB_CheckIfFavedByUsr ("tl_notes_fav","NotCod",NotCod,UsrCod);
|
||||||
" has favourited a note",
|
|
||||||
"SELECT COUNT(*) FROM tl_notes_fav"
|
|
||||||
" WHERE NotCod=%ld AND UsrCod=%ld",
|
|
||||||
NotCod,UsrCod) != 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/**************** Check if a user has favourited a comment *******************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
bool TL_DB_CheckIfCommIsFavedByUsr (long PubCod,long UsrCod)
|
bool TL_DB_CheckIfCommIsFavedByUsr (long PubCod,long UsrCod)
|
||||||
{
|
{
|
||||||
return (DB_QueryCOUNT ("can not check if a user"
|
return TL_DB_CheckIfFavedByUsr ("tl_comments_fav","PubCod",PubCod,UsrCod);
|
||||||
" has favourited a comment",
|
}
|
||||||
"SELECT COUNT(*) FROM tl_comments_fav"
|
|
||||||
|
static bool TL_DB_CheckIfFavedByUsr (const char *Table,const char *Field,
|
||||||
|
long Cod,long UsrCod)
|
||||||
|
{
|
||||||
|
/***** Check if a user has favourited a note/comment from database *****/
|
||||||
|
return (DB_QueryCOUNT ("can not check if a user has favourited",
|
||||||
|
"SELECT COUNT(*) FROM %s"
|
||||||
" WHERE PubCod=%ld AND UsrCod=%ld",
|
" WHERE PubCod=%ld AND UsrCod=%ld",
|
||||||
PubCod,UsrCod) != 0);
|
Table,
|
||||||
|
Field,Cod,UsrCod) != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*************** Get number of times a note has been favourited **************/
|
/********* Get number of times a note/comment has been favourited ************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
unsigned TL_DB_GetNumTimesANoteHasBeenFav (const struct TL_Not_Note *Not)
|
unsigned TL_DB_GetNumTimesANoteHasBeenFav (const struct TL_Not_Note *Not)
|
||||||
{
|
{
|
||||||
/***** Get number of times (users) this note has been favourited *****/
|
return TL_DB_GetNumTimesHasBeenFav ("tl_notes_fav","NotCod",
|
||||||
return (unsigned)
|
Not->NotCod,Not->UsrCod);
|
||||||
DB_QueryCOUNT ("can not get number of times"
|
|
||||||
" a note has been favourited",
|
|
||||||
"SELECT COUNT(*) FROM tl_notes_fav"
|
|
||||||
" WHERE NotCod=%ld"
|
|
||||||
" AND UsrCod<>%ld", // Extra check
|
|
||||||
Not->NotCod,
|
|
||||||
Not->UsrCod); // The author
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/************ Get number of times a comment has been favourited **************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
unsigned TL_DB_GetNumTimesACommHasBeenFav (const struct TL_Com_Comment *Com)
|
unsigned TL_DB_GetNumTimesACommHasBeenFav (const struct TL_Com_Comment *Com)
|
||||||
{
|
{
|
||||||
/***** Get number of times (users) this comment has been favourited *****/
|
return TL_DB_GetNumTimesHasBeenFav ("tl_comments_fav","PubCod",
|
||||||
|
Com->PubCod,Com->UsrCod);
|
||||||
|
}
|
||||||
|
|
||||||
|
static unsigned TL_DB_GetNumTimesHasBeenFav (const char *Table,const char *Field,
|
||||||
|
long Cod,long UsrCod)
|
||||||
|
{
|
||||||
|
/***** Get number of times (users) a note/comment has been favourited *****/
|
||||||
return (unsigned)
|
return (unsigned)
|
||||||
DB_QueryCOUNT ("can not get number of times"
|
DB_QueryCOUNT ("can not get number of times has been favourited",
|
||||||
" a comment has been favourited",
|
"SELECT COUNT(*) FROM %s"
|
||||||
"SELECT COUNT(*) FROM tl_comments_fav"
|
" WHERE %s=%ld"
|
||||||
" WHERE PubCod=%ld"
|
|
||||||
" AND UsrCod<>%ld", // Extra check
|
" AND UsrCod<>%ld", // Extra check
|
||||||
Com->PubCod,
|
Table,
|
||||||
Com->UsrCod); // The author
|
Field,Cod,
|
||||||
|
UsrCod); // The author
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************** Mark note as favourite in database *******************/
|
/******* Get list of users who have marked a note/comment as favourite *******/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
unsigned TL_DB_GetListUsrsHaveFavedANote (const struct TL_Not_Note *Not,
|
||||||
|
unsigned MaxUsrs,
|
||||||
|
MYSQL_RES **mysql_res)
|
||||||
|
{
|
||||||
|
return TL_DB_GetListUsrsHaveFaved ("tl_notes_fav","NotCod",
|
||||||
|
Not->NotCod,Not->UsrCod,MaxUsrs,
|
||||||
|
mysql_res);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned TL_DB_GetListUsrsHaveFavedAComm (const struct TL_Com_Comment *Com,
|
||||||
|
unsigned MaxUsrs,
|
||||||
|
MYSQL_RES **mysql_res)
|
||||||
|
{
|
||||||
|
return TL_DB_GetListUsrsHaveFaved ("tl_comments_fav","PubCod",
|
||||||
|
Com->PubCod,Com->UsrCod,MaxUsrs,
|
||||||
|
mysql_res);
|
||||||
|
}
|
||||||
|
|
||||||
|
static unsigned TL_DB_GetListUsrsHaveFaved (const char *Table,const char *Field,
|
||||||
|
long Cod,long UsrCod,
|
||||||
|
unsigned MaxUsrs,
|
||||||
|
MYSQL_RES **mysql_res)
|
||||||
|
{
|
||||||
|
/***** Get list of users who have marked a note/comment as favourite from database *****/
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get favers",
|
||||||
|
"SELECT UsrCod" // row[0]
|
||||||
|
" FROM %s"
|
||||||
|
" WHERE %s=%ld"
|
||||||
|
" AND UsrCod<>%ld" // Extra check
|
||||||
|
" ORDER BY FavCod LIMIT %u",
|
||||||
|
Table,
|
||||||
|
Field,Cod,
|
||||||
|
UsrCod,
|
||||||
|
MaxUsrs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**************** Mark note/comment as favourite in database *****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void TL_DB_MarkNoteAsFav (long NotCod)
|
void TL_DB_MarkNoteAsFav (long NotCod)
|
||||||
{
|
{
|
||||||
/***** Insert note in favourited in database *****/
|
TL_DB_MarkAsFav ("tl_notes_fav","NotCod",NotCod);
|
||||||
DB_QueryINSERT ("can not favourite note",
|
|
||||||
"INSERT IGNORE INTO tl_notes_fav"
|
|
||||||
" (NotCod,UsrCod,TimeFav)"
|
|
||||||
" VALUES"
|
|
||||||
" (%ld,%ld,NOW())",
|
|
||||||
NotCod,
|
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/********************** Mark note as favourite in database *******************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void TL_DB_MarkCommAsFav (long PubCod)
|
void TL_DB_MarkCommAsFav (long PubCod)
|
||||||
{
|
{
|
||||||
/***** Insert comment in favourited in database *****/
|
TL_DB_MarkAsFav ("tl_comments_fav","PubCod",PubCod);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void TL_DB_MarkAsFav (const char *Table,const char *Field,long Cod)
|
||||||
|
{
|
||||||
|
/***** Insert in favourited in database *****/
|
||||||
DB_QueryINSERT ("can not favourite comment",
|
DB_QueryINSERT ("can not favourite comment",
|
||||||
"INSERT IGNORE INTO tl_comments_fav"
|
"INSERT IGNORE INTO %s"
|
||||||
" (PubCod,UsrCod,TimeFav)"
|
" (%s,UsrCod,TimeFav)"
|
||||||
" VALUES"
|
" VALUES"
|
||||||
" (%ld,%ld,NOW())",
|
" (%ld,%ld,NOW())",
|
||||||
PubCod,
|
Table,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
Field,
|
||||||
|
Cod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************* Unmark note as favourite in database ******************/
|
/*************** Unmark note/comment as favourite in database ****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void TL_DB_UnmarkNoteAsFav (long NotCod)
|
void TL_DB_UnmarkNoteAsFav (long NotCod)
|
||||||
{
|
{
|
||||||
/***** Delete the mark as favourite from database *****/
|
TL_DB_UnmarkAsFav ("tl_notes_fav","NotCod",NotCod);
|
||||||
DB_QueryDELETE ("can not unfavourite note",
|
|
||||||
"DELETE FROM tl_notes_fav"
|
|
||||||
" WHERE NotCod=%ld AND UsrCod=%ld",
|
|
||||||
NotCod,
|
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/******************* Unmark comment as favourite in database *****************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void TL_DB_UnmarkCommAsFav (long PubCod)
|
void TL_DB_UnmarkCommAsFav (long PubCod)
|
||||||
{
|
{
|
||||||
DB_QueryDELETE ("can not unfavourite comment",
|
TL_DB_UnmarkAsFav ("tl_comments_fav","PubCod",PubCod);
|
||||||
"DELETE FROM tl_comments_fav"
|
}
|
||||||
" WHERE PubCod=%ld AND UsrCod=%ld",
|
|
||||||
PubCod,
|
static void TL_DB_UnmarkAsFav (const char *Table,const char *Field,long Cod)
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
{
|
||||||
|
/***** Delete the mark as favourite from database *****/
|
||||||
|
DB_QueryDELETE ("can not unfavourite",
|
||||||
|
"DELETE FROM %s"
|
||||||
|
" WHERE %s=%ld AND UsrCod=%ld",
|
||||||
|
Table,
|
||||||
|
Field,Cod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,6 +116,12 @@ bool TL_DB_CheckIfNoteIsFavedByUsr (long NotCod,long UsrCod);
|
||||||
bool TL_DB_CheckIfCommIsFavedByUsr (long PubCod,long UsrCod);
|
bool TL_DB_CheckIfCommIsFavedByUsr (long PubCod,long UsrCod);
|
||||||
unsigned TL_DB_GetNumTimesANoteHasBeenFav (const struct TL_Not_Note *Not);
|
unsigned TL_DB_GetNumTimesANoteHasBeenFav (const struct TL_Not_Note *Not);
|
||||||
unsigned TL_DB_GetNumTimesACommHasBeenFav (const struct TL_Com_Comment *Com);
|
unsigned TL_DB_GetNumTimesACommHasBeenFav (const struct TL_Com_Comment *Com);
|
||||||
|
unsigned TL_DB_GetListUsrsHaveFavedANote (const struct TL_Not_Note *Not,
|
||||||
|
unsigned MaxUsrs,
|
||||||
|
MYSQL_RES **mysql_res);
|
||||||
|
unsigned TL_DB_GetListUsrsHaveFavedAComm (const struct TL_Com_Comment *Com,
|
||||||
|
unsigned MaxUsrs,
|
||||||
|
MYSQL_RES **mysql_res);
|
||||||
void TL_DB_MarkNoteAsFav (long NotCod);
|
void TL_DB_MarkNoteAsFav (long NotCod);
|
||||||
void TL_DB_MarkCommAsFav (long PubCod);
|
void TL_DB_MarkCommAsFav (long PubCod);
|
||||||
void TL_DB_UnmarkNoteAsFav (long NotCod);
|
void TL_DB_UnmarkNoteAsFav (long NotCod);
|
||||||
|
|
|
@ -169,7 +169,7 @@ static void TL_Fav_FavNote (struct TL_Not_Note *Not)
|
||||||
if (Gbl.Usrs.Me.Logged && // I am logged...
|
if (Gbl.Usrs.Me.Logged && // I am logged...
|
||||||
!Usr_ItsMe (Not->UsrCod)) // ...but I am not the author
|
!Usr_ItsMe (Not->UsrCod)) // ...but I am not the author
|
||||||
if (!TL_DB_CheckIfNoteIsFavedByUsr (Not->NotCod,
|
if (!TL_DB_CheckIfNoteIsFavedByUsr (Not->NotCod,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod)) // I have not yet favourited the note
|
Gbl.Usrs.Me.UsrDat.UsrCod)) // I have not yet favourited the note
|
||||||
{
|
{
|
||||||
/***** Mark note as favourite in database *****/
|
/***** Mark note as favourite in database *****/
|
||||||
TL_DB_MarkNoteAsFav (Not->NotCod);
|
TL_DB_MarkNoteAsFav (Not->NotCod);
|
||||||
|
@ -200,7 +200,7 @@ static void TL_Fav_UnfNote (struct TL_Not_Note *Not)
|
||||||
Gbl.Usrs.Me.Logged && // I am logged...
|
Gbl.Usrs.Me.Logged && // I am logged...
|
||||||
!Usr_ItsMe (Not->UsrCod)) // ...but I am not the author
|
!Usr_ItsMe (Not->UsrCod)) // ...but I am not the author
|
||||||
if (TL_DB_CheckIfNoteIsFavedByUsr (Not->NotCod,
|
if (TL_DB_CheckIfNoteIsFavedByUsr (Not->NotCod,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod)) // I have favourited the note
|
Gbl.Usrs.Me.UsrDat.UsrCod)) // I have favourited the note
|
||||||
{
|
{
|
||||||
/***** Delete the mark as favourite from database *****/
|
/***** Delete the mark as favourite from database *****/
|
||||||
TL_DB_UnmarkNoteAsFav (Not->NotCod);
|
TL_DB_UnmarkNoteAsFav (Not->NotCod);
|
||||||
|
@ -457,16 +457,10 @@ static void TL_Fav_ShowUsrsWhoHaveMarkedNoteAsFav (const struct TL_Not_Note *Not
|
||||||
/***** Get users who have marked this note as favourite *****/
|
/***** Get users who have marked this note as favourite *****/
|
||||||
if (Not->NumFavs)
|
if (Not->NumFavs)
|
||||||
/***** Get list of users from database *****/
|
/***** Get list of users from database *****/
|
||||||
NumFirstUsrs =
|
NumFirstUsrs = TL_DB_GetListUsrsHaveFavedANote (Not,
|
||||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get users",
|
HowManyUsrs == TL_Usr_SHOW_FEW_USRS ? TL_Usr_DEF_USRS_SHOWN :
|
||||||
"SELECT UsrCod FROM tl_notes_fav"
|
TL_Usr_MAX_USRS_SHOWN,
|
||||||
" WHERE NotCod=%ld"
|
&mysql_res);
|
||||||
" AND UsrCod<>%ld" // Extra check
|
|
||||||
" ORDER BY FavCod LIMIT %u",
|
|
||||||
Not->NotCod,
|
|
||||||
Not->UsrCod,
|
|
||||||
HowManyUsrs == TL_Usr_SHOW_FEW_USRS ? TL_Usr_DEF_USRS_SHOWN :
|
|
||||||
TL_Usr_MAX_USRS_SHOWN);
|
|
||||||
else
|
else
|
||||||
NumFirstUsrs = 0;
|
NumFirstUsrs = 0;
|
||||||
|
|
||||||
|
@ -504,16 +498,10 @@ static void TL_Fav_ShowUsrsWhoHaveMarkedCommAsFav (const struct TL_Com_Comment *
|
||||||
/***** Get users who have marked this comment as favourite *****/
|
/***** Get users who have marked this comment as favourite *****/
|
||||||
if (Com->NumFavs)
|
if (Com->NumFavs)
|
||||||
/***** Get list of users from database *****/
|
/***** Get list of users from database *****/
|
||||||
NumFirstUsrs =
|
NumFirstUsrs = TL_DB_GetListUsrsHaveFavedAComm (Com,
|
||||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get users",
|
HowManyUsrs == TL_Usr_SHOW_FEW_USRS ? TL_Usr_DEF_USRS_SHOWN :
|
||||||
"SELECT UsrCod FROM tl_comments_fav"
|
TL_Usr_MAX_USRS_SHOWN,
|
||||||
" WHERE PubCod=%ld"
|
&mysql_res);
|
||||||
" AND UsrCod<>%ld" // Extra check
|
|
||||||
" ORDER BY FavCod LIMIT %u",
|
|
||||||
Com->PubCod,
|
|
||||||
Com->UsrCod,
|
|
||||||
HowManyUsrs == TL_Usr_SHOW_FEW_USRS ? TL_Usr_DEF_USRS_SHOWN :
|
|
||||||
TL_Usr_MAX_USRS_SHOWN);
|
|
||||||
else
|
else
|
||||||
NumFirstUsrs = 0;
|
NumFirstUsrs = 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue