diff --git a/sql/swad.sql b/sql/swad.sql index b4a0b88b4..49c5da0f2 100644 --- a/sql/swad.sql +++ b/sql/swad.sql @@ -1243,6 +1243,25 @@ CREATE TABLE IF NOT EXISTS prj_usr ( UsrCod INT NOT NULL, UNIQUE INDEX(PrjCod,RoleInProject,UsrCod)); -- +-- Table roo_MACs: stores the associations between rooms and MAC addresses +-- +CREATE TABLE IF NOT EXISTS roo_MACs ( + RooCod INT NOT NULL AUTO_INCREMENT, + MAC BIGINT NOT NULL, + UNIQUE INDEX(RooCod,MAC), + UNIQUE INDEX(MAC,RooCod)); +-- +-- Table roo_check_in: stores the history of locations of users +-- +CREATE TABLE IF NOT EXISTS roo_check_in ( + ChkCod INT NOT NULL AUTO_INCREMENT, + UsrCod INT NOT NULL, + RooCod INT NOT NULL, + CheckInTime DATETIME NOT NULL, + UNIQUE INDEX(ChkCod), + INDEX(UsrCod,CheckInTime), + INDEX(CheckInTime)); +-- -- Table roo_rooms: stores the rooms associated to each center -- CREATE TABLE IF NOT EXISTS roo_rooms ( @@ -1257,25 +1276,6 @@ CREATE TABLE IF NOT EXISTS roo_rooms ( UNIQUE INDEX(RooCod), INDEX(CtrCod,BldCod,Floor)); -- --- Table room_MAC: stores the associations between rooms and MAC addresses --- -CREATE TABLE IF NOT EXISTS room_MAC ( - RooCod INT NOT NULL AUTO_INCREMENT, - MAC BIGINT NOT NULL, - UNIQUE INDEX(RooCod,MAC), - UNIQUE INDEX(MAC,RooCod)); --- --- Table room_check_in: stores the history of locations of users --- -CREATE TABLE IF NOT EXISTS room_check_in ( - ChkCod INT NOT NULL AUTO_INCREMENT, - UsrCod INT NOT NULL, - RooCod INT NOT NULL, - CheckInTime DATETIME NOT NULL, - UNIQUE INDEX(ChkCod), - INDEX(UsrCod,CheckInTime), - INDEX(CheckInTime)); --- -- Table ses_params: stores some hidden parameters passed from a page to another using database instead of forms -- CREATE TABLE IF NOT EXISTS ses_params ( diff --git a/swad_API.c b/swad_API.c index 3c69b42ea..8ac2ff2be 100644 --- a/swad_API.c +++ b/swad_API.c @@ -6009,13 +6009,13 @@ int swad__getLocation (struct soap *soap, "roo_rooms.RooCod," // row[10] "roo_rooms.ShortName," // row[11] "roo_rooms.FullName" // row[12] - " FROM room_MAC," + " FROM roo_MACs," "roo_rooms," "bld_buildings," "ctr_centers," "ins_instits" - " WHERE room_MAC.MAC=%llu" - " AND room_MAC.RooCod=roo_rooms.RooCod" + " WHERE roo_MACs.MAC=%llu" + " AND roo_MACs.RooCod=roo_rooms.RooCod" " AND roo_rooms.BldCod=bld_buildings.BldCod" " AND bld_buildings.CtrCod=ctr_centers.CtrCod" " AND ctr_centers.InsCod=ins_instits.InsCod" @@ -6070,7 +6070,7 @@ int swad__sendMyLocation (struct soap *soap, /* Get the code of the inserted item */ ChkCod = DB_QueryINSERTandReturnCode ("can not save current location", - "INSERT INTO room_check_in" + "INSERT INTO roo_check_in" " (UsrCod,RooCod,CheckInTime)" " SELECT %ld," "RooCod," @@ -6152,20 +6152,20 @@ int swad__getLastLocation (struct soap *soap, "roo_rooms.RooCod," // row[10] "roo_rooms.ShortName," // row[11] "roo_rooms.FullName," // row[12] - "UNIX_TIMESTAMP(room_check_in.CheckInTime)" // row[13] - " FROM room_check_in," + "UNIX_TIMESTAMP(roo_check_in.CheckInTime)" // row[13] + " FROM roo_check_in," "roo_rooms," "bld_buildings," "ctr_centers," "ins_instits" - " WHERE room_check_in.UsrCod=%d" - " AND room_check_in.ChkCod=" + " WHERE roo_check_in.UsrCod=%d" + " AND roo_check_in.ChkCod=" "(SELECT ChkCod" - " FROM room_check_in" + " FROM roo_check_in" " WHERE UsrCod=%d" " ORDER BY ChkCod DESC" " LIMIT 1)" // Faster than SELECT MAX - " AND room_check_in.RooCod=roo_rooms.RooCod" + " AND roo_check_in.RooCod=roo_rooms.RooCod" " AND roo_rooms.BldCod=bld_buildings.BldCod" " AND bld_buildings.CtrCod=ctr_centers.CtrCod" " AND ctr_centers.InsCod=ins_instits.InsCod", @@ -6217,7 +6217,7 @@ static void API_GetDataOfLocation (struct soap *soap, roo_rooms.RooCod // row[10] roo_rooms.ShortName // row[11] roo_rooms.FullName // row[12] - UNIX_TIMESTAMP(room_check_in.CheckInTime) // row[13] (optional) + UNIX_TIMESTAMP(roo_check_in.CheckInTime) // row[13] (optional) */ /* Get institution code (row[0]) */ diff --git a/swad_changelog.h b/swad_changelog.h index 9fe2e7662..799f04ccb 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -600,13 +600,18 @@ 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.51.19 (2021-03-19)" +#define Log_PLATFORM_VERSION "SWAD 20.51.20 (2021-03-19)" #define CSS_FILE "swad20.45.css" #define JS_FILE "swad20.6.2.js" /* TODO: Rename CENTRE to CENTER in help wiki. TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams + Version 20.51.20: Mar 19, 2021 Rooms database tables renamed. (308069 lines) + 2 changes necessary in database: +RENAME TABLE room_MAC TO roo_MACs; +RENAME TABLE room_check_in TO roo_check_in; + Version 20.51.19: Mar 19, 2021 Rooms database table renamed. (308059 lines) 1 change necessary in database: RENAME TABLE rooms TO roo_rooms; diff --git a/swad_database.c b/swad_database.c index fac0e4681..8e381b12a 100644 --- a/swad_database.c +++ b/swad_database.c @@ -2646,26 +2646,26 @@ mysql> DESCRIBE roo_rooms; "UNIQUE INDEX(RooCod)," "INDEX(CtrCod,BldCod,Floor))"); - /***** Table room_MAC *****/ + /***** Table roo_MACs *****/ /* -mysql> DESCRIBE room_MAC; -+--------+------------+------+-----+---------+----------------+ -| Field | Type | Null | Key | Default | Extra | -+--------+------------+------+-----+---------+----------------+ -| RooCod | int(11) | NO | PRI | NULL | auto_increment | -| MAC | bigint(20) | NO | PRI | NULL | | -+--------+------------+------+-----+---------+----------------+ -2 rows in set (0.00 sec) +mysql> DESCRIBE roo_MACs; ++--------+--------+------+-----+---------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++--------+--------+------+-----+---------+----------------+ +| RooCod | int | NO | PRI | NULL | auto_increment | +| MAC | bigint | NO | PRI | NULL | | ++--------+--------+------+-----+---------+----------------+ +2 rows in set (0.01 sec) */ - DB_CreateTable ("CREATE TABLE IF NOT EXISTS room_MAC (" + DB_CreateTable ("CREATE TABLE IF NOT EXISTS roo_MACs (" "RooCod INT NOT NULL," "MAC BIGINT NOT NULL," // 12 digits hexadecimal number "UNIQUE INDEX(RooCod,MAC)," "UNIQUE INDEX(MAC,RooCod))"); - /***** Table room_check_in *****/ + /***** Table roo_check_in *****/ /* -mysql> DESCRIBE room_check_in; +mysql> DESCRIBE roo_check_in; +-------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+----------+------+-----+---------+----------------+ @@ -2676,7 +2676,7 @@ mysql> DESCRIBE room_check_in; +-------------+----------+------+-----+---------+----------------+ 4 rows in set (0.00 sec) */ - DB_CreateTable ("CREATE TABLE IF NOT EXISTS room_check_in (" + DB_CreateTable ("CREATE TABLE IF NOT EXISTS roo_check_in (" "ChkCod INT NOT NULL AUTO_INCREMENT," "UsrCod INT NOT NULL," "RooCod INT NOT NULL," diff --git a/swad_room.c b/swad_room.c index 70f4c0fb8..681d7960a 100644 --- a/swad_room.c +++ b/swad_room.c @@ -359,7 +359,7 @@ static unsigned Roo_GetMACAddresses (long RooCod,MYSQL_RES **mysql_res) /***** Get MAC addresses from database *****/ return (unsigned) DB_QuerySELECT (mysql_res,"can not get MAC addresses", "SELECT MAC" // row[0] - " FROM room_MAC" + " FROM roo_MACs" " WHERE RooCod=%ld" " ORDER BY MAC", RooCod); @@ -394,14 +394,20 @@ void Roo_ChangeMAC (void) /***** Check if the new MAC is different from the old MAC *****/ if (OldMACnum) DB_QueryDELETE ("can not remove MAC address", - "DELETE FROM room_MAC" - " WHERE RooCod=%ld AND MAC=%llu", - Roo_EditingRoom->RooCod,OldMACnum); + "DELETE FROM roo_MACs" + " WHERE RooCod=%ld" + " AND MAC=%llu", + Roo_EditingRoom->RooCod, + OldMACnum); if (NewMACnum) /***** Update the table of rooms-MACs changing the old MAC for the new one *****/ DB_QueryREPLACE ("can not change MAC address", - "REPLACE INTO room_MAC (RooCod,MAC) VALUES (%ld,%llu)", - Roo_EditingRoom->RooCod,NewMACnum); + "REPLACE INTO roo_MACs" + " (RooCod,MAC)" + " VALUES" + " (%ld,%llu)", + Roo_EditingRoom->RooCod, + NewMACnum); Roo_EditingRoom->MACnum = NewMACnum; } @@ -1632,7 +1638,7 @@ static void Roo_CreateRoom (struct Roo_Room *Room) /***** Create MAC address *****/ if (Room->MACnum) DB_QueryINSERT ("can not create MAC address", - "INSERT INTO room_MAC" + "INSERT INTO roo_MACs" " (RooCod,MAC)" " VALUES" " (%ld,%llu)",