Version 20.50.11: Mar 17, 2021 Departments database table renamed.

This commit is contained in:
acanas 2021-03-17 23:13:13 +01:00
parent f3f1f54c65
commit 9ea76aeebd
5 changed files with 130 additions and 94 deletions

View File

@ -393,9 +393,9 @@ CREATE TABLE IF NOT EXISTS deg_types (
DegTypName VARCHAR(511) NOT NULL, DegTypName VARCHAR(511) NOT NULL,
UNIQUE INDEX(DegTypCod)); UNIQUE INDEX(DegTypCod));
-- --
-- Table departments: stores the departments -- Table dpt_departments: stores the departments
-- --
CREATE TABLE IF NOT EXISTS departments ( CREATE TABLE IF NOT EXISTS dpt_departments (
DptCod INT NOT NULL AUTO_INCREMENT, DptCod INT NOT NULL AUTO_INCREMENT,
InsCod INT NOT NULL, InsCod INT NOT NULL,
ShortName VARCHAR(511) NOT NULL, ShortName VARCHAR(511) NOT NULL,

View File

@ -600,12 +600,16 @@ 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. 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.10 (2021-03-17)" #define Log_PLATFORM_VERSION "SWAD 20.50.11 (2021-03-17)"
#define CSS_FILE "swad20.45.css" #define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.6.2.js" #define JS_FILE "swad20.6.2.js"
/* /*
TODO: Rename CENTRE to CENTER in help wiki. TODO: Rename CENTRE to CENTER in help wiki.
Version 20.50.11: Mar 17, 2021 Departments database table renamed. (307450 lines)
1 change necessary in database:
RENAME TABLE departments TO dpt_departments;
Version 20.50.10: Mar 17, 2021 Connected database table renamed. (307415 lines) Version 20.50.10: Mar 17, 2021 Connected database table renamed. (307415 lines)
1 change necessary in database: 1 change necessary in database:
RENAME TABLE connected TO usr_connected; RENAME TABLE connected TO usr_connected;

View File

@ -880,9 +880,9 @@ mysql> DESCRIBE deg_degrees;
"INDEX(DegTypCod)," "INDEX(DegTypCod),"
"INDEX(Status))"); "INDEX(Status))");
/***** Table departments *****/ /***** Table dpt_departments *****/
/* /*
mysql> DESCRIBE departments; mysql> DESCRIBE dpt_departments;
+-----------+---------------+------+-----+---------+----------------+ +-----------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra | | Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+----------------+ +-----------+---------------+------+-----+---------+----------------+
@ -894,7 +894,7 @@ mysql> DESCRIBE departments;
+-----------+---------------+------+-----+---------+----------------+ +-----------+---------------+------+-----+---------+----------------+
5 rows in set (0,00 sec) 5 rows in set (0,00 sec)
*/ */
DB_CreateTable ("CREATE TABLE IF NOT EXISTS departments (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS dpt_departments ("
"DptCod INT NOT NULL AUTO_INCREMENT," "DptCod INT NOT NULL AUTO_INCREMENT,"
"InsCod INT NOT NULL," "InsCod INT NOT NULL,"
"ShortName VARCHAR(511) NOT NULL," // Cns_HIERARCHY_MAX_BYTES_SHRT_NAME "ShortName VARCHAR(511) NOT NULL," // Cns_HIERARCHY_MAX_BYTES_SHRT_NAME

View File

@ -339,36 +339,39 @@ static void Dpt_GetListDepartments (struct Dpt_Departments *Departments,long Ins
{ {
/***** Get departments from database *****/ /***** Get departments from database *****/
Departments->Num = (unsigned) Departments->Num = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get departments", DB_QuerySELECT (&mysql_res,"can not get departments",
"(SELECT departments.DptCod," // row[0] "(SELECT dpt_departments.DptCod," // row[0]
"departments.InsCod," // row[1] "dpt_departments.InsCod," // row[1]
"departments.ShortName," // row[2] "dpt_departments.ShortName," // row[2]
"departments.FullName," // row[3] "dpt_departments.FullName," // row[3]
"departments.WWW," // row[4] "dpt_departments.WWW," // row[4]
"COUNT(DISTINCT usr_data.UsrCod) AS NumTchs" // row[5] "COUNT(DISTINCT usr_data.UsrCod) AS NumTchs" // row[5]
" FROM departments,usr_data,crs_usr" " FROM dpt_departments,"
" WHERE departments.InsCod=%ld" "usr_data,"
" AND departments.DptCod=usr_data.DptCod" "crs_usr"
" AND usr_data.UsrCod=crs_usr.UsrCod" " WHERE dpt_departments.InsCod=%ld"
" AND crs_usr.Role IN (%u,%u)" " AND dpt_departments.DptCod=usr_data.DptCod"
" GROUP BY departments.DptCod)" " AND usr_data.UsrCod=crs_usr.UsrCod"
" UNION " " AND crs_usr.Role IN (%u,%u)"
"(SELECT DptCod," // row[0] " GROUP BY dpt_departments.DptCod)"
"InsCod," // row[1] " UNION "
"ShortName," // row[2] "(SELECT DptCod," // row[0]
"FullName," // row[3] "InsCod," // row[1]
"WWW," // row[4] "ShortName," // row[2]
"0 AS NumTchs" // row[5] "FullName," // row[3]
" FROM departments" "WWW," // row[4]
" WHERE InsCod=%ld AND DptCod NOT IN" "0 AS NumTchs" // row[5]
" (SELECT DISTINCT usr_data.DptCod" " FROM dpt_departments"
" FROM usr_data,crs_usr" " WHERE InsCod=%ld"
" WHERE crs_usr.Role IN (%u,%u)" " AND DptCod NOT IN"
" AND crs_usr.UsrCod=usr_data.UsrCod))" " (SELECT DISTINCT usr_data.DptCod"
" ORDER BY %s", " FROM usr_data,crs_usr"
InsCod,(unsigned) Rol_NET,(unsigned) Rol_TCH, " WHERE crs_usr.Role IN (%u,%u)"
InsCod,(unsigned) Rol_NET,(unsigned) Rol_TCH, " AND crs_usr.UsrCod=usr_data.UsrCod))"
OrderBySubQuery[Departments->SelectedOrder]); " ORDER BY %s",
InsCod,(unsigned) Rol_NET,(unsigned) Rol_TCH,
InsCod,(unsigned) Rol_NET,(unsigned) Rol_TCH,
OrderBySubQuery[Departments->SelectedOrder]);
if (Departments->Num) // Departments found... if (Departments->Num) // Departments found...
{ {
/***** Create list with courses in degree *****/ /***** Create list with courses in degree *****/
@ -436,23 +439,37 @@ void Dpt_GetDataOfDepartmentByCod (struct Dpt_Department *Dpt)
else if (Dpt->DptCod > 0) else if (Dpt->DptCod > 0)
{ {
/***** Get data of a department from database *****/ /***** Get data of a department from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get data of a department", NumRows =
"(SELECT departments.InsCod,departments.ShortName,departments.FullName,departments.WWW," DB_QuerySELECT (&mysql_res,"can not get data of a department",
"COUNT(DISTINCT usr_data.UsrCod) AS NumTchs" "(SELECT dpt_departments.InsCod," // row[0]
" FROM departments,usr_data,crs_usr" "dpt_departments.ShortName," // row[1]
" WHERE departments.DptCod=%ld" "dpt_departments.FullName," // row[2]
" AND departments.DptCod=usr_data.DptCod" "dpt_departments.WWW," // row[3]
" AND usr_data.UsrCod=crs_usr.UsrCod" "COUNT(DISTINCT usr_data.UsrCod) AS NumTchs" // row[4]
" AND crs_usr.Role=%u" " FROM dpt_departments,"
" GROUP BY departments.DptCod)" "usr_data,"
" UNION " "crs_usr"
"(SELECT InsCod,ShortName,FullName,WWW,0" " WHERE dpt_departments.DptCod=%ld"
" FROM departments" " AND dpt_departments.DptCod=usr_data.DptCod"
" WHERE DptCod=%ld AND DptCod NOT IN" " AND usr_data.UsrCod=crs_usr.UsrCod"
" (SELECT DISTINCT usr_data.DptCod FROM usr_data,crs_usr" " AND crs_usr.Role=%u"
" WHERE crs_usr.Role=%u AND crs_usr.UsrCod=usr_data.UsrCod))", " GROUP BY dpt_departments.DptCod)"
Dpt->DptCod,(unsigned) Rol_TCH, " UNION "
Dpt->DptCod,(unsigned) Rol_TCH); "(SELECT InsCod," // row[0]
"ShortName," // row[1]
"FullName," // row[2]
"WWW," // row[3]
"0" // row[4]
" FROM dpt_departments"
" WHERE DptCod=%ld"
" AND DptCod NOT IN"
" (SELECT DISTINCT usr_data.DptCod"
" FROM usr_data,"
"crs_usr"
" WHERE crs_usr.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod))",
Dpt->DptCod,(unsigned) Rol_TCH,
Dpt->DptCod,(unsigned) Rol_TCH);
if (NumRows) // Department found... if (NumRows) // Department found...
{ {
/* Get row */ /* Get row */
@ -498,12 +515,11 @@ void Dpt_FreeListDepartments (struct Dpt_Departments *Departments)
unsigned Dpt_GetNumDepartmentsInInstitution (long InsCod) unsigned Dpt_GetNumDepartmentsInInstitution (long InsCod)
{ {
/***** Get number of departments in an institution from database *****/ /***** Get number of departments in an institution from database *****/
return return (unsigned)
(unsigned) DB_QueryCOUNT ("can not get number of departments" DB_QueryCOUNT ("can not get number of departments in an institution",
" in an institution", "SELECT COUNT(*) FROM dpt_departments"
"SELECT COUNT(*) FROM departments" " WHERE InsCod=%ld",
" WHERE InsCod=%ld", InsCod);
InsCod);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -661,7 +677,8 @@ void Dpt_RemoveDepartment (void)
{ {
/***** Remove department *****/ /***** Remove department *****/
DB_QueryDELETE ("can not remove a department", DB_QueryDELETE ("can not remove a department",
"DELETE FROM departments WHERE DptCod=%ld", "DELETE FROM dpt_departments"
" WHERE DptCod=%ld",
Dpt_EditingDpt->DptCod); Dpt_EditingDpt->DptCod);
/***** Write message to show the change made *****/ /***** Write message to show the change made *****/
@ -695,8 +712,11 @@ void Dpt_ChangeDepartIns (void)
/***** Update institution in table of departments *****/ /***** Update institution in table of departments *****/
DB_QueryUPDATE ("can not update the institution of a department", DB_QueryUPDATE ("can not update the institution of a department",
"UPDATE departments SET InsCod=%ld WHERE DptCod=%ld", "UPDATE dpt_departments"
NewInsCod,Dpt_EditingDpt->DptCod); " SET InsCod=%ld"
" WHERE DptCod=%ld",
NewInsCod,
Dpt_EditingDpt->DptCod);
/***** Write message to show the change made *****/ /***** Write message to show the change made *****/
Ale_CreateAlert (Ale_SUCCESS,NULL, Ale_CreateAlert (Ale_SUCCESS,NULL,
@ -812,11 +832,12 @@ static void Dpt_RenameDepartment (Cns_ShrtOrFullName_t ShrtOrFullName)
static bool Dpt_CheckIfDepartmentNameExists (const char *FieldName,const char *Name,long DptCod) static bool Dpt_CheckIfDepartmentNameExists (const char *FieldName,const char *Name,long DptCod)
{ {
/***** Get number of departments with a name from database *****/ /***** Get number of departments with a name from database *****/
return (DB_QueryCOUNT ("can not check if the name" return (DB_QueryCOUNT ("can not check if the department name already existed",
" of a department already existed", "SELECT COUNT(*) FROM dpt_departments"
"SELECT COUNT(*) FROM departments" " WHERE %s='%s'"
" WHERE %s='%s' AND DptCod<>%ld", " AND DptCod<>%ld",
FieldName,Name,DptCod) != 0); FieldName,Name,
DptCod) != 0);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -827,8 +848,11 @@ static void Dpt_UpdateDegNameDB (long DptCod,const char *FieldName,const char *N
{ {
/***** Update department changing old name by new name *****/ /***** Update department changing old name by new name *****/
DB_QueryUPDATE ("can not update the name of a department", DB_QueryUPDATE ("can not update the name of a department",
"UPDATE departments SET %s='%s' WHERE DptCod=%ld", "UPDATE dpt_departments"
FieldName,NewDptName,DptCod); " SET %s='%s'"
" WHERE DptCod=%ld",
FieldName,NewDptName,
DptCod);
} }
/******************************************************************************/ /******************************************************************************/
@ -858,8 +882,11 @@ void Dpt_ChangeDptWWW (void)
{ {
/* Update the table changing old WWW by new WWW */ /* Update the table changing old WWW by new WWW */
DB_QueryUPDATE ("can not update the web of a department", DB_QueryUPDATE ("can not update the web of a department",
"UPDATE departments SET WWW='%s' WHERE DptCod=%ld", "UPDATE dpt_departments"
NewWWW,Dpt_EditingDpt->DptCod); " SET WWW='%s'"
" WHERE DptCod=%ld",
NewWWW,
Dpt_EditingDpt->DptCod);
/***** Write message to show the change made *****/ /***** Write message to show the change made *****/
Ale_CreateAlert (Ale_SUCCESS,NULL, Ale_CreateAlert (Ale_SUCCESS,NULL,
@ -1060,11 +1087,14 @@ static void Dpt_CreateDepartment (struct Dpt_Department *Dpt)
{ {
/***** Create a new department *****/ /***** Create a new department *****/
DB_QueryINSERT ("can not create a new department", DB_QueryINSERT ("can not create a new department",
"INSERT INTO departments" "INSERT INTO dpt_departments"
" (InsCod,ShortName,FullName,WWW)" " (InsCod,ShortName,FullName,WWW)"
" VALUES" " VALUES"
" (%ld,'%s','%s','%s')", " (%ld,'%s','%s','%s')",
Dpt->InsCod,Dpt->ShrtName,Dpt->FullName,Dpt->WWW); Dpt->InsCod,
Dpt->ShrtName,
Dpt->FullName,
Dpt->WWW);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1099,12 +1129,11 @@ unsigned Dpt_GetNumDptsInIns (long InsCod)
/***** 3. Slow: number of departments of an institution from database *****/ /***** 3. Slow: number of departments of an institution from database *****/
Gbl.Cache.NumDptsInIns.InsCod = InsCod; Gbl.Cache.NumDptsInIns.InsCod = InsCod;
Gbl.Cache.NumDptsInIns.NumDpts = Gbl.Cache.NumDptsInIns.NumDpts = (unsigned)
(unsigned) DB_QueryCOUNT ("can not get number of departments" DB_QueryCOUNT ("can not get number of departments in an institution",
" in an institution", "SELECT COUNT(*) FROM departments"
"SELECT COUNT(*) FROM departments" " WHERE InsCod=%ld",
" WHERE InsCod=%ld", InsCod);
InsCod);
return Gbl.Cache.NumDptsInIns.NumDpts; return Gbl.Cache.NumDptsInIns.NumDpts;
} }

View File

@ -2832,7 +2832,7 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
[Prj_ORDER_TITLE ] = "projects.Title," [Prj_ORDER_TITLE ] = "projects.Title,"
"projects.CreatTime DESC," "projects.CreatTime DESC,"
"projects.ModifTime DESC", "projects.ModifTime DESC",
[Prj_ORDER_DEPARTMENT] = "departments.FullName," [Prj_ORDER_DEPARTMENT] = "dpt_departments.FullName,"
"projects.CreatTime DESC," "projects.CreatTime DESC,"
"projects.ModifTime DESC," "projects.ModifTime DESC,"
"projects.Title", "projects.Title",
@ -2930,11 +2930,12 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
case Prj_ORDER_TITLE: case Prj_ORDER_TITLE:
NumRows = DB_QuerySELECT (&mysql_res,"can not get projects", NumRows = DB_QuerySELECT (&mysql_res,"can not get projects",
"SELECT projects.PrjCod" "SELECT projects.PrjCod"
" FROM projects,prj_usr" " FROM projects,"
"prj_usr"
" WHERE projects.CrsCod=%ld" " WHERE projects.CrsCod=%ld"
"%s%s%s" "%s%s%s"
" AND projects.PrjCod=prj_usr.PrjCod" " AND projects.PrjCod=prj_usr.PrjCod"
" AND prj_usr.UsrCod=%ld" " AND prj_usr.UsrCod=%ld"
" GROUP BY projects.PrjCod" // To not repeat projects (DISTINCT can not be used) " GROUP BY projects.PrjCod" // To not repeat projects (DISTINCT can not be used)
" ORDER BY %s", " ORDER BY %s",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
@ -2945,12 +2946,13 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
case Prj_ORDER_DEPARTMENT: case Prj_ORDER_DEPARTMENT:
NumRows = DB_QuerySELECT (&mysql_res,"can not get projects", NumRows = DB_QuerySELECT (&mysql_res,"can not get projects",
"SELECT projects.PrjCod" "SELECT projects.PrjCod"
" FROM prj_usr,projects LEFT JOIN departments" " FROM prj_usr,"
" ON projects.DptCod=departments.DptCod" "projects LEFT JOIN dpt_departments"
" ON projects.DptCod=dpt_departments.DptCod"
" WHERE projects.CrsCod=%ld" " WHERE projects.CrsCod=%ld"
"%s%s%s" "%s%s%s"
" AND projects.PrjCod=prj_usr.PrjCod" " AND projects.PrjCod=prj_usr.PrjCod"
" AND prj_usr.UsrCod=%ld" " AND prj_usr.UsrCod=%ld"
" GROUP BY projects.PrjCod" // To not repeat projects (DISTINCT can not be used) " GROUP BY projects.PrjCod" // To not repeat projects (DISTINCT can not be used)
" ORDER BY %s", " ORDER BY %s",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
@ -2996,12 +2998,13 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
case Prj_ORDER_DEPARTMENT: case Prj_ORDER_DEPARTMENT:
NumRows = DB_QuerySELECT (&mysql_res,"can not get projects", NumRows = DB_QuerySELECT (&mysql_res,"can not get projects",
"SELECT projects.PrjCod" "SELECT projects.PrjCod"
" FROM prj_usr,projects LEFT JOIN departments" " FROM prj_usr,"
" ON projects.DptCod=departments.DptCod" "projects LEFT JOIN dpt_departments"
" ON projects.DptCod=dpt_departments.DptCod"
" WHERE projects.CrsCod=%ld" " WHERE projects.CrsCod=%ld"
"%s%s%s" "%s%s%s"
" AND projects.PrjCod=prj_usr.PrjCod" " AND projects.PrjCod=prj_usr.PrjCod"
" AND prj_usr.UsrCod IN (%s)" " AND prj_usr.UsrCod IN (%s)"
" GROUP BY projects.PrjCod" // To not repeat projects (DISTINCT can not be used) " GROUP BY projects.PrjCod" // To not repeat projects (DISTINCT can not be used)
" ORDER BY %s", " ORDER BY %s",
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
@ -3029,7 +3032,7 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
case Prj_ORDER_TITLE: case Prj_ORDER_TITLE:
NumRows = DB_QuerySELECT (&mysql_res,"can not get projects", NumRows = DB_QuerySELECT (&mysql_res,"can not get projects",
"SELECT projects.PrjCod" "SELECT projects.PrjCod"
" FROM projects" " FROM projects"
" WHERE projects.CrsCod=%ld" " WHERE projects.CrsCod=%ld"
"%s%s%s" "%s%s%s"
" ORDER BY %s", " ORDER BY %s",
@ -3040,8 +3043,8 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
case Prj_ORDER_DEPARTMENT: case Prj_ORDER_DEPARTMENT:
NumRows = DB_QuerySELECT (&mysql_res,"can not get projects", NumRows = DB_QuerySELECT (&mysql_res,"can not get projects",
"SELECT projects.PrjCod" "SELECT projects.PrjCod"
" FROM projects LEFT JOIN departments" " FROM projects LEFT JOIN dpt_departments"
" ON projects.DptCod=departments.DptCod" " ON projects.DptCod=dpt_departments.DptCod"
" WHERE projects.CrsCod=%ld" " WHERE projects.CrsCod=%ld"
"%s%s%s" "%s%s%s"
" ORDER BY %s", " ORDER BY %s",