From c6aa4fe3cc2b175f54bd2afa21891fcf688ed090 Mon Sep 17 00:00:00 2001 From: acanas Date: Mon, 15 Mar 2021 18:45:09 +0100 Subject: [PATCH] Version 20.50.2: Mar 15, 2021 Global announcements database table renamed. --- sql/swad.sql | 18 +++++++------- swad_announcement.c | 58 ++++++++++++++++++++++++++++++++------------- swad_changelog.h | 5 +++- swad_database.c | 46 +++++++++++++++++------------------ 4 files changed, 77 insertions(+), 50 deletions(-) diff --git a/sql/swad.sql b/sql/swad.sql index fa8296f40..d3437ef30 100644 --- a/sql/swad.sql +++ b/sql/swad.sql @@ -40,16 +40,9 @@ CREATE TABLE IF NOT EXISTS agd_agendas ( UNIQUE INDEX(AgdCod), INDEX(UsrCod,Public)); -- --- Table ann_seen: stores users who have seen global announcements +-- Table ann_announcements: stores global announcements -- -CREATE TABLE IF NOT EXISTS ann_seen ( - AnnCod INT NOT NULL, - UsrCod INT NOT NULL, - UNIQUE INDEX(AnnCod,UsrCod)); --- --- Table announcements: stores global announcements --- -CREATE TABLE IF NOT EXISTS announcements ( +CREATE TABLE IF NOT EXISTS ann_announcements ( AnnCod INT NOT NULL AUTO_INCREMENT, Status TINYINT NOT NULL DEFAULT 0, Roles INT NOT NULL DEFAULT 0, @@ -58,6 +51,13 @@ CREATE TABLE IF NOT EXISTS announcements ( UNIQUE INDEX(AnnCod), INDEX(Status)); -- +-- Table ann_seen: stores users who have seen global announcements +-- +CREATE TABLE IF NOT EXISTS ann_seen ( + AnnCod INT NOT NULL, + UsrCod INT NOT NULL, + UNIQUE INDEX(AnnCod,UsrCod)); +-- -- Table asg_grp: stores the groups associated to assigments -- CREATE TABLE IF NOT EXISTS asg_grp ( diff --git a/swad_announcement.c b/swad_announcement.c index 4a69ec539..4dbacd6a0 100644 --- a/swad_announcement.c +++ b/swad_announcement.c @@ -99,8 +99,12 @@ void Ann_ShowAllAnnouncements (void) { /* Select all announcements */ NumAnnouncements = (unsigned) DB_QuerySELECT (&mysql_res,"can not get announcements", - "SELECT AnnCod,Status,Roles,Subject,Content" - " FROM announcements" + "SELECT AnnCod," // row[0] + "Status," // row[1] + "Roles," // row[2] + "Subject," // row[3] + "Content" // row[4] + " FROM ann_announcements" " ORDER BY AnnCod DESC"); } else if (Gbl.Usrs.Me.Logged) @@ -108,8 +112,12 @@ void Ann_ShowAllAnnouncements (void) /* Select only announcements I can see */ Rol_GetRolesInAllCrssIfNotYetGot (&Gbl.Usrs.Me.UsrDat); NumAnnouncements = (unsigned) DB_QuerySELECT (&mysql_res,"can not get announcements", - "SELECT AnnCod,Status,Roles,Subject,Content" - " FROM announcements" + "SELECT AnnCod," // row[0] + "Status," // row[1] + "Roles," // row[2] + "Subject," // row[3] + "Content" // row[4] + " FROM ann_announcements" " WHERE (Roles&%u)<>0 " // All my roles in different courses " ORDER BY AnnCod DESC", (unsigned) Gbl.Usrs.Me.UsrDat.Roles.InCrss); @@ -118,8 +126,12 @@ void Ann_ShowAllAnnouncements (void) { /* Select only active announcements for unknown users */ NumAnnouncements = (unsigned) DB_QuerySELECT (&mysql_res,"can not get announcements", - "SELECT AnnCod,Status,Roles,Subject,Content" - " FROM announcements" + "SELECT AnnCod," // row[0] + "Status," // row[1] + "Roles," // row[2] + "Subject," // row[3] + "Content" // row[4] + " FROM ann_announcements" " WHERE Status=%u AND (Roles&%u)<>0 " " ORDER BY AnnCod DESC", (unsigned) Ann_ACTIVE_ANNOUNCEMENT, @@ -219,10 +231,16 @@ void Ann_ShowMyAnnouncementsNotMarkedAsSeen (void) /***** Select announcements not seen *****/ Rol_GetRolesInAllCrssIfNotYetGot (&Gbl.Usrs.Me.UsrDat); NumAnnouncements = (unsigned) DB_QuerySELECT (&mysql_res,"can not get announcements", - "SELECT AnnCod,Subject,Content FROM announcements" - " WHERE Status=%u AND (Roles&%u)<>0 " // All my roles in different courses - " AND AnnCod NOT IN" - " (SELECT AnnCod FROM ann_seen WHERE UsrCod=%ld)" + "SELECT AnnCod," // row[0] + "Subject," // row[1] + "Content" // row[2] + " FROM ann_announcements" + " WHERE Status=%u" + " AND (Roles&%u)<>0 " // All my roles in different courses + " AND AnnCod NOT IN" + " (SELECT AnnCod" + " FROM ann_seen" + " WHERE UsrCod=%ld)" " ORDER BY AnnCod DESC", // Newest first (unsigned) Ann_ACTIVE_ANNOUNCEMENT, (unsigned) Gbl.Usrs.Me.UsrDat.Roles.InCrss, @@ -502,7 +520,7 @@ static void Ann_CreateAnnouncement (unsigned Roles,const char *Subject,const cha { /***** Select announcements not seen *****/ DB_QueryINSERT ("can not create announcement", - "INSERT INTO announcements" + "INSERT INTO ann_announcements" " (Roles,Subject,Content)" " VALUES" " (%u,'%s','%s')", @@ -522,9 +540,11 @@ void Ann_HideActiveAnnouncement (void) /***** Set global announcement as hidden *****/ DB_QueryUPDATE ("can not hide announcement", - "UPDATE announcements SET Status=%u" + "UPDATE ann_announcements" + " SET Status=%u" " WHERE AnnCod=%ld", - (unsigned) Ann_OBSOLETE_ANNOUNCEMENT,AnnCod); + (unsigned) Ann_OBSOLETE_ANNOUNCEMENT, + AnnCod); } /*****************************************************************************/ @@ -540,9 +560,11 @@ void Ann_RevealHiddenAnnouncement (void) /***** Set global announcement as shown *****/ DB_QueryUPDATE ("can not reveal announcement", - "UPDATE announcements SET Status=%u" + "UPDATE ann_announcements" + " SET Status=%u" " WHERE AnnCod=%ld", - (unsigned) Ann_ACTIVE_ANNOUNCEMENT,AnnCod); + (unsigned) Ann_ACTIVE_ANNOUNCEMENT, + AnnCod); } /*****************************************************************************/ @@ -559,7 +581,8 @@ void Ann_RemoveAnnouncement (void) /***** Remove announcement *****/ DB_QueryDELETE ("can not remove announcement", - "DELETE FROM announcements WHERE AnnCod=%ld", + "DELETE FROM ann_announcements" + " WHERE AnnCod=%ld", AnnCod); /***** Remove users who have seen the announcement *****/ @@ -605,6 +628,7 @@ void Ann_RemoveUsrFromSeenAnnouncements (long UsrCod) { /***** Remove user from seen announcements *****/ DB_QueryDELETE ("can not remove user from seen announcements", - "DELETE FROM ann_seen WHERE UsrCod=%ld", + "DELETE FROM ann_seen" + " WHERE UsrCod=%ld", UsrCod); } diff --git a/swad_changelog.h b/swad_changelog.h index 25a25cbaf..ba23d7c47 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -600,12 +600,15 @@ TODO: Salvador Romero Cort TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria. */ -#define Log_PLATFORM_VERSION "SWAD 20.50.1 (2021-03-15)" +#define Log_PLATFORM_VERSION "SWAD 20.50.2 (2021-03-15)" #define CSS_FILE "swad20.45.css" #define JS_FILE "swad20.6.2.js" /* TODO: Rename CENTRE to CENTER in help wiki. + Version 20.50.2: Mar 15, 2021 Global announcements database table renamed. (307166 lines) + 1 change necessary in database: +RENAME TABLE announcements TO ann_announcements; Version 20.50.1: Mar 15, 2021 Agendas database table renamed. (307166 lines) 1 change necessary in database: diff --git a/swad_database.c b/swad_database.c index e12bbcc7c..03dd632da 100644 --- a/swad_database.c +++ b/swad_database.c @@ -175,6 +175,29 @@ mysql> DESCRIBE agd_agendas; "UNIQUE INDEX(AgdCod)," "INDEX(UsrCod,Public,Hidden))"); + /***** Table ann_announcements *****/ +/* +mysql> DESCRIBE ann_announcements; ++---------+------------+------+-----+---------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++---------+------------+------+-----+---------+----------------+ +| AnnCod | int(11) | NO | PRI | NULL | auto_increment | +| Status | tinyint(4) | NO | MUL | 0 | | +| Roles | int(11) | NO | | 0 | | +| Subject | text | NO | | NULL | | +| Content | text | NO | | NULL | | ++---------+------------+------+-----+---------+----------------+ +5 rows in set (0.00 sec) +*/ + DB_CreateTable ("CREATE TABLE IF NOT EXISTS ann_announcements (" + "AnnCod INT NOT NULL AUTO_INCREMENT," + "Status TINYINT NOT NULL DEFAULT 0," + "Roles INT NOT NULL DEFAULT 0," + "Subject TEXT NOT NULL," // Cns_MAX_BYTES_SUBJECT + "Content TEXT NOT NULL," // Cns_MAX_BYTES_TEXT + "UNIQUE INDEX(AnnCod)," + "INDEX(Status))"); + /***** Table ann_seen *****/ /* mysql> DESCRIBE ann_seen; @@ -191,29 +214,6 @@ mysql> DESCRIBE ann_seen; "UsrCod INT NOT NULL," "UNIQUE INDEX(AnnCod,UsrCod))"); - /***** Table announcements *****/ -/* -mysql> DESCRIBE announcements; -+---------+------------+------+-----+---------+----------------+ -| Field | Type | Null | Key | Default | Extra | -+---------+------------+------+-----+---------+----------------+ -| AnnCod | int(11) | NO | PRI | NULL | auto_increment | -| Status | tinyint(4) | NO | MUL | 0 | | -| Roles | int(11) | NO | | 0 | | -| Subject | text | NO | | NULL | | -| Content | text | NO | | NULL | | -+---------+------------+------+-----+---------+----------------+ -5 rows in set (0.00 sec) -*/ - DB_CreateTable ("CREATE TABLE IF NOT EXISTS announcements (" - "AnnCod INT NOT NULL AUTO_INCREMENT," - "Status TINYINT NOT NULL DEFAULT 0," - "Roles INT NOT NULL DEFAULT 0," - "Subject TEXT NOT NULL," // Cns_MAX_BYTES_SUBJECT - "Content TEXT NOT NULL," // Cns_MAX_BYTES_TEXT - "UNIQUE INDEX(AnnCod)," - "INDEX(Status))"); - /***** Table asg_grp *****/ /* mysql> DESCRIBE asg_grp;