mirror of https://github.com/acanas/swad-core.git
Version 15.229
This commit is contained in:
parent
c5f0a6fcac
commit
5e4e2db59a
2662
css/swad15.226.css
2662
css/swad15.226.css
File diff suppressed because it is too large
Load Diff
|
@ -129,17 +129,18 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.228.2 (2016-06-23)"
|
||||
#define CSS_FILE "swad15.226.css"
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.229 (2016-06-23)"
|
||||
#define CSS_FILE "swad15.229.css"
|
||||
#define JS_FILE "swad15.226.js"
|
||||
|
||||
// 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.228.2 Jun 23, 2015 Code refactoring in lists of users. (202791 lines)
|
||||
Version 15.228.1 Jun 23, 2015 Code refactoring in lists of users. (202794 lines)
|
||||
Version 15.228 Jun 23, 2015 Code refactoring in lists of users. (202814 lines)
|
||||
Version 15.227.1 Jun 23, 2015 Code refactoring in getting/searching users. (202854 lines)
|
||||
Version 15.229: Jun 23, 2015 Search of students available for all users. (203194 lines)
|
||||
Version 15.228.2: Jun 23, 2015 Code refactoring in lists of users. (202791 lines)
|
||||
Version 15.228.1: Jun 23, 2015 Code refactoring in lists of users. (202794 lines)
|
||||
Version 15.228: Jun 23, 2015 Code refactoring in lists of users. (202814 lines)
|
||||
Version 15.227.1: Jun 23, 2015 Code refactoring in getting/searching users. (202854 lines)
|
||||
Version 15.227: Jun 21, 2015 Query optimization in search of users. (202820 lines)
|
||||
Version 15.226.7: Jun 19, 2015 One new social network. (202969 lines)
|
||||
1 change necessary in database:
|
||||
|
|
|
@ -296,8 +296,8 @@ static bool Sch_CheckIfIHavePermissionToSearch (Sch_WhatToSearch_t WhatToSearch)
|
|||
0x1FF, // Sch_SEARCH_DEGREES
|
||||
0x1FF, // Sch_SEARCH_COURSES
|
||||
0x1FF, // Sch_SEARCH_TEACHERS
|
||||
0x100, // Sch_SEARCH_STUDENTS Only for superusers
|
||||
0x100, // Sch_SEARCH_GUESTS Only for superusers
|
||||
0x1FF, // Sch_SEARCH_STUDENTS
|
||||
0x1FF, // Sch_SEARCH_GUESTS
|
||||
0x1FF, // Sch_SEARCH_OPEN_DOCUMENTS
|
||||
0x1FE, // Sch_SEARCH_DOCUM_IN_MY_COURSES Only if I am logged
|
||||
0x1FE, // Sch_SEARCH_MY_DOCUMENTS Only if I am logged
|
||||
|
@ -742,7 +742,7 @@ static unsigned Sch_SearchUsrsInDB (Rol_Role_t Role)
|
|||
/***** Check user's permission *****/
|
||||
if (Sch_CheckIfIHavePermissionToSearch ( Role == Rol_TEACHER ? Sch_SEARCH_TEACHERS :
|
||||
(Role == Rol_STUDENT ? Sch_SEARCH_STUDENTS :
|
||||
Sch_SEARCH_GUESTS)))
|
||||
Sch_SEARCH_GUESTS)))
|
||||
/***** Split user string into words *****/
|
||||
if (Sch_BuildSearchQuery (SearchQuery,
|
||||
"CONCAT_WS(' ',usr_data.FirstName,usr_data.Surname1,usr_data.Surname2)",
|
||||
|
@ -1149,7 +1149,7 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
|
|||
/*****************************************************************************/
|
||||
/****** Build a search query by splitting a string to search into words ******/
|
||||
/*****************************************************************************/
|
||||
// Returns true if a valid search query is biult
|
||||
// Returns true if a valid search query is built
|
||||
// Returns false when no valid search query
|
||||
|
||||
static bool Sch_BuildSearchQuery (char *SearchQuery,const char *FieldName,
|
||||
|
|
582
swad_user.c
582
swad_user.c
|
@ -142,6 +142,7 @@ static void Usr_WriteUsrData (const char *BgColor,
|
|||
bool NonBreak,bool Accepted);
|
||||
|
||||
static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,bool Search,const char *UsrQuery,char *Query);
|
||||
static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery);
|
||||
static void Usr_GetAdmsLst (Sco_Scope_t Scope);
|
||||
static void Usr_GetGstsLst (Sco_Scope_t Scope);
|
||||
static void Usr_GetListUsrsFromQuery (const char *Query,Rol_Role_t Role,Sco_Scope_t Scope);
|
||||
|
@ -3797,13 +3798,13 @@ void Usr_GetListUsrs (Rol_Role_t Role,Sco_Scope_t Scope)
|
|||
Usr_GetListUsrsFromQuery (Query,Role,Scope);
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/********* Search list of users with a given role in current scope ***********/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||
static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||
{
|
||||
extern const char *Pri_VisibilityDB[Pri_NUM_OPTIONS_PRIVACY];
|
||||
char Query[16*1024];
|
||||
|
||||
/***** Build query *****/
|
||||
|
@ -3830,105 +3831,508 @@ void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
|||
case Sco_SCOPE_SYS:
|
||||
/* Search users in courses from the whole platform */
|
||||
// 2 columns are retrieved: UsrCod, Sex
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u') AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role);
|
||||
switch (Gbl.Usrs.Me.LoggedRole)
|
||||
{
|
||||
case Rol_SYS_ADM:
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u') AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role);
|
||||
break;
|
||||
default:
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"("
|
||||
// Users whose privacy is
|
||||
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"crs_usr,"
|
||||
"usr_data"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility IN ('%s','%s')"
|
||||
" UNION "
|
||||
// Users who share any course with me
|
||||
// and whose privacy is Pri_VISIBILITY_COURSE
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,"
|
||||
"crs_usr,"
|
||||
"usr_data"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility='%s'"
|
||||
" UNION "
|
||||
// Users who share any course with me with another role
|
||||
// and whose privacy is Pri_VISIBILITY_USER
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,"
|
||||
"crs_usr,"
|
||||
"usr_data"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
||||
" AND crs_usr.Role<>my_crs_role.Role"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility='%s'"
|
||||
") "
|
||||
"AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_SYSTEM],
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_WORLD ],
|
||||
UsrQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_COURSE],
|
||||
UsrQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_USER ]);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case Sco_SCOPE_CTY:
|
||||
/* Search users in courses from the current country */
|
||||
// 2 columns are retrieved: UsrCod, Sex
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses,degrees,centres,institutions"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod='%ld') AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role,
|
||||
Gbl.CurrentCty.Cty.CtyCod);
|
||||
switch (Gbl.Usrs.Me.LoggedRole)
|
||||
{
|
||||
case Rol_SYS_ADM:
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses,degrees,centres,institutions"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod='%ld') AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role,
|
||||
Gbl.CurrentCty.Cty.CtyCod);
|
||||
break;
|
||||
default:
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"("
|
||||
// Users whose privacy is
|
||||
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"crs_usr,"
|
||||
"usr_data,"
|
||||
"courses,degrees,centres,institutions"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility IN ('%s','%s')"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod='%ld'"
|
||||
" UNION "
|
||||
// Users who share any course with me
|
||||
// and whose privacy is Pri_VISIBILITY_COURSE
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,"
|
||||
"crs_usr,"
|
||||
"usr_data,"
|
||||
"courses,degrees,centres,institutions"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility='%s'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod='%ld'"
|
||||
" UNION "
|
||||
// Users who share any course with me with another role
|
||||
// and whose privacy is Pri_VISIBILITY_USER
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,"
|
||||
"crs_usr,"
|
||||
"usr_data,"
|
||||
"courses,degrees,centres,institutions"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
||||
" AND crs_usr.Role<>my_crs_role.Role"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility='%s'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod='%ld'"
|
||||
") "
|
||||
"AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_SYSTEM],
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_WORLD ],
|
||||
Gbl.CurrentCty.Cty.CtyCod,
|
||||
UsrQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_COURSE],
|
||||
Gbl.CurrentCty.Cty.CtyCod,
|
||||
UsrQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_USER ],
|
||||
Gbl.CurrentCty.Cty.CtyCod);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case Sco_SCOPE_INS:
|
||||
/* Search users in courses from the current institution */
|
||||
// 2 columns are retrieved: UsrCod, Sex
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses,degrees,centres"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod='%ld') AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role,
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
break;
|
||||
switch (Gbl.Usrs.Me.LoggedRole)
|
||||
{
|
||||
case Rol_INS_ADM:
|
||||
case Rol_SYS_ADM:
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses,degrees,centres"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod='%ld') AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role,
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
break;
|
||||
default:
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"("
|
||||
// Users whose privacy is
|
||||
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"crs_usr,"
|
||||
"usr_data,"
|
||||
"courses,degrees,centres"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility IN ('%s','%s')"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod='%ld'"
|
||||
" UNION "
|
||||
// Users who share any course with me
|
||||
// and whose privacy is Pri_VISIBILITY_COURSE
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,"
|
||||
"crs_usr,"
|
||||
"usr_data,"
|
||||
"courses,degrees,centres"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility='%s'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod='%ld'"
|
||||
" UNION "
|
||||
// Users who share any course with me with another role
|
||||
// and whose privacy is Pri_VISIBILITY_USER
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,"
|
||||
"crs_usr,"
|
||||
"usr_data,"
|
||||
"courses,degrees,centres"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
||||
" AND crs_usr.Role<>my_crs_role.Role"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility='%s'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod='%ld'"
|
||||
") "
|
||||
"AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_SYSTEM],
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_WORLD ],
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
UsrQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_COURSE],
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
UsrQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_USER ],
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case Sco_SCOPE_CTR:
|
||||
/* Search users in courses from the current centre */
|
||||
// 2 columns are retrieved: UsrCod, Sex
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses,degrees"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod='%ld') AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role,
|
||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
switch (Gbl.Usrs.Me.LoggedRole)
|
||||
{
|
||||
case Rol_CTR_ADM:
|
||||
case Rol_INS_ADM:
|
||||
case Rol_SYS_ADM:
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses,degrees"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod='%ld') AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role,
|
||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
break;
|
||||
default:
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"("
|
||||
// Users whose privacy is
|
||||
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"crs_usr,"
|
||||
"usr_data,"
|
||||
"courses,degrees"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility IN ('%s','%s')"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod='%ld'"
|
||||
" UNION "
|
||||
// Users who share any course with me
|
||||
// and whose privacy is Pri_VISIBILITY_COURSE
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,"
|
||||
"crs_usr,"
|
||||
"usr_data,"
|
||||
"courses,degrees"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility='%s'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod='%ld'"
|
||||
" UNION "
|
||||
// Users who share any course with me with another role
|
||||
// and whose privacy is Pri_VISIBILITY_USER
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,"
|
||||
"crs_usr,"
|
||||
"usr_data,"
|
||||
"courses,degrees"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
||||
" AND crs_usr.Role<>my_crs_role.Role"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility='%s'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" AND degrees.CtrCod='%ld'"
|
||||
") "
|
||||
"AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_SYSTEM],
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_WORLD ],
|
||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
UsrQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_COURSE],
|
||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
UsrQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_USER ],
|
||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case Sco_SCOPE_DEG:
|
||||
/* Search users in courses from the current degree */
|
||||
// 2 columns are retrieved: UsrCod, Sex
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod='%ld') AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role,
|
||||
Gbl.CurrentDeg.Deg.DegCod);
|
||||
switch (Gbl.Usrs.Me.LoggedRole)
|
||||
{
|
||||
case Rol_DEG_ADM:
|
||||
case Rol_CTR_ADM:
|
||||
case Rol_INS_ADM:
|
||||
case Rol_SYS_ADM:
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod='%ld') "
|
||||
"AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role,
|
||||
Gbl.CurrentDeg.Deg.DegCod);
|
||||
break;
|
||||
default:
|
||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||
"("
|
||||
// Users whose privacy is
|
||||
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"crs_usr,"
|
||||
"usr_data,"
|
||||
"courses"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility IN ('%s','%s')"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod='%ld'"
|
||||
" UNION "
|
||||
// Users who share any course with me
|
||||
// and whose privacy is Pri_VISIBILITY_COURSE
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,"
|
||||
"crs_usr,"
|
||||
"usr_data,"
|
||||
"courses"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility='%s'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod='%ld'"
|
||||
" UNION "
|
||||
// Users who share any course with me with another role
|
||||
// and whose privacy is Pri_VISIBILITY_USER
|
||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
||||
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,"
|
||||
"crs_usr,"
|
||||
"usr_data,"
|
||||
"courses"
|
||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role='%u'"
|
||||
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
||||
" AND crs_usr.Role<>my_crs_role.Role"
|
||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||
" AND usr_data.ProfileVisibility='%s'"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod='%ld'"
|
||||
") "
|
||||
"AS list_usrs,usr_data"
|
||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||
" ORDER BY "
|
||||
"usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName,"
|
||||
"usr_data.UsrCod",
|
||||
UsrQuery,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_SYSTEM],
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_WORLD ],
|
||||
Gbl.CurrentDeg.Deg.DegCod,
|
||||
UsrQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_COURSE],
|
||||
Gbl.CurrentDeg.Deg.DegCod,
|
||||
UsrQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Role,
|
||||
Pri_VisibilityDB[Pri_VISIBILITY_USER ],
|
||||
Gbl.CurrentDeg.Deg.DegCod);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case Sco_SCOPE_CRS:
|
||||
/* Search users in courses from the current course */
|
||||
|
@ -3939,10 +4343,10 @@ void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
|||
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||
break;
|
||||
}
|
||||
/*
|
||||
if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SYS_ADM)
|
||||
|
||||
// if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SYS_ADM)
|
||||
Lay_ShowAlert (Lay_INFO,Query);
|
||||
*/
|
||||
|
||||
/***** Get list of users from database given a query *****/
|
||||
Usr_GetListUsrsFromQuery (Query,Role,Gbl.Scope.Current);
|
||||
}
|
||||
|
|
|
@ -304,7 +304,6 @@ unsigned Usr_GetNumUsrsWhoClaimToBelongToCtr (long CtrCod);
|
|||
unsigned Usr_GetNumberOfTeachersInCentre (long CtrCod);
|
||||
|
||||
void Usr_GetListUsrs (Rol_Role_t Role,Sco_Scope_t Scope);
|
||||
void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery);
|
||||
|
||||
void Usr_GetUnorderedStdsCodesInDeg (long DegCod);
|
||||
void Usr_FreeUsrsList (Rol_Role_t Role);
|
||||
|
|
Loading…
Reference in New Issue