mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-16 21:45:43 +02:00
Version 15.230
This commit is contained in:
parent
5e4e2db59a
commit
98b6d1062e
2662
css/swad15.229.css
Normal file
2662
css/swad15.229.css
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -129,13 +129,14 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 15.229 (2016-06-23)"
|
#define Log_PLATFORM_VERSION "SWAD 15.230 (2016-06-23)"
|
||||||
#define CSS_FILE "swad15.229.css"
|
#define CSS_FILE "swad15.229.css"
|
||||||
#define JS_FILE "swad15.226.js"
|
#define JS_FILE "swad15.226.js"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// 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
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 15.230: Jun 23, 2015 Optimization and bug fixing in search of users. (203374 lines)
|
||||||
Version 15.229: Jun 23, 2015 Search of students available for all users. (203194 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.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.1: Jun 23, 2015 Code refactoring in lists of users. (202794 lines)
|
||||||
|
|
|
@ -297,7 +297,7 @@ static bool Sch_CheckIfIHavePermissionToSearch (Sch_WhatToSearch_t WhatToSearch)
|
||||||
0x1FF, // Sch_SEARCH_COURSES
|
0x1FF, // Sch_SEARCH_COURSES
|
||||||
0x1FF, // Sch_SEARCH_TEACHERS
|
0x1FF, // Sch_SEARCH_TEACHERS
|
||||||
0x1FF, // Sch_SEARCH_STUDENTS
|
0x1FF, // Sch_SEARCH_STUDENTS
|
||||||
0x1FF, // Sch_SEARCH_GUESTS
|
0x100, // Sch_SEARCH_GUESTS Only if I am a system admin
|
||||||
0x1FF, // Sch_SEARCH_OPEN_DOCUMENTS
|
0x1FF, // Sch_SEARCH_OPEN_DOCUMENTS
|
||||||
0x1FE, // Sch_SEARCH_DOCUM_IN_MY_COURSES Only if I am logged
|
0x1FE, // Sch_SEARCH_DOCUM_IN_MY_COURSES Only if I am logged
|
||||||
0x1FE, // Sch_SEARCH_MY_DOCUMENTS Only if I am logged
|
0x1FE, // Sch_SEARCH_MY_DOCUMENTS Only if I am logged
|
||||||
|
|
438
swad_user.c
438
swad_user.c
|
@ -141,7 +141,7 @@ static void Usr_WriteUsrData (const char *BgColor,
|
||||||
const char *Data,const char *Link,
|
const char *Data,const char *Link,
|
||||||
bool NonBreak,bool Accepted);
|
bool NonBreak,bool Accepted);
|
||||||
|
|
||||||
static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,bool Search,const char *UsrQuery,char *Query);
|
static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,char *Query);
|
||||||
static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery);
|
static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery);
|
||||||
static void Usr_GetAdmsLst (Sco_Scope_t Scope);
|
static void Usr_GetAdmsLst (Sco_Scope_t Scope);
|
||||||
static void Usr_GetGstsLst (Sco_Scope_t Scope);
|
static void Usr_GetGstsLst (Sco_Scope_t Scope);
|
||||||
|
@ -1437,13 +1437,17 @@ unsigned long Usr_GetCrssFromUsr (long UsrCod,long DegCod,MYSQL_RES **mysql_res)
|
||||||
if (DegCod > 0) // Courses in a degree
|
if (DegCod > 0) // Courses in a degree
|
||||||
sprintf (Query,"SELECT crs_usr.CrsCod,crs_usr.Role,courses.DegCod"
|
sprintf (Query,"SELECT crs_usr.CrsCod,crs_usr.Role,courses.DegCod"
|
||||||
" FROM crs_usr,courses"
|
" FROM crs_usr,courses"
|
||||||
" WHERE crs_usr.UsrCod='%ld' AND crs_usr.CrsCod=courses.CrsCod AND courses.DegCod='%ld'"
|
" WHERE crs_usr.UsrCod='%ld'"
|
||||||
|
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||||
|
" AND courses.DegCod='%ld'"
|
||||||
" ORDER BY courses.ShortName",
|
" ORDER BY courses.ShortName",
|
||||||
UsrCod,DegCod);
|
UsrCod,DegCod);
|
||||||
else // All the courses
|
else // All the courses
|
||||||
sprintf (Query,"SELECT crs_usr.CrsCod,crs_usr.Role,courses.DegCod"
|
sprintf (Query,"SELECT crs_usr.CrsCod,crs_usr.Role,courses.DegCod"
|
||||||
" FROM crs_usr,courses,degrees"
|
" FROM crs_usr,courses,degrees"
|
||||||
" WHERE crs_usr.UsrCod='%ld' AND crs_usr.CrsCod=courses.CrsCod AND courses.DegCod=degrees.DegCod"
|
" WHERE crs_usr.UsrCod='%ld'"
|
||||||
|
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||||
|
" AND courses.DegCod=degrees.DegCod"
|
||||||
" ORDER BY degrees.ShortName,courses.ShortName",
|
" ORDER BY degrees.ShortName,courses.ShortName",
|
||||||
UsrCod);
|
UsrCod);
|
||||||
return DB_QuerySELECT (Query,mysql_res,"can not get the courses a user belongs to");
|
return DB_QuerySELECT (Query,mysql_res,"can not get the courses a user belongs to");
|
||||||
|
@ -3432,7 +3436,8 @@ long Usr_GetRamdomStdFromGrp (long GrpCod)
|
||||||
|
|
||||||
/***** Get a random student from a group from database *****/
|
/***** Get a random student from a group from database *****/
|
||||||
sprintf (Query,"SELECT crs_grp_usr.UsrCod FROM crs_grp_usr,crs_usr"
|
sprintf (Query,"SELECT crs_grp_usr.UsrCod FROM crs_grp_usr,crs_usr"
|
||||||
" WHERE crs_grp_usr.GrpCod='%ld' AND crs_grp_usr.UsrCod=crs_usr.UsrCod"
|
" WHERE crs_grp_usr.GrpCod='%ld'"
|
||||||
|
" AND crs_grp_usr.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u' ORDER BY RAND(NOW()) LIMIT 1",
|
" AND crs_usr.Role='%u' ORDER BY RAND(NOW()) LIMIT 1",
|
||||||
GrpCod,(unsigned) Rol_STUDENT);
|
GrpCod,(unsigned) Rol_STUDENT);
|
||||||
if (DB_QuerySELECT (Query,&mysql_res,"can not get a random student from a group"))
|
if (DB_QuerySELECT (Query,&mysql_res,"can not get a random student from a group"))
|
||||||
|
@ -3535,7 +3540,7 @@ unsigned Usr_GetNumberOfTeachersInCentre (long CtrCod)
|
||||||
/******* Build query to get list with data of users in current course ********/
|
/******* Build query to get list with data of users in current course ********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,bool Search,const char *UsrQuery,char *Query)
|
static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,char *Query)
|
||||||
{
|
{
|
||||||
unsigned NumPositiveCods = 0;
|
unsigned NumPositiveCods = 0;
|
||||||
unsigned NumNegativeCods = 0;
|
unsigned NumNegativeCods = 0;
|
||||||
|
@ -3565,15 +3570,6 @@ static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,bool Search,const cha
|
||||||
" AND crs_usr.UsrCod=usr_data.UsrCod", // Do not get banned users
|
" AND crs_usr.UsrCod=usr_data.UsrCod", // Do not get banned users
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,(unsigned) Role,
|
Gbl.CurrentCrs.Crs.CrsCod,(unsigned) Role,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
else if (Search)
|
|
||||||
sprintf (Query,"SELECT crs_usr.UsrCod,usr_data.Sex,crs_usr.Accepted"
|
|
||||||
" FROM crs_usr,usr_data"
|
|
||||||
" WHERE crs_usr.CrsCod='%ld'"
|
|
||||||
" AND crs_usr.Role='%u'"
|
|
||||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
|
||||||
" AND %s",
|
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,(unsigned) Role,
|
|
||||||
UsrQuery);
|
|
||||||
else
|
else
|
||||||
sprintf (Query,"SELECT crs_usr.UsrCod,usr_data.Sex,crs_usr.Accepted"
|
sprintf (Query,"SELECT crs_usr.UsrCod,usr_data.Sex,crs_usr.Accepted"
|
||||||
" FROM crs_usr,usr_data"
|
" FROM crs_usr,usr_data"
|
||||||
|
@ -3784,7 +3780,7 @@ void Usr_GetListUsrs (Rol_Role_t Role,Sco_Scope_t Scope)
|
||||||
case Sco_SCOPE_CRS:
|
case Sco_SCOPE_CRS:
|
||||||
/* Get users from the current course */
|
/* Get users from the current course */
|
||||||
// 3 columns are retrieved: UsrCod, Sex, Accepted
|
// 3 columns are retrieved: UsrCod, Sex, Accepted
|
||||||
Usr_BuildQueryToGetUsrsLstCrs (Role,false,NULL,Query);
|
Usr_BuildQueryToGetUsrsLstCrs (Role,Query);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Lay_ShowErrorAndExit ("Wrong scope.");
|
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||||
|
@ -3808,38 +3804,84 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
char Query[16*1024];
|
char Query[16*1024];
|
||||||
|
|
||||||
/***** Build query *****/
|
/***** Build query *****/
|
||||||
if (Role == Rol__GUEST_) // Guests
|
// if Gbl.Scope.Current is course ==> 3 columns are retrieved: UsrCod, Sex, Accepted
|
||||||
|
// else ==> 2 columns are retrieved: UsrCod, Sex
|
||||||
|
|
||||||
|
if (Role == Rol__GUEST_) // Guests (scope is not used)
|
||||||
/* Search users with no courses */
|
/* Search users with no courses */
|
||||||
sprintf (Query,"SELECT UsrCod,Sex"
|
switch (Gbl.Usrs.Me.LoggedRole)
|
||||||
" FROM usr_data"
|
{
|
||||||
" WHERE %s"
|
case Rol_UNKNOWN: // I am not logged
|
||||||
" AND UsrCod NOT IN (SELECT UsrCod FROM crs_usr)"
|
// Guests whose privacy is Pri_VISIBILITY_WORLD
|
||||||
" ORDER BY "
|
sprintf (Query,"SELECT UsrCod,Sex FROM usr_data"
|
||||||
"Surname1,"
|
" WHERE %s"
|
||||||
"Surname2,"
|
" AND UsrCod NOT IN (SELECT UsrCod FROM crs_usr)"
|
||||||
"FirstName,"
|
" AND ProfileVisibility='%s'"
|
||||||
"UsrCod",
|
" ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||||
UsrQuery);
|
UsrQuery,
|
||||||
|
Pri_VisibilityDB[Pri_VISIBILITY_WORLD]);
|
||||||
|
break;
|
||||||
|
case Rol_SYS_ADM:
|
||||||
|
// Any guest
|
||||||
|
sprintf (Query,"SELECT UsrCod,Sex FROM usr_data"
|
||||||
|
" WHERE %s"
|
||||||
|
" AND UsrCod NOT IN (SELECT UsrCod FROM crs_usr)"
|
||||||
|
" ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||||
|
UsrQuery);
|
||||||
|
break;
|
||||||
|
default: // I am logged
|
||||||
|
// Guests whose privacy is
|
||||||
|
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
||||||
|
sprintf (Query,"SELECT UsrCod,Sex FROM usr_data"
|
||||||
|
" WHERE %s"
|
||||||
|
" AND UsrCod NOT IN (SELECT UsrCod FROM crs_usr)"
|
||||||
|
" AND ProfileVisibility IN ('%s','%s')"
|
||||||
|
" ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||||
|
UsrQuery,
|
||||||
|
Pri_VisibilityDB[Pri_VISIBILITY_SYSTEM],
|
||||||
|
Pri_VisibilityDB[Pri_VISIBILITY_WORLD ]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
else // Students / Teachers
|
else // Students / Teachers
|
||||||
/*
|
/*
|
||||||
To achieve maximum speed, it's important to do the things in this order:
|
To achieve maximum speed, it's important to do the things in this order:
|
||||||
1) Search for user's name (UsrQuery) getting candidate users
|
1) Search for user's name (UsrQuery) getting candidate users
|
||||||
|
(this search is not stored in a temporary table
|
||||||
|
because MySQL does not allow temporary tables
|
||||||
|
to be used more than once in the same query)
|
||||||
2) Filter the candidate users according to scope
|
2) Filter the candidate users according to scope
|
||||||
*/
|
*/
|
||||||
switch (Gbl.Scope.Current)
|
switch (Gbl.Scope.Current)
|
||||||
{
|
{
|
||||||
case Sco_SCOPE_SYS:
|
case Sco_SCOPE_SYS:
|
||||||
/* Search users in courses from the whole platform */
|
/* Search users in courses from the whole platform */
|
||||||
// 2 columns are retrieved: UsrCod, Sex
|
|
||||||
switch (Gbl.Usrs.Me.LoggedRole)
|
switch (Gbl.Usrs.Me.LoggedRole)
|
||||||
{
|
{
|
||||||
case Rol_SYS_ADM:
|
case Rol_UNKNOWN: // I am not logged
|
||||||
|
// Users whose privacy is Pri_VISIBILITY_WORLD
|
||||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
"(SELECT DISTINCT candidate_users.UsrCod FROM "
|
||||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr"
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u') AS list_usrs,usr_data"
|
" AND crs_usr.Role='%u') AS list_usrs,usr_data"
|
||||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||||
|
" AND usr_data.ProfileVisibility='%s'"
|
||||||
|
" ORDER BY "
|
||||||
|
"usr_data.Surname1,"
|
||||||
|
"usr_data.Surname2,"
|
||||||
|
"usr_data.FirstName,"
|
||||||
|
"usr_data.UsrCod",
|
||||||
|
UsrQuery,
|
||||||
|
(unsigned) Role,
|
||||||
|
Pri_VisibilityDB[Pri_VISIBILITY_WORLD]);
|
||||||
|
break;
|
||||||
|
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 "
|
" ORDER BY "
|
||||||
"usr_data.Surname1,"
|
"usr_data.Surname1,"
|
||||||
"usr_data.Surname2,"
|
"usr_data.Surname2,"
|
||||||
|
@ -3848,15 +3890,13 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
UsrQuery,
|
UsrQuery,
|
||||||
(unsigned) Role);
|
(unsigned) Role);
|
||||||
break;
|
break;
|
||||||
default:
|
default: // I am logged
|
||||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||||
"("
|
"("
|
||||||
// Users whose privacy is
|
// Users whose privacy is
|
||||||
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,usr_data"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||||
|
@ -3865,10 +3905,8 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
// Users who share any course with me
|
// Users who share any course with me
|
||||||
// and whose privacy is Pri_VISIBILITY_COURSE
|
// and whose privacy is Pri_VISIBILITY_COURSE
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr"
|
||||||
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,"
|
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,usr_data"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
||||||
|
@ -3878,10 +3916,8 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
// Users who share any course with me with another role
|
// Users who share any course with me with another role
|
||||||
// and whose privacy is Pri_VISIBILITY_USER
|
// and whose privacy is Pri_VISIBILITY_USER
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,"
|
||||||
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,"
|
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,usr_data"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
||||||
|
@ -3890,7 +3926,7 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
" AND usr_data.ProfileVisibility='%s'"
|
" AND usr_data.ProfileVisibility='%s'"
|
||||||
") "
|
") "
|
||||||
"AS list_usrs,usr_data"
|
"AS list_usrs,usr_data"
|
||||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
" WHERE list_usrs.UsrCod=usr_data.UsrCod"
|
||||||
" ORDER BY "
|
" ORDER BY "
|
||||||
"usr_data.Surname1,"
|
"usr_data.Surname1,"
|
||||||
"usr_data.Surname2,"
|
"usr_data.Surname2,"
|
||||||
|
@ -3913,13 +3949,13 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CTY:
|
case Sco_SCOPE_CTY:
|
||||||
/* Search users in courses from the current country */
|
/* Search users in courses from the current country */
|
||||||
// 2 columns are retrieved: UsrCod, Sex
|
|
||||||
switch (Gbl.Usrs.Me.LoggedRole)
|
switch (Gbl.Usrs.Me.LoggedRole)
|
||||||
{
|
{
|
||||||
case Rol_SYS_ADM:
|
case Rol_UNKNOWN: // I am not logged
|
||||||
|
// Users whose privacy is Pri_VISIBILITY_WORLD
|
||||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
"(SELECT DISTINCT candidate_users.UsrCod FROM "
|
||||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses,degrees,centres,institutions"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses,degrees,centres,institutions"
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||||
|
@ -3928,6 +3964,29 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
" AND centres.InsCod=institutions.InsCod"
|
" AND centres.InsCod=institutions.InsCod"
|
||||||
" AND institutions.CtyCod='%ld') AS list_usrs,usr_data"
|
" AND institutions.CtyCod='%ld') AS list_usrs,usr_data"
|
||||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||||
|
" AND usr_data.ProfileVisibility='%s'"
|
||||||
|
" ORDER BY "
|
||||||
|
"usr_data.Surname1,"
|
||||||
|
"usr_data.Surname2,"
|
||||||
|
"usr_data.FirstName,"
|
||||||
|
"usr_data.UsrCod",
|
||||||
|
UsrQuery,
|
||||||
|
(unsigned) Role,
|
||||||
|
Gbl.CurrentCty.Cty.CtyCod,
|
||||||
|
Pri_VisibilityDB[Pri_VISIBILITY_WORLD]);
|
||||||
|
break;
|
||||||
|
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 "
|
" ORDER BY "
|
||||||
"usr_data.Surname1,"
|
"usr_data.Surname1,"
|
||||||
"usr_data.Surname2,"
|
"usr_data.Surname2,"
|
||||||
|
@ -3937,16 +3996,13 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
(unsigned) Role,
|
(unsigned) Role,
|
||||||
Gbl.CurrentCty.Cty.CtyCod);
|
Gbl.CurrentCty.Cty.CtyCod);
|
||||||
break;
|
break;
|
||||||
default:
|
default: // I am logged
|
||||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||||
"("
|
"("
|
||||||
// Users whose privacy is
|
// Users whose privacy is
|
||||||
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,usr_data,courses,degrees,centres,institutions"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data,"
|
|
||||||
"courses,degrees,centres,institutions"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||||
|
@ -3960,11 +4016,8 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
// Users who share any course with me
|
// Users who share any course with me
|
||||||
// and whose privacy is Pri_VISIBILITY_COURSE
|
// and whose privacy is Pri_VISIBILITY_COURSE
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,"
|
||||||
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,"
|
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,usr_data,courses,degrees,centres,institutions"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data,"
|
|
||||||
"courses,degrees,centres,institutions"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
||||||
|
@ -3979,11 +4032,8 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
// Users who share any course with me with another role
|
// Users who share any course with me with another role
|
||||||
// and whose privacy is Pri_VISIBILITY_USER
|
// and whose privacy is Pri_VISIBILITY_USER
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,"
|
||||||
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,"
|
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,usr_data,courses,degrees,centres,institutions"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data,"
|
|
||||||
"courses,degrees,centres,institutions"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
||||||
|
@ -3997,7 +4047,7 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
" AND institutions.CtyCod='%ld'"
|
" AND institutions.CtyCod='%ld'"
|
||||||
") "
|
") "
|
||||||
"AS list_usrs,usr_data"
|
"AS list_usrs,usr_data"
|
||||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
" WHERE list_usrs.UsrCod=usr_data.UsrCod"
|
||||||
" ORDER BY "
|
" ORDER BY "
|
||||||
"usr_data.Surname1,"
|
"usr_data.Surname1,"
|
||||||
"usr_data.Surname2,"
|
"usr_data.Surname2,"
|
||||||
|
@ -4023,14 +4073,13 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_INS:
|
case Sco_SCOPE_INS:
|
||||||
/* Search users in courses from the current institution */
|
/* Search users in courses from the current institution */
|
||||||
// 2 columns are retrieved: UsrCod, Sex
|
|
||||||
switch (Gbl.Usrs.Me.LoggedRole)
|
switch (Gbl.Usrs.Me.LoggedRole)
|
||||||
{
|
{
|
||||||
case Rol_INS_ADM:
|
case Rol_UNKNOWN: // I am not logged
|
||||||
case Rol_SYS_ADM:
|
// Users whose privacy is Pri_VISIBILITY_WORLD
|
||||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
"(SELECT DISTINCT candidate_users.UsrCod FROM "
|
||||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses,degrees,centres"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses,degrees,centres"
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||||
|
@ -4038,6 +4087,29 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
" AND degrees.CtrCod=centres.CtrCod"
|
" AND degrees.CtrCod=centres.CtrCod"
|
||||||
" AND centres.InsCod='%ld') AS list_usrs,usr_data"
|
" AND centres.InsCod='%ld') AS list_usrs,usr_data"
|
||||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||||
|
" AND usr_data.ProfileVisibility='%s'"
|
||||||
|
" ORDER BY "
|
||||||
|
"usr_data.Surname1,"
|
||||||
|
"usr_data.Surname2,"
|
||||||
|
"usr_data.FirstName,"
|
||||||
|
"usr_data.UsrCod",
|
||||||
|
UsrQuery,
|
||||||
|
(unsigned) Role,
|
||||||
|
Gbl.CurrentIns.Ins.InsCod,
|
||||||
|
Pri_VisibilityDB[Pri_VISIBILITY_WORLD]);
|
||||||
|
break;
|
||||||
|
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 "
|
" ORDER BY "
|
||||||
"usr_data.Surname1,"
|
"usr_data.Surname1,"
|
||||||
"usr_data.Surname2,"
|
"usr_data.Surname2,"
|
||||||
|
@ -4047,16 +4119,13 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
(unsigned) Role,
|
(unsigned) Role,
|
||||||
Gbl.CurrentIns.Ins.InsCod);
|
Gbl.CurrentIns.Ins.InsCod);
|
||||||
break;
|
break;
|
||||||
default:
|
default: // I am logged
|
||||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||||
"("
|
"("
|
||||||
// Users whose privacy is
|
// Users whose privacy is
|
||||||
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,usr_data,courses,degrees,centres"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data,"
|
|
||||||
"courses,degrees,centres"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||||
|
@ -4069,11 +4138,8 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
// Users who share any course with me
|
// Users who share any course with me
|
||||||
// and whose privacy is Pri_VISIBILITY_COURSE
|
// and whose privacy is Pri_VISIBILITY_COURSE
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,"
|
||||||
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,"
|
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,usr_data,courses,degrees,centres"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data,"
|
|
||||||
"courses,degrees,centres"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
||||||
|
@ -4087,11 +4153,8 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
// Users who share any course with me with another role
|
// Users who share any course with me with another role
|
||||||
// and whose privacy is Pri_VISIBILITY_USER
|
// and whose privacy is Pri_VISIBILITY_USER
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,"
|
||||||
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,"
|
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,usr_data,courses,degrees,centres"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data,"
|
|
||||||
"courses,degrees,centres"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
||||||
|
@ -4104,7 +4167,7 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
" AND centres.InsCod='%ld'"
|
" AND centres.InsCod='%ld'"
|
||||||
") "
|
") "
|
||||||
"AS list_usrs,usr_data"
|
"AS list_usrs,usr_data"
|
||||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
" WHERE list_usrs.UsrCod=usr_data.UsrCod"
|
||||||
" ORDER BY "
|
" ORDER BY "
|
||||||
"usr_data.Surname1,"
|
"usr_data.Surname1,"
|
||||||
"usr_data.Surname2,"
|
"usr_data.Surname2,"
|
||||||
|
@ -4130,21 +4193,42 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CTR:
|
case Sco_SCOPE_CTR:
|
||||||
/* Search users in courses from the current centre */
|
/* Search users in courses from the current centre */
|
||||||
// 2 columns are retrieved: UsrCod, Sex
|
|
||||||
switch (Gbl.Usrs.Me.LoggedRole)
|
switch (Gbl.Usrs.Me.LoggedRole)
|
||||||
{
|
{
|
||||||
case Rol_CTR_ADM:
|
case Rol_UNKNOWN: // I am not logged
|
||||||
case Rol_INS_ADM:
|
// Users whose privacy is Pri_VISIBILITY_WORLD
|
||||||
case Rol_SYS_ADM:
|
|
||||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
"(SELECT DISTINCT candidate_users.UsrCod FROM "
|
||||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses,degrees"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses,degrees"
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||||
" AND courses.DegCod=degrees.DegCod"
|
" AND courses.DegCod=degrees.DegCod"
|
||||||
" AND degrees.CtrCod='%ld') AS list_usrs,usr_data"
|
" AND degrees.CtrCod='%ld') AS list_usrs,usr_data"
|
||||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
||||||
|
" AND usr_data.ProfileVisibility='%s'"
|
||||||
|
" ORDER BY "
|
||||||
|
"usr_data.Surname1,"
|
||||||
|
"usr_data.Surname2,"
|
||||||
|
"usr_data.FirstName,"
|
||||||
|
"usr_data.UsrCod",
|
||||||
|
UsrQuery,
|
||||||
|
(unsigned) Role,
|
||||||
|
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||||
|
Pri_VisibilityDB[Pri_VISIBILITY_WORLD]);
|
||||||
|
break;
|
||||||
|
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 "
|
" ORDER BY "
|
||||||
"usr_data.Surname1,"
|
"usr_data.Surname1,"
|
||||||
"usr_data.Surname2,"
|
"usr_data.Surname2,"
|
||||||
|
@ -4154,16 +4238,13 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
(unsigned) Role,
|
(unsigned) Role,
|
||||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||||
break;
|
break;
|
||||||
default:
|
default: // I am logged
|
||||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||||
"("
|
"("
|
||||||
// Users whose privacy is
|
// Users whose privacy is
|
||||||
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,usr_data,courses,degrees"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data,"
|
|
||||||
"courses,degrees"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||||
|
@ -4175,11 +4256,8 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
// Users who share any course with me
|
// Users who share any course with me
|
||||||
// and whose privacy is Pri_VISIBILITY_COURSE
|
// and whose privacy is Pri_VISIBILITY_COURSE
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,"
|
||||||
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,"
|
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,usr_data,courses,degrees"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data,"
|
|
||||||
"courses,degrees"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
||||||
|
@ -4192,11 +4270,8 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
// Users who share any course with me with another role
|
// Users who share any course with me with another role
|
||||||
// and whose privacy is Pri_VISIBILITY_USER
|
// and whose privacy is Pri_VISIBILITY_USER
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,"
|
||||||
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,"
|
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,usr_data,courses,degrees"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data,"
|
|
||||||
"courses,degrees"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
||||||
|
@ -4208,7 +4283,7 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
" AND degrees.CtrCod='%ld'"
|
" AND degrees.CtrCod='%ld'"
|
||||||
") "
|
") "
|
||||||
"AS list_usrs,usr_data"
|
"AS list_usrs,usr_data"
|
||||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
" WHERE list_usrs.UsrCod=usr_data.UsrCod"
|
||||||
" ORDER BY "
|
" ORDER BY "
|
||||||
"usr_data.Surname1,"
|
"usr_data.Surname1,"
|
||||||
"usr_data.Surname2,"
|
"usr_data.Surname2,"
|
||||||
|
@ -4234,22 +4309,42 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_DEG:
|
case Sco_SCOPE_DEG:
|
||||||
/* Search users in courses from the current degree */
|
/* Search users in courses from the current degree */
|
||||||
// 2 columns are retrieved: UsrCod, Sex
|
|
||||||
switch (Gbl.Usrs.Me.LoggedRole)
|
switch (Gbl.Usrs.Me.LoggedRole)
|
||||||
{
|
{
|
||||||
|
case Rol_UNKNOWN: // I am not logged
|
||||||
|
// Users whose privacy is Pri_VISIBILITY_WORLD
|
||||||
|
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 "
|
||||||
|
" AND usr_data.ProfileVisibility='%s'"
|
||||||
|
" ORDER BY "
|
||||||
|
"usr_data.Surname1,"
|
||||||
|
"usr_data.Surname2,"
|
||||||
|
"usr_data.FirstName,"
|
||||||
|
"usr_data.UsrCod",
|
||||||
|
UsrQuery,
|
||||||
|
(unsigned) Role,
|
||||||
|
Gbl.CurrentDeg.Deg.DegCod,
|
||||||
|
Pri_VisibilityDB[Pri_VISIBILITY_WORLD]);
|
||||||
|
break;
|
||||||
case Rol_DEG_ADM:
|
case Rol_DEG_ADM:
|
||||||
case Rol_CTR_ADM:
|
case Rol_CTR_ADM:
|
||||||
case Rol_INS_ADM:
|
case Rol_INS_ADM:
|
||||||
case Rol_SYS_ADM:
|
case Rol_SYS_ADM:
|
||||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||||
"(SELECT DISTINCT candidate_users.UsrCod"
|
"(SELECT DISTINCT candidate_users.UsrCod FROM "
|
||||||
" FROM (SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,courses"
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||||
" AND courses.DegCod='%ld') "
|
" AND courses.DegCod='%ld') "
|
||||||
"AS list_usrs,usr_data"
|
"AS list_usrs,usr_data"
|
||||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
" WHERE list_usrs.UsrCod=usr_data.UsrCod"
|
||||||
" ORDER BY "
|
" ORDER BY "
|
||||||
"usr_data.Surname1,"
|
"usr_data.Surname1,"
|
||||||
"usr_data.Surname2,"
|
"usr_data.Surname2,"
|
||||||
|
@ -4259,16 +4354,13 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
(unsigned) Role,
|
(unsigned) Role,
|
||||||
Gbl.CurrentDeg.Deg.DegCod);
|
Gbl.CurrentDeg.Deg.DegCod);
|
||||||
break;
|
break;
|
||||||
default:
|
default: // I am logged
|
||||||
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
sprintf (Query,"SELECT list_usrs.UsrCod,usr_data.Sex FROM "
|
||||||
"("
|
"("
|
||||||
// Users whose privacy is
|
// Users whose privacy is
|
||||||
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
// Pri_VISIBILITY_SYSTEM or Pri_VISIBILITY_WORLD
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,usr_data,courses"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data,"
|
|
||||||
"courses"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||||
|
@ -4279,11 +4371,8 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
// Users who share any course with me
|
// Users who share any course with me
|
||||||
// and whose privacy is Pri_VISIBILITY_COURSE
|
// and whose privacy is Pri_VISIBILITY_COURSE
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,"
|
||||||
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,"
|
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,usr_data,courses"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data,"
|
|
||||||
"courses"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
" AND crs_usr.CrsCod=my_crs.CrsCod"
|
||||||
|
@ -4295,11 +4384,8 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
// Users who share any course with me with another role
|
// Users who share any course with me with another role
|
||||||
// and whose privacy is Pri_VISIBILITY_USER
|
// and whose privacy is Pri_VISIBILITY_USER
|
||||||
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
"SELECT DISTINCT crs_usr.UsrCod FROM "
|
||||||
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,"
|
"(SELECT UsrCod FROM usr_data WHERE %s) AS candidate_users,crs_usr,"
|
||||||
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,"
|
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,usr_data,courses"
|
||||||
"crs_usr,"
|
|
||||||
"usr_data,"
|
|
||||||
"courses"
|
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role='%u'"
|
" AND crs_usr.Role='%u'"
|
||||||
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
" AND crs_usr.CrsCod=my_crs_role.CrsCod"
|
||||||
|
@ -4310,7 +4396,7 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
" AND courses.DegCod='%ld'"
|
" AND courses.DegCod='%ld'"
|
||||||
") "
|
") "
|
||||||
"AS list_usrs,usr_data"
|
"AS list_usrs,usr_data"
|
||||||
" WHERE list_usrs.UsrCod=usr_data.UsrCod "
|
" WHERE list_usrs.UsrCod=usr_data.UsrCod"
|
||||||
" ORDER BY "
|
" ORDER BY "
|
||||||
"usr_data.Surname1,"
|
"usr_data.Surname1,"
|
||||||
"usr_data.Surname2,"
|
"usr_data.Surname2,"
|
||||||
|
@ -4336,8 +4422,102 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CRS:
|
case Sco_SCOPE_CRS:
|
||||||
/* Search users in courses from the current course */
|
/* Search users in courses from the current course */
|
||||||
// 3 columns are retrieved: UsrCod, Sex, Accepted
|
switch (Gbl.Usrs.Me.LoggedRole)
|
||||||
Usr_BuildQueryToGetUsrsLstCrs (Role,true,UsrQuery,Query);
|
{
|
||||||
|
case Rol_UNKNOWN: // I am not logged
|
||||||
|
// Users whose privacy is Pri_VISIBILITY_WORLD
|
||||||
|
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 "
|
||||||
|
" AND usr_data.ProfileVisibility='%s'"
|
||||||
|
" ORDER BY "
|
||||||
|
"usr_data.Surname1,"
|
||||||
|
"usr_data.Surname2,"
|
||||||
|
"usr_data.FirstName,"
|
||||||
|
"usr_data.UsrCod",
|
||||||
|
UsrQuery,
|
||||||
|
(unsigned) Role,
|
||||||
|
Pri_VisibilityDB[Pri_VISIBILITY_WORLD]);
|
||||||
|
break;
|
||||||
|
case Rol_DEG_ADM:
|
||||||
|
case Rol_CTR_ADM:
|
||||||
|
case Rol_INS_ADM:
|
||||||
|
case Rol_SYS_ADM:
|
||||||
|
sprintf (Query,"SELECT crs_usr.UsrCod,usr_data.Sex,crs_usr.Accepted"
|
||||||
|
" FROM crs_usr,usr_data"
|
||||||
|
" WHERE crs_usr.CrsCod='%ld'"
|
||||||
|
" AND crs_usr.Role='%u'"
|
||||||
|
" AND crs_usr.UsrCod=usr_data.UsrCod"
|
||||||
|
" AND %s"
|
||||||
|
" ORDER BY "
|
||||||
|
"usr_data.Surname1,"
|
||||||
|
"usr_data.Surname2,"
|
||||||
|
"usr_data.FirstName,"
|
||||||
|
"usr_data.UsrCod",
|
||||||
|
Gbl.CurrentCrs.Crs.CrsCod,(unsigned) Role,
|
||||||
|
UsrQuery);
|
||||||
|
break;
|
||||||
|
default: // I am logged
|
||||||
|
sprintf (Query,"SELECT DISTINCT list_usrs.UsrCod,usr_data.Sex,crs_usr.Accepted 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,crs_usr,"
|
||||||
|
"(SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld') AS my_crs,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,crs_usr,"
|
||||||
|
"(SELECT CrsCod,Role FROM crs_usr WHERE UsrCod='%ld') AS my_crs_role,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,crs_usr,usr_data"
|
||||||
|
" WHERE list_usrs.UsrCod=crs_usr.UsrCod"
|
||||||
|
" AND crs_usr.CrsCod='%ld'"
|
||||||
|
" AND 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 ],
|
||||||
|
Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Lay_ShowErrorAndExit ("Wrong scope.");
|
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||||
|
@ -4345,7 +4525,7 @@ static void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SYS_ADM)
|
// if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SYS_ADM)
|
||||||
Lay_ShowAlert (Lay_INFO,Query);
|
// Lay_ShowAlert (Lay_INFO,Query);
|
||||||
|
|
||||||
/***** Get list of users from database given a query *****/
|
/***** Get list of users from database given a query *****/
|
||||||
Usr_GetListUsrsFromQuery (Query,Role,Gbl.Scope.Current);
|
Usr_GetListUsrsFromQuery (Query,Role,Gbl.Scope.Current);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user