Version 18.11.8

This commit is contained in:
Antonio Cañas Vargas 2018-10-31 13:00:40 +01:00
parent 7bfe4197e8
commit 0ef767800c
6 changed files with 311 additions and 240 deletions

View File

@ -99,13 +99,14 @@ void ID_GetListIDsFromUsrCod (struct UsrData *UsrDat)
if (UsrDat->UsrCod > 0) if (UsrDat->UsrCod > 0)
{ {
/***** Get user's IDs from database *****/ /***** Get user's IDs from database *****/
// First the confirmed (Confirmed == 'Y') // First the confirmed (Confirmed == 'Y')
// Then the unconfirmed (Confirmed == 'N') // Then the unconfirmed (Confirmed == 'N')
DB_BuildQuery ("SELECT UsrID,Confirmed FROM usr_IDs" NumIDs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get user's IDs",
" WHERE UsrCod=%ld" "SELECT UsrID,Confirmed FROM usr_IDs"
" ORDER BY Confirmed DESC,UsrID", " WHERE UsrCod=%ld"
UsrDat->UsrCod); " ORDER BY Confirmed DESC,UsrID",
if ((NumIDs = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get user's IDs"))) UsrDat->UsrCod);
if (NumIDs)
{ {
/***** Allocate space for the list *****/ /***** Allocate space for the list *****/
ID_ReallocateListIDs (UsrDat,NumIDs); ID_ReallocateListIDs (UsrDat,NumIDs);

View File

@ -355,10 +355,11 @@ En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 18.11.7 (2018-10-31)" #define Log_PLATFORM_VERSION "SWAD 18.11.8 (2018-10-31)"
#define CSS_FILE "swad18.4.css" #define CSS_FILE "swad18.4.css"
#define JS_FILE "swad17.17.1.js" #define JS_FILE "swad17.17.1.js"
/* /*
Version 18.11.8: Oct 31, 2018 Joining building and performing query into one function. (235810 lines)
Version 18.11.7: Oct 31, 2018 Joining building and performing query into one function. (235741 lines) Version 18.11.7: Oct 31, 2018 Joining building and performing query into one function. (235741 lines)
Version 18.11.6: Oct 31, 2018 Joining building and performing query into one function. (235687 lines) Version 18.11.6: Oct 31, 2018 Joining building and performing query into one function. (235687 lines)
Version 18.11.5: Oct 31, 2018 Joining building and performing query into one function. (235619 lines) Version 18.11.5: Oct 31, 2018 Joining building and performing query into one function. (235619 lines)

View File

@ -699,65 +699,83 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
switch (Gbl.Scope.Current) switch (Gbl.Scope.Current)
{ {
case Sco_SCOPE_SYS: // Show connected users in the whole platform case Sco_SCOPE_SYS: // Show connected users in the whole platform
DB_BuildQuery ("SELECT COUNT(DISTINCT connected.UsrCod)," DB_QuerySELECT (&mysql_res,"can not get number"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)" " of connected users"
" FROM connected,usr_data" " who belong to this location",
" WHERE connected.UsrCod=usr_data.UsrCod"); "SELECT COUNT(DISTINCT connected.UsrCod),"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM connected,usr_data"
" WHERE connected.UsrCod=usr_data.UsrCod");
break; break;
case Sco_SCOPE_CTY: // Show connected users in the current country case Sco_SCOPE_CTY: // Show connected users in the current country
DB_BuildQuery ("SELECT COUNT(DISTINCT connected.UsrCod)," DB_QuerySELECT (&mysql_res,"can not get number"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)" " of connected users"
" FROM institutions,centres,degrees,courses,crs_usr,connected,usr_data" " who belong to this location",
" WHERE institutions.CtyCod=%ld" "SELECT COUNT(DISTINCT connected.UsrCod),"
" AND institutions.InsCod=centres.InsCod" "COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" AND centres.CtrCod=degrees.CtrCod" " FROM institutions,centres,degrees,courses,crs_usr,connected,usr_data"
" AND degrees.DegCod=courses.DegCod" " WHERE institutions.CtyCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod" " AND institutions.InsCod=centres.InsCod"
" AND crs_usr.UsrCod=connected.UsrCod" " AND centres.CtrCod=degrees.CtrCod"
" AND connected.UsrCod=usr_data.UsrCod", " AND degrees.DegCod=courses.DegCod"
Gbl.CurrentCty.Cty.CtyCod); " AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
Gbl.CurrentCty.Cty.CtyCod);
break; break;
case Sco_SCOPE_INS: // Show connected users in the current institution case Sco_SCOPE_INS: // Show connected users in the current institution
DB_BuildQuery ("SELECT COUNT(DISTINCT connected.UsrCod)," DB_QuerySELECT (&mysql_res,"can not get number"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)" " of connected users"
" FROM centres,degrees,courses,crs_usr,connected,usr_data" " who belong to this location",
" WHERE centres.InsCod=%ld" "SELECT COUNT(DISTINCT connected.UsrCod),"
" AND centres.CtrCod=degrees.CtrCod" "COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" AND degrees.DegCod=courses.DegCod" " FROM centres,degrees,courses,crs_usr,connected,usr_data"
" AND courses.CrsCod=crs_usr.CrsCod" " WHERE centres.InsCod=%ld"
" AND crs_usr.UsrCod=connected.UsrCod" " AND centres.CtrCod=degrees.CtrCod"
" AND connected.UsrCod=usr_data.UsrCod", " AND degrees.DegCod=courses.DegCod"
Gbl.CurrentIns.Ins.InsCod); " AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
Gbl.CurrentIns.Ins.InsCod);
break; break;
case Sco_SCOPE_CTR: // Show connected users in the current centre case Sco_SCOPE_CTR: // Show connected users in the current centre
DB_BuildQuery ("SELECT COUNT(DISTINCT connected.UsrCod)," DB_QuerySELECT (&mysql_res,"can not get number"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)" " of connected users"
" FROM degrees,courses,crs_usr,connected,usr_data" " who belong to this location",
" WHERE degrees.CtrCod=%ld" "SELECT COUNT(DISTINCT connected.UsrCod),"
" AND degrees.DegCod=courses.DegCod" "COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" AND courses.CrsCod=crs_usr.CrsCod" " FROM degrees,courses,crs_usr,connected,usr_data"
" AND crs_usr.UsrCod=connected.UsrCod" " WHERE degrees.CtrCod=%ld"
" AND connected.UsrCod=usr_data.UsrCod", " AND degrees.DegCod=courses.DegCod"
Gbl.CurrentCtr.Ctr.CtrCod); " AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
Gbl.CurrentCtr.Ctr.CtrCod);
break; break;
case Sco_SCOPE_DEG: // Show connected users in the current degree case Sco_SCOPE_DEG: // Show connected users in the current degree
DB_BuildQuery ("SELECT COUNT(DISTINCT connected.UsrCod)," DB_QuerySELECT (&mysql_res,"can not get number"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)" " of connected users"
" FROM courses,crs_usr,connected,usr_data" " who belong to this location",
" WHERE courses.DegCod=%ld" "SELECT COUNT(DISTINCT connected.UsrCod),"
" AND courses.CrsCod=crs_usr.CrsCod" "COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" AND crs_usr.UsrCod=connected.UsrCod" " FROM courses,crs_usr,connected,usr_data"
" AND connected.UsrCod=usr_data.UsrCod", " WHERE courses.DegCod=%ld"
Gbl.CurrentDeg.Deg.DegCod); " AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
Gbl.CurrentDeg.Deg.DegCod);
break; break;
case Sco_SCOPE_CRS: // Show connected users in the current course case Sco_SCOPE_CRS: // Show connected users in the current course
DB_BuildQuery ("SELECT COUNT(DISTINCT connected.UsrCod)," DB_QuerySELECT (&mysql_res,"can not get number"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)" " of connected users"
" FROM crs_usr,connected,usr_data" " who belong to this location",
" WHERE crs_usr.CrsCod=%ld" "SELECT COUNT(DISTINCT connected.UsrCod),"
" AND crs_usr.UsrCod=connected.UsrCod" "COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" AND connected.UsrCod=usr_data.UsrCod", " FROM crs_usr,connected,usr_data"
Gbl.CurrentCrs.Crs.CrsCod); " WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
Gbl.CurrentCrs.Crs.CrsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Lay_WrongScopeExit ();
@ -765,11 +783,14 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
} }
break; break;
case Rol_GST: case Rol_GST:
DB_BuildQuery ("SELECT COUNT(DISTINCT connected.UsrCod)," DB_QuerySELECT (&mysql_res,"can not get number"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)" " of connected users"
" FROM connected,usr_data" " who belong to this location",
" WHERE connected.UsrCod NOT IN (SELECT UsrCod FROM crs_usr)" "SELECT COUNT(DISTINCT connected.UsrCod),"
" AND connected.UsrCod=usr_data.UsrCod"); "COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM connected,usr_data"
" WHERE connected.UsrCod NOT IN (SELECT UsrCod FROM crs_usr)"
" AND connected.UsrCod=usr_data.UsrCod");
break; break;
case Rol_STD: case Rol_STD:
case Rol_NET: case Rol_NET:

View File

@ -27,6 +27,8 @@
/********************************* Headers ***********************************/ /********************************* Headers ***********************************/
/*****************************************************************************/ /*****************************************************************************/
#include <mysql/mysql.h> // To access MySQL databases
#include "swad_action.h" #include "swad_action.h"
#include "swad_constant.h" #include "swad_constant.h"
#include "swad_hierarchy.h" #include "swad_hierarchy.h"

View File

@ -269,30 +269,39 @@ void Hld_GetListHolidays (void)
sprintf (OrderBySubQuery,"StartDate,Place"); sprintf (OrderBySubQuery,"StartDate,Place");
break; break;
} }
DB_BuildQuery ("(SELECT holidays.HldCod,holidays.PlcCod," Gbl.Hlds.Num =
"places.FullName as Place,HldTyp," (unsigned) DB_QuerySELECT (&mysql_res,"can not get holidays",
"DATE_FORMAT(holidays.StartDate,'%%Y%%m%%d') AS StartDate," "(SELECT holidays.HldCod,"
"DATE_FORMAT(holidays.EndDate,'%%Y%%m%%d') AS EndDate," "holidays.PlcCod,"
"holidays.Name" "places.FullName as Place,"
" FROM holidays,places" "holidays.HldTyp,"
" WHERE holidays.InsCod=%ld" "DATE_FORMAT(holidays.StartDate,'%%Y%%m%%d') AS StartDate,"
" AND holidays.PlcCod=places.PlcCod" "DATE_FORMAT(holidays.EndDate,'%%Y%%m%%d') AS EndDate,"
" AND places.InsCod=%ld)" "holidays.Name"
" UNION " " FROM holidays,places"
"(SELECT HldCod,PlcCod,'' as Place,HldTyp," " WHERE holidays.InsCod=%ld"
"DATE_FORMAT(StartDate,'%%Y%%m%%d') AS StartDate," " AND holidays.PlcCod=places.PlcCod"
"DATE_FORMAT(EndDate,'%%Y%%m%%d') AS EndDate,Name" " AND places.InsCod=%ld)"
" FROM holidays" " UNION "
" WHERE InsCod=%ld" "(SELECT HldCod,"
" AND PlcCod NOT IN" "PlcCod,"
"(SELECT DISTINCT PlcCod FROM places WHERE InsCod=%ld))" "'' as Place,"
" ORDER BY %s", "HldTyp,"
Gbl.CurrentIns.Ins.InsCod, "DATE_FORMAT(StartDate,'%%Y%%m%%d') AS StartDate,"
Gbl.CurrentIns.Ins.InsCod, "DATE_FORMAT(EndDate,'%%Y%%m%%d') AS EndDate,"
Gbl.CurrentIns.Ins.InsCod, "Name"
Gbl.CurrentIns.Ins.InsCod, " FROM holidays"
OrderBySubQuery); " WHERE InsCod=%ld"
if ((Gbl.Hlds.Num = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get holidays"))) // Holidays found... " AND PlcCod NOT IN"
"(SELECT DISTINCT PlcCod FROM places"
" WHERE InsCod=%ld))"
" ORDER BY %s",
Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentIns.Ins.InsCod,
OrderBySubQuery);
if (Gbl.Hlds.Num) // Holidays found...
{ {
/***** Create list of holidays *****/ /***** Create list of holidays *****/
if ((Gbl.Hlds.Lst = (struct Holiday *) calloc ((size_t) Gbl.Hlds.Num,sizeof (struct Holiday))) == NULL) if ((Gbl.Hlds.Lst = (struct Holiday *) calloc ((size_t) Gbl.Hlds.Num,sizeof (struct Holiday))) == NULL)
@ -375,30 +384,37 @@ static void Hld_GetDataOfHolidayByCod (struct Holiday *Hld)
Lay_ShowErrorAndExit ("Wrong code of holiday."); Lay_ShowErrorAndExit ("Wrong code of holiday.");
/***** Get data of holiday from database *****/ /***** Get data of holiday from database *****/
DB_BuildQuery ("(SELECT holidays.PlcCod,places.FullName as Place,HldTyp," if (DB_QuerySELECT (&mysql_res,"can not get data of a holiday",
"DATE_FORMAT(holidays.StartDate,'%%Y%%m%%d')," "(SELECT holidays.PlcCod,"
"DATE_FORMAT(holidays.EndDate,'%%Y%%m%%d'),holidays.Name" "places.FullName as Place,"
" FROM holidays,places" "holidays.HldTyp,"
" WHERE holidays.HldCod=%ld" "DATE_FORMAT(holidays.StartDate,'%%Y%%m%%d'),"
" AND holidays.InsCod=%ld" "DATE_FORMAT(holidays.EndDate,'%%Y%%m%%d'),"
" AND holidays.PlcCod=places.PlcCod" "holidays.Name"
" AND places.InsCod=%ld)" " FROM holidays,places"
" UNION " " WHERE holidays.HldCod=%ld"
"(SELECT PlcCod,'' as Place,HldTyp," " AND holidays.InsCod=%ld"
"DATE_FORMAT(StartDate,'%%Y%%m%%d')," " AND holidays.PlcCod=places.PlcCod"
"DATE_FORMAT(EndDate,'%%Y%%m%%d'),Name" " AND places.InsCod=%ld)"
" FROM holidays" " UNION "
" WHERE HldCod=%ld" "(SELECT PlcCod,"
" AND InsCod=%ld" "'' as Place,"
" AND PlcCod NOT IN" "HldTyp,"
"(SELECT DISTINCT PlcCod FROM places WHERE InsCod=%ld))", "DATE_FORMAT(StartDate,'%%Y%%m%%d'),"
Hld->HldCod, "DATE_FORMAT(EndDate,'%%Y%%m%%d'),"
Gbl.CurrentIns.Ins.InsCod, "Name"
Gbl.CurrentIns.Ins.InsCod, " FROM holidays"
Hld->HldCod, " WHERE HldCod=%ld"
Gbl.CurrentIns.Ins.InsCod, " AND InsCod=%ld"
Gbl.CurrentIns.Ins.InsCod); " AND PlcCod NOT IN"
if (DB_QuerySELECT_new (&mysql_res,"can not get data of a holiday")) // Holiday found... "(SELECT DISTINCT PlcCod FROM places"
" WHERE InsCod=%ld))",
Hld->HldCod,
Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentIns.Ins.InsCod,
Hld->HldCod,
Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentIns.Ins.InsCod)) // Holiday found...
{ {
/* Get row */ /* Get row */
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);

View File

@ -327,176 +327,206 @@ static void Ind_GetParamNumIndicators (void)
static unsigned Ind_GetTableOfCourses (MYSQL_RES **mysql_res) static unsigned Ind_GetTableOfCourses (MYSQL_RES **mysql_res)
{ {
unsigned NumCrss = 0; // Initialized to avoid warning
switch (Gbl.Scope.Current) switch (Gbl.Scope.Current)
{ {
case Sco_SCOPE_SYS: case Sco_SCOPE_SYS:
if (Gbl.Stat.DptCod >= 0) // 0 means another department if (Gbl.Stat.DptCod >= 0) // 0 means another department
{ {
if (Gbl.Stat.DegTypCod > 0) if (Gbl.Stat.DegTypCod > 0)
DB_BuildQuery ("SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM degrees,courses,crs_usr,usr_data" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE degrees.DegTypCod=%ld" "SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" AND degrees.DegCod=courses.DegCod" " FROM degrees,courses,crs_usr,usr_data"
" AND courses.CrsCod=crs_usr.CrsCod" " WHERE degrees.DegTypCod=%ld"
" AND crs_usr.Role=%u" " AND degrees.DegCod=courses.DegCod"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND courses.CrsCod=crs_usr.CrsCod"
" AND usr_data.DptCod=%ld" " AND crs_usr.Role=%u"
" ORDER BY degrees.FullName,courses.FullName", " AND crs_usr.UsrCod=usr_data.UsrCod"
Gbl.Stat.DegTypCod, " AND usr_data.DptCod=%ld"
(unsigned) Rol_TCH, " ORDER BY degrees.FullName,courses.FullName",
Gbl.Stat.DptCod); Gbl.Stat.DegTypCod,
(unsigned) Rol_TCH,
Gbl.Stat.DptCod);
else else
DB_BuildQuery ("SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM degrees,courses,crs_usr,usr_data" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE degrees.DegCod=courses.DegCod" "SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" AND courses.CrsCod=crs_usr.CrsCod" " FROM degrees,courses,crs_usr,usr_data"
" AND crs_usr.Role=%u" " WHERE degrees.DegCod=courses.DegCod"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND courses.CrsCod=crs_usr.CrsCod"
" AND usr_data.DptCod=%ld" " AND crs_usr.Role=%u"
" ORDER BY degrees.FullName,courses.FullName", " AND crs_usr.UsrCod=usr_data.UsrCod"
(unsigned) Rol_TCH, " AND usr_data.DptCod=%ld"
Gbl.Stat.DptCod); " ORDER BY degrees.FullName,courses.FullName",
(unsigned) Rol_TCH,
Gbl.Stat.DptCod);
} }
else else
{ {
if (Gbl.Stat.DegTypCod > 0) if (Gbl.Stat.DegTypCod > 0)
DB_BuildQuery ("SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM degrees,courses" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE degrees.DegTypCod=%ld" "SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" AND degrees.DegCod=courses.DegCod" " FROM degrees,courses"
" ORDER BY degrees.FullName,courses.FullName", " WHERE degrees.DegTypCod=%ld"
Gbl.Stat.DegTypCod); " AND degrees.DegCod=courses.DegCod"
" ORDER BY degrees.FullName,courses.FullName",
Gbl.Stat.DegTypCod);
else else
DB_BuildQuery ("SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM degrees,courses" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE degrees.DegCod=courses.DegCod" "SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" ORDER BY degrees.FullName,courses.FullName"); " FROM degrees,courses"
" WHERE degrees.DegCod=courses.DegCod"
" ORDER BY degrees.FullName,courses.FullName");
} }
break; break;
case Sco_SCOPE_CTY: case Sco_SCOPE_CTY:
if (Gbl.Stat.DptCod >= 0) // 0 means another department if (Gbl.Stat.DptCod >= 0) // 0 means another department
DB_BuildQuery ("SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM institutions,centres,degrees,courses,crs_usr,usr_data" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE institutions.CtyCod=%ld" "SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" AND institutions.InsCod=centres.InsCod" " FROM institutions,centres,degrees,courses,crs_usr,usr_data"
" AND centres.CtrCod=degrees.CtrCod" " WHERE institutions.CtyCod=%ld"
" AND degrees.DegCod=courses.DegCod" " AND institutions.InsCod=centres.InsCod"
" AND courses.CrsCod=crs_usr.CrsCod" " AND centres.CtrCod=degrees.CtrCod"
" AND crs_usr.Role=%u" " AND degrees.DegCod=courses.DegCod"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND courses.CrsCod=crs_usr.CrsCod"
" AND usr_data.DptCod=%ld" " AND crs_usr.Role=%u"
" ORDER BY degrees.FullName,courses.FullName", " AND crs_usr.UsrCod=usr_data.UsrCod"
Gbl.CurrentCty.Cty.CtyCod, " AND usr_data.DptCod=%ld"
(unsigned) Rol_TCH, " ORDER BY degrees.FullName,courses.FullName",
Gbl.Stat.DptCod); Gbl.CurrentCty.Cty.CtyCod,
(unsigned) Rol_TCH,
Gbl.Stat.DptCod);
else else
DB_BuildQuery ("SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM institutions,centres,degrees,courses" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE institutions.CtyCod=%ld" "SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" AND institutions.InsCod=centres.InsCod" " FROM institutions,centres,degrees,courses"
" AND centres.CtrCod=degrees.CtrCod" " WHERE institutions.CtyCod=%ld"
" AND degrees.DegCod=courses.DegCod" " AND institutions.InsCod=centres.InsCod"
" ORDER BY degrees.FullName,courses.FullName", " AND centres.CtrCod=degrees.CtrCod"
Gbl.CurrentCty.Cty.CtyCod); " AND degrees.DegCod=courses.DegCod"
" ORDER BY degrees.FullName,courses.FullName",
Gbl.CurrentCty.Cty.CtyCod);
break; break;
case Sco_SCOPE_INS: case Sco_SCOPE_INS:
if (Gbl.Stat.DptCod >= 0) // 0 means another department if (Gbl.Stat.DptCod >= 0) // 0 means another department
DB_BuildQuery ("SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM centres,degrees,courses,crs_usr,usr_data" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE centres.InsCod=%ld" "SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" AND centres.CtrCod=degrees.CtrCod" " FROM centres,degrees,courses,crs_usr,usr_data"
" AND degrees.DegCod=courses.DegCod" " WHERE centres.InsCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod" " AND centres.CtrCod=degrees.CtrCod"
" AND crs_usr.Role=%u" " AND degrees.DegCod=courses.DegCod"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND courses.CrsCod=crs_usr.CrsCod"
" AND usr_data.DptCod=%ld" " AND crs_usr.Role=%u"
" ORDER BY degrees.FullName,courses.FullName", " AND crs_usr.UsrCod=usr_data.UsrCod"
Gbl.CurrentIns.Ins.InsCod, " AND usr_data.DptCod=%ld"
(unsigned) Rol_TCH, " ORDER BY degrees.FullName,courses.FullName",
Gbl.Stat.DptCod); Gbl.CurrentIns.Ins.InsCod,
(unsigned) Rol_TCH,
Gbl.Stat.DptCod);
else else
DB_BuildQuery ("SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM centres,degrees,courses" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE centres.InsCod=%ld" "SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" AND centres.CtrCod=degrees.CtrCod" " FROM centres,degrees,courses"
" AND degrees.DegCod=courses.DegCod" " WHERE centres.InsCod=%ld"
" ORDER BY degrees.FullName,courses.FullName", " AND centres.CtrCod=degrees.CtrCod"
Gbl.CurrentIns.Ins.InsCod); " AND degrees.DegCod=courses.DegCod"
" ORDER BY degrees.FullName,courses.FullName",
Gbl.CurrentIns.Ins.InsCod);
break; break;
case Sco_SCOPE_CTR: case Sco_SCOPE_CTR:
if (Gbl.Stat.DptCod >= 0) // 0 means another department if (Gbl.Stat.DptCod >= 0) // 0 means another department
DB_BuildQuery ("SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM degrees,courses,crs_usr,usr_data" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE degrees.CtrCod=%ld" "SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" AND degrees.DegCod=courses.DegCod" " FROM degrees,courses,crs_usr,usr_data"
" AND courses.CrsCod=crs_usr.CrsCod" " WHERE degrees.CtrCod=%ld"
" AND crs_usr.Role=%u" " AND degrees.DegCod=courses.DegCod"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND courses.CrsCod=crs_usr.CrsCod"
" AND usr_data.DptCod=%ld" " AND crs_usr.Role=%u"
" ORDER BY degrees.FullName,courses.FullName", " AND crs_usr.UsrCod=usr_data.UsrCod"
Gbl.CurrentCtr.Ctr.CtrCod, " AND usr_data.DptCod=%ld"
(unsigned) Rol_TCH, " ORDER BY degrees.FullName,courses.FullName",
Gbl.Stat.DptCod); Gbl.CurrentCtr.Ctr.CtrCod,
(unsigned) Rol_TCH,
Gbl.Stat.DptCod);
else else
DB_BuildQuery ("SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM degrees,courses" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE degrees.CtrCod=%ld" "SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" AND degrees.DegCod=courses.DegCod" " FROM degrees,courses"
" ORDER BY degrees.FullName,courses.FullName", " WHERE degrees.CtrCod=%ld"
Gbl.CurrentCtr.Ctr.CtrCod); " AND degrees.DegCod=courses.DegCod"
" ORDER BY degrees.FullName,courses.FullName",
Gbl.CurrentCtr.Ctr.CtrCod);
break; break;
case Sco_SCOPE_DEG: case Sco_SCOPE_DEG:
if (Gbl.Stat.DptCod >= 0) // 0 means another department if (Gbl.Stat.DptCod >= 0) // 0 means another department
DB_BuildQuery ("SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM degrees,courses,crs_usr,usr_data" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE degrees.DegCod=%ld" "SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" AND degrees.DegCod=courses.DegCod" " FROM degrees,courses,crs_usr,usr_data"
" AND courses.CrsCod=crs_usr.CrsCod" " WHERE degrees.DegCod=%ld"
" AND crs_usr.Role=%u" " AND degrees.DegCod=courses.DegCod"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND courses.CrsCod=crs_usr.CrsCod"
" AND usr_data.DptCod=%ld" " AND crs_usr.Role=%u"
" ORDER BY degrees.FullName,courses.FullName", " AND crs_usr.UsrCod=usr_data.UsrCod"
Gbl.CurrentDeg.Deg.DegCod, " AND usr_data.DptCod=%ld"
(unsigned) Rol_TCH, " ORDER BY degrees.FullName,courses.FullName",
Gbl.Stat.DptCod); Gbl.CurrentDeg.Deg.DegCod,
(unsigned) Rol_TCH,
Gbl.Stat.DptCod);
else else
DB_BuildQuery ("SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM degrees,courses" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE degrees.DegCod=%ld" "SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" AND degrees.DegCod=courses.DegCod" " FROM degrees,courses"
" ORDER BY degrees.FullName,courses.FullName", " WHERE degrees.DegCod=%ld"
Gbl.CurrentDeg.Deg.DegCod); " AND degrees.DegCod=courses.DegCod"
" ORDER BY degrees.FullName,courses.FullName",
Gbl.CurrentDeg.Deg.DegCod);
break; break;
case Sco_SCOPE_CRS: case Sco_SCOPE_CRS:
if (Gbl.Stat.DptCod >= 0) // 0 means another department if (Gbl.Stat.DptCod >= 0) // 0 means another department
DB_BuildQuery ("SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM degrees,courses,crs_usr,usr_data" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE courses.CrsCod=%ld" "SELECT DISTINCTROW degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" AND degrees.DegCod=courses.DegCod" " FROM degrees,courses,crs_usr,usr_data"
" AND courses.CrsCod=crs_usr.CrsCod" " WHERE courses.CrsCod=%ld"
" AND crs_usr.CrsCod=%ld" " AND degrees.DegCod=courses.DegCod"
" AND crs_usr.Role=%u" " AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod" " AND crs_usr.CrsCod=%ld"
" AND usr_data.DptCod=%ld" " AND crs_usr.Role=%u"
" ORDER BY degrees.FullName,courses.FullName", " AND crs_usr.UsrCod=usr_data.UsrCod"
Gbl.CurrentCrs.Crs.CrsCod, " AND usr_data.DptCod=%ld"
Gbl.CurrentCrs.Crs.CrsCod, " ORDER BY degrees.FullName,courses.FullName",
(unsigned) Rol_TCH, Gbl.CurrentCrs.Crs.CrsCod,
Gbl.Stat.DptCod); Gbl.CurrentCrs.Crs.CrsCod,
(unsigned) Rol_TCH,
Gbl.Stat.DptCod);
else else
DB_BuildQuery ("SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod" NumCrss =
" FROM degrees,courses" (unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
" WHERE courses.CrsCod=%ld" "SELECT degrees.FullName,courses.FullName,courses.CrsCod,courses.InsCrsCod"
" AND degrees.DegCod=courses.DegCod" " FROM degrees,courses"
" ORDER BY degrees.FullName,courses.FullName", " WHERE courses.CrsCod=%ld"
Gbl.CurrentCrs.Crs.CrsCod); " AND degrees.DegCod=courses.DegCod"
" ORDER BY degrees.FullName,courses.FullName",
Gbl.CurrentCrs.Crs.CrsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Lay_WrongScopeExit ();
break; break;
} }
return (unsigned) DB_QuerySELECT_new (mysql_res,"can not get courses"); return NumCrss;
} }
/*****************************************************************************/ /*****************************************************************************/