Version 15.44.2

This commit is contained in:
Antonio Cañas Vargas 2015-11-23 14:26:17 +01:00
parent 7fae861a6a
commit 5deedc39f7
3 changed files with 53 additions and 41 deletions

View File

@ -11164,3 +11164,5 @@ SELECT TstCod,AllowTeachers,UNIX_TIMESTAMP(TstTime) AS T,NumQsts,NumQstsNotBlank
SELECT * FROM expanded_folders WHERE UNIX_TIMESTAMP() > UNIX_TIMESTAMP(ClickTime)+'1000';
SELECT * FROM expanded_folders WHERE ClickTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-'1000');
-----
SELECT UsrCod,'Y',Sex FROM usr_data WHERE UsrCod IN (SELECT DISTINCT UsrCod FROM admin WHERE Scope='Sys' UNION SELECT DISTINCT admin.UsrCod FROM admin,institutions WHERE admin.Scope='Ins' AND admin.Cod=institutions.InsCod AND institutions.CtyCod='724') AS admin_codes ORDER BY Surname1,Surname2,FirstName,UsrCod;

View File

@ -100,22 +100,23 @@
// TODO: Show guests in connected users.
// TODO: A teacher should may confirm a student ID? In what conditions? (Necessary in order to a student can view his/her marks)
// TODO: Put headers Content-type and Content-disposition when redirecting with Location:
// TODO: System admin should be able to remove/edit user's mail (when he/she detects a recipient does not exists, for example)
// TODO: When a new assignment/attendance/survey is incorrect, the second time the form is shown, it should be filled with partial data, now is always empty
// TODO: Remove columns "first year, last year, optional, status" when listing degrees?
// TODO: Show message indicating that mail could be in SPAM folder
// TODO: Do not show e-mails of administrators and teachers in lists openly
// TODO: Show nicknames of users in lists?
// TODO: Form to register and remove system admins
/*****************************************************************************/
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.44.1 (2015/11/23)"
#define Log_PLATFORM_VERSION "SWAD 15.44.2 (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.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)
Version 15.43.2: Nov 22, 2015 Minor changes in CSS. (187719 lines)

View File

@ -4148,6 +4148,8 @@ static void Usr_GetAdmsLst (Sco_Scope_t Scope)
char Query[1024];
/***** Build query *****/
// Very important: use UNION instead OR in the following queries
// (OR with different tables is very slow)
switch (Scope)
{
case Sco_SCOPE_SYS: // All admins
@ -4157,23 +4159,28 @@ 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 DISTINCT admin.UsrCod"
" FROM admin,institutions,centres,degrees WHERE"
" admin.Scope='Sys' OR "
"(admin.Scope='Ins'"
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"
" WHERE admin.Scope='Ins'"
" AND admin.Cod=institutions.InsCod"
" AND institutions.CtyCod='%ld') OR "
"(admin.Scope='Ctr'"
" AND institutions.CtyCod='%ld'"
" UNION "
"SELECT DISTINCT admin.UsrCod FROM admin,centres,institutions"
" WHERE admin.Scope='Ctr'"
" AND admin.Cod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod='%ld') OR "
"(admin.Scope='Deg'"
" AND institutions.CtyCod='%ld'"
" UNION "
"SELECT DISTINCT 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);
@ -4181,19 +4188,22 @@ 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 admin.UsrCod"
" FROM admin,centres,degrees WHERE"
" admin.Scope='Sys' OR "
"(admin.Scope='Ins' AND admin.Cod='%ld') OR "
"(admin.Scope='Ctr'"
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"
" WHERE admin.Scope='Ctr'"
" AND admin.Cod=centres.CtrCod"
" AND centres.InsCod='%ld') OR "
"(admin.Scope='Deg'"
" AND centres.InsCod='%ld'"
" UNION "
"SELECT DISTINCT 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);
@ -4202,31 +4212,30 @@ 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 admin.UsrCod"
" FROM admin,degrees WHERE"
" admin.Scope='Sys' OR "
"(admin.Scope='Ins' AND admin.Cod='%ld') OR "
"(admin.Scope='Ctr' AND admin.Cod='%ld') OR "
"(admin.Scope='Deg'"
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"
" 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"
" admin.Scope='Sys' OR "
"(admin.Scope='Ins' AND admin.Cod='%ld') OR "
"(admin.Scope='Ctr' AND admin.Cod='%ld') OR "
"(admin.Scope='Deg' AND admin.Cod='%ld'))"
" ORDER BY Surname1,Surname2,FirstName,UsrCod",
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",
Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentCtr.Ctr.CtrCod,
Gbl.CurrentDeg.Deg.DegCod);