mirror of https://github.com/acanas/swad-core.git
Version 16.220.12
This commit is contained in:
parent
a49cf929dc
commit
5d92078a14
|
@ -233,13 +233,14 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 16.220.11 (2017-05-22)"
|
#define Log_PLATFORM_VERSION "SWAD 16.220.12 (2017-05-22)"
|
||||||
#define CSS_FILE "swad16.209.3.css"
|
#define CSS_FILE "swad16.209.3.css"
|
||||||
#define JS_FILE "swad16.206.3.js"
|
#define JS_FILE "swad16.206.3.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 16.220.12:May 22, 2017 Changes related with new role. Not finished. (220155 lines)
|
||||||
Version 16.220.11:May 22, 2017 Changes related with new role. Not finished. (220019 lines)
|
Version 16.220.11:May 22, 2017 Changes related with new role. Not finished. (220019 lines)
|
||||||
Version 16.220.10:May 22, 2017 Changes related with new role. Not finished. (219775 lines)
|
Version 16.220.10:May 22, 2017 Changes related with new role. Not finished. (219775 lines)
|
||||||
Version 16.220.9: May 22, 2017 Changes related with new role. Not finished. (219720 lines)
|
Version 16.220.9: May 22, 2017 Changes related with new role. Not finished. (219720 lines)
|
||||||
|
|
|
@ -927,7 +927,7 @@ static void Rep_GetMaxHitsPerYear (struct Rep_Report *Report)
|
||||||
" GROUP BY Year"
|
" GROUP BY Year"
|
||||||
// ----------------------------------------------------------
|
// ----------------------------------------------------------
|
||||||
" UNION "
|
" UNION "
|
||||||
// Clicks as student or teacher in courses ------------------
|
// Clicks as student, non-editing teacher or teacher in courses
|
||||||
"SELECT "
|
"SELECT "
|
||||||
"CrsCod,"
|
"CrsCod,"
|
||||||
"YEAR(CONVERT_TZ(ClickTime,@@session.time_zone,'UTC')) AS Year,"
|
"YEAR(CONVERT_TZ(ClickTime,@@session.time_zone,'UTC')) AS Year,"
|
||||||
|
@ -1171,8 +1171,11 @@ static void Rep_WriteRowCrsData (long CrsCod,Rol_Role_t Role,
|
||||||
/***** Write number of teachers / students in course *****/
|
/***** Write number of teachers / students in course *****/
|
||||||
if (WriteNumUsrs)
|
if (WriteNumUsrs)
|
||||||
fprintf (Gbl.F.Rep," (%u %s / %u %s)",
|
fprintf (Gbl.F.Rep," (%u %s / %u %s)",
|
||||||
Usr_GetNumUsrsInCrs (Rol_TCH,Crs.CrsCod),Txt_teachers_ABBREVIATION,
|
Usr_GetNumUsrsInCrs (Rol_NET,Crs.CrsCod) +
|
||||||
Usr_GetNumUsrsInCrs (Rol_STD,Crs.CrsCod),Txt_students_ABBREVIATION);
|
Usr_GetNumUsrsInCrs (Rol_TCH,Crs.CrsCod),
|
||||||
|
Txt_teachers_ABBREVIATION,
|
||||||
|
Usr_GetNumUsrsInCrs (Rol_STD,Crs.CrsCod),
|
||||||
|
Txt_students_ABBREVIATION);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
fprintf (Gbl.F.Rep,"(%s)",Txt_unknown_removed_course);
|
fprintf (Gbl.F.Rep,"(%s)",Txt_unknown_removed_course);
|
||||||
|
|
|
@ -86,7 +86,11 @@ Rol_Role_t Rol_GetMaxRoleInCrss (unsigned Roles)
|
||||||
if (Roles & (1 << Rol_TCH))
|
if (Roles & (1 << Rol_TCH))
|
||||||
return Rol_TCH;
|
return Rol_TCH;
|
||||||
|
|
||||||
/* Not a teacher. Check then if user is a student in any course */
|
/* Not a teacher. Check then if user is a non-editing teacher in any course */
|
||||||
|
if (Roles & (1 << Rol_NET))
|
||||||
|
return Rol_NET;
|
||||||
|
|
||||||
|
/* Not a non-editing teacher or a teacher. Check then if user is a student in any course */
|
||||||
if (Roles & (1 << Rol_STD))
|
if (Roles & (1 << Rol_STD))
|
||||||
return Rol_STD;
|
return Rol_STD;
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
Don't change these numbers!
|
Don't change these numbers!
|
||||||
They are used for users' permissions and for user's types in database
|
They are used for users' permissions and for user's types in database
|
||||||
|
|
||||||
Only Rol_STD and Rol_TCH are allowed
|
Only Rol_STD, Rol_NET and Rol_TCH are allowed
|
||||||
as user permanent roles in courses,
|
as user permanent roles in courses,
|
||||||
but a user may be logged temporarily as other roles
|
but a user may be logged temporarily as other roles
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -274,6 +274,7 @@ void Sco_SetScopesForListingStudents (void)
|
||||||
switch (Gbl.Usrs.Me.LoggedRole)
|
switch (Gbl.Usrs.Me.LoggedRole)
|
||||||
{
|
{
|
||||||
case Rol_STD:
|
case Rol_STD:
|
||||||
|
case Rol_NET:
|
||||||
case Rol_TCH:
|
case Rol_TCH:
|
||||||
Gbl.Scope.Allowed = 1 << Sco_SCOPE_CRS;
|
Gbl.Scope.Allowed = 1 << Sco_SCOPE_CRS;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -595,7 +595,7 @@ static void Sch_SearchInDB (void)
|
||||||
NumResults += Sch_SearchCentresInDB (RangeQuery);
|
NumResults += Sch_SearchCentresInDB (RangeQuery);
|
||||||
NumResults += Sch_SearchDegreesInDB (RangeQuery);
|
NumResults += Sch_SearchDegreesInDB (RangeQuery);
|
||||||
NumResults += Sch_SearchCoursesInDB (RangeQuery);
|
NumResults += Sch_SearchCoursesInDB (RangeQuery);
|
||||||
NumResults += Sch_SearchUsrsInDB (Rol_TCH);
|
NumResults += Sch_SearchUsrsInDB (Rol_TCH); // Non-editing teachers and teachers
|
||||||
NumResults += Sch_SearchUsrsInDB (Rol_STD);
|
NumResults += Sch_SearchUsrsInDB (Rol_STD);
|
||||||
NumResults += Sch_SearchUsrsInDB (Rol_GST);
|
NumResults += Sch_SearchUsrsInDB (Rol_GST);
|
||||||
NumResults += Sch_SearchOpenDocumentsInDB (RangeQuery);
|
NumResults += Sch_SearchOpenDocumentsInDB (RangeQuery);
|
||||||
|
@ -621,7 +621,7 @@ static void Sch_SearchInDB (void)
|
||||||
NumResults = Sch_SearchUsrsInDB (Rol_UNK); // Here Rol_UNK means any user
|
NumResults = Sch_SearchUsrsInDB (Rol_UNK); // Here Rol_UNK means any user
|
||||||
break;
|
break;
|
||||||
case Sch_SEARCH_TEACHERS:
|
case Sch_SEARCH_TEACHERS:
|
||||||
NumResults = Sch_SearchUsrsInDB (Rol_TCH);
|
NumResults = Sch_SearchUsrsInDB (Rol_TCH); // Non-editing teachers and teachers
|
||||||
break;
|
break;
|
||||||
case Sch_SEARCH_STUDENTS:
|
case Sch_SEARCH_STUDENTS:
|
||||||
NumResults = Sch_SearchUsrsInDB (Rol_STD);
|
NumResults = Sch_SearchUsrsInDB (Rol_STD);
|
||||||
|
|
|
@ -133,10 +133,8 @@ static void Sta_WriteSelectorAction (void);
|
||||||
static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse);
|
static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse);
|
||||||
static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql_res);
|
static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql_res);
|
||||||
static void Sta_WriteLogComments (long LogCod);
|
static void Sta_WriteLogComments (long LogCod);
|
||||||
static void Sta_ShowNumHitsPerUsr (unsigned long NumRows,
|
static void Sta_ShowNumHitsPerUsr (unsigned long NumRows,MYSQL_RES *mysql_res);
|
||||||
MYSQL_RES *mysql_res);
|
static void Sta_ShowNumHitsPerDays (unsigned long NumRows,MYSQL_RES *mysql_res);
|
||||||
static void Sta_ShowNumHitsPerDays (unsigned long NumRows,
|
|
||||||
MYSQL_RES *mysql_res);
|
|
||||||
static void Sta_ShowDistrAccessesPerDaysAndHour (unsigned long NumRows,MYSQL_RES *mysql_res);
|
static void Sta_ShowDistrAccessesPerDaysAndHour (unsigned long NumRows,MYSQL_RES *mysql_res);
|
||||||
static Sta_ColorType_t Sta_GetStatColorType (void);
|
static Sta_ColorType_t Sta_GetStatColorType (void);
|
||||||
static void Sta_DrawBarColors (Sta_ColorType_t ColorType,float HitsMax);
|
static void Sta_DrawBarColors (Sta_ColorType_t ColorType,float HitsMax);
|
||||||
|
@ -463,10 +461,12 @@ void Sta_AskShowCrsHits (void)
|
||||||
Grp_GetParCodsSeveralGrpsToShowUsrs ();
|
Grp_GetParCodsSeveralGrpsToShowUsrs ();
|
||||||
|
|
||||||
/***** Get and order the lists of users of this course *****/
|
/***** Get and order the lists of users of this course *****/
|
||||||
Usr_GetListUsrs (Rol_TCH,Sco_SCOPE_CRS);
|
|
||||||
Usr_GetListUsrs (Rol_STD,Sco_SCOPE_CRS);
|
Usr_GetListUsrs (Rol_STD,Sco_SCOPE_CRS);
|
||||||
NumTotalUsrs = Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs +
|
Usr_GetListUsrs (Rol_NET,Sco_SCOPE_CRS);
|
||||||
Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs;
|
Usr_GetListUsrs (Rol_TCH,Sco_SCOPE_CRS);
|
||||||
|
NumTotalUsrs = Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs +
|
||||||
|
Gbl.Usrs.LstUsrs[Rol_NET].NumUsrs +
|
||||||
|
Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs;
|
||||||
|
|
||||||
/***** Start frame *****/
|
/***** Start frame *****/
|
||||||
sprintf (Gbl.Title,Txt_Statistics_of_visits_to_the_course_X,
|
sprintf (Gbl.Title,Txt_Statistics_of_visits_to_the_course_X,
|
||||||
|
@ -503,6 +503,7 @@ void Sta_AskShowCrsHits (void)
|
||||||
The_ClassForm[Gbl.Prefs.Theme],Txt_Users,
|
The_ClassForm[Gbl.Prefs.Theme],Txt_Users,
|
||||||
The_ClassForm[Gbl.Prefs.Theme]);
|
The_ClassForm[Gbl.Prefs.Theme]);
|
||||||
Usr_ListUsersToSelect (Rol_TCH);
|
Usr_ListUsersToSelect (Rol_TCH);
|
||||||
|
Usr_ListUsersToSelect (Rol_NET);
|
||||||
Usr_ListUsersToSelect (Rol_STD);
|
Usr_ListUsersToSelect (Rol_STD);
|
||||||
fprintf (Gbl.F.Out,"</table>"
|
fprintf (Gbl.F.Out,"</table>"
|
||||||
"</td>"
|
"</td>"
|
||||||
|
@ -608,6 +609,7 @@ void Sta_AskShowCrsHits (void)
|
||||||
|
|
||||||
/***** Free memory used by the lists *****/
|
/***** Free memory used by the lists *****/
|
||||||
Usr_FreeUsrsList (Rol_TCH);
|
Usr_FreeUsrsList (Rol_TCH);
|
||||||
|
Usr_FreeUsrsList (Rol_NET);
|
||||||
Usr_FreeUsrsList (Rol_STD);
|
Usr_FreeUsrsList (Rol_STD);
|
||||||
|
|
||||||
/***** Free memory for list of selected groups *****/
|
/***** Free memory for list of selected groups *****/
|
||||||
|
@ -1248,6 +1250,10 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
|
||||||
sprintf (StrRole," AND %s.Role=%u",
|
sprintf (StrRole," AND %s.Role=%u",
|
||||||
LogTable,(unsigned) Rol_TCH);
|
LogTable,(unsigned) Rol_TCH);
|
||||||
break;
|
break;
|
||||||
|
case Sta_NON_EDITING_TEACHERS:
|
||||||
|
sprintf (StrRole," AND %s.Role=%u",
|
||||||
|
LogTable,(unsigned) Rol_NET);
|
||||||
|
break;
|
||||||
case Sta_STUDENTS:
|
case Sta_STUDENTS:
|
||||||
sprintf (StrRole," AND %s.Role=%u",
|
sprintf (StrRole," AND %s.Role=%u",
|
||||||
LogTable,(unsigned) Rol_STD);
|
LogTable,(unsigned) Rol_STD);
|
||||||
|
@ -1833,8 +1839,7 @@ static void Sta_WriteLogComments (long LogCod)
|
||||||
/********* Show a listing of with the number of clicks of each user **********/
|
/********* Show a listing of with the number of clicks of each user **********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Sta_ShowNumHitsPerUsr (unsigned long NumRows,
|
static void Sta_ShowNumHitsPerUsr (unsigned long NumRows,MYSQL_RES *mysql_res)
|
||||||
MYSQL_RES *mysql_res)
|
|
||||||
{
|
{
|
||||||
extern const char *Txt_No_INDEX;
|
extern const char *Txt_No_INDEX;
|
||||||
extern const char *Txt_Photo;
|
extern const char *Txt_Photo;
|
||||||
|
@ -1949,8 +1954,8 @@ static void Sta_ShowNumHitsPerUsr (unsigned long NumRows,
|
||||||
" style=\"width:%upx; height:18px;\" />"
|
" style=\"width:%upx; height:18px;\" />"
|
||||||
" ",
|
" ",
|
||||||
Gbl.Prefs.IconsURL,
|
Gbl.Prefs.IconsURL,
|
||||||
UsrDat.RoleInCurrentCrsDB == Rol_STD ? 'c' :
|
UsrDat.RoleInCurrentCrsDB == Rol_STD ? 'c' : // Student
|
||||||
'v',
|
'v', // Non-editing teacher or teacher
|
||||||
BarWidth);
|
BarWidth);
|
||||||
Str_WriteFloatNum (Gbl.F.Out,Hits.Num);
|
Str_WriteFloatNum (Gbl.F.Out,Hits.Num);
|
||||||
fprintf (Gbl.F.Out," </td>"
|
fprintf (Gbl.F.Out," </td>"
|
||||||
|
@ -1965,8 +1970,7 @@ static void Sta_ShowNumHitsPerUsr (unsigned long NumRows,
|
||||||
/********** Show a listing of with the number of clicks in each date *********/
|
/********** Show a listing of with the number of clicks in each date *********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Sta_ShowNumHitsPerDays (unsigned long NumRows,
|
static void Sta_ShowNumHitsPerDays (unsigned long NumRows,MYSQL_RES *mysql_res)
|
||||||
MYSQL_RES *mysql_res)
|
|
||||||
{
|
{
|
||||||
extern const char *Txt_Date;
|
extern const char *Txt_Date;
|
||||||
extern const char *Txt_Day;
|
extern const char *Txt_Day;
|
||||||
|
@ -4070,8 +4074,9 @@ static void Sta_GetAndShowUsersStats (void)
|
||||||
Txt_Average_number_of_courses_to_which_a_user_belongs,
|
Txt_Average_number_of_courses_to_which_a_user_belongs,
|
||||||
Txt_Average_number_of_users_belonging_to_a_course);
|
Txt_Average_number_of_users_belonging_to_a_course);
|
||||||
Usr_GetAndShowNumUsrsInPlatform (Rol_STD); // Students
|
Usr_GetAndShowNumUsrsInPlatform (Rol_STD); // Students
|
||||||
|
Usr_GetAndShowNumUsrsInPlatform (Rol_NET); // Non-editing teachers
|
||||||
Usr_GetAndShowNumUsrsInPlatform (Rol_TCH); // Teachers
|
Usr_GetAndShowNumUsrsInPlatform (Rol_TCH); // Teachers
|
||||||
Usr_GetAndShowNumUsrsInPlatform (Rol_UNK); // Students and teachers
|
Usr_GetAndShowNumUsrsInPlatform (Rol_UNK); // Students, non-editing teachers and teachers
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<th colspan=\"4\" style=\"height:10px;\">"
|
"<th colspan=\"4\" style=\"height:10px;\">"
|
||||||
"</tr>");
|
"</tr>");
|
||||||
|
@ -4186,6 +4191,7 @@ static void Sta_WriteHeadDegsCrssInSWAD (void)
|
||||||
extern const char *Txt_With_degrees;
|
extern const char *Txt_With_degrees;
|
||||||
extern const char *Txt_With_courses;
|
extern const char *Txt_With_courses;
|
||||||
extern const char *Txt_With_teachers;
|
extern const char *Txt_With_teachers;
|
||||||
|
extern const char *Txt_With_non_editing_teachers;
|
||||||
extern const char *Txt_With_students;
|
extern const char *Txt_With_students;
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
@ -4211,6 +4217,9 @@ static void Sta_WriteHeadDegsCrssInSWAD (void)
|
||||||
"<th class=\"RIGHT_MIDDLE\">"
|
"<th class=\"RIGHT_MIDDLE\">"
|
||||||
"%s"
|
"%s"
|
||||||
"</th>"
|
"</th>"
|
||||||
|
"<th class=\"RIGHT_MIDDLE\">"
|
||||||
|
"%s"
|
||||||
|
"</th>"
|
||||||
"</tr>",
|
"</tr>",
|
||||||
Txt_Total,
|
Txt_Total,
|
||||||
Txt_With_institutions,
|
Txt_With_institutions,
|
||||||
|
@ -4218,6 +4227,7 @@ static void Sta_WriteHeadDegsCrssInSWAD (void)
|
||||||
Txt_With_degrees,
|
Txt_With_degrees,
|
||||||
Txt_With_courses,
|
Txt_With_courses,
|
||||||
Txt_With_teachers,
|
Txt_With_teachers,
|
||||||
|
Txt_With_non_editing_teachers,
|
||||||
Txt_With_students);
|
Txt_With_students);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4235,6 +4245,7 @@ static void Sta_GetAndShowNumCtysInSWAD (void)
|
||||||
unsigned NumCtysWithDegs = 0;
|
unsigned NumCtysWithDegs = 0;
|
||||||
unsigned NumCtysWithCrss = 0;
|
unsigned NumCtysWithCrss = 0;
|
||||||
unsigned NumCtysWithTchs = 0;
|
unsigned NumCtysWithTchs = 0;
|
||||||
|
unsigned NumCtysWithNETs = 0;
|
||||||
unsigned NumCtysWithStds = 0;
|
unsigned NumCtysWithStds = 0;
|
||||||
|
|
||||||
/***** Get number of countries *****/
|
/***** Get number of countries *****/
|
||||||
|
@ -4247,6 +4258,7 @@ static void Sta_GetAndShowNumCtysInSWAD (void)
|
||||||
NumCtysWithDegs = Cty_GetNumCtysWithDegs ("");
|
NumCtysWithDegs = Cty_GetNumCtysWithDegs ("");
|
||||||
NumCtysWithCrss = Cty_GetNumCtysWithCrss ("");
|
NumCtysWithCrss = Cty_GetNumCtysWithCrss ("");
|
||||||
NumCtysWithTchs = Cty_GetNumCtysWithUsrs (Rol_TCH,"");
|
NumCtysWithTchs = Cty_GetNumCtysWithUsrs (Rol_TCH,"");
|
||||||
|
NumCtysWithNETs = Cty_GetNumCtysWithUsrs (Rol_NET,"");
|
||||||
NumCtysWithStds = Cty_GetNumCtysWithUsrs (Rol_STD,"");
|
NumCtysWithStds = Cty_GetNumCtysWithUsrs (Rol_STD,"");
|
||||||
SubQuery[0] = '\0';
|
SubQuery[0] = '\0';
|
||||||
break;
|
break;
|
||||||
|
@ -4259,6 +4271,7 @@ static void Sta_GetAndShowNumCtysInSWAD (void)
|
||||||
NumCtysWithDegs = Cty_GetNumCtysWithDegs (SubQuery);
|
NumCtysWithDegs = Cty_GetNumCtysWithDegs (SubQuery);
|
||||||
NumCtysWithCrss = Cty_GetNumCtysWithCrss (SubQuery);
|
NumCtysWithCrss = Cty_GetNumCtysWithCrss (SubQuery);
|
||||||
NumCtysWithTchs = Cty_GetNumCtysWithUsrs (Rol_TCH,SubQuery);
|
NumCtysWithTchs = Cty_GetNumCtysWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCtysWithNETs = Cty_GetNumCtysWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCtysWithStds = Cty_GetNumCtysWithUsrs (Rol_STD,SubQuery);
|
NumCtysWithStds = Cty_GetNumCtysWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_INS:
|
case Sco_SCOPE_INS:
|
||||||
|
@ -4270,6 +4283,7 @@ static void Sta_GetAndShowNumCtysInSWAD (void)
|
||||||
NumCtysWithDegs = Cty_GetNumCtysWithDegs (SubQuery);
|
NumCtysWithDegs = Cty_GetNumCtysWithDegs (SubQuery);
|
||||||
NumCtysWithCrss = Cty_GetNumCtysWithCrss (SubQuery);
|
NumCtysWithCrss = Cty_GetNumCtysWithCrss (SubQuery);
|
||||||
NumCtysWithTchs = Cty_GetNumCtysWithUsrs (Rol_TCH,SubQuery);
|
NumCtysWithTchs = Cty_GetNumCtysWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCtysWithNETs = Cty_GetNumCtysWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCtysWithStds = Cty_GetNumCtysWithUsrs (Rol_STD,SubQuery);
|
NumCtysWithStds = Cty_GetNumCtysWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CTR:
|
case Sco_SCOPE_CTR:
|
||||||
|
@ -4281,6 +4295,7 @@ static void Sta_GetAndShowNumCtysInSWAD (void)
|
||||||
NumCtysWithDegs = Cty_GetNumCtysWithDegs (SubQuery);
|
NumCtysWithDegs = Cty_GetNumCtysWithDegs (SubQuery);
|
||||||
NumCtysWithCrss = Cty_GetNumCtysWithCrss (SubQuery);
|
NumCtysWithCrss = Cty_GetNumCtysWithCrss (SubQuery);
|
||||||
NumCtysWithTchs = Cty_GetNumCtysWithUsrs (Rol_TCH,SubQuery);
|
NumCtysWithTchs = Cty_GetNumCtysWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCtysWithNETs = Cty_GetNumCtysWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCtysWithStds = Cty_GetNumCtysWithUsrs (Rol_STD,SubQuery);
|
NumCtysWithStds = Cty_GetNumCtysWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_DEG:
|
case Sco_SCOPE_DEG:
|
||||||
|
@ -4292,6 +4307,7 @@ static void Sta_GetAndShowNumCtysInSWAD (void)
|
||||||
Gbl.CurrentDeg.Deg.DegCod);
|
Gbl.CurrentDeg.Deg.DegCod);
|
||||||
NumCtysWithCrss = Cty_GetNumCtysWithCrss (SubQuery);
|
NumCtysWithCrss = Cty_GetNumCtysWithCrss (SubQuery);
|
||||||
NumCtysWithTchs = Cty_GetNumCtysWithUsrs (Rol_TCH,SubQuery);
|
NumCtysWithTchs = Cty_GetNumCtysWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCtysWithNETs = Cty_GetNumCtysWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCtysWithStds = Cty_GetNumCtysWithUsrs (Rol_STD,SubQuery);
|
NumCtysWithStds = Cty_GetNumCtysWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CRS:
|
case Sco_SCOPE_CRS:
|
||||||
|
@ -4303,6 +4319,7 @@ static void Sta_GetAndShowNumCtysInSWAD (void)
|
||||||
sprintf (SubQuery,"crs_usr.CrsCod=%ld AND ",
|
sprintf (SubQuery,"crs_usr.CrsCod=%ld AND ",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod);
|
Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
NumCtysWithTchs = Cty_GetNumCtysWithUsrs (Rol_TCH,SubQuery);
|
NumCtysWithTchs = Cty_GetNumCtysWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCtysWithNETs = Cty_GetNumCtysWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCtysWithStds = Cty_GetNumCtysWithUsrs (Rol_STD,SubQuery);
|
NumCtysWithStds = Cty_GetNumCtysWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -4339,6 +4356,9 @@ static void Sta_GetAndShowNumCtysInSWAD (void)
|
||||||
"<td class=\"DAT RIGHT_MIDDLE\">"
|
"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||||
"%u"
|
"%u"
|
||||||
"</td>"
|
"</td>"
|
||||||
|
"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||||
|
"%u"
|
||||||
|
"</td>"
|
||||||
"</tr>",
|
"</tr>",
|
||||||
Gbl.Prefs.IconsURL,
|
Gbl.Prefs.IconsURL,
|
||||||
Txt_Countries,
|
Txt_Countries,
|
||||||
|
@ -4350,6 +4370,7 @@ static void Sta_GetAndShowNumCtysInSWAD (void)
|
||||||
NumCtysWithDegs,
|
NumCtysWithDegs,
|
||||||
NumCtysWithCrss,
|
NumCtysWithCrss,
|
||||||
NumCtysWithTchs,
|
NumCtysWithTchs,
|
||||||
|
NumCtysWithNETs,
|
||||||
NumCtysWithStds);
|
NumCtysWithStds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4366,6 +4387,7 @@ static void Sta_GetAndShowNumInssInSWAD (void)
|
||||||
unsigned NumInssWithDegs = 0;
|
unsigned NumInssWithDegs = 0;
|
||||||
unsigned NumInssWithCrss = 0;
|
unsigned NumInssWithCrss = 0;
|
||||||
unsigned NumInssWithTchs = 0;
|
unsigned NumInssWithTchs = 0;
|
||||||
|
unsigned NumInssWithNETs = 0;
|
||||||
unsigned NumInssWithStds = 0;
|
unsigned NumInssWithStds = 0;
|
||||||
|
|
||||||
/***** Get number of institutions *****/
|
/***** Get number of institutions *****/
|
||||||
|
@ -4377,6 +4399,7 @@ static void Sta_GetAndShowNumInssInSWAD (void)
|
||||||
NumInssWithDegs = Ins_GetNumInssWithDegs ("");
|
NumInssWithDegs = Ins_GetNumInssWithDegs ("");
|
||||||
NumInssWithCrss = Ins_GetNumInssWithCrss ("");
|
NumInssWithCrss = Ins_GetNumInssWithCrss ("");
|
||||||
NumInssWithTchs = Ins_GetNumInssWithUsrs (Rol_TCH,"");
|
NumInssWithTchs = Ins_GetNumInssWithUsrs (Rol_TCH,"");
|
||||||
|
NumInssWithNETs = Ins_GetNumInssWithUsrs (Rol_NET,"");
|
||||||
NumInssWithStds = Ins_GetNumInssWithUsrs (Rol_STD,"");
|
NumInssWithStds = Ins_GetNumInssWithUsrs (Rol_STD,"");
|
||||||
SubQuery[0] = '\0';
|
SubQuery[0] = '\0';
|
||||||
break;
|
break;
|
||||||
|
@ -4388,6 +4411,7 @@ static void Sta_GetAndShowNumInssInSWAD (void)
|
||||||
NumInssWithDegs = Ins_GetNumInssWithDegs (SubQuery);
|
NumInssWithDegs = Ins_GetNumInssWithDegs (SubQuery);
|
||||||
NumInssWithCrss = Ins_GetNumInssWithCrss (SubQuery);
|
NumInssWithCrss = Ins_GetNumInssWithCrss (SubQuery);
|
||||||
NumInssWithTchs = Ins_GetNumInssWithUsrs (Rol_TCH,SubQuery);
|
NumInssWithTchs = Ins_GetNumInssWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumInssWithNETs = Ins_GetNumInssWithUsrs (Rol_NET,SubQuery);
|
||||||
NumInssWithStds = Ins_GetNumInssWithUsrs (Rol_STD,SubQuery);
|
NumInssWithStds = Ins_GetNumInssWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_INS:
|
case Sco_SCOPE_INS:
|
||||||
|
@ -4398,6 +4422,7 @@ static void Sta_GetAndShowNumInssInSWAD (void)
|
||||||
NumInssWithDegs = Ins_GetNumInssWithDegs (SubQuery);
|
NumInssWithDegs = Ins_GetNumInssWithDegs (SubQuery);
|
||||||
NumInssWithCrss = Ins_GetNumInssWithCrss (SubQuery);
|
NumInssWithCrss = Ins_GetNumInssWithCrss (SubQuery);
|
||||||
NumInssWithTchs = Ins_GetNumInssWithUsrs (Rol_TCH,SubQuery);
|
NumInssWithTchs = Ins_GetNumInssWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumInssWithNETs = Ins_GetNumInssWithUsrs (Rol_NET,SubQuery);
|
||||||
NumInssWithStds = Ins_GetNumInssWithUsrs (Rol_STD,SubQuery);
|
NumInssWithStds = Ins_GetNumInssWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CTR:
|
case Sco_SCOPE_CTR:
|
||||||
|
@ -4408,6 +4433,7 @@ static void Sta_GetAndShowNumInssInSWAD (void)
|
||||||
NumInssWithDegs = Ins_GetNumInssWithDegs (SubQuery);
|
NumInssWithDegs = Ins_GetNumInssWithDegs (SubQuery);
|
||||||
NumInssWithCrss = Ins_GetNumInssWithCrss (SubQuery);
|
NumInssWithCrss = Ins_GetNumInssWithCrss (SubQuery);
|
||||||
NumInssWithTchs = Ins_GetNumInssWithUsrs (Rol_TCH,SubQuery);
|
NumInssWithTchs = Ins_GetNumInssWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumInssWithNETs = Ins_GetNumInssWithUsrs (Rol_NET,SubQuery);
|
||||||
NumInssWithStds = Ins_GetNumInssWithUsrs (Rol_STD,SubQuery);
|
NumInssWithStds = Ins_GetNumInssWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_DEG:
|
case Sco_SCOPE_DEG:
|
||||||
|
@ -4418,6 +4444,7 @@ static void Sta_GetAndShowNumInssInSWAD (void)
|
||||||
Gbl.CurrentDeg.Deg.DegCod);
|
Gbl.CurrentDeg.Deg.DegCod);
|
||||||
NumInssWithCrss = Ins_GetNumInssWithCrss (SubQuery);
|
NumInssWithCrss = Ins_GetNumInssWithCrss (SubQuery);
|
||||||
NumInssWithTchs = Ins_GetNumInssWithUsrs (Rol_TCH,SubQuery);
|
NumInssWithTchs = Ins_GetNumInssWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumInssWithNETs = Ins_GetNumInssWithUsrs (Rol_NET,SubQuery);
|
||||||
NumInssWithStds = Ins_GetNumInssWithUsrs (Rol_STD,SubQuery);
|
NumInssWithStds = Ins_GetNumInssWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CRS:
|
case Sco_SCOPE_CRS:
|
||||||
|
@ -4428,6 +4455,7 @@ static void Sta_GetAndShowNumInssInSWAD (void)
|
||||||
sprintf (SubQuery,"crs_usr.CrsCod=%ld AND ",
|
sprintf (SubQuery,"crs_usr.CrsCod=%ld AND ",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod);
|
Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
NumInssWithTchs = Ins_GetNumInssWithUsrs (Rol_TCH,SubQuery);
|
NumInssWithTchs = Ins_GetNumInssWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumInssWithNETs = Ins_GetNumInssWithUsrs (Rol_NET,SubQuery);
|
||||||
NumInssWithStds = Ins_GetNumInssWithUsrs (Rol_STD,SubQuery);
|
NumInssWithStds = Ins_GetNumInssWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -4462,6 +4490,9 @@ static void Sta_GetAndShowNumInssInSWAD (void)
|
||||||
"<td class=\"DAT RIGHT_MIDDLE\">"
|
"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||||
"%u"
|
"%u"
|
||||||
"</td>"
|
"</td>"
|
||||||
|
"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||||
|
"%u"
|
||||||
|
"</td>"
|
||||||
"</tr>",
|
"</tr>",
|
||||||
Gbl.Prefs.IconsURL,
|
Gbl.Prefs.IconsURL,
|
||||||
Txt_Institutions,
|
Txt_Institutions,
|
||||||
|
@ -4472,6 +4503,7 @@ static void Sta_GetAndShowNumInssInSWAD (void)
|
||||||
NumInssWithDegs,
|
NumInssWithDegs,
|
||||||
NumInssWithCrss,
|
NumInssWithCrss,
|
||||||
NumInssWithTchs,
|
NumInssWithTchs,
|
||||||
|
NumInssWithNETs,
|
||||||
NumInssWithStds);
|
NumInssWithStds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4487,6 +4519,7 @@ static void Sta_GetAndShowNumCtrsInSWAD (void)
|
||||||
unsigned NumCtrsWithDegs = 0;
|
unsigned NumCtrsWithDegs = 0;
|
||||||
unsigned NumCtrsWithCrss = 0;
|
unsigned NumCtrsWithCrss = 0;
|
||||||
unsigned NumCtrsWithTchs = 0;
|
unsigned NumCtrsWithTchs = 0;
|
||||||
|
unsigned NumCtrsWithNETs = 0;
|
||||||
unsigned NumCtrsWithStds = 0;
|
unsigned NumCtrsWithStds = 0;
|
||||||
|
|
||||||
/***** Get number of centres *****/
|
/***** Get number of centres *****/
|
||||||
|
@ -4497,6 +4530,7 @@ static void Sta_GetAndShowNumCtrsInSWAD (void)
|
||||||
NumCtrsWithDegs = Ctr_GetNumCtrsWithDegs ("");
|
NumCtrsWithDegs = Ctr_GetNumCtrsWithDegs ("");
|
||||||
NumCtrsWithCrss = Ctr_GetNumCtrsWithCrss ("");
|
NumCtrsWithCrss = Ctr_GetNumCtrsWithCrss ("");
|
||||||
NumCtrsWithTchs = Ctr_GetNumCtrsWithUsrs (Rol_TCH,"");
|
NumCtrsWithTchs = Ctr_GetNumCtrsWithUsrs (Rol_TCH,"");
|
||||||
|
NumCtrsWithNETs = Ctr_GetNumCtrsWithUsrs (Rol_NET,"");
|
||||||
NumCtrsWithStds = Ctr_GetNumCtrsWithUsrs (Rol_STD,"");
|
NumCtrsWithStds = Ctr_GetNumCtrsWithUsrs (Rol_STD,"");
|
||||||
SubQuery[0] = '\0';
|
SubQuery[0] = '\0';
|
||||||
break;
|
break;
|
||||||
|
@ -4507,6 +4541,7 @@ static void Sta_GetAndShowNumCtrsInSWAD (void)
|
||||||
NumCtrsWithDegs = Ctr_GetNumCtrsWithDegs (SubQuery);
|
NumCtrsWithDegs = Ctr_GetNumCtrsWithDegs (SubQuery);
|
||||||
NumCtrsWithCrss = Ctr_GetNumCtrsWithCrss (SubQuery);
|
NumCtrsWithCrss = Ctr_GetNumCtrsWithCrss (SubQuery);
|
||||||
NumCtrsWithTchs = Ctr_GetNumCtrsWithUsrs (Rol_TCH,SubQuery);
|
NumCtrsWithTchs = Ctr_GetNumCtrsWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCtrsWithNETs = Ctr_GetNumCtrsWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCtrsWithStds = Ctr_GetNumCtrsWithUsrs (Rol_STD,SubQuery);
|
NumCtrsWithStds = Ctr_GetNumCtrsWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_INS:
|
case Sco_SCOPE_INS:
|
||||||
|
@ -4516,6 +4551,7 @@ static void Sta_GetAndShowNumCtrsInSWAD (void)
|
||||||
NumCtrsWithDegs = Ctr_GetNumCtrsWithDegs (SubQuery);
|
NumCtrsWithDegs = Ctr_GetNumCtrsWithDegs (SubQuery);
|
||||||
NumCtrsWithCrss = Ctr_GetNumCtrsWithCrss (SubQuery);
|
NumCtrsWithCrss = Ctr_GetNumCtrsWithCrss (SubQuery);
|
||||||
NumCtrsWithTchs = Ctr_GetNumCtrsWithUsrs (Rol_TCH,SubQuery);
|
NumCtrsWithTchs = Ctr_GetNumCtrsWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCtrsWithNETs = Ctr_GetNumCtrsWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCtrsWithStds = Ctr_GetNumCtrsWithUsrs (Rol_STD,SubQuery);
|
NumCtrsWithStds = Ctr_GetNumCtrsWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CTR:
|
case Sco_SCOPE_CTR:
|
||||||
|
@ -4525,6 +4561,7 @@ static void Sta_GetAndShowNumCtrsInSWAD (void)
|
||||||
NumCtrsWithDegs = Ctr_GetNumCtrsWithDegs (SubQuery);
|
NumCtrsWithDegs = Ctr_GetNumCtrsWithDegs (SubQuery);
|
||||||
NumCtrsWithCrss = Ctr_GetNumCtrsWithCrss (SubQuery);
|
NumCtrsWithCrss = Ctr_GetNumCtrsWithCrss (SubQuery);
|
||||||
NumCtrsWithTchs = Ctr_GetNumCtrsWithUsrs (Rol_TCH,SubQuery);
|
NumCtrsWithTchs = Ctr_GetNumCtrsWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCtrsWithNETs = Ctr_GetNumCtrsWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCtrsWithStds = Ctr_GetNumCtrsWithUsrs (Rol_STD,SubQuery);
|
NumCtrsWithStds = Ctr_GetNumCtrsWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_DEG:
|
case Sco_SCOPE_DEG:
|
||||||
|
@ -4534,6 +4571,7 @@ static void Sta_GetAndShowNumCtrsInSWAD (void)
|
||||||
Gbl.CurrentDeg.Deg.DegCod);
|
Gbl.CurrentDeg.Deg.DegCod);
|
||||||
NumCtrsWithCrss = Ctr_GetNumCtrsWithCrss (SubQuery);
|
NumCtrsWithCrss = Ctr_GetNumCtrsWithCrss (SubQuery);
|
||||||
NumCtrsWithTchs = Ctr_GetNumCtrsWithUsrs (Rol_TCH,SubQuery);
|
NumCtrsWithTchs = Ctr_GetNumCtrsWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCtrsWithNETs = Ctr_GetNumCtrsWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCtrsWithStds = Ctr_GetNumCtrsWithUsrs (Rol_STD,SubQuery);
|
NumCtrsWithStds = Ctr_GetNumCtrsWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CRS:
|
case Sco_SCOPE_CRS:
|
||||||
|
@ -4543,6 +4581,7 @@ static void Sta_GetAndShowNumCtrsInSWAD (void)
|
||||||
sprintf (SubQuery,"crs_usr.CrsCod=%ld AND ",
|
sprintf (SubQuery,"crs_usr.CrsCod=%ld AND ",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod);
|
Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
NumCtrsWithTchs = Ctr_GetNumCtrsWithUsrs (Rol_TCH,SubQuery);
|
NumCtrsWithTchs = Ctr_GetNumCtrsWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCtrsWithNETs = Ctr_GetNumCtrsWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCtrsWithStds = Ctr_GetNumCtrsWithUsrs (Rol_STD,SubQuery);
|
NumCtrsWithStds = Ctr_GetNumCtrsWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -4575,6 +4614,9 @@ static void Sta_GetAndShowNumCtrsInSWAD (void)
|
||||||
"<td class=\"DAT RIGHT_MIDDLE\">"
|
"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||||
"%u"
|
"%u"
|
||||||
"</td>"
|
"</td>"
|
||||||
|
"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||||
|
"%u"
|
||||||
|
"</td>"
|
||||||
"</tr>",
|
"</tr>",
|
||||||
Gbl.Prefs.IconsURL,
|
Gbl.Prefs.IconsURL,
|
||||||
Txt_Centres,
|
Txt_Centres,
|
||||||
|
@ -4584,6 +4626,7 @@ static void Sta_GetAndShowNumCtrsInSWAD (void)
|
||||||
NumCtrsWithDegs,
|
NumCtrsWithDegs,
|
||||||
NumCtrsWithCrss,
|
NumCtrsWithCrss,
|
||||||
NumCtrsWithTchs,
|
NumCtrsWithTchs,
|
||||||
|
NumCtrsWithNETs,
|
||||||
NumCtrsWithStds);
|
NumCtrsWithStds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4598,6 +4641,7 @@ static void Sta_GetAndShowNumDegsInSWAD (void)
|
||||||
unsigned NumDegsTotal = 0;
|
unsigned NumDegsTotal = 0;
|
||||||
unsigned NumDegsWithCrss = 0;
|
unsigned NumDegsWithCrss = 0;
|
||||||
unsigned NumDegsWithTchs = 0;
|
unsigned NumDegsWithTchs = 0;
|
||||||
|
unsigned NumDegsWithNETs = 0;
|
||||||
unsigned NumDegsWithStds = 0;
|
unsigned NumDegsWithStds = 0;
|
||||||
|
|
||||||
/***** Get number of degrees *****/
|
/***** Get number of degrees *****/
|
||||||
|
@ -4607,6 +4651,7 @@ static void Sta_GetAndShowNumDegsInSWAD (void)
|
||||||
NumDegsTotal = Deg_GetNumDegsTotal ();
|
NumDegsTotal = Deg_GetNumDegsTotal ();
|
||||||
NumDegsWithCrss = Deg_GetNumDegsWithCrss ("");
|
NumDegsWithCrss = Deg_GetNumDegsWithCrss ("");
|
||||||
NumDegsWithTchs = Deg_GetNumDegsWithUsrs (Rol_TCH,"");
|
NumDegsWithTchs = Deg_GetNumDegsWithUsrs (Rol_TCH,"");
|
||||||
|
NumDegsWithNETs = Deg_GetNumDegsWithUsrs (Rol_NET,"");
|
||||||
NumDegsWithStds = Deg_GetNumDegsWithUsrs (Rol_STD,"");
|
NumDegsWithStds = Deg_GetNumDegsWithUsrs (Rol_STD,"");
|
||||||
SubQuery[0] = '\0';
|
SubQuery[0] = '\0';
|
||||||
break;
|
break;
|
||||||
|
@ -4616,6 +4661,7 @@ static void Sta_GetAndShowNumDegsInSWAD (void)
|
||||||
Gbl.CurrentCty.Cty.CtyCod);
|
Gbl.CurrentCty.Cty.CtyCod);
|
||||||
NumDegsWithCrss = Deg_GetNumDegsWithCrss (SubQuery);
|
NumDegsWithCrss = Deg_GetNumDegsWithCrss (SubQuery);
|
||||||
NumDegsWithTchs = Deg_GetNumDegsWithUsrs (Rol_TCH,SubQuery);
|
NumDegsWithTchs = Deg_GetNumDegsWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumDegsWithNETs = Deg_GetNumDegsWithUsrs (Rol_NET,SubQuery);
|
||||||
NumDegsWithStds = Deg_GetNumDegsWithUsrs (Rol_STD,SubQuery);
|
NumDegsWithStds = Deg_GetNumDegsWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_INS:
|
case Sco_SCOPE_INS:
|
||||||
|
@ -4624,6 +4670,7 @@ static void Sta_GetAndShowNumDegsInSWAD (void)
|
||||||
Gbl.CurrentIns.Ins.InsCod);
|
Gbl.CurrentIns.Ins.InsCod);
|
||||||
NumDegsWithCrss = Deg_GetNumDegsWithCrss (SubQuery);
|
NumDegsWithCrss = Deg_GetNumDegsWithCrss (SubQuery);
|
||||||
NumDegsWithTchs = Deg_GetNumDegsWithUsrs (Rol_TCH,SubQuery);
|
NumDegsWithTchs = Deg_GetNumDegsWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumDegsWithNETs = Deg_GetNumDegsWithUsrs (Rol_NET,SubQuery);
|
||||||
NumDegsWithStds = Deg_GetNumDegsWithUsrs (Rol_STD,SubQuery);
|
NumDegsWithStds = Deg_GetNumDegsWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CTR:
|
case Sco_SCOPE_CTR:
|
||||||
|
@ -4632,6 +4679,7 @@ static void Sta_GetAndShowNumDegsInSWAD (void)
|
||||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||||
NumDegsWithCrss = Deg_GetNumDegsWithCrss (SubQuery);
|
NumDegsWithCrss = Deg_GetNumDegsWithCrss (SubQuery);
|
||||||
NumDegsWithTchs = Deg_GetNumDegsWithUsrs (Rol_TCH,SubQuery);
|
NumDegsWithTchs = Deg_GetNumDegsWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumDegsWithNETs = Deg_GetNumDegsWithUsrs (Rol_NET,SubQuery);
|
||||||
NumDegsWithStds = Deg_GetNumDegsWithUsrs (Rol_STD,SubQuery);
|
NumDegsWithStds = Deg_GetNumDegsWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_DEG:
|
case Sco_SCOPE_DEG:
|
||||||
|
@ -4640,6 +4688,7 @@ static void Sta_GetAndShowNumDegsInSWAD (void)
|
||||||
Gbl.CurrentDeg.Deg.DegCod);
|
Gbl.CurrentDeg.Deg.DegCod);
|
||||||
NumDegsWithCrss = Deg_GetNumDegsWithCrss (SubQuery);
|
NumDegsWithCrss = Deg_GetNumDegsWithCrss (SubQuery);
|
||||||
NumDegsWithTchs = Deg_GetNumDegsWithUsrs (Rol_TCH,SubQuery);
|
NumDegsWithTchs = Deg_GetNumDegsWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumDegsWithNETs = Deg_GetNumDegsWithUsrs (Rol_NET,SubQuery);
|
||||||
NumDegsWithStds = Deg_GetNumDegsWithUsrs (Rol_STD,SubQuery);
|
NumDegsWithStds = Deg_GetNumDegsWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CRS:
|
case Sco_SCOPE_CRS:
|
||||||
|
@ -4648,6 +4697,7 @@ static void Sta_GetAndShowNumDegsInSWAD (void)
|
||||||
sprintf (SubQuery,"crs_usr.CrsCod=%ld AND ",
|
sprintf (SubQuery,"crs_usr.CrsCod=%ld AND ",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod);
|
Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
NumDegsWithTchs = Deg_GetNumDegsWithUsrs (Rol_TCH,SubQuery);
|
NumDegsWithTchs = Deg_GetNumDegsWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumDegsWithNETs = Deg_GetNumDegsWithUsrs (Rol_NET,SubQuery);
|
||||||
NumDegsWithStds = Deg_GetNumDegsWithUsrs (Rol_STD,SubQuery);
|
NumDegsWithStds = Deg_GetNumDegsWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -4678,6 +4728,9 @@ static void Sta_GetAndShowNumDegsInSWAD (void)
|
||||||
"<td class=\"DAT RIGHT_MIDDLE\">"
|
"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||||
"%u"
|
"%u"
|
||||||
"</td>"
|
"</td>"
|
||||||
|
"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||||
|
"%u"
|
||||||
|
"</td>"
|
||||||
"</tr>",
|
"</tr>",
|
||||||
Gbl.Prefs.IconsURL,
|
Gbl.Prefs.IconsURL,
|
||||||
Txt_Degrees,
|
Txt_Degrees,
|
||||||
|
@ -4686,6 +4739,7 @@ static void Sta_GetAndShowNumDegsInSWAD (void)
|
||||||
NumDegsTotal,
|
NumDegsTotal,
|
||||||
NumDegsWithCrss,
|
NumDegsWithCrss,
|
||||||
NumDegsWithTchs,
|
NumDegsWithTchs,
|
||||||
|
NumDegsWithNETs,
|
||||||
NumDegsWithStds);
|
NumDegsWithStds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4699,6 +4753,7 @@ static void Sta_GetAndShowNumCrssInSWAD (void)
|
||||||
char SubQuery[128];
|
char SubQuery[128];
|
||||||
unsigned NumCrssTotal = 0;
|
unsigned NumCrssTotal = 0;
|
||||||
unsigned NumCrssWithTchs = 0;
|
unsigned NumCrssWithTchs = 0;
|
||||||
|
unsigned NumCrssWithNETs = 0;
|
||||||
unsigned NumCrssWithStds = 0;
|
unsigned NumCrssWithStds = 0;
|
||||||
|
|
||||||
/***** Get number of courses *****/
|
/***** Get number of courses *****/
|
||||||
|
@ -4707,6 +4762,7 @@ static void Sta_GetAndShowNumCrssInSWAD (void)
|
||||||
case Sco_SCOPE_SYS:
|
case Sco_SCOPE_SYS:
|
||||||
NumCrssTotal = Crs_GetNumCrssTotal ();
|
NumCrssTotal = Crs_GetNumCrssTotal ();
|
||||||
NumCrssWithTchs = Crs_GetNumCrssWithUsrs (Rol_TCH,"");
|
NumCrssWithTchs = Crs_GetNumCrssWithUsrs (Rol_TCH,"");
|
||||||
|
NumCrssWithNETs = Crs_GetNumCrssWithUsrs (Rol_NET,"");
|
||||||
NumCrssWithStds = Crs_GetNumCrssWithUsrs (Rol_STD,"");
|
NumCrssWithStds = Crs_GetNumCrssWithUsrs (Rol_STD,"");
|
||||||
SubQuery[0] = '\0';
|
SubQuery[0] = '\0';
|
||||||
break;
|
break;
|
||||||
|
@ -4715,6 +4771,7 @@ static void Sta_GetAndShowNumCrssInSWAD (void)
|
||||||
sprintf (SubQuery,"institutions.CtyCod=%ld AND ",
|
sprintf (SubQuery,"institutions.CtyCod=%ld AND ",
|
||||||
Gbl.CurrentCty.Cty.CtyCod);
|
Gbl.CurrentCty.Cty.CtyCod);
|
||||||
NumCrssWithTchs = Crs_GetNumCrssWithUsrs (Rol_TCH,SubQuery);
|
NumCrssWithTchs = Crs_GetNumCrssWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCrssWithNETs = Crs_GetNumCrssWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCrssWithStds = Crs_GetNumCrssWithUsrs (Rol_STD,SubQuery);
|
NumCrssWithStds = Crs_GetNumCrssWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_INS:
|
case Sco_SCOPE_INS:
|
||||||
|
@ -4722,6 +4779,7 @@ static void Sta_GetAndShowNumCrssInSWAD (void)
|
||||||
sprintf (SubQuery,"centres.InsCod=%ld AND ",
|
sprintf (SubQuery,"centres.InsCod=%ld AND ",
|
||||||
Gbl.CurrentIns.Ins.InsCod);
|
Gbl.CurrentIns.Ins.InsCod);
|
||||||
NumCrssWithTchs = Crs_GetNumCrssWithUsrs (Rol_TCH,SubQuery);
|
NumCrssWithTchs = Crs_GetNumCrssWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCrssWithNETs = Crs_GetNumCrssWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCrssWithStds = Crs_GetNumCrssWithUsrs (Rol_STD,SubQuery);
|
NumCrssWithStds = Crs_GetNumCrssWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CTR:
|
case Sco_SCOPE_CTR:
|
||||||
|
@ -4729,6 +4787,7 @@ static void Sta_GetAndShowNumCrssInSWAD (void)
|
||||||
sprintf (SubQuery,"degrees.CtrCod=%ld AND ",
|
sprintf (SubQuery,"degrees.CtrCod=%ld AND ",
|
||||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||||
NumCrssWithTchs = Crs_GetNumCrssWithUsrs (Rol_TCH,SubQuery);
|
NumCrssWithTchs = Crs_GetNumCrssWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCrssWithNETs = Crs_GetNumCrssWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCrssWithStds = Crs_GetNumCrssWithUsrs (Rol_STD,SubQuery);
|
NumCrssWithStds = Crs_GetNumCrssWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_DEG:
|
case Sco_SCOPE_DEG:
|
||||||
|
@ -4736,6 +4795,7 @@ static void Sta_GetAndShowNumCrssInSWAD (void)
|
||||||
sprintf (SubQuery,"courses.DegCod=%ld AND ",
|
sprintf (SubQuery,"courses.DegCod=%ld AND ",
|
||||||
Gbl.CurrentDeg.Deg.DegCod);
|
Gbl.CurrentDeg.Deg.DegCod);
|
||||||
NumCrssWithTchs = Crs_GetNumCrssWithUsrs (Rol_TCH,SubQuery);
|
NumCrssWithTchs = Crs_GetNumCrssWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCrssWithNETs = Crs_GetNumCrssWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCrssWithStds = Crs_GetNumCrssWithUsrs (Rol_STD,SubQuery);
|
NumCrssWithStds = Crs_GetNumCrssWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CRS:
|
case Sco_SCOPE_CRS:
|
||||||
|
@ -4743,6 +4803,7 @@ static void Sta_GetAndShowNumCrssInSWAD (void)
|
||||||
sprintf (SubQuery,"crs_usr.CrsCod=%ld AND ",
|
sprintf (SubQuery,"crs_usr.CrsCod=%ld AND ",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod);
|
Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
NumCrssWithTchs = Crs_GetNumCrssWithUsrs (Rol_TCH,SubQuery);
|
NumCrssWithTchs = Crs_GetNumCrssWithUsrs (Rol_TCH,SubQuery);
|
||||||
|
NumCrssWithNETs = Crs_GetNumCrssWithUsrs (Rol_NET,SubQuery);
|
||||||
NumCrssWithStds = Crs_GetNumCrssWithUsrs (Rol_STD,SubQuery);
|
NumCrssWithStds = Crs_GetNumCrssWithUsrs (Rol_STD,SubQuery);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -4771,6 +4832,9 @@ static void Sta_GetAndShowNumCrssInSWAD (void)
|
||||||
"<td class=\"DAT RIGHT_MIDDLE\">"
|
"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||||
"%u"
|
"%u"
|
||||||
"</td>"
|
"</td>"
|
||||||
|
"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||||
|
"%u"
|
||||||
|
"</td>"
|
||||||
"</tr>",
|
"</tr>",
|
||||||
Gbl.Prefs.IconsURL,
|
Gbl.Prefs.IconsURL,
|
||||||
Txt_Courses,
|
Txt_Courses,
|
||||||
|
@ -4778,6 +4842,7 @@ static void Sta_GetAndShowNumCrssInSWAD (void)
|
||||||
Txt_Courses,
|
Txt_Courses,
|
||||||
NumCrssTotal,
|
NumCrssTotal,
|
||||||
NumCrssWithTchs,
|
NumCrssWithTchs,
|
||||||
|
NumCrssWithNETs,
|
||||||
NumCrssWithStds);
|
NumCrssWithStds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5271,7 +5336,7 @@ static unsigned Sta_GetTotalNumberOfUsersInPlatform (void)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************* Get total number of users in courses ********************/
|
/******************* Get total number of users in courses ********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// Here Rol_UNK means "students or teachers"
|
// Here Rol_UNK means "students, non-editing teachers or teachers"
|
||||||
|
|
||||||
unsigned Sta_GetTotalNumberOfUsersInCourses (Sco_Scope_t Scope,Rol_Role_t Role)
|
unsigned Sta_GetTotalNumberOfUsersInCourses (Sco_Scope_t Scope,Rol_Role_t Role)
|
||||||
{
|
{
|
||||||
|
|
|
@ -33,20 +33,21 @@
|
||||||
/************************** Public types and constants ***********************/
|
/************************** Public types and constants ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Sta_NUM_ROLES_STAT 11
|
#define Sta_NUM_ROLES_STAT 12
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Sta_IDENTIFIED_USRS = 0,
|
Sta_IDENTIFIED_USRS = 0,
|
||||||
Sta_ALL_USRS = 1,
|
Sta_ALL_USRS = 1,
|
||||||
Sta_INS_ADMINS = 2,
|
Sta_INS_ADMINS = 2,
|
||||||
Sta_CTR_ADMINS = 3,
|
Sta_CTR_ADMINS = 3,
|
||||||
Sta_DEG_ADMINS = 4,
|
Sta_DEG_ADMINS = 4,
|
||||||
Sta_TEACHERS = 5,
|
Sta_TEACHERS = 5,
|
||||||
Sta_STUDENTS = 6,
|
Sta_NON_EDITING_TEACHERS = 6,
|
||||||
Sta_VISITORS = 7,
|
Sta_STUDENTS = 7,
|
||||||
Sta_GUESTS = 8,
|
Sta_VISITORS = 8,
|
||||||
Sta_UNKNOWN_USRS = 9,
|
Sta_GUESTS = 9,
|
||||||
Sta_ME = 10,
|
Sta_UNKNOWN_USRS = 10,
|
||||||
|
Sta_ME = 11,
|
||||||
} Sta_Role_t;
|
} Sta_Role_t;
|
||||||
#define Sta_ROLE_DEFAULT Sta_IDENTIFIED_USRS
|
#define Sta_ROLE_DEFAULT Sta_IDENTIFIED_USRS
|
||||||
|
|
||||||
|
|
41
swad_text.c
41
swad_text.c
|
@ -32007,6 +32007,26 @@ const char *Txt_ROLE_STATS[Sta_NUM_ROLES_STAT] =
|
||||||
"nauczycieli"
|
"nauczycieli"
|
||||||
#elif L==9
|
#elif L==9
|
||||||
"professores"
|
"professores"
|
||||||
|
#endif
|
||||||
|
, // Sta_NON_EDITING_TEACHERS
|
||||||
|
#if L==1
|
||||||
|
"professors no editors"
|
||||||
|
#elif L==2
|
||||||
|
"nicht bearbeiteter Lehrkraft"
|
||||||
|
#elif L==3
|
||||||
|
"non-editing teachers"
|
||||||
|
#elif L==4
|
||||||
|
"profesores no editores"
|
||||||
|
#elif L==5
|
||||||
|
"enseignants non-éditeurs"
|
||||||
|
#elif L==6
|
||||||
|
"mbo'ehára no editores" // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"professori non-editing"
|
||||||
|
#elif L==8
|
||||||
|
"nauczyciele nie edytujący"
|
||||||
|
#elif L==9
|
||||||
|
"professores não editores"
|
||||||
#endif
|
#endif
|
||||||
, // Sta_STUDENTS
|
, // Sta_STUDENTS
|
||||||
#if L==1
|
#if L==1
|
||||||
|
@ -51423,6 +51443,27 @@ const char *Txt_with_new_posts =
|
||||||
"com novas posts";
|
"com novas posts";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_With_non_editing_teachers =
|
||||||
|
#if L==1
|
||||||
|
"Amb professors no editors";
|
||||||
|
#elif L==2
|
||||||
|
"Mit nicht bearbeiteter Lehrkräften";
|
||||||
|
#elif L==3
|
||||||
|
"With non-editing teachers";
|
||||||
|
#elif L==4
|
||||||
|
"Con profesores no editores";
|
||||||
|
#elif L==5
|
||||||
|
"Avec enseignants non-éditeurs";
|
||||||
|
#elif L==6
|
||||||
|
"Con profesores no editores"; // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"Con professori non-editing";
|
||||||
|
#elif L==8
|
||||||
|
"Z nauczycielami nie edytujący";
|
||||||
|
#elif L==9
|
||||||
|
"Com professores não editores";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_With_students =
|
const char *Txt_With_students =
|
||||||
#if L==1
|
#if L==1
|
||||||
"Amb estudiants";
|
"Amb estudiants";
|
||||||
|
|
79
swad_user.c
79
swad_user.c
|
@ -961,12 +961,12 @@ unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,
|
||||||
switch (UsrRole)
|
switch (UsrRole)
|
||||||
{
|
{
|
||||||
case Rol_STD: // Student
|
case Rol_STD: // Student
|
||||||
sprintf (SubQueryRole,"Role=%u",
|
sprintf (SubQueryRole," AND Role=%u",
|
||||||
(unsigned) Rol_STD);
|
(unsigned) Rol_STD);
|
||||||
break;
|
break;
|
||||||
case Rol_NET: // Non-editing teacher
|
case Rol_NET: // Non-editing teacher
|
||||||
case Rol_TCH: // or teacher
|
case Rol_TCH: // or teacher
|
||||||
sprintf (SubQueryRole,"(Role=%u OR Role=%u)",
|
sprintf (SubQueryRole," AND (Role=%u OR Role=%u)",
|
||||||
(unsigned) Rol_NET,(unsigned) Rol_TCH);
|
(unsigned) Rol_NET,(unsigned) Rol_TCH);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -978,7 +978,8 @@ unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,
|
||||||
" (CrsCod INT NOT NULL,UNIQUE INDEX (CrsCod))"
|
" (CrsCod INT NOT NULL,UNIQUE INDEX (CrsCod))"
|
||||||
" ENGINE=MEMORY"
|
" ENGINE=MEMORY"
|
||||||
" SELECT CrsCod FROM crs_usr"
|
" SELECT CrsCod FROM crs_usr"
|
||||||
" WHERE UsrCod=%ld AND %s",
|
" WHERE UsrCod=%ld"
|
||||||
|
"%s",
|
||||||
UsrCod,SubQueryRole);
|
UsrCod,SubQueryRole);
|
||||||
if (mysql_query (&Gbl.mysql,Query))
|
if (mysql_query (&Gbl.mysql,Query))
|
||||||
DB_ExitOnMySQLError ("can not create temporary table");
|
DB_ExitOnMySQLError ("can not create temporary table");
|
||||||
|
@ -987,12 +988,12 @@ unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,
|
||||||
switch (OthersRole)
|
switch (OthersRole)
|
||||||
{
|
{
|
||||||
case Rol_STD: // Student
|
case Rol_STD: // Student
|
||||||
sprintf (SubQueryRole,"crs_usr.Role=%u",
|
sprintf (SubQueryRole," AND crs_usr.Role=%u",
|
||||||
(unsigned) Rol_STD);
|
(unsigned) Rol_STD);
|
||||||
break;
|
break;
|
||||||
case Rol_NET: // Non-editing teacher
|
case Rol_NET: // Non-editing teacher
|
||||||
case Rol_TCH: // or teacher
|
case Rol_TCH: // or teacher
|
||||||
sprintf (SubQueryRole,"(crs_usr.Role=%u OR crs_usr.Role=%u)",
|
sprintf (SubQueryRole," AND (crs_usr.Role=%u OR crs_usr.Role=%u)",
|
||||||
(unsigned) Rol_NET,(unsigned) Rol_TCH);
|
(unsigned) Rol_NET,(unsigned) Rol_TCH);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1002,7 +1003,8 @@ unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,
|
||||||
}
|
}
|
||||||
sprintf (Query,"SELECT COUNT(DISTINCT crs_usr.UsrCod)"
|
sprintf (Query,"SELECT COUNT(DISTINCT crs_usr.UsrCod)"
|
||||||
" FROM crs_usr,usr_courses_tmp"
|
" FROM crs_usr,usr_courses_tmp"
|
||||||
" WHERE crs_usr.CrsCod=usr_courses_tmp.CrsCod AND %s",
|
" WHERE crs_usr.CrsCod=usr_courses_tmp.CrsCod"
|
||||||
|
"%s",
|
||||||
SubQueryRole);
|
SubQueryRole);
|
||||||
NumUsrs = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users");
|
NumUsrs = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users");
|
||||||
|
|
||||||
|
@ -4300,6 +4302,7 @@ void Usr_GetListUsrs (Rol_Role_t Role,Sco_Scope_t Scope)
|
||||||
|
|
||||||
void Usr_SearchListUsrs (Rol_Role_t Role)
|
void Usr_SearchListUsrs (Rol_Role_t Role)
|
||||||
{
|
{
|
||||||
|
char SubQueryRole[64];
|
||||||
char Query[Usr_MAX_BYTES_QUERY_GET_LIST_USRS + 1];
|
char Query[Usr_MAX_BYTES_QUERY_GET_LIST_USRS + 1];
|
||||||
const char *QueryFields =
|
const char *QueryFields =
|
||||||
"DISTINCT usr_data.UsrCod,"
|
"DISTINCT usr_data.UsrCod,"
|
||||||
|
@ -4430,13 +4433,29 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
|
||||||
QueryFields,
|
QueryFields,
|
||||||
OrderQuery);
|
OrderQuery);
|
||||||
break;
|
break;
|
||||||
case Rol_STD:
|
case Rol_STD: // Student
|
||||||
case Rol_TCH:
|
case Rol_NET: // Non-editing teacher
|
||||||
|
case Rol_TCH: // Teacher
|
||||||
/*
|
/*
|
||||||
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
|
||||||
2) Filter the candidate users according to scope
|
2) Filter the candidate users according to scope
|
||||||
*/
|
*/
|
||||||
|
switch (Role)
|
||||||
|
{
|
||||||
|
case Rol_STD: // Student
|
||||||
|
sprintf (SubQueryRole," AND crs_usr.Role=%u",
|
||||||
|
(unsigned) Rol_STD);
|
||||||
|
break;
|
||||||
|
case Rol_NET: // Non-editing teacher
|
||||||
|
case Rol_TCH: // or teacher
|
||||||
|
sprintf (SubQueryRole," AND (crs_usr.Role=%u OR crs_usr.Role=%u)",
|
||||||
|
(unsigned) Rol_NET,(unsigned) Rol_TCH);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
SubQueryRole[0] = '\0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
switch (Gbl.Scope.Current)
|
switch (Gbl.Scope.Current)
|
||||||
{
|
{
|
||||||
case Sco_SCOPE_SYS:
|
case Sco_SCOPE_SYS:
|
||||||
|
@ -4444,10 +4463,10 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
|
||||||
sprintf (Query,"SELECT %s"
|
sprintf (Query,"SELECT %s"
|
||||||
" FROM candidate_users,crs_usr,usr_data"
|
" FROM candidate_users,crs_usr,usr_data"
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role=%u"
|
"%s"
|
||||||
" AND %s",
|
" AND %s",
|
||||||
QueryFields,
|
QueryFields,
|
||||||
(unsigned) Role,
|
SubQueryRole,
|
||||||
OrderQuery);
|
OrderQuery);
|
||||||
break;
|
break;
|
||||||
case Sco_SCOPE_CTY:
|
case Sco_SCOPE_CTY:
|
||||||
|
@ -4455,7 +4474,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
|
||||||
sprintf (Query,"SELECT %s"
|
sprintf (Query,"SELECT %s"
|
||||||
" FROM candidate_users,crs_usr,courses,degrees,centres,institutions,usr_data"
|
" FROM candidate_users,crs_usr,courses,degrees,centres,institutions,usr_data"
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role=%u"
|
"%s"
|
||||||
" 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=centres.CtrCod"
|
" AND degrees.CtrCod=centres.CtrCod"
|
||||||
|
@ -4463,7 +4482,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
|
||||||
" AND institutions.CtyCod=%ld"
|
" AND institutions.CtyCod=%ld"
|
||||||
" AND %s",
|
" AND %s",
|
||||||
QueryFields,
|
QueryFields,
|
||||||
(unsigned) Role,
|
SubQueryRole,
|
||||||
Gbl.CurrentCty.Cty.CtyCod,
|
Gbl.CurrentCty.Cty.CtyCod,
|
||||||
OrderQuery);
|
OrderQuery);
|
||||||
break;
|
break;
|
||||||
|
@ -4472,14 +4491,14 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
|
||||||
sprintf (Query,"SELECT %s"
|
sprintf (Query,"SELECT %s"
|
||||||
" FROM candidate_users,crs_usr,courses,degrees,centres,usr_data"
|
" FROM candidate_users,crs_usr,courses,degrees,centres,usr_data"
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role=%u"
|
"%s"
|
||||||
" 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=centres.CtrCod"
|
" AND degrees.CtrCod=centres.CtrCod"
|
||||||
" AND centres.InsCod=%ld"
|
" AND centres.InsCod=%ld"
|
||||||
" AND %s",
|
" AND %s",
|
||||||
QueryFields,
|
QueryFields,
|
||||||
(unsigned) Role,
|
SubQueryRole,
|
||||||
Gbl.CurrentIns.Ins.InsCod,
|
Gbl.CurrentIns.Ins.InsCod,
|
||||||
OrderQuery);
|
OrderQuery);
|
||||||
break;
|
break;
|
||||||
|
@ -4488,13 +4507,13 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
|
||||||
sprintf (Query,"SELECT %s"
|
sprintf (Query,"SELECT %s"
|
||||||
" FROM candidate_users,crs_usr,courses,degrees,usr_data"
|
" FROM candidate_users,crs_usr,courses,degrees,usr_data"
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role=%u"
|
"%s"
|
||||||
" 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"
|
" AND degrees.CtrCod=%ld"
|
||||||
" AND %s",
|
" AND %s",
|
||||||
QueryFields,
|
QueryFields,
|
||||||
(unsigned) Role,
|
SubQueryRole,
|
||||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||||
OrderQuery);
|
OrderQuery);
|
||||||
break;
|
break;
|
||||||
|
@ -4503,12 +4522,12 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
|
||||||
sprintf (Query,"SELECT %s"
|
sprintf (Query,"SELECT %s"
|
||||||
" FROM candidate_users,crs_usr,courses,usr_data"
|
" FROM candidate_users,crs_usr,courses,usr_data"
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role=%u"
|
"%s"
|
||||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||||
" AND courses.DegCod=%ld"
|
" AND courses.DegCod=%ld"
|
||||||
" AND %s",
|
" AND %s",
|
||||||
QueryFields,
|
QueryFields,
|
||||||
(unsigned) Role,
|
SubQueryRole,
|
||||||
Gbl.CurrentDeg.Deg.DegCod,
|
Gbl.CurrentDeg.Deg.DegCod,
|
||||||
OrderQuery);
|
OrderQuery);
|
||||||
break;
|
break;
|
||||||
|
@ -4517,11 +4536,11 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
|
||||||
sprintf (Query,"SELECT %s,crs_usr.Role,crs_usr.Accepted"
|
sprintf (Query,"SELECT %s,crs_usr.Role,crs_usr.Accepted"
|
||||||
" FROM candidate_users,crs_usr,usr_data"
|
" FROM candidate_users,crs_usr,usr_data"
|
||||||
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
|
||||||
" AND crs_usr.Role=%u"
|
"%s"
|
||||||
" AND crs_usr.CrsCod=%ld"
|
" AND crs_usr.CrsCod=%ld"
|
||||||
" AND %s",
|
" AND %s",
|
||||||
QueryFields,
|
QueryFields,
|
||||||
(unsigned) Role,
|
SubQueryRole,
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
OrderQuery);
|
OrderQuery);
|
||||||
break;
|
break;
|
||||||
|
@ -6570,7 +6589,8 @@ void Usr_ListAllDataTchs (void)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// Returns number of users found
|
// Returns number of users found
|
||||||
|
|
||||||
unsigned Usr_ListUsrsFound (Rol_Role_t Role,const char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY])
|
unsigned Usr_ListUsrsFound (Rol_Role_t Role,
|
||||||
|
const char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY])
|
||||||
{
|
{
|
||||||
extern const char *Txt_user[Usr_NUM_SEXS];
|
extern const char *Txt_user[Usr_NUM_SEXS];
|
||||||
extern const char *Txt_users[Usr_NUM_SEXS];
|
extern const char *Txt_users[Usr_NUM_SEXS];
|
||||||
|
@ -6598,10 +6618,11 @@ unsigned Usr_ListUsrsFound (Rol_Role_t Role,const char SearchQuery[Sch_MAX_BYTES
|
||||||
/* Number of users found */
|
/* Number of users found */
|
||||||
Sex = Usr_GetSexOfUsrsLst (Role);
|
Sex = Usr_GetSexOfUsrsLst (Role);
|
||||||
sprintf (Gbl.Title,"%u %s",
|
sprintf (Gbl.Title,"%u %s",
|
||||||
NumUsrs,(Role == Rol_UNK) ? ((NumUsrs == 1) ? Txt_user[Sex] :
|
NumUsrs,
|
||||||
Txt_users[Sex]) :
|
(Role == Rol_UNK) ? ((NumUsrs == 1) ? Txt_user[Sex] :
|
||||||
((NumUsrs == 1) ? Txt_ROLES_SINGUL_abc[Role][Sex] :
|
Txt_users[Sex]) :
|
||||||
Txt_ROLES_PLURAL_abc[Role][Sex]));
|
((NumUsrs == 1) ? Txt_ROLES_SINGUL_abc[Role][Sex] :
|
||||||
|
Txt_ROLES_PLURAL_abc[Role][Sex]));
|
||||||
Lay_StartRoundFrameTable (NULL,Gbl.Title,NULL,NULL,2);
|
Lay_StartRoundFrameTable (NULL,Gbl.Title,NULL,NULL,2);
|
||||||
|
|
||||||
/***** Heading row with column names *****/
|
/***** Heading row with column names *****/
|
||||||
|
@ -8168,7 +8189,7 @@ void Usr_GetAndShowNumUsrsInPlatform (Rol_Role_t Role)
|
||||||
float NumCrssPerUsr;
|
float NumCrssPerUsr;
|
||||||
float NumUsrsPerCrs;
|
float NumUsrsPerCrs;
|
||||||
char *Class = (Role == Rol_UNK) ? "DAT_N_LINE_TOP RIGHT_BOTTOM" :
|
char *Class = (Role == Rol_UNK) ? "DAT_N_LINE_TOP RIGHT_BOTTOM" :
|
||||||
"DAT RIGHT_BOTTOM";
|
"DAT RIGHT_BOTTOM";
|
||||||
|
|
||||||
/***** Get the number of users belonging to any course *****/
|
/***** Get the number of users belonging to any course *****/
|
||||||
if (Role == Rol_GST) // Users not beloging to any course
|
if (Role == Rol_GST) // Users not beloging to any course
|
||||||
|
@ -8178,11 +8199,11 @@ void Usr_GetAndShowNumUsrsInPlatform (Rol_Role_t Role)
|
||||||
|
|
||||||
/***** Get average number of courses per user *****/
|
/***** Get average number of courses per user *****/
|
||||||
NumCrssPerUsr = (Role == Rol_GST) ? 0 :
|
NumCrssPerUsr = (Role == Rol_GST) ? 0 :
|
||||||
Usr_GetNumCrssPerUsr (Role);
|
Usr_GetNumCrssPerUsr (Role);
|
||||||
|
|
||||||
/***** Query the number of users per course *****/
|
/***** Query the number of users per course *****/
|
||||||
NumUsrsPerCrs = (Role == Rol_GST) ? 0 :
|
NumUsrsPerCrs = (Role == Rol_GST) ? 0 :
|
||||||
Usr_GetNumUsrsPerCrs (Role);
|
Usr_GetNumUsrsPerCrs (Role);
|
||||||
|
|
||||||
/***** Write the total number of users *****/
|
/***** Write the total number of users *****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
@ -8200,7 +8221,7 @@ void Usr_GetAndShowNumUsrsInPlatform (Rol_Role_t Role)
|
||||||
"</td>"
|
"</td>"
|
||||||
"</tr>",
|
"</tr>",
|
||||||
Class,(Role == Rol_UNK) ? Txt_Total :
|
Class,(Role == Rol_UNK) ? Txt_Total :
|
||||||
Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN],
|
Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN],
|
||||||
Class,NumUsrs,
|
Class,NumUsrs,
|
||||||
Class,NumCrssPerUsr,
|
Class,NumCrssPerUsr,
|
||||||
Class,NumUsrsPerCrs);
|
Class,NumUsrsPerCrs);
|
||||||
|
|
|
@ -372,7 +372,8 @@ void Usr_ListAllDataGsts (void);
|
||||||
void Usr_ListAllDataStds (void);
|
void Usr_ListAllDataStds (void);
|
||||||
void Usr_ListUsrsForSelection (Rol_Role_t Role);
|
void Usr_ListUsrsForSelection (Rol_Role_t Role);
|
||||||
void Usr_ListAllDataTchs (void);
|
void Usr_ListAllDataTchs (void);
|
||||||
unsigned Usr_ListUsrsFound (Rol_Role_t Role,const char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY]);
|
unsigned Usr_ListUsrsFound (Rol_Role_t Role,
|
||||||
|
const char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY]);
|
||||||
void Usr_ListDataAdms (void);
|
void Usr_ListDataAdms (void);
|
||||||
|
|
||||||
void Usr_PutParamsPrefsAboutUsrList (void);
|
void Usr_PutParamsPrefsAboutUsrList (void);
|
||||||
|
|
Loading…
Reference in New Issue