diff --git a/sql/swad.sql b/sql/swad.sql index c8bede298..fa8296f40 100644 --- a/sql/swad.sql +++ b/sql/swad.sql @@ -26,18 +26,9 @@ CREATE TABLE IF NOT EXISTS act_MFU ( LastClick DATETIME NOT NULL, UNIQUE INDEX(UsrCod,ActCod)); -- --- Table ann_seen: stores users who have seen global announcements --- -CREATE TABLE IF NOT EXISTS usr_admins ( - UsrCod INT NOT NULL, - Scope ENUM('Sys','Ins','Ctr','Deg') NOT NULL, - Cod INT NOT NULL, - UNIQUE INDEX(UsrCod,Scope,Cod), - INDEX(Scope,Cod)); --- -- Table agendas: stores users' agendas -- -CREATE TABLE IF NOT EXISTS agendas ( +CREATE TABLE IF NOT EXISTS agd_agendas ( AgdCod INT NOT NULL AUTO_INCREMENT, UsrCod INT NOT NULL, Public ENUM('N','Y') NOT NULL DEFAULT 'N', @@ -1597,6 +1588,15 @@ CREATE TABLE IF NOT EXISTS tst_tags ( UNIQUE INDEX(TagCod), INDEX(CrsCod,ChangeTime)); -- +-- Table usr_admins: stores users who manage degrees, centres, institutions and system +-- +CREATE TABLE IF NOT EXISTS usr_admins ( + UsrCod INT NOT NULL, + Scope ENUM('Sys','Ins','Ctr','Deg') NOT NULL, + Cod INT NOT NULL, + UNIQUE INDEX(UsrCod,Scope,Cod), + INDEX(Scope,Cod)); +-- -- Table usr_banned: stores users banned for ranking -- CREATE TABLE IF NOT EXISTS usr_banned ( diff --git a/swad_agenda.c b/swad_agenda.c index 05819d2b9..41d6dd4da 100644 --- a/swad_agenda.c +++ b/swad_agenda.c @@ -1151,7 +1151,7 @@ static void Agd_GetListEvents (struct Agd_Agenda *Agenda, { /* Make query */ NumRows = DB_QuerySELECT (&mysql_res,"can not get agenda events", - "SELECT AgdCod FROM agendas" + "SELECT AgdCod FROM agd_agendas" " WHERE %s%s%s%s" " ORDER BY %s", UsrSubQuery, @@ -1204,15 +1204,20 @@ static void Agd_GetDataOfEventByCod (struct Agd_Event *AgdEvent) /***** Get data of event from database *****/ if (DB_QuerySELECT (&mysql_res,"can not get agenda event data", - "SELECT AgdCod,Public,Hidden," - "UNIX_TIMESTAMP(StartTime)," - "UNIX_TIMESTAMP(EndTime)," - "NOW()>EndTime," // Past event? - "NOW()AgdCod,AgdEvent->UsrCod)) // Event found... + "SELECT AgdCod," // row[0] + "Public," // row[1] + "Hidden," // row[2] + "UNIX_TIMESTAMP(StartTime)," // row[3] + "UNIX_TIMESTAMP(EndTime)," // row[4] + "NOW()>EndTime," // row[5] Past event? + "NOW()AgdCod, + AgdEvent->UsrCod)) // Event found... { /* Get row: row[0] AgdCod @@ -1294,9 +1299,12 @@ static void Agd_GetEventTxtFromDB (struct Agd_Event *AgdEvent, /***** Get text of event from database *****/ NumRows = DB_QuerySELECT (&mysql_res,"can not get event text", - "SELECT Txt FROM agendas" - " WHERE AgdCod=%ld AND UsrCod=%ld", - AgdEvent->AgdCod,AgdEvent->UsrCod); + "SELECT Txt" // row[0] + " FROM agd_agendas" + " WHERE AgdCod=%ld" + " AND UsrCod=%ld", + AgdEvent->AgdCod, + AgdEvent->UsrCod); /***** The result of the query must have one row or none *****/ if (NumRows == 1) @@ -1388,8 +1396,11 @@ void Agd_RemoveEvent (void) /***** Remove event *****/ DB_QueryDELETE ("can not remove event", - "DELETE FROM agendas WHERE AgdCod=%ld AND UsrCod=%ld", - AgdEvent.AgdCod,AgdEvent.UsrCod); + "DELETE FROM agd_agendas" + " WHERE AgdCod=%ld" + " AND UsrCod=%ld", + AgdEvent.AgdCod, + AgdEvent.UsrCod); /***** Write message to show the change made *****/ Ale_ShowAlert (Ale_SUCCESS,Txt_Event_X_removed, @@ -1424,9 +1435,12 @@ void Agd_HideEvent (void) /***** Set event private *****/ DB_QueryUPDATE ("can not hide event", - "UPDATE agendas SET Hidden='Y'" - " WHERE AgdCod=%ld AND UsrCod=%ld", - AgdEvent.AgdCod,AgdEvent.UsrCod); + "UPDATE agd_agendas" + " SET Hidden='Y'" + " WHERE AgdCod=%ld" + " AND UsrCod=%ld", + AgdEvent.AgdCod, + AgdEvent.UsrCod); /***** Show events again *****/ Agd_ShowMyAgenda (&Agenda); @@ -1457,9 +1471,12 @@ void Agd_UnhideEvent (void) /***** Set event public *****/ DB_QueryUPDATE ("can not show event", - "UPDATE agendas SET Hidden='N'" - " WHERE AgdCod=%ld AND UsrCod=%ld", - AgdEvent.AgdCod,AgdEvent.UsrCod); + "UPDATE agd_agendas" + " SET Hidden='N'" + " WHERE AgdCod=%ld" + " AND UsrCod=%ld", + AgdEvent.AgdCod, + AgdEvent.UsrCod); /***** Show events again *****/ Agd_ShowMyAgenda (&Agenda); @@ -1491,9 +1508,12 @@ void Agd_MakeEventPrivate (void) /***** Make event private *****/ DB_QueryUPDATE ("can not make event private", - "UPDATE agendas SET Public='N'" - " WHERE AgdCod=%ld AND UsrCod=%ld", - AgdEvent.AgdCod,AgdEvent.UsrCod); + "UPDATE agd_agendas" + " SET Public='N'" + " WHERE AgdCod=%ld" + " AND UsrCod=%ld", + AgdEvent.AgdCod, + AgdEvent.UsrCod); /***** Write message to show the change made *****/ Ale_ShowAlert (Ale_SUCCESS,Txt_Event_X_is_now_private, @@ -1529,9 +1549,12 @@ void Agd_MakeEventPublic (void) /***** Make event public *****/ DB_QueryUPDATE ("can not make event public", - "UPDATE agendas SET Public='Y'" - " WHERE AgdCod=%ld AND UsrCod=%ld", - AgdEvent.AgdCod,AgdEvent.UsrCod); + "UPDATE agd_agendas" + " SET Public='Y'" + " WHERE AgdCod=%ld" + " AND UsrCod=%ld", + AgdEvent.AgdCod, + AgdEvent.UsrCod); /***** Write message to show the change made *****/ Ale_ShowAlert (Ale_SUCCESS,Txt_Event_X_is_now_visible_to_users_of_your_courses, @@ -1785,7 +1808,7 @@ static void Agd_CreateEvent (struct Agd_Event *AgdEvent,const char *Txt) /***** Create a new event *****/ AgdEvent->AgdCod = DB_QueryINSERTandReturnCode ("can not create new event", - "INSERT INTO agendas" + "INSERT INTO agd_agendas" " (UsrCod,StartTime,EndTime,Event,Location,Txt)" " VALUES" " (%ld,FROM_UNIXTIME(%ld),FROM_UNIXTIME(%ld)," @@ -1806,11 +1829,14 @@ static void Agd_UpdateEvent (struct Agd_Event *AgdEvent,const char *Txt) { /***** Update the data of the event *****/ DB_QueryUPDATE ("can not update event", - "UPDATE agendas SET " - "StartTime=FROM_UNIXTIME(%ld)," - "EndTime=FROM_UNIXTIME(%ld)," - "Event='%s',Location='%s',Txt='%s'" - " WHERE AgdCod=%ld AND UsrCod=%ld", + "UPDATE agd_agendas" + " SET StartTime=FROM_UNIXTIME(%ld)," + "EndTime=FROM_UNIXTIME(%ld)," + "Event='%s'," + "Location='%s'," + "Txt='%s'" + " WHERE AgdCod=%ld" + " AND UsrCod=%ld", AgdEvent->TimeUTC[Dat_START_TIME], AgdEvent->TimeUTC[Dat_END_TIME ], AgdEvent->Event,AgdEvent->Location,Txt, @@ -1825,7 +1851,8 @@ void Agd_RemoveUsrEvents (long UsrCod) { /***** Remove events *****/ DB_QueryDELETE ("can not remove all the events of a user", - "DELETE FROM agendas WHERE UsrCod=%ld", + "DELETE FROM agd_agendas" + " WHERE UsrCod=%ld", UsrCod); } @@ -1837,7 +1864,8 @@ unsigned Agd_GetNumEventsFromUsr (long UsrCod) { /***** Get number of events in a course from database *****/ return (unsigned) DB_QueryCOUNT ("can not get number of events from user", - "SELECT COUNT(*) FROM agendas" + "SELECT COUNT(*)" + " FROM agd_agendas" " WHERE UsrCod=%ld", UsrCod); } @@ -1859,75 +1887,76 @@ unsigned Agd_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope) case Hie_Lvl_SYS: DB_QuerySELECT (&mysql_res,"can not get number of users with events", "SELECT COUNT(DISTINCT UsrCod)" - " FROM agendas" + " FROM agd_agendas" " WHERE UsrCod>0"); break; case Hie_Lvl_CTY: DB_QuerySELECT (&mysql_res,"can not get number of users with events", - "SELECT COUNT(DISTINCT agendas.UsrCod)" + "SELECT COUNT(DISTINCT agd_agendas.UsrCod)" " FROM ins_instits," "ctr_centers," "deg_degrees," "crs_courses," "crs_usr," - "agendas" + "agd_agendas" " WHERE ins_instits.CtyCod=%ld" " AND ins_instits.InsCod=ctr_centers.InsCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND deg_degrees.DegCod=crs_courses.DegCod" " AND crs_courses.Status=0" " AND crs_courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=agendas.UsrCod", + " AND crs_usr.UsrCod=agd_agendas.UsrCod", Gbl.Hierarchy.Cty.CtyCod); break; case Hie_Lvl_INS: DB_QuerySELECT (&mysql_res,"can not get number of users with events", - "SELECT COUNT(DISTINCT agendas.UsrCod)" + "SELECT COUNT(DISTINCT agd_agendas.UsrCod)" " FROM ctr_centers," "deg_degrees," "crs_courses," "crs_usr," - "agendas" + "agd_agendas" " WHERE ctr_centers.InsCod=%ld" " AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND deg_degrees.DegCod=crs_courses.DegCod" " AND crs_courses.Status=0" " AND crs_courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=agendas.UsrCod", + " AND crs_usr.UsrCod=agd_agendas.UsrCod", Gbl.Hierarchy.Ins.InsCod); break; case Hie_Lvl_CTR: DB_QuerySELECT (&mysql_res,"can not get number of users with events", - "SELECT COUNT(DISTINCT agendas.UsrCod)" + "SELECT COUNT(DISTINCT agd_agendas.UsrCod)" " FROM deg_degrees," "crs_courses," "crs_usr," - "agendas" + "agd_agendas" " WHERE deg_degrees.CtrCod=%ld" " AND deg_degrees.DegCod=crs_courses.DegCod" " AND crs_courses.Status=0" " AND crs_courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=agendas.UsrCod", + " AND crs_usr.UsrCod=agd_agendas.UsrCod", Gbl.Hierarchy.Ctr.CtrCod); break; case Hie_Lvl_DEG: DB_QuerySELECT (&mysql_res,"can not get number of users with events", - "SELECT COUNT(DISTINCT agendas.UsrCod)" + "SELECT COUNT(DISTINCT agd_agendas.UsrCod)" " FROM crs_courses," "crs_usr," - "agendas" + "agd_agendas" " WHERE crs_courses.DegCod=%ld" " AND crs_courses.Status=0" " AND crs_courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=agendas.UsrCod", + " AND crs_usr.UsrCod=agd_agendas.UsrCod", Gbl.Hierarchy.Deg.DegCod); break; case Hie_Lvl_CRS: DB_QuerySELECT (&mysql_res,"can not get number of users with events", - "SELECT COUNT(DISTINCT agendas.UsrCod)" - " FROM crs_usr,agendas" + "SELECT COUNT(DISTINCT agd_agendas.UsrCod)" + " FROM crs_usr," + "agd_agendas" " WHERE crs_usr.CrsCod=%ld" - " AND crs_usr.UsrCod=agendas.UsrCod", + " AND crs_usr.UsrCod=agd_agendas.UsrCod", Gbl.Hierarchy.Crs.CrsCod); break; default: @@ -1963,7 +1992,7 @@ unsigned Agd_GetNumEvents (Hie_Lvl_Level_t Scope) case Hie_Lvl_SYS: DB_QuerySELECT (&mysql_res,"can not get number of events", "SELECT COUNT(*)" - " FROM agendas" + " FROM agd_agendas" " WHERE UsrCod>0"); break; case Hie_Lvl_CTY: @@ -1974,13 +2003,13 @@ unsigned Agd_GetNumEvents (Hie_Lvl_Level_t Scope) "deg_degrees," "crs_courses," "crs_usr," - "agendas" + "agd_agendas" " WHERE ins_instits.CtyCod=%ld" " AND ins_instits.InsCod=ctr_centers.InsCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND deg_degrees.DegCod=crs_courses.DegCod" " AND crs_courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=agendas.UsrCod", + " AND crs_usr.UsrCod=agd_agendas.UsrCod", Gbl.Hierarchy.Cty.CtyCod); break; case Hie_Lvl_INS: @@ -1990,12 +2019,12 @@ unsigned Agd_GetNumEvents (Hie_Lvl_Level_t Scope) "deg_degrees," "crs_courses," "crs_usr," - "agendas" + "agd_agendas" " WHERE ctr_centers.InsCod=%ld" " AND ctr_centers.CtrCod=deg_degrees.CtrCod" " AND deg_degrees.DegCod=crs_courses.DegCod" " AND crs_courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=agendas.UsrCod", + " AND crs_usr.UsrCod=agd_agendas.UsrCod", Gbl.Hierarchy.Ins.InsCod); break; case Hie_Lvl_CTR: @@ -2004,11 +2033,11 @@ unsigned Agd_GetNumEvents (Hie_Lvl_Level_t Scope) " FROM deg_degrees," "crs_courses," "crs_usr," - "agendas" + "agd_agendas" " WHERE deg_degrees.CtrCod=%ld" " AND deg_degrees.DegCod=crs_courses.DegCod" " AND crs_courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=agendas.UsrCod", + " AND crs_usr.UsrCod=agd_agendas.UsrCod", Gbl.Hierarchy.Ctr.CtrCod); break; case Hie_Lvl_DEG: @@ -2016,18 +2045,19 @@ unsigned Agd_GetNumEvents (Hie_Lvl_Level_t Scope) "SELECT COUNT(*)" " FROM crs_courses," "crs_usr," - "agendas" + "agd_agendas" " WHERE crs_courses.DegCod=%ld" " AND crs_courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=agendas.UsrCod", + " AND crs_usr.UsrCod=agd_agendas.UsrCod", Gbl.Hierarchy.Deg.DegCod); break; case Hie_Lvl_CRS: DB_QuerySELECT (&mysql_res,"can not get number of events", "SELECT COUNT(*)" - " FROM crs_usr,agendas" + " FROM crs_usr," + "agd_agendas" " WHERE crs_usr.CrsCod=%ld" - " AND crs_usr.UsrCod=agendas.UsrCod", + " AND crs_usr.UsrCod=agd_agendas.UsrCod", Gbl.Hierarchy.Crs.CrsCod); break; default: diff --git a/swad_changelog.h b/swad_changelog.h index dd9e2721b..25a25cbaf 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -600,12 +600,17 @@ 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 (2021-03-14)" +#define Log_PLATFORM_VERSION "SWAD 20.50.1 (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.1: Mar 15, 2021 Agendas database table renamed. (307166 lines) + 1 change necessary in database: +RENAME TABLE agendas TO agd_agendas; + Version 20.50: Mar 14, 2021 Text of remaining actions copied from English to other languages. (307133 lines) Version 20.49: Mar 13, 2021 Text of some actions copied from English to other languages. (307132 lines) Version 20.48.3: Mar 13, 2021 Text of some actions copied from English to other languages. (307131 lines) diff --git a/swad_database.c b/swad_database.c index 5bac6e20b..e12bbcc7c 100644 --- a/swad_database.c +++ b/swad_database.c @@ -144,9 +144,9 @@ mysql> DESCRIBE act_MFU; "LastClick DATETIME NOT NULL," "UNIQUE INDEX(UsrCod,ActCod))"); - /***** Table agendas *****/ + /***** Table agd_agendas *****/ /* -mysql> DESCRIBE agendas; +mysql> DESCRIBE agd_agendas; +-----------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+---------------+------+-----+---------+----------------+ @@ -162,7 +162,7 @@ mysql> DESCRIBE agendas; +-----------+---------------+------+-----+---------+----------------+ 9 rows in set (0,00 sec) */ - DB_CreateTable ("CREATE TABLE IF NOT EXISTS agendas (" + DB_CreateTable ("CREATE TABLE IF NOT EXISTS agd_agendas (" "AgdCod INT NOT NULL AUTO_INCREMENT," "UsrCod INT NOT NULL," "Public ENUM('N','Y') NOT NULL DEFAULT 'N',"