diff --git a/swad_changelog.h b/swad_changelog.h index 04424dee3..67e00c6ce 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -629,14 +629,15 @@ TODO: Emilce Barrera Mesa: Podr TODO: Emilce Barrera Mesa: Mis estudiantes presentan muchas dificultades a la hora de poner la foto porque la plataforma es muy exigente respecto al fondo de la imagen. TODO: Francisco Javier Fernández Baldomero: intento mandar un mensaje a un estudiante vacío sin nickname, que se debe haber creado hoy mismo otro usuario con DNI distinto y nickname -Me sale este error, no sé si por no recordar yo la sintaxis apropiada para mandar a varios destinatarios. ¿No era así? +Me sale este error, no sé si por no rdbg_debugecordar yo la sintaxis apropiada para mandar a varios destinatarios. ¿No era así? "can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod') */ -#define Log_PLATFORM_VERSION "SWAD 23.87.5 (2024-07-23)" +#define Log_PLATFORM_VERSION "SWAD 23.87.6 (2024-08-28)" #define CSS_FILE "swad23.67.2.css" #define JS_FILE "swad23.79.js" /* + Version 23.87.6: Aug 28, 2024 Fixed bugs in timeline and projects. (335307 lines) Version 23.87.5: Jul 23, 2024 Fixed bug in list of projects. (335272 lines) Version 23.87.4: Jul 17, 2024 Changes in some icons. (335196 lines) Copy the following icons to icon public directory: diff --git a/swad_project_database.c b/swad_project_database.c index 1af905fbf..3f8bc0816 100644 --- a/swad_project_database.c +++ b/swad_project_database.c @@ -239,6 +239,7 @@ unsigned Prj_DB_GetListProjects (MYSQL_RES **mysql_res, const char *UsrsSubQuery) // NULL if no users { /* Role in project subquery */ + /* static const char *RolPrjSubQuery[16] = // EVL TUT STD UNK { // 3 2 1 0 [0b0000] = "", // · · · · @@ -250,6 +251,26 @@ unsigned Prj_DB_GetListProjects (MYSQL_RES **mysql_res, [0b1100] = " AND (prj_users.RoleInProject IN " "(2,3)" ")", // 1 1 · · [0b1110] = " AND (prj_users.RoleInProject IN " "(1,2,3)" ")", // 1 1 1 · }; + */ + static const char *RolPrjSubQuery[16] = // EVL TUT STD UNK + { // 3 2 1 0 + [0b0000] = "", // · · · · + [0b0001] = " AND (" "prj_users.RoleInProject IS NULL)", // · · · 1 + [0b0010] = " AND (prj_users.RoleInProject IN " "(1)" ")", // · · 1 · + [0b0011] = " AND (prj_users.RoleInProject IN " "(1)" " OR prj_users.RoleInProject IS NULL)", // · · 1 1 + [0b0100] = " AND (prj_users.RoleInProject IN " "(2)" ")", // · 1 · · + [0b0101] = " AND (prj_users.RoleInProject IN " "(2)" " OR prj_users.RoleInProject IS NULL)", // · 1 · 1 + [0b0110] = " AND (prj_users.RoleInProject IN " "(1,2)" ")", // · 1 1 · + [0b0111] = " AND (prj_users.RoleInProject IN " "(1,2)" " OR prj_users.RoleInProject IS NULL)", // · 1 1 1 + [0b1000] = " AND (prj_users.RoleInProject IN " "(3)" ")", // 1 · · · + [0b1001] = " AND (prj_users.RoleInProject IN " "(3)" " OR prj_users.RoleInProject IS NULL)", // 1 · · 1 + [0b1010] = " AND (prj_users.RoleInProject IN " "(1,""3)" ")", // 1 · 1 · + [0b1011] = " AND (prj_users.RoleInProject IN " "(1,""3)" " OR prj_users.RoleInProject IS NULL)", // 1 · 1 1 + [0b1100] = " AND (prj_users.RoleInProject IN " "(2,3)" ")", // 1 1 · · + [0b1101] = " AND (prj_users.RoleInProject IN " "(2,3)" " OR prj_users.RoleInProject IS NULL)", // 1 1 · 1 + [0b1110] = " AND (prj_users.RoleInProject IN " "(1,2,3)" ")", // 1 1 1 · + [0b1111] = "", // 1 1 1 1 + }; char *AssignSubQuery; char *HidVisSubQuery; char *ReviewSubQuery; diff --git a/swad_timeline_database.c b/swad_timeline_database.c index c4abbb3bb..2e6f60bd1 100644 --- a/swad_timeline_database.c +++ b/swad_timeline_database.c @@ -861,8 +861,9 @@ void Tml_DB_CreateSubQueryPublishers (TmlUsr_UsrOrGbl_t UsrOrGbl,Usr_Who_t Who, { case TmlUsr_TIMELINE_USR: // Show the timeline of a user *Table = ""; - sprintf (SubQuery,"tml_pubs.PublisherCod=%ld AND ", - Gbl.Usrs.Other.UsrDat.UsrCod); + snprintf (SubQuery,TmlPub_MAX_BYTES_SUBQUERY + 1, + "tml_pubs.PublisherCod=%ld AND ", + Gbl.Usrs.Other.UsrDat.UsrCod); break; case TmlUsr_TIMELINE_GBL: // Show the global timeline switch (Who) diff --git a/swad_timeline_who.c b/swad_timeline_who.c index 1f7ac0b2c..4d8fbe419 100644 --- a/swad_timeline_who.c +++ b/swad_timeline_who.c @@ -134,7 +134,20 @@ static Usr_Who_t TmlWho_GetWhoFromDB (void) /* Get who */ if (sscanf (row[0],"%u",&UnsignedNum) == 1) if (UnsignedNum < Usr_NUM_WHO) + { Who = (Usr_Who_t) UnsignedNum; + + switch (Who) + { + case Usr_WHO_ME: // Show my timeline + case Usr_WHO_FOLLOWED: // Show the timeline of the users I follow + case Usr_WHO_ALL: // Show the timeline of all users + break; + default: + Who = TmlWho_DEFAULT_WHO; + break; + } + } } /***** Free structure that stores the query result *****/