mirror of https://github.com/acanas/swad-core.git
Version 15.44.3
This commit is contained in:
parent
5deedc39f7
commit
300e667c19
|
@ -43,7 +43,8 @@ CREATE TABLE IF NOT EXISTS admin (
|
|||
UsrCod INT NOT NULL,
|
||||
Scope ENUM('Sys','Ins','Ctr','Deg') NOT NULL,
|
||||
Cod INT NOT NULL,
|
||||
UNIQUE INDEX(UsrCod,Scope,Cod));
|
||||
UNIQUE INDEX(UsrCod,Scope,Cod),
|
||||
INDEX(Scope,Cod));
|
||||
--
|
||||
-- Table ann_seen: stores users who have seen global announcements
|
||||
--
|
||||
|
|
|
@ -111,11 +111,15 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.44.2 (2015/11/23)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.44.3 (2015/11/23)"
|
||||
|
||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
||||
/*
|
||||
Version 15.44.3: Nov 23, 2015 Improvement of speed in list of administrators. (187839 lines)
|
||||
1 change necessary in database:
|
||||
ALTER TABLE admin ADD INDEX (Scope,Cod);
|
||||
|
||||
Version 15.44.2: Nov 23, 2015 Improvement of speed in list of administrators. (187819 lines)
|
||||
Version 15.44.1: Nov 23, 2015 Fixed bug in list of administrators. (187809 lines)
|
||||
Version 15.44: Nov 23, 2015 Changes in list of institution, centre and degree administrators. (187788 lines)
|
||||
|
|
|
@ -171,7 +171,7 @@ mysql> DESCRIBE admin;
|
|||
"UsrCod INT NOT NULL,"
|
||||
"Scope ENUM('Sys','Ins','Ctr','Deg') NOT NULL,"
|
||||
"Cod INT NOT NULL,"
|
||||
"UNIQUE INDEX(UsrCod,Scope,Cod))");
|
||||
"UNIQUE INDEX(UsrCod,Scope,Cod),INDEX (Scope,Cod))");
|
||||
|
||||
/***** Table ann_seen *****/
|
||||
/*
|
||||
|
|
96
swad_user.c
96
swad_user.c
|
@ -4159,28 +4159,29 @@ static void Usr_GetAdmsLst (Sco_Scope_t Scope)
|
|||
break;
|
||||
case Sco_SCOPE_CTY: // System admins
|
||||
// and admins of the institutions, centres and degrees in the current country
|
||||
sprintf (Query,"SELECT UsrCod,'Y',Sex FROM usr_data WHERE UsrCod IN ("
|
||||
"SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Sys'"
|
||||
" UNION "
|
||||
"SELECT DISTINCT admin.UsrCod FROM admin,institutions"
|
||||
sprintf (Query,"SELECT UsrCod,'Y',Sex FROM usr_data"
|
||||
" WHERE UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Sys')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT admin.UsrCod FROM admin,institutions"
|
||||
" WHERE admin.Scope='Ins'"
|
||||
" AND admin.Cod=institutions.InsCod"
|
||||
" AND institutions.CtyCod='%ld'"
|
||||
" UNION "
|
||||
"SELECT DISTINCT admin.UsrCod FROM admin,centres,institutions"
|
||||
" AND institutions.CtyCod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT admin.UsrCod FROM admin,centres,institutions"
|
||||
" WHERE admin.Scope='Ctr'"
|
||||
" AND admin.Cod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod='%ld'"
|
||||
" UNION "
|
||||
"SELECT DISTINCT admin.UsrCod FROM admin,degrees,centres,institutions"
|
||||
" AND institutions.CtyCod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT admin.UsrCod FROM admin,degrees,centres,institutions"
|
||||
" WHERE admin.Scope='Deg'"
|
||||
" AND admin.Cod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod='%ld'"
|
||||
") ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||
" AND institutions.CtyCod='%ld')"
|
||||
" ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||
Gbl.CurrentCty.Cty.CtyCod,
|
||||
Gbl.CurrentCty.Cty.CtyCod,
|
||||
Gbl.CurrentCty.Cty.CtyCod);
|
||||
|
@ -4188,22 +4189,25 @@ static void Usr_GetAdmsLst (Sco_Scope_t Scope)
|
|||
case Sco_SCOPE_INS: // System admins,
|
||||
// admins of the current institution,
|
||||
// and admins of the centres and degrees in the current institution
|
||||
sprintf (Query,"SELECT UsrCod,'Y',Sex FROM usr_data WHERE UsrCod IN ("
|
||||
"SELECT DISTINCT UsrCod FROM admin"
|
||||
" WHERE Scope='Sys' OR "
|
||||
" (Scope='Ins' AND Cod='%ld')"
|
||||
" UNION "
|
||||
"SELECT DISTINCT admin.UsrCod FROM admin,centres"
|
||||
sprintf (Query,"SELECT UsrCod,'Y',Sex FROM usr_data"
|
||||
" WHERE UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Sys')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Ins' AND Cod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT admin.UsrCod FROM admin,centres"
|
||||
" WHERE admin.Scope='Ctr'"
|
||||
" AND admin.Cod=centres.CtrCod"
|
||||
" AND centres.InsCod='%ld'"
|
||||
" UNION "
|
||||
"SELECT DISTINCT admin.UsrCod FROM admin,degrees,centres"
|
||||
" AND centres.InsCod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT admin.UsrCod FROM admin,degrees,centres"
|
||||
" WHERE admin.Scope='Deg'"
|
||||
" AND admin.Cod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod='%ld'"
|
||||
") ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||
" AND centres.InsCod='%ld')"
|
||||
" ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
|
@ -4212,30 +4216,42 @@ static void Usr_GetAdmsLst (Sco_Scope_t Scope)
|
|||
// admins of the current institution,
|
||||
// admins and the current centre,
|
||||
// and admins of the degrees in the current centre
|
||||
sprintf (Query,"SELECT UsrCod,'Y',Sex FROM usr_data WHERE UsrCod IN ("
|
||||
"SELECT DISTINCT UsrCod FROM admin"
|
||||
" WHERE Scope='Sys' OR "
|
||||
" (Scope='Ins' AND Cod='%ld') OR"
|
||||
" (Scope='Ctr' AND Cod='%ld')"
|
||||
" UNION "
|
||||
"SELECT DISTINCT admin.UsrCod FROM admin,degrees"
|
||||
sprintf (Query,"SELECT UsrCod,'Y',Sex FROM usr_data"
|
||||
" WHERE UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Sys')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Ins' AND Cod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Ctr' AND Cod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT admin.UsrCod FROM admin,degrees"
|
||||
" WHERE admin.Scope='Deg'"
|
||||
" AND admin.Cod=degrees.DegCod"
|
||||
" AND degrees.CtrCod='%ld'"
|
||||
") ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||
" AND degrees.CtrCod='%ld')"
|
||||
" ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
break;
|
||||
case Sco_SCOPE_DEG: // System admins
|
||||
// and admins of the current institution, centre or degree
|
||||
sprintf (Query,"SELECT UsrCod,'Y',Sex FROM usr_data WHERE UsrCod IN ("
|
||||
"SELECT DISTINCT UsrCod FROM admin"
|
||||
" WHERE Scope='Sys' OR "
|
||||
" (Scope='Ins' AND Cod='%ld') OR"
|
||||
" (Scope='Ctr' AND Cod='%ld') OR"
|
||||
" (Scope='Deg' AND Cod='%ld')"
|
||||
") ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||
sprintf (Query,"SELECT UsrCod,'Y',Sex FROM usr_data"
|
||||
" WHERE UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Sys')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Ins' AND Cod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Ctr' AND Cod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Deg' AND Cod='%ld')"
|
||||
" ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
Gbl.CurrentDeg.Deg.DegCod);
|
||||
|
|
Loading…
Reference in New Issue