Version 15.44.1

This commit is contained in:
Antonio Cañas Vargas 2015-11-23 13:14:13 +01:00
parent 3bcbabd447
commit 7fae861a6a
3 changed files with 89 additions and 67 deletions

View File

@ -104,17 +104,21 @@
// 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?
/*****************************************************************************/
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.44 (2015/11/23)"
#define Log_PLATFORM_VERSION "SWAD 15.44.1 (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: Nov 23, 2015 Changes in list of institution, centre and degree administrators. (187787 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)
Version 15.43.1: Nov 22, 2015 New figure (statistic) about first day of week. (187722 lines)
1 change necessary in database:
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1485','es','N','Cambiar primer día semana en calendario');

View File

@ -3902,7 +3902,7 @@ void Deg_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
{
extern const char *Txt_Go_to_X;
extern const char *Txt_all_degrees;
char Query[2048];
char Query[1024];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumRow;
@ -3912,29 +3912,29 @@ void Deg_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
struct Degree Deg;
/***** Get institutions, centres, degrees admin by user from database *****/
sprintf (Query,"(SELECT '%u' AS Scope,'-1' AS Cod,'' AS FullName"
sprintf (Query,"(SELECT '%u' AS S,'-1' AS Cod,'' AS FullName"
" FROM admin"
" WHERE UsrCod='%ld'"
" AND Scope='Sys')"
" UNION "
"(SELECT '%u' AS Scope,admin.Cod,institutions.FullName"
"(SELECT '%u' AS S,admin.Cod,institutions.FullName"
" FROM admin,institutions"
" WHERE admin.UsrCod='%ld'"
" AND admin.Scope='Ins'"
" AND admin.Cod=institutions.InsCod)"
" UNION "
"(SELECT '%u' AS Scope,admin.Cod,centres.FullName"
"(SELECT '%u' AS S,admin.Cod,centres.FullName"
" FROM admin,centres"
" WHERE admin.UsrCod='%ld'"
" AND admin.Scope='Ctr'"
" AND admin.Cod=centres.CtrCod)"
" UNION "
"(SELECT '%u' AS Scope,admin.Cod,degrees.FullName"
"(SELECT '%u' AS S,admin.Cod,degrees.FullName"
" FROM admin,degrees"
" WHERE admin.UsrCod='%ld'"
" AND admin.Scope='Deg'"
" AND admin.Cod=degrees.DegCod)"
" ORDER BY Scope,FullName",
" ORDER BY S,FullName",
(unsigned) Sco_SCOPE_SYS,UsrCod,
(unsigned) Sco_SCOPE_INS,UsrCod,
(unsigned) Sco_SCOPE_CTR,UsrCod,

View File

@ -3286,8 +3286,8 @@ void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat)
/***** Write degrees which are administrated by this administrator *****/
Deg_GetAndWriteInsCtrDegAdminBy (UsrDat->UsrCod,
Gbl.Usrs.Listing.WithPhotos ? Usr_NUM_MAIN_FIELDS_DATA_ADM :
Usr_NUM_MAIN_FIELDS_DATA_ADM-1);
Gbl.Usrs.Listing.WithPhotos ? Usr_NUM_MAIN_FIELDS_DATA_ADM :
Usr_NUM_MAIN_FIELDS_DATA_ADM-1);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
}
@ -4145,77 +4145,95 @@ void Usr_GetUsrsLst (Rol_Role_t Role,Sco_Scope_t Scope,const char *UsrQuery,bool
static void Usr_GetAdmsLst (Sco_Scope_t Scope)
{
char Query[512];
char Query[1024];
/***** Build query *****/
switch (Scope)
{
case Sco_SCOPE_SYS:
strcpy (Query,"SELECT DISTINCT admin.UsrCod,'Y',usr_data.Sex"
" FROM admin,usr_data"
" WHERE admin.UsrCod=usr_data.UsrCod"
" ORDER BY "
"usr_data.Surname1,"
"usr_data.Surname2,"
"usr_data.FirstName,"
"usr_data.UsrCod");
case Sco_SCOPE_SYS: // All admins
strcpy (Query,"SELECT UsrCod,'Y',Sex FROM usr_data WHERE UsrCod IN "
"(SELECT DISTINCT UsrCod FROM admin)"
" ORDER BY Surname1,Surname2,FirstName,UsrCod");
break;
case Sco_SCOPE_CTY:
sprintf (Query,"SELECT DISTINCT admin.UsrCod,'Y',usr_data.Sex"
" FROM institutions,centres,degrees,admin,usr_data"
" WHERE institutions.CtyCod='%ld'"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=degrees.CtrCod"
" AND degrees.DegCod=admin.Cod"
" AND admin.UsrCod=usr_data.UsrCod"
" ORDER BY "
"usr_data.Surname1,"
"usr_data.Surname2,"
"usr_data.FirstName,"
"usr_data.UsrCod",
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'"
" AND admin.Cod=institutions.InsCod"
" AND institutions.CtyCod='%ld') OR "
"(admin.Scope='Ctr'"
" AND admin.Cod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod='%ld') OR "
"(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",
Gbl.CurrentCty.Cty.CtyCod,
Gbl.CurrentCty.Cty.CtyCod,
Gbl.CurrentCty.Cty.CtyCod);
break;
case Sco_SCOPE_INS:
sprintf (Query,"SELECT DISTINCT admin.UsrCod,'Y',usr_data.Sex"
" FROM centres,degrees,admin,usr_data"
" WHERE centres.InsCod='%ld'"
" AND centres.CtrCod=degrees.CtrCod"
" AND degrees.DegCod=admin.Cod"
" AND admin.UsrCod=usr_data.UsrCod"
" ORDER BY "
"usr_data.Surname1,"
"usr_data.Surname2,"
"usr_data.FirstName,"
"usr_data.UsrCod",
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'"
" AND admin.Cod=centres.CtrCod"
" AND centres.InsCod='%ld') OR "
"(admin.Scope='Deg'"
" AND admin.Cod=degrees.DegCod"
" AND degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod='%ld'))"
" ORDER BY Surname1,Surname2,FirstName,UsrCod",
Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentIns.Ins.InsCod);
break;
case Sco_SCOPE_CTR:
sprintf (Query,"SELECT DISTINCT admin.UsrCod,'Y',usr_data.Sex"
" FROM degrees,admin,usr_data"
" WHERE degrees.CtrCod='%ld'"
" AND degrees.DegCod=admin.Cod"
" AND admin.UsrCod=usr_data.UsrCod"
" ORDER BY "
"usr_data.Surname1,"
"usr_data.Surname2,"
"usr_data.FirstName,"
"usr_data.UsrCod",
case Sco_SCOPE_CTR: // System admins,
// 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'"
" AND admin.Cod=degrees.DegCod"
" 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:
sprintf (Query,"SELECT DISTINCT admin.UsrCod,'Y',usr_data.Sex"
" FROM admin,usr_data"
" WHERE admin.Cod='%ld'"
" AND admin.UsrCod=usr_data.UsrCod"
" ORDER BY "
"usr_data.Surname1,"
"usr_data.Surname2,"
"usr_data.FirstName,"
"usr_data.UsrCod",
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",
Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentCtr.Ctr.CtrCod,
Gbl.CurrentDeg.Deg.DegCod);
break;
default: // not aplicable
return;
Lay_ShowErrorAndExit ("Wrong scope.");
break;
}
/***** Get list of students from database *****/