Version 20.84: May 27, 2021 New module swad_degree_database for database queries related to degrees.

This commit is contained in:
acanas 2021-05-27 23:30:16 +02:00
parent 608def06fc
commit 615a786535
93 changed files with 2918 additions and 2644 deletions

View File

@ -39,7 +39,8 @@ OBJS = swad_account.o swad_account_database.o swad_action.o swad_agenda.o \
swad_country_database.o swad_course.o swad_course_config.o \
swad_course_database.o swad_cryptography.o \
swad_database.o swad_date.o swad_degree.o swad_degree_config.o \
swad_degree_type.o swad_department.o swad_duplicate.o \
swad_degree_database.o swad_degree_type.o swad_department.o \
swad_duplicate.o \
swad_enrolment.o swad_error.o swad_exam.o swad_exam_log.o \
swad_exam_print.o swad_exam_result.o swad_exam_session.o \
swad_exam_set.o \

View File

@ -110,6 +110,7 @@ cp -f /home/acanas/swad/swad/swad /var/www/cgi-bin/
#include "swad_forum.h"
#include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_level.h"
#include "swad_ID.h"
#include "swad_match.h"
#include "swad_notice.h"
@ -1754,7 +1755,7 @@ int swad__getUsers (struct soap *soap,
Grp_GetListGrpTypesInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
/***** Get list of users *****/
Usr_GetListUsrs (Hie_Lvl_CRS,Role);
Usr_GetListUsrs (HieLvl_CRS,Role);
API_CopyListUsers (soap,
Role,getUsersOut);
Usr_FreeUsrsList (Role);
@ -1794,7 +1795,7 @@ int swad__findUsers (struct soap *soap,
"Bad web service key",
"Web service key does not exist in database");
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
/***** Check course *****/
if ((ReturnCode = API_CheckCourseAndGroupCodes (soap,
Gbl.Hierarchy.Crs.CrsCod,
@ -1809,7 +1810,7 @@ int swad__findUsers (struct soap *soap,
Gbl.Usrs.Me.Logged = true;
Gbl.Usrs.Me.Role.Logged = Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs;
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
/***** Check if I am a student, non-editing teacher or teacher in the course *****/
if (Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs != Rol_STD &&
Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs != Rol_NET &&
@ -1818,7 +1819,7 @@ int swad__findUsers (struct soap *soap,
"Request forbidden",
"Requester must belong to course");
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS)
if (Gbl.Hierarchy.Level == HieLvl_CRS)
{
/***** Get degree of current course *****/
if ((ReturnCode = API_GetCurrentDegCodFromCurrentCrsCod ()) != SOAP_OK) // TODO: Is this necessary?
@ -1838,8 +1839,8 @@ int swad__findUsers (struct soap *soap,
if (Gbl.Search.Str[0]) // Search some users
{
Gbl.Scope.Current = (Gbl.Hierarchy.Level == Hie_Lvl_CRS) ? Hie_Lvl_CRS :
Hie_Lvl_SYS;
Gbl.Scope.Current = (Gbl.Hierarchy.Level == HieLvl_CRS) ? HieLvl_CRS :
HieLvl_SYS;
if (Sch_BuildSearchQuery (SearchQuery,
"CONCAT_WS(' ',FirstName,Surname1,Surname2)",
NULL,NULL))

View File

@ -36,6 +36,7 @@
#include "swad_error.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_ID.h"
#include "swad_parameter.h"
@ -1044,7 +1045,7 @@ void ID_ConfirmOtherUsrID (void)
{
/* If user is a student in current course,
check if he/she has accepted */
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS)
if (Gbl.Hierarchy.Level == HieLvl_CRS)
if (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs == Rol_STD)
Gbl.Usrs.Other.UsrDat.Accepted = Usr_CheckIfUsrHasAcceptedInCurrentCrs (&Gbl.Usrs.Other.UsrDat);

View File

@ -347,11 +347,11 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActRecCtrPho ] = {1161,-1,TabUnk,ActSeeCtrInf , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,CtrCfg_ReceivePhoto ,NULL},
[ActChgCtrPhoAtt ] = {1159,-1,TabUnk,ActSeeCtrInf , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,CtrCfg_ChangeCtrPhotoAttr ,NULL},
[ActSeeDegTyp ] = {1013,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x3C7, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,DT_SeeDegreeTypesInDegTab ,NULL},
[ActEdiDegTyp ] = { 573,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x200, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,DT_EditDegreeTypes ,NULL},
[ActNewDegTyp ] = { 537,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x200, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,DT_ReceiveFormNewDegreeType ,DT_ContEditAfterChgDegTyp ,NULL},
[ActRemDegTyp ] = { 545,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x200, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,DT_RemoveDegreeType ,DT_ContEditAfterChgDegTyp ,NULL},
[ActRenDegTyp ] = { 538,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x200, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,DT_RenameDegreeType ,DT_ContEditAfterChgDegTyp ,NULL},
[ActSeeDegTyp ] = {1013,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x3C7, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,DegTyp_SeeDegreeTypesInDegTab ,NULL},
[ActEdiDegTyp ] = { 573,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x200, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,DegTyp_EditDegreeTypes ,NULL},
[ActNewDegTyp ] = { 537,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x200, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,DegTyp_ReceiveFormNewDegreeType ,DegTyp_ContEditAfterChgDegTyp ,NULL},
[ActRemDegTyp ] = { 545,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x200, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,DegTyp_RemoveDegreeType ,DegTyp_ContEditAfterChgDegTyp ,NULL},
[ActRenDegTyp ] = { 538,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x200, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,DegTyp_RenameDegreeType ,DegTyp_ContEditAfterChgDegTyp ,NULL},
[ActEdiDeg ] = { 536,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Deg_EditDegrees ,NULL},
[ActReqDeg ] = {1206,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Deg_ReceiveFormReqDeg ,Deg_ContEditAfterChgDeg ,NULL},
@ -3810,22 +3810,22 @@ bool Act_CheckIfIHavePermissionToExecuteAction (Act_Action_t Action)
switch (Gbl.Hierarchy.Level)
{
case Hie_Lvl_SYS: // System
case HieLvl_SYS: // System
Permission = Act_Actions[Action].PermissionSys;
break;
case Hie_Lvl_CTY: // Country selected
case HieLvl_CTY: // Country selected
Permission = Act_Actions[Action].PermissionCty;
break;
case Hie_Lvl_INS: // Institution selected
case HieLvl_INS: // Institution selected
Permission = Act_Actions[Action].PermissionIns;
break;
case Hie_Lvl_CTR: // Center selected
case HieLvl_CTR: // Center selected
Permission = Act_Actions[Action].PermissionCtr;
break;
case Hie_Lvl_DEG: // Degree selected
case HieLvl_DEG: // Degree selected
Permission = Act_Actions[Action].PermissionDeg;
break;
case Hie_Lvl_CRS: // Course selected
case HieLvl_CRS: // Course selected
Permission = Gbl.Usrs.Me.IBelongToCurrentCrs ? Act_Actions[Action].PermissionCrsIfIBelong :
Act_Actions[Action].PermissionCrsIfIDontBelong;
break;
@ -3946,18 +3946,18 @@ const char *Act_GetActionText (Act_Action_t Action)
void Act_AdjustActionWhenNoUsrLogged (void)
{
static const Act_Action_t Actions[Hie_Lvl_NUM_LEVELS] =
static const Act_Action_t Actions[HieLvl_NUM_LEVELS] =
{
[Hie_Lvl_UNK] = ActUnk, // Unknown
[Hie_Lvl_SYS] = ActFrmLogIn, // System
[Hie_Lvl_CTY] = ActSeeCtyInf, // Country
[Hie_Lvl_INS] = ActSeeInsInf, // Institution
[Hie_Lvl_CTR] = ActSeeCtrInf, // Center
[Hie_Lvl_DEG] = ActSeeDegInf, // Degree
[Hie_Lvl_CRS] = ActSeeCrsInf, // Course
[HieLvl_UNK] = ActUnk, // Unknown
[HieLvl_SYS] = ActFrmLogIn, // System
[HieLvl_CTY] = ActSeeCtyInf, // Country
[HieLvl_INS] = ActSeeInsInf, // Institution
[HieLvl_CTR] = ActSeeCtrInf, // Center
[HieLvl_DEG] = ActSeeDegInf, // Degree
[HieLvl_CRS] = ActSeeCrsInf, // Course
};
if (Gbl.Hierarchy.Level >= Hie_Lvl_NUM_LEVELS)
if (Gbl.Hierarchy.Level >= HieLvl_NUM_LEVELS)
Gbl.Hierarchy.Level = ActUnk;
Gbl.Action.Act = Actions[Gbl.Hierarchy.Level];

View File

@ -34,6 +34,7 @@
#include "swad_database.h"
#include "swad_error.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
/*****************************************************************************/
/************** External global variables from others modules ****************/
@ -365,18 +366,18 @@ unsigned Agd_DB_GetNumEventsFromUsr (long UsrCod)
/*****************************************************************************/
// Returns the number of users with events in a given scope
unsigned Agd_DB_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
unsigned Agd_DB_GetNumUsrsWithEvents (HieLvl_Level_t Scope)
{
/***** Get number of users with events from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QueryCOUNT ("can not get number of users with events",
"SELECT COUNT(DISTINCT UsrCod)"
" FROM agd_agendas"
" WHERE UsrCod>0");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of users with events",
"SELECT COUNT(DISTINCT agd_agendas.UsrCod)"
@ -393,7 +394,7 @@ unsigned Agd_DB_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of users with events",
"SELECT COUNT(DISTINCT agd_agendas.UsrCod)"
@ -408,7 +409,7 @@ unsigned Agd_DB_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QueryCOUNT ("can not get number of users with events",
"SELECT COUNT(DISTINCT agd_agendas.UsrCod)"
@ -421,7 +422,7 @@ unsigned Agd_DB_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QueryCOUNT ("can not get number of users with events",
"SELECT COUNT(DISTINCT agd_agendas.UsrCod)"
@ -432,7 +433,7 @@ unsigned Agd_DB_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QueryCOUNT ("can not get number of users with events",
"SELECT COUNT(DISTINCT agd_agendas.UsrCod)"
@ -452,18 +453,18 @@ unsigned Agd_DB_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
/*****************************************************************************/
// Returns the number of events in a given scope
unsigned Agd_DB_GetNumEvents (Hie_Lvl_Level_t Scope)
unsigned Agd_DB_GetNumEvents (HieLvl_Level_t Scope)
{
/***** Get number of events from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QueryCOUNT ("can not get number of events",
"SELECT COUNT(*)"
" FROM agd_agendas"
" WHERE UsrCod>0");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of events",
"SELECT COUNT(*)"
@ -481,7 +482,7 @@ unsigned Agd_DB_GetNumEvents (Hie_Lvl_Level_t Scope)
"agd_agendas"
" WHERE users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of events",
"SELECT COUNT(*)"
@ -497,7 +498,7 @@ unsigned Agd_DB_GetNumEvents (Hie_Lvl_Level_t Scope)
"agd_agendas"
" WHERE users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QueryCOUNT ("can not get number of events",
"SELECT COUNT(*)"
@ -511,7 +512,7 @@ unsigned Agd_DB_GetNumEvents (Hie_Lvl_Level_t Scope)
"agd_agendas"
" WHERE users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QueryCOUNT ("can not get number of events",
"SELECT COUNT(*)"
@ -523,7 +524,7 @@ unsigned Agd_DB_GetNumEvents (Hie_Lvl_Level_t Scope)
"agd_agendas"
" WHERE users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QueryCOUNT ("can not get number of events",
"SELECT COUNT(*)"

View File

@ -61,8 +61,8 @@ void Agd_DB_RemoveUsrEvents (long UsrCod);
unsigned Agd_DB_GetNumEventsFromUsr (long UsrCod);
unsigned Agd_DB_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope);
unsigned Agd_DB_GetNumUsrsWithEvents (HieLvl_Level_t Scope);
unsigned Agd_DB_GetNumEvents (Hie_Lvl_Level_t Scope);
unsigned Agd_DB_GetNumEvents (HieLvl_Level_t Scope);
#endif

View File

@ -1594,7 +1594,7 @@ static bool Asg_CheckIfIBelongToCrsOrGrpsThisAssignment (long AsgCod)
// Returns the number of assignments
// in this location (all the platform, current degree or current course)
unsigned Asg_GetNumAssignments (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
unsigned Asg_GetNumAssignments (HieLvl_Level_t Scope,unsigned *NumNotif)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;

View File

@ -98,6 +98,6 @@ void Asg_UnhideAssignment (void);
void Asg_ReceiveFormAssignment (void);
void Asg_RemoveCrsAssignments (long CrsCod);
unsigned Asg_GetNumAssignments (Hie_Lvl_Level_t Scope,unsigned *NumNotif);
unsigned Asg_GetNumAssignments (HieLvl_Level_t Scope,unsigned *NumNotif);
#endif

View File

@ -31,6 +31,7 @@
#include "swad_date.h"
#include "swad_error.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
/*****************************************************************************/
/************** External global variables from others modules ****************/
@ -475,18 +476,18 @@ void Asg_DB_UpdateNumUsrsNotifiedByEMailAboutAssignment (long AsgCod,
// Returns the number of courses with assignments
// in this location (all the platform, current degree or current course)
unsigned Asg_DB_GetNumCoursesWithAssignments (Hie_Lvl_Level_t Scope)
unsigned Asg_DB_GetNumCoursesWithAssignments (HieLvl_Level_t Scope)
{
/***** Get number of courses with assignments from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with assignments",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM asg_assignments"
" WHERE CrsCod>0");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with assignments",
"SELECT COUNT(DISTINCT asg_assignments.CrsCod)"
@ -501,7 +502,7 @@ unsigned Asg_DB_GetNumCoursesWithAssignments (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=asg_assignments.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with assignments",
"SELECT COUNT(DISTINCT asg_assignments.CrsCod)"
@ -514,7 +515,7 @@ unsigned Asg_DB_GetNumCoursesWithAssignments (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=asg_assignments.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with assignments",
"SELECT COUNT(DISTINCT asg_assignments.CrsCod)"
@ -525,7 +526,7 @@ unsigned Asg_DB_GetNumCoursesWithAssignments (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=asg_assignments.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with assignments",
"SELECT COUNT(DISTINCT asg_assignments.CrsCod)"
@ -534,7 +535,7 @@ unsigned Asg_DB_GetNumCoursesWithAssignments (Hie_Lvl_Level_t Scope)
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=asg_assignments.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with assignments",
"SELECT COUNT(DISTINCT CrsCod)"
@ -553,19 +554,19 @@ unsigned Asg_DB_GetNumCoursesWithAssignments (Hie_Lvl_Level_t Scope)
// Returns the number of assignments
// in this location (all the platform, current degree or current course)
unsigned Asg_DB_GetNumAssignments (MYSQL_RES **mysql_res,Hie_Lvl_Level_t Scope)
unsigned Asg_DB_GetNumAssignments (MYSQL_RES **mysql_res,HieLvl_Level_t Scope)
{
/***** Get number of assignments from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of assignments",
"SELECT COUNT(*)," // row[0]
"SUM(NumNotif)" // row[1]
" FROM asg_assignments"
" WHERE CrsCod>0");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of assignments",
"SELECT COUNT(*)," // row[0]
@ -581,7 +582,7 @@ unsigned Asg_DB_GetNumAssignments (MYSQL_RES **mysql_res,Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=asg_assignments.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of assignments",
"SELECT COUNT(*)," // row[0]
@ -595,7 +596,7 @@ unsigned Asg_DB_GetNumAssignments (MYSQL_RES **mysql_res,Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=asg_assignments.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of assignments",
"SELECT COUNT(*)," // row[0]
@ -607,7 +608,7 @@ unsigned Asg_DB_GetNumAssignments (MYSQL_RES **mysql_res,Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=asg_assignments.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of assignments",
"SELECT COUNT(*)," // row[0]
@ -617,7 +618,7 @@ unsigned Asg_DB_GetNumAssignments (MYSQL_RES **mysql_res,Hie_Lvl_Level_t Scope)
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=asg_assignments.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of assignments",
"SELECT COUNT(*)," // row[0]

View File

@ -76,9 +76,9 @@ void Asg_DB_RemoveCrsAssignments (long CrsCod);
void Asg_DB_UpdateNumUsrsNotifiedByEMailAboutAssignment (long AsgCod,
unsigned NumUsrsToBeNotifiedByEMail);
unsigned Asg_DB_GetNumCoursesWithAssignments (Hie_Lvl_Level_t Scope);
unsigned Asg_DB_GetNumCoursesWithAssignments (HieLvl_Level_t Scope);
unsigned Asg_DB_GetNumAssignments (MYSQL_RES **mysql_res,Hie_Lvl_Level_t Scope);
unsigned Asg_DB_GetNumAssignments (MYSQL_RES **mysql_res,HieLvl_Level_t Scope);
unsigned Asg_DB_GetNumAssignmentsInCrs (long CrsCod);

View File

@ -41,6 +41,7 @@
#include "swad_form.h"
#include "swad_global.h"
#include "swad_group.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_ID.h"
#include "swad_pagination.h"
@ -1416,7 +1417,7 @@ void Att_RemoveCrsAttEvents (long CrsCod)
// Returns the number of attendance events
// in this location (all the platform, current degree or current course)
unsigned Att_GetNumAttEvents (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
unsigned Att_GetNumAttEvents (HieLvl_Level_t Scope,unsigned *NumNotif)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -1588,7 +1589,7 @@ static void Att_ListAttStudents (struct Att_Events *Events,
Grp_GetParCodsSeveralGrpsToShowUsrs ();
/***** Get and order list of students in this course *****/
Usr_GetListUsrs (Hie_Lvl_CRS,Rol_STD);
Usr_GetListUsrs (HieLvl_CRS,Rol_STD);
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_Attendance,
@ -1982,7 +1983,7 @@ void Att_RegisterStudentsInAttEvent (void)
/***** 1. Get list of students in the groups selected: Gbl.Usrs.LstUsrs[Rol_STD] *****/
/* Get list of students in the groups selected */
Usr_GetListUsrs (Hie_Lvl_CRS,Rol_STD);
Usr_GetListUsrs (HieLvl_CRS,Rol_STD);
if (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs) // If there are students in the groups selected...
{

View File

@ -103,7 +103,7 @@ void Att_UpdateAttEvent (struct Att_Event *Event,const char *Description);
void Att_RemoveCrsAttEvents (long CrsCod);
unsigned Att_GetNumAttEvents (Hie_Lvl_Level_t Scope,unsigned *NumNotif);
unsigned Att_GetNumAttEvents (HieLvl_Level_t Scope,unsigned *NumNotif);
void Att_SeeOneAttEvent (void);

View File

@ -32,6 +32,7 @@
#include "swad_database.h"
#include "swad_error.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
/*****************************************************************************/
/*************** External global variables from others modules ***************/
@ -642,16 +643,16 @@ unsigned Att_DB_GetNumAttEventsInCrs (long CrsCod)
// Returns the number of courses with attendance events
// in this location (all the platform, current degree or current course)
unsigned Att_DB_GetNumCoursesWithAttEvents (Hie_Lvl_Level_t Scope)
unsigned Att_DB_GetNumCoursesWithAttEvents (HieLvl_Level_t Scope)
{
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return DB_QueryCOUNT ("can not get number of courses with attendance events",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM att_events"
" WHERE CrsCod>0");
case Hie_Lvl_INS:
case HieLvl_INS:
return DB_QueryCOUNT ("can not get number of courses with attendance events",
"SELECT COUNT(DISTINCT att_events.CrsCod)"
" FROM ctr_centers,"
@ -663,7 +664,7 @@ unsigned Att_DB_GetNumCoursesWithAttEvents (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=att_events.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return DB_QueryCOUNT ("can not get number of courses with attendance events",
"SELECT COUNT(DISTINCT att_events.CrsCod)"
" FROM deg_degrees,"
@ -673,7 +674,7 @@ unsigned Att_DB_GetNumCoursesWithAttEvents (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=att_events.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return DB_QueryCOUNT ("can not get number of courses with attendance events",
"SELECT COUNT(DISTINCT att_events.CrsCod)"
" FROM crs_courses,"
@ -681,7 +682,7 @@ unsigned Att_DB_GetNumCoursesWithAttEvents (Hie_Lvl_Level_t Scope)
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=att_events.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return DB_QueryCOUNT ("can not get number of courses with attendance events",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM att_events"
@ -697,18 +698,18 @@ unsigned Att_DB_GetNumCoursesWithAttEvents (Hie_Lvl_Level_t Scope)
/********************* Get number of attendance events ***********************/
/*****************************************************************************/
unsigned Att_DB_GetNumAttEvents (MYSQL_RES **mysql_res,Hie_Lvl_Level_t Scope)
unsigned Att_DB_GetNumAttEvents (MYSQL_RES **mysql_res,HieLvl_Level_t Scope)
{
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of attendance events",
"SELECT COUNT(*)," // row[0]
"SUM(NumNotif)" // row[1]
" FROM att_events"
" WHERE CrsCod>0");
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of attendance events",
"SELECT COUNT(*)," // row[0]
@ -722,7 +723,7 @@ unsigned Att_DB_GetNumAttEvents (MYSQL_RES **mysql_res,Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=att_events.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of attendance events",
"SELECT COUNT(*)," // row[0]
@ -734,7 +735,7 @@ unsigned Att_DB_GetNumAttEvents (MYSQL_RES **mysql_res,Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=att_events.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of attendance events",
"SELECT COUNT(*)," // row[0]
@ -744,7 +745,7 @@ unsigned Att_DB_GetNumAttEvents (MYSQL_RES **mysql_res,Hie_Lvl_Level_t Scope)
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=att_events.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of attendance events",
"SELECT COUNT(*)," // row[0]

View File

@ -86,8 +86,8 @@ void Att_DB_RemoveGrpsAssociatedToCrsAttEvents (long CrsCod);
void Att_DB_RemoveCrsAttEvents (long CrsCod);
unsigned Att_DB_GetNumAttEventsInCrs (long CrsCod);
unsigned Att_DB_GetNumCoursesWithAttEvents (Hie_Lvl_Level_t Scope);
unsigned Att_DB_GetNumCoursesWithAttEvents (HieLvl_Level_t Scope);
unsigned Att_DB_GetNumAttEvents (MYSQL_RES **mysql_res,Hie_Lvl_Level_t Scope);
unsigned Att_DB_GetNumAttEvents (MYSQL_RES **mysql_res,HieLvl_Level_t Scope);
#endif

View File

@ -34,6 +34,7 @@
#include "swad_figure.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_holiday.h"
#include "swad_HTML.h"
#include "swad_parameter.h"
@ -308,7 +309,7 @@ static void Cal_PutIconsCalendar (__attribute__((unused)) void *Args)
NULL,NULL);
/***** View holidays *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_INS) // Institution selected
if (Gbl.Hierarchy.Level == HieLvl_INS) // Institution selected
Hld_PutIconToSeeHlds ();
}

View File

@ -39,6 +39,7 @@
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_logo.h"
#include "swad_notification.h"
@ -1186,7 +1187,7 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams,
else
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"EXAM_TIT\"",
Ins.WWW);
Lgo_DrawLogo (Hie_Lvl_INS,Ins.InsCod,Ins.FullName,64,NULL,true);
Lgo_DrawLogo (HieLvl_INS,Ins.InsCod,Ins.FullName,64,NULL,true);
HTM_BR ();
HTM_Txt (Ins.FullName);
if (TypeViewCallForExam == Cfe_PRINT_VIEW)

View File

@ -40,6 +40,7 @@
#include "swad_forum.h"
#include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_logo.h"
#include "swad_message.h"
@ -235,7 +236,7 @@ void Ctr_DrawCenterLogoAndNameWithLink (struct Ctr_Center *Ctr,Act_Action_t Acti
Hie_FreeGoToMsg ();
/***** Center logo and name *****/
Lgo_DrawLogo (Hie_Lvl_CTR,Ctr->CtrCod,Ctr->ShrtName,16,ClassLogo,true);
Lgo_DrawLogo (HieLvl_CTR,Ctr->CtrCod,Ctr->ShrtName,16,ClassLogo,true);
HTM_TxtF (" %s",Ctr->FullName);
/***** End link *****/
@ -426,7 +427,7 @@ static void Ctr_ListOneCenterForSeeing (struct Ctr_Center *Ctr,unsigned NumCtr)
/***** Number of users in courses of this center *****/
HTM_TD_Begin ("class=\"%s RM %s\"",TxtClassNormal,BgColor);
HTM_Unsigned (Usr_GetCachedNumUsrsInCrss (Hie_Lvl_CTR,Ctr->CtrCod,
HTM_Unsigned (Usr_GetCachedNumUsrsInCrss (HieLvl_CTR,Ctr->CtrCod,
1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH)); // Any user
@ -937,7 +938,7 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
ICanEdit = Ctr_CheckIfICanEditACenter (Ctr);
NumDegs = Deg_GetNumDegsInCtr (Ctr->CtrCod);
NumUsrsCtr = Usr_GetNumUsrsWhoClaimToBelongToCtr (Ctr);
NumUsrsInCrssOfCtr = Usr_GetNumUsrsInCrss (Hie_Lvl_CTR,Ctr->CtrCod,
NumUsrsInCrssOfCtr = Usr_GetNumUsrsInCrss (HieLvl_CTR,Ctr->CtrCod,
1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH); // Any user
@ -962,7 +963,7 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
/* Center logo */
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ctr->FullName);
Lgo_DrawLogo (Hie_Lvl_CTR,Ctr->CtrCod,Ctr->ShrtName,20,NULL,true);
Lgo_DrawLogo (HieLvl_CTR,Ctr->CtrCod,Ctr->ShrtName,20,NULL,true);
HTM_TD_End ();
/* Place */
@ -1217,7 +1218,7 @@ void Ctr_RemoveCenter (void)
else if (Usr_GetNumUsrsWhoClaimToBelongToCtr (Ctr_EditingCtr)) // Center has users who claim to belong to it
Ale_ShowAlert (Ale_WARNING,
Txt_To_remove_a_center_you_must_first_remove_all_degrees_and_teachers_in_the_center);
else if (Usr_GetNumUsrsInCrss (Hie_Lvl_CTR,Ctr_EditingCtr->CtrCod,
else if (Usr_GetNumUsrsInCrss (HieLvl_CTR,Ctr_EditingCtr->CtrCod,
1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH)) // Center has users
@ -1226,10 +1227,10 @@ void Ctr_RemoveCenter (void)
else // Center has no degrees or users ==> remove it
{
/***** Remove all the threads and posts in forums of the center *****/
For_RemoveForums (Hie_Lvl_CTR,Ctr_EditingCtr->CtrCod);
For_RemoveForums (HieLvl_CTR,Ctr_EditingCtr->CtrCod);
/***** Remove surveys of the center *****/
Svy_RemoveSurveys (Hie_Lvl_CTR,Ctr_EditingCtr->CtrCod);
Svy_RemoveSurveys (HieLvl_CTR,Ctr_EditingCtr->CtrCod);
/***** Remove information related to files in center *****/
Brw_DB_RemoveCtrFiles (Ctr_EditingCtr->CtrCod);
@ -1626,7 +1627,7 @@ static void Ctr_PutFormToCreateCenter (const struct Plc_Places *Places)
/***** Center logo *****/
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ctr_EditingCtr->FullName);
Lgo_DrawLogo (Hie_Lvl_CTR,-1L,"",20,NULL,true);
Lgo_DrawLogo (HieLvl_CTR,-1L,"",20,NULL,true);
HTM_TD_End ();
/***** Place *****/
@ -1913,12 +1914,12 @@ unsigned Ctr_GetCachedNumCtrsInSys (void)
unsigned NumCtrs;
/***** Get number of centers from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS,Hie_Lvl_SYS,-1L,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtrs))
{
/***** Get current number of centers from database and update cache *****/
NumCtrs = (unsigned) DB_GetNumRowsTable ("ctr_centers");
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,Hie_Lvl_SYS,-1L,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtrs);
}
@ -1955,7 +1956,7 @@ static unsigned Ctr_GetNumCtrsInCty (long CtyCod)
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod",
CtyCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,Hie_Lvl_CTY,Gbl.Cache.NumCtrsInCty.CtyCod,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,HieLvl_CTY,Gbl.Cache.NumCtrsInCty.CtyCod,
FigCch_UNSIGNED,&Gbl.Cache.NumCtrsInCty.NumCtrs);
return Gbl.Cache.NumCtrsInCty.NumCtrs;
}
@ -1965,7 +1966,7 @@ unsigned Ctr_GetCachedNumCtrsInCty (long CtyCod)
unsigned NumCtrs;
/***** Get number of centers from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS,Hie_Lvl_CTY,CtyCod,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS,HieLvl_CTY,CtyCod,
FigCch_UNSIGNED,&NumCtrs))
/***** Get current number of centers from database and update cache *****/
NumCtrs = Ctr_GetNumCtrsInCty (CtyCod);
@ -2001,7 +2002,7 @@ unsigned Ctr_GetNumCtrsInIns (long InsCod)
" FROM ctr_centers"
" WHERE InsCod=%ld",
InsCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,Hie_Lvl_INS,Gbl.Cache.NumCtrsInIns.InsCod,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,HieLvl_INS,Gbl.Cache.NumCtrsInIns.InsCod,
FigCch_UNSIGNED,&Gbl.Cache.NumCtrsInIns.NumCtrs);
return Gbl.Cache.NumCtrsInIns.NumCtrs;
}
@ -2011,7 +2012,7 @@ unsigned Ctr_GetCachedNumCtrsInIns (long InsCod)
unsigned NumCtrs;
/***** Get number of centers from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS,Hie_Lvl_INS,InsCod,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS,HieLvl_INS,InsCod,
FigCch_UNSIGNED,&NumCtrs))
/***** Get current number of centers from database and update cache *****/
NumCtrs = Ctr_GetNumCtrsInIns (InsCod);
@ -2028,7 +2029,7 @@ unsigned Ctr_GetCachedNumCtrsWithMapInSys (void)
unsigned NumCtrsWithMap;
/***** Get number of centers with map from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS_WITH_MAP,Hie_Lvl_SYS,-1L,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS_WITH_MAP,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtrsWithMap))
{
/***** Get current number of centers with map from database and update cache *****/
@ -2039,7 +2040,7 @@ unsigned Ctr_GetCachedNumCtrsWithMapInSys (void)
" FROM ctr_centers"
" WHERE Latitude<>0"
" OR Longitude<>0");
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS_WITH_MAP,Hie_Lvl_SYS,-1L,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS_WITH_MAP,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtrsWithMap);
}
@ -2055,7 +2056,7 @@ unsigned Ctr_GetCachedNumCtrsWithMapInCty (long CtyCod)
unsigned NumCtrsWithMap;
/***** Get number of centers with map from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS_WITH_MAP,Hie_Lvl_CTY,CtyCod,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS_WITH_MAP,HieLvl_CTY,CtyCod,
FigCch_UNSIGNED,&NumCtrsWithMap))
{
/***** Get current number of centers with map from database and update cache *****/
@ -2070,7 +2071,7 @@ unsigned Ctr_GetCachedNumCtrsWithMapInCty (long CtyCod)
" AND (ctr_centers.Latitude<>0"
" OR ctr_centers.Longitude<>0)",
CtyCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS_WITH_MAP,Hie_Lvl_CTY,CtyCod,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS_WITH_MAP,HieLvl_CTY,CtyCod,
FigCch_UNSIGNED,&NumCtrsWithMap);
}
@ -2086,7 +2087,7 @@ unsigned Ctr_GetCachedNumCtrsWithMapInIns (long InsCod)
unsigned NumCtrsWithMap;
/***** Get number of centers with map from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS_WITH_MAP,Hie_Lvl_INS,InsCod,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS_WITH_MAP,HieLvl_INS,InsCod,
FigCch_UNSIGNED,&NumCtrsWithMap))
{
/***** Get current number of centers with map from database and update cache *****/
@ -2099,7 +2100,7 @@ unsigned Ctr_GetCachedNumCtrsWithMapInIns (long InsCod)
" AND (Latitude<>0"
" OR Longitude<>0)",
InsCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS_WITH_MAP,Hie_Lvl_INS,InsCod,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS_WITH_MAP,HieLvl_INS,InsCod,
FigCch_UNSIGNED,&NumCtrsWithMap);
}
@ -2128,7 +2129,7 @@ unsigned Ctr_GetNumCtrsInPlc (long PlcCod)
/*****************************************************************************/
unsigned Ctr_GetCachedNumCtrsWithDegs (const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod)
HieLvl_Level_t Scope,long Cod)
{
unsigned NumCtrsWithDegs;
@ -2158,7 +2159,7 @@ unsigned Ctr_GetCachedNumCtrsWithDegs (const char *SubQuery,
/*****************************************************************************/
unsigned Ctr_GetCachedNumCtrsWithCrss (const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod)
HieLvl_Level_t Scope,long Cod)
{
unsigned NumCtrsWithCrss;
@ -2190,7 +2191,7 @@ unsigned Ctr_GetCachedNumCtrsWithCrss (const char *SubQuery,
/*****************************************************************************/
unsigned Ctr_GetCachedNumCtrsWithUsrs (Rol_Role_t Role,const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod)
HieLvl_Level_t Scope,long Cod)
{
static const FigCch_FigureCached_t FigureCtrs[Rol_NUM_ROLES] =
{

View File

@ -148,11 +148,11 @@ unsigned Ctr_GetCachedNumCtrsWithMapInIns (long InsCod);
unsigned Ctr_GetNumCtrsInPlc (long PlcCod);
unsigned Ctr_GetCachedNumCtrsWithDegs (const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod);
HieLvl_Level_t Scope,long Cod);
unsigned Ctr_GetCachedNumCtrsWithCrss (const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod);
HieLvl_Level_t Scope,long Cod);
unsigned Ctr_GetCachedNumCtrsWithUsrs (Rol_Role_t Role,const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod);
HieLvl_Level_t Scope,long Cod);
void Ctr_ListCtrsFound (MYSQL_RES **mysql_res,unsigned NumCtrs);

View File

@ -42,6 +42,7 @@
#include "swad_help.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_config.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_logo.h"
#include "swad_place.h"
@ -212,10 +213,10 @@ static void CtrCfg_Configuration (bool PrintView)
CtrCfg_NumCrss ();
/***** Number of users in courses of this center *****/
HieCfg_NumUsrsInCrss (Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_TCH);
HieCfg_NumUsrsInCrss (Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_NET);
HieCfg_NumUsrsInCrss (Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_STD);
HieCfg_NumUsrsInCrss (Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_UNK);
HieCfg_NumUsrsInCrss (HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_TCH);
HieCfg_NumUsrsInCrss (HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_NET);
HieCfg_NumUsrsInCrss (HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_STD);
HieCfg_NumUsrsInCrss (HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_UNK);
}
/***** End table *****/
@ -273,7 +274,7 @@ static void CtrCfg_PutIconsCtrConfig (__attribute__((unused)) void *Args)
// have permission to upload logo and photo of the center
{
/***** Put icon to upload logo of center *****/
Lgo_PutIconToChangeLogo (Hie_Lvl_CTR);
Lgo_PutIconToChangeLogo (HieLvl_CTR);
/***** Put icon to upload photo of center *****/
CtrCfg_PutIconToChangePhoto ();
@ -312,7 +313,7 @@ static void CtrCfg_PutIconToChangePhoto (void)
static void CtrCfg_Title (bool PutLink)
{
HieCfg_Title (PutLink,
Hie_Lvl_CTR, // Logo scope
HieLvl_CTR, // Logo scope
Gbl.Hierarchy.Ctr.CtrCod, // Logo code
Gbl.Hierarchy.Ctr.ShrtName, // Logo short name
Gbl.Hierarchy.Ctr.FullName, // Logo full name
@ -605,7 +606,7 @@ static void CtrCfg_Institution (bool PrintView,bool PutForm)
"BT_LINK LT DAT",NULL);
Hie_FreeGoToMsg ();
}
Lgo_DrawLogo (Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod,Gbl.Hierarchy.Ins.ShrtName,
Lgo_DrawLogo (HieLvl_INS,Gbl.Hierarchy.Ins.InsCod,Gbl.Hierarchy.Ins.ShrtName,
20,"LM",true);
HTM_NBSP ();
HTM_Txt (Gbl.Hierarchy.Ins.FullName);
@ -810,7 +811,7 @@ static void CtrCfg_NumCrss (void)
void CtrCfg_RequestLogo (void)
{
Lgo_RequestLogo (Hie_Lvl_CTR);
Lgo_RequestLogo (HieLvl_CTR);
}
/*****************************************************************************/
@ -819,7 +820,7 @@ void CtrCfg_RequestLogo (void)
void CtrCfg_ReceiveLogo (void)
{
Lgo_ReceiveLogo (Hie_Lvl_CTR);
Lgo_ReceiveLogo (HieLvl_CTR);
}
/*****************************************************************************/
@ -828,7 +829,7 @@ void CtrCfg_ReceiveLogo (void)
void CtrCfg_RemoveLogo (void)
{
Lgo_RemoveLogo (Hie_Lvl_CTR);
Lgo_RemoveLogo (HieLvl_CTR);
}
/*****************************************************************************/

View File

@ -602,13 +602,14 @@ TODO: FIX BUG, URGENT! En las fechas como par
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
*/
#define Log_PLATFORM_VERSION "SWAD 20.83.1 (2021-05-27)"
#define Log_PLATFORM_VERSION "SWAD 20.84 (2021-05-27)"
#define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.69.1.js"
/*
TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 20.84: May 27, 2021 New module swad_degree_database for database queries related to degrees. (312216 lines)
Version 20.83.1: May 27, 2021 Database function moved from swad_date to swad_setting. (311993 lines)
Version 20.83: May 27, 2021 New module swad_course_database for database queries related to courses. (311982 lines)
Version 20.82: May 23, 2021 Queries moved to module swad_country_database. (311702 lines)

View File

@ -37,6 +37,7 @@
#include "swad_error.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_language.h"
#include "swad_logo.h"
@ -189,7 +190,7 @@ void Cht_ShowListOfAvailableChatRooms (void)
snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),"%s %s",
Txt_Degree,Deg.ShrtName);
Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShrtName,ThisRoomFullName,1,IsLastItemInLevel);
Lgo_DrawLogo (Hie_Lvl_DEG,Deg.DegCod,Deg.ShrtName,16,NULL,true);
Lgo_DrawLogo (HieLvl_DEG,Deg.DegCod,Deg.ShrtName,16,NULL,true);
Cht_WriteLinkToChat2 (ThisRoomCode,ThisRoomFullName);
/* Get my courses in this degree from database */

View File

@ -124,7 +124,7 @@ void Con_ShowConnectedUsrs (void)
Con_ShowGlobalConnectedUsrs ();
/***** Show connected users in the current location *****/
if (Gbl.Scope.Current != Hie_Lvl_UNK)
if (Gbl.Scope.Current != HieLvl_UNK)
Con_ShowConnectedUsrsBelongingToLocation ();
/***** End box *****/
@ -237,13 +237,13 @@ static void Con_ShowGlobalConnectedUsrsRole (Rol_Role_t Role,unsigned UsrsTotal)
void Con_ComputeConnectedUsrsBelongingToCurrentCrs (void)
{
if ((Gbl.Prefs.SideCols & Lay_SHOW_RIGHT_COLUMN) && // Right column visible
Gbl.Hierarchy.Level == Hie_Lvl_CRS && // Course selected
Gbl.Hierarchy.Level == HieLvl_CRS && // Course selected
(Gbl.Usrs.Me.IBelongToCurrentCrs || // I can view users
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM))
{
Gbl.Usrs.Connected.NumUsrs = 0;
Gbl.Usrs.Connected.NumUsrsToList = 0;
Gbl.Scope.Current = Hie_Lvl_CRS;
Gbl.Scope.Current = HieLvl_CRS;
/***** Number of teachers *****/
Con_ComputeConnectedUsrsWithARoleBelongingToCurrentCrs (Rol_TCH);
@ -421,7 +421,7 @@ static void Con_ShowConnectedUsrsWithARoleBelongingToCurrentCrsOnRightColumn (Ro
Frm_BeginFormUnique (ActLstCon); // Must be unique because
// the list of connected users
// is dynamically updated via AJAX
Sco_PutParamScope ("ScopeCon",Hie_Lvl_CRS);
Sco_PutParamScope ("ScopeCon",HieLvl_CRS);
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"ellipsis-h.svg",
Txt_Connected_users,"ICO16x16");
Frm_EndForm ();
@ -660,8 +660,8 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
const char *ClassTxt;
const char *ClassLink;
struct UsrData UsrDat;
bool PutLinkToRecord = (Gbl.Hierarchy.Level == Hie_Lvl_CRS && // Course selected
Gbl.Scope.Current == Hie_Lvl_CRS && // Scope is current course
bool PutLinkToRecord = (Gbl.Hierarchy.Level == HieLvl_CRS && // Course selected
Gbl.Scope.Current == HieLvl_CRS && // Scope is current course
(Role == Rol_STD || // Role is student,...
Role == Rol_NET || // ...non-editing teacher...
Role == Rol_TCH)); // ...or teacher

View File

@ -30,6 +30,7 @@
#include "swad_database.h"
#include "swad_error.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
/*****************************************************************************/
/*************************** Private constants *******************************/
@ -72,7 +73,7 @@ unsigned Con_DB_GetNumConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Ro
case Rol_UNK: // Here Rol_UNK means "any role"
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS: // Get connected users in the whole platform
case HieLvl_SYS: // Get connected users in the whole platform
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number"
" of connected users"
@ -83,7 +84,7 @@ unsigned Con_DB_GetNumConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Ro
" FROM usr_connected,"
"usr_data"
" WHERE usr_connected.UsrCod=usr_data.UsrCod");
case Hie_Lvl_CTY: // Get connected users in the current country
case HieLvl_CTY: // Get connected users in the current country
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number"
" of connected users"
@ -106,7 +107,7 @@ unsigned Con_DB_GetNumConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Ro
" AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS: // Get connected users in the current institution
case HieLvl_INS: // Get connected users in the current institution
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number"
" of connected users"
@ -127,7 +128,7 @@ unsigned Con_DB_GetNumConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Ro
" AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR: // Get connected users in the current center
case HieLvl_CTR: // Get connected users in the current center
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number"
" of connected users"
@ -146,7 +147,7 @@ unsigned Con_DB_GetNumConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Ro
" AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG: // Get connected users in the current degree
case HieLvl_DEG: // Get connected users in the current degree
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number"
" of connected users"
@ -163,7 +164,7 @@ unsigned Con_DB_GetNumConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Ro
" AND crs_users.UsrCod=usr_connected.UsrCod"
" AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS: // Get connected users in the current course
case HieLvl_CRS: // Get connected users in the current course
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number"
" of connected users"
@ -201,7 +202,7 @@ unsigned Con_DB_GetNumConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Ro
case Rol_TCH:
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS: // Get connected users in the whole platform
case HieLvl_SYS: // Get connected users in the whole platform
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number"
" of connected users"
@ -216,7 +217,7 @@ unsigned Con_DB_GetNumConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Ro
" AND crs_users.Role=%u"
" AND usr_connected.UsrCod=usr_data.UsrCod",
(unsigned) Role);
case Hie_Lvl_CTY: // Get connected users in the current country
case HieLvl_CTY: // Get connected users in the current country
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number"
" of connected users"
@ -241,7 +242,7 @@ unsigned Con_DB_GetNumConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Ro
" AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) Role);
case Hie_Lvl_INS: // Get connected users in the current institution
case HieLvl_INS: // Get connected users in the current institution
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number"
" of connected users"
@ -264,7 +265,7 @@ unsigned Con_DB_GetNumConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Ro
" AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Ins.InsCod,
(unsigned) Role);
case Hie_Lvl_CTR: // Get connected users in the current center
case HieLvl_CTR: // Get connected users in the current center
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number"
" of connected users"
@ -285,7 +286,7 @@ unsigned Con_DB_GetNumConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Ro
" AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) Role);
case Hie_Lvl_DEG: // Get connected users in the current degree
case HieLvl_DEG: // Get connected users in the current degree
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number"
" of connected users"
@ -304,7 +305,7 @@ unsigned Con_DB_GetNumConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Ro
" AND usr_connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) Role);
case Hie_Lvl_CRS: // Get connected users in the current course
case HieLvl_CRS: // Get connected users in the current course
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number"
" of connected users"
@ -357,7 +358,7 @@ unsigned Con_DB_GetConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Role_
case Rol_TCH:
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS: // Show connected users in the whole platform
case HieLvl_SYS: // Show connected users in the whole platform
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get list of connected users"
" who belong to this location",
@ -372,7 +373,7 @@ unsigned Con_DB_GetConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Role_
" AND crs_users.Role=%u"
" ORDER BY Dif",
(unsigned) Role);
case Hie_Lvl_CTY: // Show connected users in the current country
case HieLvl_CTY: // Show connected users in the current country
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get list of connected users"
" who belong to this location",
@ -397,7 +398,7 @@ unsigned Con_DB_GetConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Role_
" ORDER BY Dif",
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) Role);
case Hie_Lvl_INS: // Show connected users in the current institution
case HieLvl_INS: // Show connected users in the current institution
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get list of connected users"
" who belong to this location",
@ -420,7 +421,7 @@ unsigned Con_DB_GetConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Role_
" ORDER BY Dif",
Gbl.Hierarchy.Ins.InsCod,
(unsigned) Role);
case Hie_Lvl_CTR: // Show connected users in the current center
case HieLvl_CTR: // Show connected users in the current center
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get list of connected users"
" who belong to this location",
@ -441,7 +442,7 @@ unsigned Con_DB_GetConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Role_
" ORDER BY Dif",
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) Role);
case Hie_Lvl_DEG: // Show connected users in the current degree
case HieLvl_DEG: // Show connected users in the current degree
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get list of connected users"
" who belong to this location",
@ -460,7 +461,7 @@ unsigned Con_DB_GetConnectedFromCurrentLocation (MYSQL_RES **mysql_res,Rol_Role_
" ORDER BY Dif",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) Role);
case Hie_Lvl_CRS: // Show connected users in the current course
case HieLvl_CRS: // Show connected users in the current course
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get list of connected users"
" who belong to this location",

View File

@ -41,6 +41,7 @@
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_survey.h"
@ -277,7 +278,7 @@ void Cty_ListCountries2 (void)
/* Number of users in courses of other countries */
HTM_TD_Begin ("class=\"DAT RM\"");
HTM_Unsigned (Usr_GetCachedNumUsrsInCrss (Hie_Lvl_CTY,0,
HTM_Unsigned (Usr_GetCachedNumUsrsInCrss (HieLvl_CTY,0,
1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH)); // Any user
@ -449,7 +450,7 @@ static void Cty_ListOneCountryForSeeing (struct Cty_Countr *Cty,unsigned NumCty)
/***** Number of users in courses *****/
HTM_TD_Begin ("class=\"DAT RM %s\"",BgColor);
HTM_Unsigned (Usr_GetCachedNumUsrsInCrss (Hie_Lvl_CTY,Cty->CtyCod,
HTM_Unsigned (Usr_GetCachedNumUsrsInCrss (HieLvl_CTY,Cty->CtyCod,
1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH)); // Any user
@ -1077,7 +1078,7 @@ static void Cty_ListCountriesForEdition (void)
NumUsrsCty) // Country has users
// Deletion forbidden
Ico_PutIconRemovalNotAllowed ();
else if (Usr_GetNumUsrsInCrss (Hie_Lvl_CTY,Cty->CtyCod,
else if (Usr_GetNumUsrsInCrss (HieLvl_CTY,Cty->CtyCod,
1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH)) // Country has users
@ -1218,7 +1219,7 @@ void Cty_RemoveCountry (void)
else if (Usr_GetNumUsrsWhoClaimToBelongToCty (Cty_EditingCty)) // Country has users ==> don't remove
Ale_CreateAlert (Ale_WARNING,NULL,
Txt_You_can_not_remove_a_country_with_institutions_or_users);
else if (Usr_GetNumUsrsInCrss (Hie_Lvl_CTY,Cty_EditingCty->CtyCod,
else if (Usr_GetNumUsrsInCrss (HieLvl_CTY,Cty_EditingCty->CtyCod,
1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH)) // Country has users
@ -1227,7 +1228,7 @@ void Cty_RemoveCountry (void)
else // Country has no users ==> remove it
{
/***** Remove surveys of the country *****/
Svy_RemoveSurveys (Hie_Lvl_CTY,Cty_EditingCty->CtyCod);
Svy_RemoveSurveys (HieLvl_CTY,Cty_EditingCty->CtyCod);
/***** Remove country *****/
Cty_DB_RemoveCty (Cty_EditingCty->CtyCod);
@ -1658,12 +1659,12 @@ unsigned Cty_GetCachedNumCtysInSys (void)
unsigned NumCtys;
/***** Get number of countries from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTYS,Hie_Lvl_SYS,-1L,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTYS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtys))
{
/***** Get current number of countries from database and update cache *****/
NumCtys = (unsigned) DB_GetNumRowsTable ("cty_countrs");
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTYS,Hie_Lvl_SYS,-1L,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTYS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtys);
}
@ -1679,12 +1680,12 @@ unsigned Cty_GetCachedNumCtysWithInss (void)
unsigned NumCtysWithInss;
/***** Get number of countries with institutions from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTYS_WITH_INSS,Hie_Lvl_SYS,-1L,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTYS_WITH_INSS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtysWithInss))
{
/***** Get current number of countries with institutions from cache *****/
NumCtysWithInss = Cty_DB_GetNumCtysWithInss ();
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTYS_WITH_INSS,Hie_Lvl_SYS,-1L,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTYS_WITH_INSS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtysWithInss);
}
@ -1700,12 +1701,12 @@ unsigned Cty_GetCachedNumCtysWithCtrs (void)
unsigned NumCtysWithCtrs;
/***** Get number of countries with centers from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTYS_WITH_CTRS,Hie_Lvl_SYS,-1L,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTYS_WITH_CTRS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtysWithCtrs))
{
/***** Get current number of countries with centers from database and update cache *****/
NumCtysWithCtrs = Cty_DB_GetNumCtysWithCtrs ();
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTYS_WITH_CTRS,Hie_Lvl_SYS,-1L,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTYS_WITH_CTRS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtysWithCtrs);
}
@ -1721,12 +1722,12 @@ unsigned Cty_GetCachedNumCtysWithDegs (void)
unsigned NumCtysWithDegs;
/***** Get number of countries with degrees from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTYS_WITH_DEGS,Hie_Lvl_SYS,-1L,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTYS_WITH_DEGS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtysWithDegs))
{
/***** Get current number of countries with degrees from database and update cache *****/
NumCtysWithDegs = Cty_DB_GetNumCtysWithDegs ();
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTYS_WITH_DEGS,Hie_Lvl_SYS,-1L,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTYS_WITH_DEGS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtysWithDegs);
}
@ -1742,12 +1743,12 @@ unsigned Cty_GetCachedNumCtysWithCrss (void)
unsigned NumCtysWithCrss;
/***** Get number of countries with courses from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTYS_WITH_CRSS,Hie_Lvl_SYS,-1L,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTYS_WITH_CRSS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtysWithCrss))
{
/***** Get current number of countries with courses from database and update cache *****/
NumCtysWithCrss = Cty_DB_GetNumCtysWithCrss ();
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTYS_WITH_CRSS,Hie_Lvl_SYS,-1L,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTYS_WITH_CRSS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtysWithCrss);
}
@ -1759,7 +1760,7 @@ unsigned Cty_GetCachedNumCtysWithCrss (void)
/*****************************************************************************/
unsigned Cty_GetCachedNumCtysWithUsrs (Rol_Role_t Role,const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod)
HieLvl_Level_t Scope,long Cod)
{
static const FigCch_FigureCached_t FigureCtys[Rol_NUM_ROLES] =
{

View File

@ -120,7 +120,7 @@ unsigned Cty_GetCachedNumCtysWithDegs (void);
unsigned Cty_GetCachedNumCtysWithCrss (void);
unsigned Cty_GetCachedNumCtysWithUsrs (Rol_Role_t Role,const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod);
HieLvl_Level_t Scope,long Cod);
void Cty_ListCtysFound (MYSQL_RES **mysql_res,unsigned NumCtys);

View File

@ -42,6 +42,7 @@
#include "swad_help.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_config.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
/*****************************************************************************/
@ -173,10 +174,10 @@ static void CtyCfg_Configuration (bool PrintView)
CtyCfg_NumCrss ();
/* Number of users in courses of this country */
HieCfg_NumUsrsInCrss (Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_TCH);
HieCfg_NumUsrsInCrss (Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_NET);
HieCfg_NumUsrsInCrss (Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_STD);
HieCfg_NumUsrsInCrss (Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_UNK);
HieCfg_NumUsrsInCrss (HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_TCH);
HieCfg_NumUsrsInCrss (HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_NET);
HieCfg_NumUsrsInCrss (HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_STD);
HieCfg_NumUsrsInCrss (HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_UNK);
}
/* End table */

View File

@ -46,6 +46,7 @@
#include "swad_global.h"
#include "swad_help.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_info.h"
#include "swad_logo.h"
@ -264,7 +265,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
Highlight ? ClassHighlight :
ClassNormal,
NULL);
Lgo_DrawLogo (Hie_Lvl_INS,Hie.Ins.InsCod,Hie.Ins.ShrtName,16,NULL,true);
Lgo_DrawLogo (HieLvl_INS,Hie.Ins.InsCod,Hie.Ins.ShrtName,16,NULL,true);
HTM_TxtF ("&nbsp;%s",Hie.Ins.ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
@ -286,7 +287,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
Err_WrongCenterExit ();
/***** Write link to center *****/
Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_CTR &&
Highlight = (Gbl.Hierarchy.Level == HieLvl_CTR &&
Gbl.Hierarchy.Ctr.CtrCod == Hie.Ctr.CtrCod);
HTM_LI_Begin ("class=\"%s\"",Highlight ? ClassHighlight :
ClassNormal);
@ -298,7 +299,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
Highlight ? ClassHighlight :
ClassNormal,
NULL);
Lgo_DrawLogo (Hie_Lvl_CTR,Hie.Ctr.CtrCod,Hie.Ctr.ShrtName,16,NULL,true);
Lgo_DrawLogo (HieLvl_CTR,Hie.Ctr.CtrCod,Hie.Ctr.ShrtName,16,NULL,true);
HTM_TxtF ("&nbsp;%s",Hie.Ctr.ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
@ -320,7 +321,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
Err_WrongDegreeExit ();
/***** Write link to degree *****/
Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_DEG &&
Highlight = (Gbl.Hierarchy.Level == HieLvl_DEG &&
Gbl.Hierarchy.Deg.DegCod == Hie.Deg.DegCod);
HTM_LI_Begin ("class=\"%s\"",Highlight ? ClassHighlight :
ClassNormal);
@ -332,7 +333,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
Highlight ? ClassHighlight :
ClassNormal,
NULL);
Lgo_DrawLogo (Hie_Lvl_DEG,Hie.Deg.DegCod,Hie.Deg.ShrtName,16,NULL,true);
Lgo_DrawLogo (HieLvl_DEG,Hie.Deg.DegCod,Hie.Deg.ShrtName,16,NULL,true);
HTM_TxtF ("&nbsp;%s",Hie.Deg.ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
@ -354,7 +355,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
Err_WrongCourseExit ();
/***** Write link to course *****/
Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_CRS &&
Highlight = (Gbl.Hierarchy.Level == HieLvl_CRS &&
Gbl.Hierarchy.Crs.CrsCod == Hie.Crs.CrsCod);
HTM_LI_Begin ("class=\"%s\"",Highlight ? ClassHighlight :
ClassNormal);
@ -413,12 +414,12 @@ unsigned Crs_GetCachedNumCrssInSys (void)
unsigned NumCrss;
/***** Get number of courses from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,Hie_Lvl_SYS,-1L,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCrss))
{
/***** Get current number of courses from database and update cache *****/
NumCrss = (unsigned) DB_GetNumRowsTable ("crs_courses");
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,Hie_Lvl_SYS,-1L,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumCrss);
}
@ -448,7 +449,7 @@ unsigned Crs_GetNumCrssInCty (long CtyCod)
/***** 3. Slow: number of courses in a country from database *****/
Gbl.Cache.NumCrssInCty.CtyCod = CtyCod;
Gbl.Cache.NumCrssInCty.NumCrss = Crs_DB_GetNumCrssInCty (CtyCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,Hie_Lvl_CTY,Gbl.Cache.NumCrssInCty.CtyCod,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_CTY,Gbl.Cache.NumCrssInCty.CtyCod,
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInCty.NumCrss);
return Gbl.Cache.NumCrssInCty.NumCrss;
}
@ -458,7 +459,7 @@ unsigned Crs_GetCachedNumCrssInCty (long CtyCod)
unsigned NumCrss;
/***** Get number of courses from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,Hie_Lvl_CTY,CtyCod,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,HieLvl_CTY,CtyCod,
FigCch_UNSIGNED,&NumCrss))
/***** Get current number of courses from database and update cache *****/
NumCrss = Crs_GetNumCrssInCty (CtyCod);
@ -489,7 +490,7 @@ unsigned Crs_GetNumCrssInIns (long InsCod)
/***** 3. Slow: number of courses in an institution from database *****/
Gbl.Cache.NumCrssInIns.InsCod = InsCod;
Gbl.Cache.NumCrssInIns.NumCrss = Crs_DB_GetNumCrssInIns (InsCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,Hie_Lvl_INS,Gbl.Cache.NumCrssInIns.InsCod,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_INS,Gbl.Cache.NumCrssInIns.InsCod,
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInIns.NumCrss);
return Gbl.Cache.NumCrssInIns.NumCrss;
}
@ -499,7 +500,7 @@ unsigned Crs_GetCachedNumCrssInIns (long InsCod)
unsigned NumCrss;
/***** Get number of courses from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,Hie_Lvl_INS,InsCod,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,HieLvl_INS,InsCod,
FigCch_UNSIGNED,&NumCrss))
/***** Get current number of courses from database and update cache *****/
NumCrss = Crs_GetNumCrssInIns (InsCod);
@ -538,12 +539,12 @@ unsigned Crs_GetCachedNumCrssInCtr (long CtrCod)
unsigned NumCrss;
/***** Get number of courses from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,Hie_Lvl_CTR,CtrCod,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,HieLvl_CTR,CtrCod,
FigCch_UNSIGNED,&NumCrss))
{
/***** Get current number of courses from database and update cache *****/
NumCrss = Crs_GetNumCrssInCtr (CtrCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,Hie_Lvl_CTR,CtrCod,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_CTR,CtrCod,
FigCch_UNSIGNED,&NumCrss);
}
@ -573,7 +574,7 @@ unsigned Crs_GetNumCrssInDeg (long DegCod)
/***** 3. Slow: number of courses in a degree from database *****/
Gbl.Cache.NumCrssInDeg.DegCod = DegCod;
Gbl.Cache.NumCrssInDeg.NumCrss = Crs_DB_GetNumCrssInDeg (DegCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,Hie_Lvl_DEG,Gbl.Cache.NumCrssInDeg.DegCod,
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_DEG,Gbl.Cache.NumCrssInDeg.DegCod,
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInDeg.NumCrss);
return Gbl.Cache.NumCrssInDeg.NumCrss;
}
@ -583,7 +584,7 @@ unsigned Crs_GetCachedNumCrssInDeg (long DegCod)
unsigned NumCrss;
/***** Get number of courses from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,Hie_Lvl_DEG,DegCod,
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,HieLvl_DEG,DegCod,
FigCch_UNSIGNED,&NumCrss))
/***** Get current number of courses from database and update cache *****/
NumCrss = Crs_GetNumCrssInDeg (DegCod);
@ -596,7 +597,7 @@ unsigned Crs_GetCachedNumCrssInDeg (long DegCod)
/*****************************************************************************/
unsigned Crs_GetCachedNumCrssWithUsrs (Rol_Role_t Role,const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod)
HieLvl_Level_t Scope,long Cod)
{
static const FigCch_FigureCached_t FigureCrss[Rol_NUM_ROLES] =
{
@ -665,7 +666,7 @@ void Crs_WriteSelectorOfCourse (void)
/* Write option */
HTM_OPTION (HTM_Type_LONG,&CrsCod,
Gbl.Hierarchy.Level == Hie_Lvl_CRS && // Course selected
Gbl.Hierarchy.Level == HieLvl_CRS && // Course selected
CrsCod == Gbl.Hierarchy.Crs.CrsCod,false,
"%s",row[1]); // Short name (row[1])
}
@ -819,7 +820,7 @@ void Crs_WriteSelectorMyCoursesInBreadcrumb (void)
/***** Write an option with the current course
when I don't belong to it *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS && // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS && // Course selected
!Gbl.Usrs.Me.IBelongToCurrentCrs) // I do not belong to it
HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Crs.CrsCod,true,true,
"%s",Gbl.Hierarchy.Crs.ShrtName);
@ -966,9 +967,9 @@ static bool Crs_ListCoursesOfAYearForSeeing (unsigned Year)
HTM_TR_Begin (NULL);
/* Get number of users */
NumUsrs[Rol_STD] = Usr_GetCachedNumUsrsInCrss (Hie_Lvl_CRS,Crs->CrsCod,1 << Rol_STD);
NumUsrs[Rol_NET] = Usr_GetCachedNumUsrsInCrss (Hie_Lvl_CRS,Crs->CrsCod,1 << Rol_NET);
NumUsrs[Rol_TCH] = Usr_GetCachedNumUsrsInCrss (Hie_Lvl_CRS,Crs->CrsCod,1 << Rol_TCH);
NumUsrs[Rol_STD] = Usr_GetCachedNumUsrsInCrss (HieLvl_CRS,Crs->CrsCod,1 << Rol_STD);
NumUsrs[Rol_NET] = Usr_GetCachedNumUsrsInCrss (HieLvl_CRS,Crs->CrsCod,1 << Rol_NET);
NumUsrs[Rol_TCH] = Usr_GetCachedNumUsrsInCrss (HieLvl_CRS,Crs->CrsCod,1 << Rol_TCH);
NumUsrs[Rol_UNK] = NumUsrs[Rol_STD] +
NumUsrs[Rol_NET] +
NumUsrs[Rol_TCH];
@ -1166,9 +1167,9 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
ICanEdit = Crs_CheckIfICanEdit (Crs);
/* Get number of users */
NumUsrs[Rol_STD] = Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,Crs->CrsCod,1 << Rol_STD);
NumUsrs[Rol_NET] = Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,Crs->CrsCod,1 << Rol_NET);
NumUsrs[Rol_TCH] = Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,Crs->CrsCod,1 << Rol_TCH);
NumUsrs[Rol_STD] = Usr_GetNumUsrsInCrss (HieLvl_CRS,Crs->CrsCod,1 << Rol_STD);
NumUsrs[Rol_NET] = Usr_GetNumUsrsInCrss (HieLvl_CRS,Crs->CrsCod,1 << Rol_NET);
NumUsrs[Rol_TCH] = Usr_GetNumUsrsInCrss (HieLvl_CRS,Crs->CrsCod,1 << Rol_TCH);
NumUsrs[Rol_UNK] = NumUsrs[Rol_STD] +
NumUsrs[Rol_NET] +
NumUsrs[Rol_TCH];
@ -1647,7 +1648,7 @@ void Crs_RemoveCourse (void)
if (Crs_CheckIfICanEdit (Crs_EditingCrs))
{
/***** Check if this course has users *****/
if (Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,Crs_EditingCrs->CrsCod,
if (Usr_GetNumUsrsInCrss (HieLvl_CRS,Crs_EditingCrs->CrsCod,
1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH)) // Course has users ==> don't remove
@ -1819,10 +1820,10 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
Not_DB_RemoveCrsNotices (CrsCod);
/***** Remove all the threads and posts in forums of the course *****/
For_RemoveForums (Hie_Lvl_CRS,CrsCod);
For_RemoveForums (HieLvl_CRS,CrsCod);
/***** Remove all surveys in the course *****/
Svy_RemoveSurveys (Hie_Lvl_CRS,CrsCod);
Svy_RemoveSurveys (HieLvl_CRS,CrsCod);
/***** Remove all games in the course *****/
Gam_RemoveCrsGames (CrsCod);
@ -2520,9 +2521,9 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
Err_WrongCourseExit ();
/***** Get number of teachers and students in this course *****/
NumStds = Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,CrsCod,1 << Rol_STD);
NumNETs = Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,CrsCod,1 << Rol_NET);
NumTchs = Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,CrsCod,1 << Rol_TCH);
NumStds = Usr_GetNumUsrsInCrss (HieLvl_CRS,CrsCod,1 << Rol_STD);
NumNETs = Usr_GetNumUsrsInCrss (HieLvl_CRS,CrsCod,1 << Rol_NET);
NumTchs = Usr_GetNumUsrsInCrss (HieLvl_CRS,CrsCod,1 << Rol_TCH);
NumUsrs = NumStds + NumNETs + NumTchs;
if (NumUsrs)
{
@ -2565,7 +2566,7 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
Deg_PutParamDegCod (Deg.DegCod);
HTM_BUTTON_SUBMIT_Begin (Hie_BuildGoToMsg (row[2]),ClassLink,NULL);
Hie_FreeGoToMsg ();
Lgo_DrawLogo (Hie_Lvl_DEG,Deg.DegCod,Deg.ShrtName,20,"CT",true);
Lgo_DrawLogo (HieLvl_DEG,Deg.DegCod,Deg.ShrtName,20,"CT",true);
HTM_TxtF ("&nbsp;%s&nbsp;(%s)",row[2],row[6]);
HTM_BUTTON_End ();
Frm_EndForm ();
@ -2613,7 +2614,7 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
void Crs_UpdateCrsLast (void)
{
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS && // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS && // Course selected
Gbl.Usrs.Me.Role.Logged >= Rol_STD)
/***** Update last access to current course *****/
Crs_DB_UpdateCrsLastClick ();

View File

@ -114,7 +114,7 @@ unsigned Crs_GetNumCrssInDeg (long DegCod);
unsigned Crs_GetCachedNumCrssInDeg (long DegCod);
unsigned Crs_GetCachedNumCrssWithUsrs (Rol_Role_t Role,const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod);
HieLvl_Level_t Scope,long Cod);
void Crs_WriteSelectorOfCourse (void);
void Crs_ShowCrssOfCurrentDeg (void);

View File

@ -39,6 +39,7 @@
#include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_config.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_indicator.h"
#include "swad_logo.h"
@ -159,10 +160,10 @@ void CrsCfg_Configuration (bool PrintView)
else
{
/***** Number of users *****/
HieCfg_NumUsrsInCrss (Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_TCH);
HieCfg_NumUsrsInCrss (Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_NET);
HieCfg_NumUsrsInCrss (Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_STD);
HieCfg_NumUsrsInCrss (Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_UNK);
HieCfg_NumUsrsInCrss (HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_TCH);
HieCfg_NumUsrsInCrss (HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_NET);
HieCfg_NumUsrsInCrss (HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_STD);
HieCfg_NumUsrsInCrss (HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_UNK);
/***** Indicators *****/
CrsCfg_Indicators ();
@ -204,7 +205,7 @@ void CrsCfg_PrintConfiguration (void)
static void CrsCfg_Title (bool PutLink)
{
HieCfg_Title (PutLink,
Hie_Lvl_DEG, // Logo scope
HieLvl_DEG, // Logo scope
Gbl.Hierarchy.Deg.DegCod, // Logo code
Gbl.Hierarchy.Deg.ShrtName, // Logo short name
Gbl.Hierarchy.Deg.FullName, // Logo full name
@ -263,7 +264,7 @@ static void CrsCfg_Degree (bool PrintView,bool PutForm)
"BT_LINK LT DAT",NULL);
Hie_FreeGoToMsg ();
}
Lgo_DrawLogo (Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod,Gbl.Hierarchy.Deg.ShrtName,
Lgo_DrawLogo (HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod,Gbl.Hierarchy.Deg.ShrtName,
20,"LM",true);
HTM_NBSP ();
HTM_Txt (Gbl.Hierarchy.Deg.FullName);

File diff suppressed because it is too large Load Diff

View File

@ -115,18 +115,16 @@ void Deg_PutParamDegCod (long DegCod);
long Deg_GetAndCheckParamOtherDegCod (long MinCodAllowed);
bool Deg_GetDataOfDegreeByCod (struct Deg_Degree *Deg);
void Deg_GetShortNameOfDegreeByCod (struct Deg_Degree *Deg);
long Deg_GetCtrCodOfDegreeByCod (long DegCod);
long Deg_GetInsCodOfDegreeByCod (long DegCod);
void Deg_RemoveDegreeCompletely (long DegCod);
void Deg_RenameDegreeShort (void);
void Deg_RenameDegreeFull (void);
void Deg_RenameDegree (struct Deg_Degree *Deg,Cns_ShrtOrFullName_t ShrtOrFullName);
bool Deg_CheckIfDegNameExistsInCtr (const char *FieldName,const char *Name,
long DegCod,long CtrCod);
bool Deg_DB_CheckIfDegNameExistsInCtr (const char *FieldName,const char *Name,
long DegCod,long CtrCod);
void Deg_ChangeDegreeType (void);
void Deg_ChangeDegWWW (void);
void Deg_UpdateDegWWWDB (long DegCod,const char NewWWW[Cns_MAX_BYTES_WWW + 1]);
void Deg_DB_UpdateDegWWW (long DegCod,const char NewWWW[Cns_MAX_BYTES_WWW + 1]);
void Deg_ChangeDegStatus (void);
void Deg_ContEditAfterChgDeg (void);
@ -149,9 +147,9 @@ unsigned Deg_GetNumDegsInCtr (long CtrCod);
unsigned Deg_GetCachedNumDegsInCtr (long CtrCod);
unsigned Deg_GetCachedNumDegsWithCrss (const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod);
HieLvl_Level_t Scope,long Cod);
unsigned Deg_GetCachedNumDegsWithUsrs (Rol_Role_t Role,const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod);
HieLvl_Level_t Scope,long Cod);
void Deg_ListDegsFound (MYSQL_RES **mysql_res,unsigned NumCrss);

View File

@ -29,11 +29,13 @@
#include "swad_database.h"
#include "swad_degree_config.h"
#include "swad_degree_database.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_help.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_config.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_logo.h"
@ -70,8 +72,6 @@ static void DegCfg_Shortcut (bool PrintView);
static void DegCfg_QR (void);
static void DegCfg_NumCrss (void);
static void DegCfg_UpdateDegCtrDB (long DegCod,long CtrCod);
/*****************************************************************************/
/****************** Show information of the current degree *******************/
/*****************************************************************************/
@ -128,45 +128,45 @@ static void DegCfg_Configuration (bool PrintView)
/***** Title *****/
DegCfg_Title (PutLink);
/**************************** Left part ***********************************/
HTM_DIV_Begin ("class=\"HIE_CFG_LEFT HIE_CFG_WIDTH\"");
/**************************** Left part ***********************************/
HTM_DIV_Begin ("class=\"HIE_CFG_LEFT HIE_CFG_WIDTH\"");
/***** Begin table *****/
HTM_TABLE_BeginWidePadding (2);
/***** Begin table *****/
HTM_TABLE_BeginWidePadding (2);
/***** Center *****/
DegCfg_Center (PrintView,PutFormCtr);
/***** Center *****/
DegCfg_Center (PrintView,PutFormCtr);
/***** Degree name *****/
DegCfg_FullName (PutFormName);
DegCfg_ShrtName (PutFormName);
/***** Degree name *****/
DegCfg_FullName (PutFormName);
DegCfg_ShrtName (PutFormName);
/***** Degree WWW *****/
DegCfg_WWW (PrintView,PutFormWWW);
/***** Degree WWW *****/
DegCfg_WWW (PrintView,PutFormWWW);
/***** Shortcut to the degree *****/
DegCfg_Shortcut (PrintView);
/***** Shortcut to the degree *****/
DegCfg_Shortcut (PrintView);
if (PrintView)
/***** QR code with link to the degree *****/
DegCfg_QR ();
else
{
/***** Number of courses *****/
DegCfg_NumCrss ();
if (PrintView)
/***** QR code with link to the degree *****/
DegCfg_QR ();
else
{
/***** Number of courses *****/
DegCfg_NumCrss ();
/***** Number of users *****/
HieCfg_NumUsrsInCrss (Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_TCH);
HieCfg_NumUsrsInCrss (Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_NET);
HieCfg_NumUsrsInCrss (Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_STD);
HieCfg_NumUsrsInCrss (Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_UNK);
}
/***** Number of users *****/
HieCfg_NumUsrsInCrss (HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_TCH);
HieCfg_NumUsrsInCrss (HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_NET);
HieCfg_NumUsrsInCrss (HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_STD);
HieCfg_NumUsrsInCrss (HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_UNK);
}
/***** End table *****/
HTM_TABLE_End ();
/***** End table *****/
HTM_TABLE_End ();
/***** End of left part *****/
HTM_DIV_End ();
/***** End of left part *****/
HTM_DIV_End ();
/***** End box *****/
Box_BoxEnd ();
@ -186,7 +186,7 @@ static void DegCfg_PutIconsToPrintAndUpload (__attribute__((unused)) void *Args)
// Only degree admins, center admins, institution admins and system admins
// have permission to upload logo of the degree
/***** Link to upload logo of degree *****/
Lgo_PutIconToChangeLogo (Hie_Lvl_DEG);
Lgo_PutIconToChangeLogo (HieLvl_DEG);
}
/*****************************************************************************/
@ -196,7 +196,7 @@ static void DegCfg_PutIconsToPrintAndUpload (__attribute__((unused)) void *Args)
static void DegCfg_Title (bool PutLink)
{
HieCfg_Title (PutLink,
Hie_Lvl_DEG, // Logo scope
HieLvl_DEG, // Logo scope
Gbl.Hierarchy.Deg.DegCod, // Logo code
Gbl.Hierarchy.Deg.ShrtName, // Logo short name
Gbl.Hierarchy.Deg.FullName, // Logo full name
@ -216,56 +216,56 @@ static void DegCfg_Center (bool PrintView,bool PutForm)
/***** Center *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",PutForm ? "OthCtrCod" :
NULL,
Txt_Center);
/* Label */
Frm_LabelColumn ("RT",PutForm ? "OthCtrCod" :
NULL,
Txt_Center);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
if (PutForm)
{
/* Get list of centers of the current institution */
Ctr_GetBasicListOfCenters (Gbl.Hierarchy.Ins.InsCod);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
if (PutForm)
{
/* Get list of centers of the current institution */
Ctr_GetBasicListOfCenters (Gbl.Hierarchy.Ins.InsCod);
/* Put form to select center */
Frm_BeginForm (ActChgDegCtrCfg);
HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,
"id=\"OthCtrCod\" name=\"OthCtrCod\""
" class=\"INPUT_SHORT_NAME\"");
for (NumCtr = 0;
NumCtr < Gbl.Hierarchy.Ctrs.Num;
NumCtr++)
HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Ctrs.Lst[NumCtr].CtrCod,
Gbl.Hierarchy.Ctrs.Lst[NumCtr].CtrCod == Gbl.Hierarchy.Ctr.CtrCod,false,
"%s",Gbl.Hierarchy.Ctrs.Lst[NumCtr].ShrtName);
HTM_SELECT_End ();
Frm_EndForm ();
/* Put form to select center */
Frm_BeginForm (ActChgDegCtrCfg);
HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,
"id=\"OthCtrCod\" name=\"OthCtrCod\""
" class=\"INPUT_SHORT_NAME\"");
for (NumCtr = 0;
NumCtr < Gbl.Hierarchy.Ctrs.Num;
NumCtr++)
HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Ctrs.Lst[NumCtr].CtrCod,
Gbl.Hierarchy.Ctrs.Lst[NumCtr].CtrCod == Gbl.Hierarchy.Ctr.CtrCod,false,
"%s",Gbl.Hierarchy.Ctrs.Lst[NumCtr].ShrtName);
HTM_SELECT_End ();
Frm_EndForm ();
/* Free list of centers */
Ctr_FreeListCenters ();
}
else // I can not move degree to another center
{
if (!PrintView)
{
Frm_BeginFormGoTo (ActSeeCtrInf);
Ctr_PutParamCtrCod (Gbl.Hierarchy.Ctr.CtrCod);
HTM_BUTTON_SUBMIT_Begin (Hie_BuildGoToMsg (Gbl.Hierarchy.Ctr.ShrtName),
"BT_LINK LT DAT",NULL);
Hie_FreeGoToMsg ();
}
Lgo_DrawLogo (Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,Gbl.Hierarchy.Ctr.ShrtName,
20,"LM",true);
HTM_NBSP ();
HTM_Txt (Gbl.Hierarchy.Ctr.FullName);
if (!PrintView)
{
HTM_BUTTON_End ();
Frm_EndForm ();
}
}
HTM_TD_End ();
/* Free list of centers */
Ctr_FreeListCenters ();
}
else // I can not move degree to another center
{
if (!PrintView)
{
Frm_BeginFormGoTo (ActSeeCtrInf);
Ctr_PutParamCtrCod (Gbl.Hierarchy.Ctr.CtrCod);
HTM_BUTTON_SUBMIT_Begin (Hie_BuildGoToMsg (Gbl.Hierarchy.Ctr.ShrtName),
"BT_LINK LT DAT",NULL);
Hie_FreeGoToMsg ();
}
Lgo_DrawLogo (HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,Gbl.Hierarchy.Ctr.ShrtName,
20,"LM",true);
HTM_NBSP ();
HTM_Txt (Gbl.Hierarchy.Ctr.FullName);
if (!PrintView)
{
HTM_BUTTON_End ();
Frm_EndForm ();
}
}
HTM_TD_End ();
HTM_TR_End ();
}
@ -279,7 +279,7 @@ static void DegCfg_FullName (bool PutForm)
extern const char *Txt_Degree;
HieCfg_FullName (PutForm,Txt_Degree,ActRenDegFulCfg,
Gbl.Hierarchy.Deg.FullName);
Gbl.Hierarchy.Deg.FullName);
}
/*****************************************************************************/
@ -328,24 +328,26 @@ static void DegCfg_NumCrss (void)
extern const char *Txt_Courses_of_DEGREE_X;
/***** Number of courses *****/
/* Begin table row */
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,Txt_Courses);
/* Label */
Frm_LabelColumn ("RT",NULL,Txt_Courses);
/* Data */
HTM_TD_Begin ("class=\"LB\"");
Frm_BeginFormGoTo (ActSeeCrs);
Deg_PutParamDegCod (Gbl.Hierarchy.Deg.DegCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildStringStr (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName),
"BT_LINK DAT",NULL);
Str_FreeString ();
HTM_Unsigned (Crs_GetCachedNumCrssInDeg (Gbl.Hierarchy.Deg.DegCod));
HTM_BUTTON_End ();
Frm_EndForm ();
HTM_TD_End ();
/* Data */
HTM_TD_Begin ("class=\"LB\"");
Frm_BeginFormGoTo (ActSeeCrs);
Deg_PutParamDegCod (Gbl.Hierarchy.Deg.DegCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildStringStr (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName),
"BT_LINK DAT",NULL);
Str_FreeString ();
HTM_Unsigned (Crs_GetCachedNumCrssInDeg (Gbl.Hierarchy.Deg.DegCod));
HTM_BUTTON_End ();
Frm_EndForm ();
HTM_TD_End ();
/* End table row */
HTM_TR_End ();
}
@ -369,18 +371,18 @@ void DegCfg_ChangeDegCtr (void)
Ctr_GetDataOfCenterByCod (&NewCtr);
/***** Check if it already exists a degree with the same name in the new center *****/
if (Deg_CheckIfDegNameExistsInCtr ("ShortName",Gbl.Hierarchy.Deg.ShrtName,Gbl.Hierarchy.Deg.DegCod,NewCtr.CtrCod))
if (Deg_DB_CheckIfDegNameExistsInCtr ("ShortName",Gbl.Hierarchy.Deg.ShrtName,Gbl.Hierarchy.Deg.DegCod,NewCtr.CtrCod))
Ale_CreateAlert (Ale_WARNING,
Txt_The_degree_X_already_exists,
Gbl.Hierarchy.Deg.ShrtName);
else if (Deg_CheckIfDegNameExistsInCtr ("FullName",Gbl.Hierarchy.Deg.FullName,Gbl.Hierarchy.Deg.DegCod,NewCtr.CtrCod))
else if (Deg_DB_CheckIfDegNameExistsInCtr ("FullName",Gbl.Hierarchy.Deg.FullName,Gbl.Hierarchy.Deg.DegCod,NewCtr.CtrCod))
Ale_CreateAlert (Ale_WARNING,
Txt_The_degree_X_already_exists,
Gbl.Hierarchy.Deg.FullName);
else
{
/***** Update center in table of degrees *****/
DegCfg_UpdateDegCtrDB (Gbl.Hierarchy.Deg.DegCod,NewCtr.CtrCod);
Deg_DB_UpdateDegCtr (Gbl.Hierarchy.Deg.DegCod,NewCtr.CtrCod);
Gbl.Hierarchy.Deg.CtrCod =
Gbl.Hierarchy.Ctr.CtrCod = NewCtr.CtrCod;
@ -396,21 +398,6 @@ void DegCfg_ChangeDegCtr (void)
}
}
/*****************************************************************************/
/********************** Update center in table of degrees ********************/
/*****************************************************************************/
static void DegCfg_UpdateDegCtrDB (long DegCod,long CtrCod)
{
/***** Update center in table of degrees *****/
DB_QueryUPDATE ("can not update the center of a degree",
"UPDATE deg_degrees"
" SET CtrCod=%ld"
" WHERE DegCod=%ld",
CtrCod,
DegCod);
}
/*****************************************************************************/
/*************** Change the name of a degree in configuration ****************/
/*****************************************************************************/
@ -442,7 +429,7 @@ void DegCfg_ChangeDegWWW (void)
if (NewWWW[0])
{
/***** Update the table changing old WWW by new WWW *****/
Deg_UpdateDegWWWDB (Gbl.Hierarchy.Deg.DegCod,NewWWW);
Deg_DB_UpdateDegWWW (Gbl.Hierarchy.Deg.DegCod,NewWWW);
Str_Copy (Gbl.Hierarchy.Deg.WWW,NewWWW,sizeof (Gbl.Hierarchy.Deg.WWW) - 1);
/***** Write message to show the change made *****/

440
swad_degree_database.c Normal file
View File

@ -0,0 +1,440 @@
// swad_degree_database.c: degrees operations with database
/*
SWAD (Shared Workspace At a Distance),
is a web platform developed at the University of Granada (Spain),
and used to support university teaching.
This file is part of SWAD core.
Copyright (C) 1999-2021 Antonio Cañas Vargas
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*****************************************************************************/
/********************************* Headers ***********************************/
/*****************************************************************************/
// #include <stdbool.h> // For boolean type
// #include <stddef.h> // For NULL
// #include <stdlib.h> // For free
// #include <string.h> // For string functions
#include "swad_database.h"
// #include "swad_degree.h"
// #include "swad_degree_config.h"
#include "swad_degree_database.h"
#include "swad_error.h"
// #include "swad_figure.h"
// #include "swad_figure_cache.h"
// #include "swad_form.h"
// #include "swad_forum.h"
#include "swad_global.h"
// #include "swad_hierarchy.h"
// #include "swad_HTML.h"
// #include "swad_logo.h"
// #include "swad_message.h"
// #include "swad_survey.h"
/*****************************************************************************/
/************** External global variables from others modules ****************/
/*****************************************************************************/
extern struct Globals Gbl;
/*****************************************************************************/
/*************************** Public constants ********************************/
/*****************************************************************************/
/*****************************************************************************/
/***************************** Private types *********************************/
/*****************************************************************************/
/*****************************************************************************/
/**************************** Private variables ******************************/
/*****************************************************************************/
/*****************************************************************************/
/*************************** Private prototypes ******************************/
/*****************************************************************************/
/*****************************************************************************/
/************************** Create a new degree type *************************/
/*****************************************************************************/
void Deg_DB_CreateDegreeType (const char DegTypName[DegTyp_MAX_BYTES_DEGREE_TYPE_NAME + 1])
{
DB_QueryINSERT ("can not create a new type of degree",
"INSERT INTO deg_types"
" SET DegTypName='%s'",
DegTypName);
}
/*****************************************************************************/
/***************************** Create a new degree ***************************/
/*****************************************************************************/
void Deg_DB_CreateDegree (struct Deg_Degree *Deg,unsigned Status)
{
Deg->DegCod =
DB_QueryINSERTandReturnCode ("can not create a new degree",
"INSERT INTO deg_degrees"
" (CtrCod,DegTypCod,Status,"
"RequesterUsrCod,ShortName,FullName,WWW)"
" VALUES"
" (%ld,%ld,%u,"
"%ld,'%s','%s','%s')",
Deg->CtrCod,
Deg->DegTypCod,
Status,
Gbl.Usrs.Me.UsrDat.UsrCod,
Deg->ShrtName,
Deg->FullName,
Deg->WWW);
}
/*****************************************************************************/
/**************** Create a list with all the degree types ********************/
/*****************************************************************************/
unsigned Deg_DB_GetDegreeTypes (MYSQL_RES **mysql_res,
HieLvl_Level_t Scope,DegTyp_Order_t Order)
{
static const char *OrderBySubQuery[DegTyp_NUM_ORDERS] =
{
[DegTyp_ORDER_BY_DEGREE_TYPE] = "DegTypName",
[DegTyp_ORDER_BY_NUM_DEGREES] = "NumDegs DESC,DegTypName",
};
/***** Get types of degree from database *****/
switch (Scope)
{
case HieLvl_SYS:
/* Get
all degree types with degrees
union with
all degree types without any degree */
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get types of degree",
"(SELECT deg_types.DegTypCod," // row[0]
"deg_types.DegTypName," // row[1]
"COUNT(deg_degrees.DegCod) AS NumDegs" // row[2]
" FROM deg_degrees,"
"deg_types"
" WHERE deg_degrees.DegTypCod=deg_types.DegTypCod"
" GROUP BY deg_degrees.DegTypCod)"
" UNION "
"(SELECT DegTypCod," // row[0]
"DegTypName," // row[1]
"0 AS NumDegs" // row[2]
// do not use '0' because
// NumDegs will be casted to string
// and order will be wrong
" FROM deg_types"
" WHERE DegTypCod NOT IN"
" (SELECT DegTypCod"
" FROM deg_degrees))"
" ORDER BY %s",
OrderBySubQuery[Order]);
case HieLvl_CTY:
/* Get only degree types with degrees in the current country */
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get types of degree",
"SELECT deg_types.DegTypCod," // row[0]
"deg_types.DegTypName," // row[1]
"COUNT(deg_degrees.DegCod) AS NumDegs" // row[2]
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"deg_types"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegTypCod=deg_types.DegTypCod"
" GROUP BY deg_degrees.DegTypCod"
" ORDER BY %s",
Gbl.Hierarchy.Cty.CtyCod,
OrderBySubQuery[Order]);
case HieLvl_INS:
/* Get only degree types with degrees in the current institution */
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get types of degree",
"SELECT deg_types.DegTypCod," // row[0]
"deg_types.DegTypName," // row[1]
"COUNT(deg_degrees.DegCod) AS NumDegs" // row[2]
" FROM ctr_centers,"
"deg_degrees,"
"deg_types"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegTypCod=deg_types.DegTypCod"
" GROUP BY deg_degrees.DegTypCod"
" ORDER BY %s",
Gbl.Hierarchy.Ins.InsCod,
OrderBySubQuery[Order]);
case HieLvl_CTR:
/* Get only degree types with degrees in the current center */
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get types of degree",
"SELECT deg_types.DegTypCod," // row[0]
"deg_types.DegTypName," // row[1]
"COUNT(deg_degrees.DegCod) AS NumDegs" // row[2]
" FROM deg_degrees,"
"deg_types"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegTypCod=deg_types.DegTypCod"
" GROUP BY deg_degrees.DegTypCod"
" ORDER BY %s",
Gbl.Hierarchy.Ctr.CtrCod,
OrderBySubQuery[Order]);
case HieLvl_DEG:
case HieLvl_CRS:
/* Get only degree types with degrees in the current degree */
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get types of degree",
"SELECT deg_types.DegTypCod," // row[0]
"deg_types.DegTypName," // row[1]
"COUNT(deg_degrees.DegCod) AS NumDegs" // row[2]
" FROM deg_degrees,"
"deg_types"
" WHERE deg_degrees.DegCod=%ld"
" AND deg_degrees.DegTypCod=deg_types.DegTypCod"
" GROUP BY deg_degrees.DegTypCod"
" ORDER BY %s",
Gbl.Hierarchy.Deg.DegCod,
OrderBySubQuery[Order]);
default:
Err_WrongScopeExit ();
return 0; // Not reached
}
}
/*****************************************************************************/
/************** Get the name of a type of degree from database ***************/
/*****************************************************************************/
void Deg_DB_GetDegTypeNameByCod (struct DegreeType *DegTyp)
{
DB_QuerySELECTString (DegTyp->DegTypName,sizeof (DegTyp->DegTypName) - 1,
"can not get the name of a type of degree",
"SELECT DegTypName"
" FROM deg_types"
" WHERE DegTypCod=%ld",
DegTyp->DegTypCod);
}
/*****************************************************************************/
/********************* Get data of a degree from its code ********************/
/*****************************************************************************/
unsigned Deg_DB_GetDataOfDegreeByCod (MYSQL_RES **mysql_res,long DegCod)
{
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get data of a degree",
"SELECT DegCod," // row[0]
"CtrCod," // row[1]
"DegTypCod," // row[2]
"Status," // row[3]
"RequesterUsrCod," // row[4]
"ShortName," // row[5]
"FullName," // row[6]
"WWW" // row[7]
" FROM deg_degrees"
" WHERE DegCod=%ld",
DegCod);
}
/*****************************************************************************/
/************* Get the center code of a degree from its code *****************/
/*****************************************************************************/
long Deg_DB_GetCtrCodOfDegreeByCod (long DegCod)
{
/***** Trivial check: degree code should be > 0 *****/
if (DegCod <= 0)
return -1L;
/***** Get the center code of a degree from database *****/
return DB_QuerySELECTCode ("can not get the center of a degree",
"SELECT CtrCod"
" FROM deg_degrees"
" WHERE DegCod=%ld",
DegCod);
}
/*****************************************************************************/
/************* Get the short name of a degree from its code ******************/
/*****************************************************************************/
void Deg_DB_GetShortNameOfDegreeByCod (struct Deg_Degree *Deg)
{
/***** Trivial check: degree code should be > 0 *****/
if (Deg->DegCod > 0)
{
Deg->ShrtName[0] = '\0';
return;
}
/***** Get the short name of a degree from database *****/
DB_QuerySELECTString (Deg->ShrtName,sizeof (Deg->ShrtName) - 1,
"can not get the short name of a degree",
"SELECT ShortName"
" FROM deg_degrees"
" WHERE DegCod=%ld",
Deg->DegCod);
}
/*****************************************************************************/
/****************** Check if name of degree type exists **********************/
/*****************************************************************************/
bool Deg_DB_CheckIfDegreeTypeNameExists (const char *DegTypName,long DegTypCod)
{
/***** Get number of degree types with a name from database *****/
return (DB_QueryCOUNT ("can not check if the name of a type of degree"
" already existed",
"SELECT COUNT(*)"
" FROM deg_types"
" WHERE DegTypName='%s'"
" AND DegTypCod<>%ld",
DegTypName,DegTypCod) != 0);
}
/*****************************************************************************/
/*************** Get number of degrees of a type from database ***************/
/*****************************************************************************/
unsigned Deg_DB_GetNumDegsOfType (long DegTypCod)
{
return (unsigned)
DB_QueryCOUNT ("can not get number of degrees of a type",
"SELECT COUNT(*)"
" FROM deg_degrees"
" WHERE DegTypCod=%ld",
DegTypCod);
}
/*****************************************************************************/
/******************** Get degrees of a type from database ********************/
/*****************************************************************************/
unsigned Deg_DB_GetDegsOfType (MYSQL_RES **mysql_res,long DegTypCod)
{
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get degrees of a type",
"SELECT DegCod"
" FROM deg_degrees"
" WHERE DegTypCod=%ld",
DegTypCod);
}
/*****************************************************************************/
/********* Get degrees belonging to the current center from database *********/
/*****************************************************************************/
unsigned Deg_DB_GetDegsOfCurrentCtr (MYSQL_RES **mysql_res)
{
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get degrees of a center",
"SELECT DegCod," // row[0]
"ShortName" // row[1]
" FROM deg_degrees"
" WHERE CtrCod=%ld"
" ORDER BY ShortName",
Gbl.Hierarchy.Ctr.CtrCod);
}
/*****************************************************************************/
/******************** Get degrees with pending courses ***********************/
/*****************************************************************************/
unsigned Deg_DB_GetDegsWithPendingCrss (MYSQL_RES **mysql_res)
{
/***** Get degrees with pending courses *****/
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_DEG_ADM:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get degrees with pending courses",
"SELECT crs_courses.DegCod," // row[0]
"COUNT(*)" // row[1]
" FROM usr_admins,"
"crs_courses,"
"deg_degrees"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=crs_courses.DegCod"
" AND (crs_courses.Status & %u)<>0"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" GROUP BY crs_courses.DegCod"
" ORDER BY deg_degrees.ShortName",
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (HieLvl_DEG),
(unsigned) Crs_STATUS_BIT_PENDING);
case Rol_SYS_ADM:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get degrees with pending courses",
"SELECT crs_courses.DegCod," // row[0]
"COUNT(*)" // row[1]
" FROM crs_courses,"
"deg_degrees"
" WHERE (crs_courses.Status & %u)<>0"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" GROUP BY crs_courses.DegCod"
" ORDER BY deg_degrees.ShortName",
(unsigned) Crs_STATUS_BIT_PENDING);
default: // Forbidden for other users
Err_WrongRoleExit ();
return 0; // Not reached
}
}
/*****************************************************************************/
/************************* Update degree type name ***************************/
/*****************************************************************************/
void Deg_DB_UpdateDegTypName (long DegTypCod,const char NewNameDegTyp[DegTyp_MAX_BYTES_DEGREE_TYPE_NAME + 1])
{
DB_QueryUPDATE ("can not update the type of a degree",
"UPDATE deg_types"
" SET DegTypName='%s'"
" WHERE DegTypCod=%ld",
NewNameDegTyp,
DegTypCod);
}
/*****************************************************************************/
/**************** Update degree center in table of degrees *******************/
/*****************************************************************************/
void Deg_DB_UpdateDegCtr (long DegCod,long CtrCod)
{
DB_QueryUPDATE ("can not update the center of a degree",
"UPDATE deg_degrees"
" SET CtrCod=%ld"
" WHERE DegCod=%ld",
CtrCod,
DegCod);
}
/*****************************************************************************/
/*************************** Remove the degree type **************************/
/*****************************************************************************/
void Deg_DB_RemoveDegTyp (long DegTypCod)
{
DB_QueryDELETE ("can not remove a type of degree",
"DELETE FROM deg_types"
" WHERE DegTypCod=%ld",
DegTypCod);
}

71
swad_degree_database.h Normal file
View File

@ -0,0 +1,71 @@
// swad_degree_database.h: degrees operations with database
#ifndef _SWAD_DEG_DB
#define _SWAD_DEG_DB
/*
SWAD (Shared Workspace At a Distance in Spanish),
is a web platform developed at the University of Granada (Spain),
and used to support university teaching.
This file is part of SWAD core.
Copyright (C) 1999-2021 Antonio Cañas Vargas
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*****************************************************************************/
/********************************* Headers ***********************************/
/*****************************************************************************/
#include <mysql/mysql.h> // To access MySQL databases
// #include "swad_action.h"
// #include "swad_constant.h"
#include "swad_degree_type.h"
// #include "swad_hierarchy_level.h"
// #include "swad_role_type.h"
// #include "swad_string.h"
/*****************************************************************************/
/***************************** Public constants ******************************/
/*****************************************************************************/
/*****************************************************************************/
/******************************* Public types ********************************/
/*****************************************************************************/
/*****************************************************************************/
/***************************** Public prototypes *****************************/
/*****************************************************************************/
void Deg_DB_CreateDegreeType (const char DegTypName[DegTyp_MAX_BYTES_DEGREE_TYPE_NAME + 1]);
void Deg_DB_CreateDegree (struct Deg_Degree *Deg,unsigned Status);
unsigned Deg_DB_GetDegreeTypes (MYSQL_RES **mysql_res,
HieLvl_Level_t Scope,DegTyp_Order_t Order);
void Deg_DB_GetDegTypeNameByCod (struct DegreeType *DegTyp);
unsigned Deg_DB_GetDataOfDegreeByCod (MYSQL_RES **mysql_res,long DegCod);
long Deg_DB_GetCtrCodOfDegreeByCod (long DegCod);
void Deg_DB_GetShortNameOfDegreeByCod (struct Deg_Degree *Deg);
bool Deg_DB_CheckIfDegreeTypeNameExists (const char *DegTypName,long DegTypCod);
unsigned Deg_DB_GetNumDegsOfType (long DegTypCod);
unsigned Deg_DB_GetDegsOfType (MYSQL_RES **mysql_res,long DegTypCod);
unsigned Deg_DB_GetDegsOfCurrentCtr (MYSQL_RES **mysql_res);
unsigned Deg_DB_GetDegsWithPendingCrss (MYSQL_RES **mysql_res);
void Deg_DB_UpdateDegTypName (long DegTypCod,const char NewNameDegTyp[DegTyp_MAX_BYTES_DEGREE_TYPE_NAME + 1]);
void Deg_DB_UpdateDegCtr (long DegCod,long CtrCod);
void Deg_DB_RemoveDegTyp (long DegTypCod);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
// swad_degree_type.h: degree types
#ifndef _SWAD_DT
#define _SWAD_DT
#ifndef _SWAD_DEG_TYP
#define _SWAD_DEG_TYP
/*
SWAD (Shared Workspace At a Distance in Spanish),
is a web platform developed at the University of Granada (Spain),
@ -33,8 +33,8 @@
/***************************** Public constants ******************************/
/*****************************************************************************/
#define Deg_MAX_CHARS_DEGREE_TYPE_NAME (32 - 1) // 31
#define Deg_MAX_BYTES_DEGREE_TYPE_NAME ((Deg_MAX_CHARS_DEGREE_TYPE_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511
#define DegTyp_MAX_CHARS_DEGREE_TYPE_NAME (32 - 1) // 31
#define DegTyp_MAX_BYTES_DEGREE_TYPE_NAME ((DegTyp_MAX_CHARS_DEGREE_TYPE_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511
/*****************************************************************************/
/******************************* Public types ********************************/
@ -42,44 +42,44 @@
struct DegreeType
{
long DegTypCod; // Degree type code
char DegTypName[Deg_MAX_BYTES_DEGREE_TYPE_NAME + 1]; // Degree type name
unsigned NumDegs; // Number of degrees of this type
long DegTypCod; // Degree type code
char DegTypName[DegTyp_MAX_BYTES_DEGREE_TYPE_NAME + 1]; // Degree type name
unsigned NumDegs; // Number of degrees of this type
};
#define DT_NUM_ORDERS 2
#define DegTyp_NUM_ORDERS 2
typedef enum
{
DT_ORDER_BY_DEGREE_TYPE = 0,
DT_ORDER_BY_NUM_DEGREES = 1,
} DT_Order_t;
DegTyp_ORDER_BY_DEGREE_TYPE = 0,
DegTyp_ORDER_BY_NUM_DEGREES = 1,
} DegTyp_Order_t;
/*****************************************************************************/
/***************************** Public prototypes *****************************/
/*****************************************************************************/
void DT_WriteSelectorDegreeTypes (long SelectedDegTypCod);
void DegTyp_WriteSelectorDegreeTypes (long SelectedDegTypCod);
void DT_SeeDegreeTypesInDegTab (void);
void DT_SeeDegreeTypesInStaTab (void);
void DT_EditDegreeTypes (void);
void DegTyp_SeeDegreeTypesInDegTab (void);
void DegTyp_SeeDegreeTypesInStaTab (void);
void DegTyp_EditDegreeTypes (void);
void DT_PutIconToViewDegreeTypes (void);
void DegTyp_PutIconToViewDegreeTypes (void);
bool DT_CheckIfICanCreateDegreeTypes (void);
bool DegTyp_CheckIfICanCreateDegreeTypes (void);
void DT_GetListDegreeTypes (Hie_Lvl_Level_t Scope,DT_Order_t Order);
void DT_FreeListDegreeTypes (void);
void DegTyp_GetListDegreeTypes (HieLvl_Level_t Scope,DegTyp_Order_t Order);
void DegTyp_FreeListDegreeTypes (void);
void DT_ReceiveFormNewDegreeType (void);
void DegTyp_ReceiveFormNewDegreeType (void);
void DT_RemoveDegreeType (void);
void DegTyp_RemoveDegreeType (void);
long DT_GetAndCheckParamOtherDegTypCod (long MinCodAllowed);
long DegTyp_GetAndCheckParamOtherDegTypCod (long MinCodAllowed);
bool DT_GetDataOfDegreeTypeByCod (struct DegreeType *DegTyp);
void DT_RenameDegreeType (void);
bool DegTyp_GetDataOfDegreeTypeByCod (struct DegreeType *DegTyp);
void DegTyp_RenameDegreeType (void);
void DT_ContEditAfterChgDegTyp (void);
void DegTyp_ContEditAfterChgDegTyp (void);
#endif

View File

@ -161,26 +161,26 @@ static void Enr_AskIfRegRemUsr (struct ListUsrCods *ListUsrCods,Rol_Role_t Role)
static void Enr_ShowFormToEditOtherUsr (void);
static void Enr_AddAdm (Hie_Lvl_Level_t Scope,long Cod,const char *InsCtrDegName);
static void Enr_RegisterAdmin (struct UsrData *UsrDat,Hie_Lvl_Level_t Scope,
static void Enr_AddAdm (HieLvl_Level_t Scope,long Cod,const char *InsCtrDegName);
static void Enr_RegisterAdmin (struct UsrData *UsrDat,HieLvl_Level_t Scope,
long Cod,const char *InsCtrDegName);
static bool Enr_CheckIfICanRemUsrFromCrs (void);
static void Enr_ReqRemAdmOfDeg (void);
static void Enr_ReqRemOrRemAdm (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr,Hie_Lvl_Level_t Scope,
static void Enr_ReqRemOrRemAdm (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr,HieLvl_Level_t Scope,
long Cod,const char *InsCtrDegName);
static void Enr_ReqAddAdm (Hie_Lvl_Level_t Scope,long Cod,const char *InsCtrDegName);
static void Enr_ReqAddAdm (HieLvl_Level_t Scope,long Cod,const char *InsCtrDegName);
static void Enr_AskIfRemoveUsrFromCrs (struct UsrData *UsrDat);
static void Enr_EffectivelyRemUsrFromCrs (struct UsrData *UsrDat,
struct Crs_Course *Crs,
Enr_RemoveUsrProduction_t RemoveUsrWorks,
Cns_QuietOrVerbose_t QuietOrVerbose);
static void Enr_AskIfRemAdm (bool ItsMe,Hie_Lvl_Level_t Scope,
static void Enr_AskIfRemAdm (bool ItsMe,HieLvl_Level_t Scope,
const char *InsCtrDegName);
static void Enr_EffectivelyRemAdm (struct UsrData *UsrDat,Hie_Lvl_Level_t Scope,
static void Enr_EffectivelyRemAdm (struct UsrData *UsrDat,HieLvl_Level_t Scope,
long Cod,const char *InsCtrDegName);
/*****************************************************************************/
@ -191,7 +191,7 @@ void Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs (void)
{
/***** Put link to register students *****/
if (Gbl.Usrs.Me.Role.Logged == Rol_TCH) // Course selected and I am logged as teacher
if (!Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
if (!Usr_GetNumUsrsInCrss (HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
1 << Rol_STD)) // No students in course
Usr_ShowWarningNoUsersFound (Rol_STD);
}
@ -205,7 +205,7 @@ void Enr_PutButtonInlineToRegisterStds (long CrsCod)
extern const char *Txt_Register_students;
if (Gbl.Usrs.Me.Role.Logged == Rol_TCH) // Course selected and I am logged as teacher
if (!Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,CrsCod,
if (!Usr_GetNumUsrsInCrss (HieLvl_CRS,CrsCod,
1 << Rol_STD)) // No students in course
{
Frm_BeginForm (ActReqEnrSevStd);
@ -658,7 +658,7 @@ static void Enr_ReqAdminUsrs (Rol_Role_t Role)
Enr_AskIfRegRemMe (Role);
break;
case Rol_TCH:
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS && Role == Rol_STD)
if (Gbl.Hierarchy.Level == HieLvl_CRS && Role == Rol_STD)
Enr_ShowFormRegRemSeveralUsrs (Rol_STD);
else
Enr_AskIfRegRemMe (Rol_TCH);
@ -667,7 +667,7 @@ static void Enr_ReqAdminUsrs (Rol_Role_t Role)
case Rol_CTR_ADM:
case Rol_INS_ADM:
case Rol_SYS_ADM:
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS)
if (Gbl.Hierarchy.Level == HieLvl_CRS)
Enr_ShowFormRegRemSeveralUsrs (Role);
else
Enr_ReqAnotherUsrIDToRegisterRemove (Role);
@ -701,7 +701,7 @@ static void Enr_ShowFormRegRemSeveralUsrs (Rol_Role_t Role)
const char *Title;
/***** Contextual menu *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
Mnu_ContextMenuBegin ();
@ -712,7 +712,7 @@ static void Enr_ShowFormRegRemSeveralUsrs (Rol_Role_t Role)
Enr_PutLinkToAdminOneUsr (ActReqMdfOneStd);
/* Put link to remove all the students in the current course */
if (Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
if (Usr_GetNumUsrsInCrss (HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
1 << Rol_STD)) // This course has students
Enr_PutLinkToRemAllStdsThisCrs ();
break;
@ -780,7 +780,7 @@ static void Enr_ShowFormRegRemSeveralUsrs (Rol_Role_t Role)
HTM_DIV_Begin ("class=\"%s LM\"",The_ClassTitle[Gbl.Prefs.Theme]);
HTM_Txt (Txt_Step_3_Optionally_select_groups);
HTM_DIV_End ();
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
if (Gbl.Crs.Grps.NumGrps) // This course has groups?
{
@ -994,7 +994,7 @@ static void Enr_PutActionsRegRemSeveralUsrs (void)
HTM_UL_Begin ("class=\"LIST_LEFT %s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
/***** Register / remove users listed or not listed *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
HTM_LI_Begin (NULL);
HTM_LABEL_Begin (NULL);
@ -1217,7 +1217,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
if (WhatToDo.RemoveUsrs)
{
/***** Get list of users in current course *****/
Usr_GetListUsrs (Hie_Lvl_CRS,Role);
Usr_GetListUsrs (HieLvl_CRS,Role);
if (Gbl.Usrs.LstUsrs[Role].NumUsrs)
{
@ -1504,27 +1504,27 @@ bool Enr_PutActionsRegRemOneUsr (bool ItsMe)
bool OptionChecked = false;
/***** Check if the other user belongs to the current course *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS)
if (Gbl.Hierarchy.Level == HieLvl_CRS)
UsrBelongsToCrs = Usr_CheckIfUsrBelongsToCurrentCrs (&Gbl.Usrs.Other.UsrDat);
if (Gbl.Hierarchy.Ins.InsCod > 0)
{
/***** Check if the other user is administrator of the current institution *****/
UsrIsInsAdmin = Usr_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,
Hie_Lvl_INS,
HieLvl_INS,
Gbl.Hierarchy.Ins.InsCod);
if (Gbl.Hierarchy.Ctr.CtrCod > 0)
{
/***** Check if the other user is administrator of the current center *****/
UsrIsCtrAdmin = Usr_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,
Hie_Lvl_CTR,
HieLvl_CTR,
Gbl.Hierarchy.Ctr.CtrCod);
if (Gbl.Hierarchy.Deg.DegCod > 0)
/***** Check if the other user is administrator of the current degree *****/
UsrIsDegAdmin = Usr_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,
Hie_Lvl_DEG,
HieLvl_DEG,
Gbl.Hierarchy.Deg.DegCod);
}
}
@ -1533,7 +1533,7 @@ bool Enr_PutActionsRegRemOneUsr (bool ItsMe)
HTM_UL_Begin ("class=\"LIST_LEFT %s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
/***** Register user in course / Modify user's data *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS && Gbl.Usrs.Me.Role.Logged >= Rol_STD)
if (Gbl.Hierarchy.Level == HieLvl_CRS && Gbl.Usrs.Me.Role.Logged >= Rol_STD)
{
Enr_PutActionModifyOneUsr (&OptionChecked,UsrBelongsToCrs,ItsMe);
OptionsShown = true;
@ -1831,7 +1831,7 @@ static void Enr_RegisterUsr (struct UsrData *UsrDat,Rol_Role_t RegRemRole,
}
/***** Register user in current course in database *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
if (Usr_CheckIfUsrBelongsToCurrentCrs (UsrDat))
{
@ -1876,7 +1876,7 @@ void Enr_AskRemAllStdsThisCrs (void)
extern const char *Hlp_USERS_Administration_remove_all_students;
extern const char *Txt_Remove_all_students;
extern const char *Txt_Do_you_really_want_to_remove_the_X_students_from_the_course_Y_;
unsigned NumStds = Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
unsigned NumStds = Usr_GetNumUsrsInCrss (HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
1 << Rol_STD); // This course has students
/***** Begin box *****/
@ -1944,7 +1944,7 @@ unsigned Enr_RemAllStdsInCrs (struct Crs_Course *Crs)
/***** Get list of students in current course *****/
Gbl.Usrs.ClassPhoto.AllGroups = true; // Get all the students of the current course
Usr_GetListUsrs (Hie_Lvl_CRS,Rol_STD);
Usr_GetListUsrs (HieLvl_CRS,Rol_STD);
NumStdsInCrs = Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs;
/***** Remove all the students *****/
@ -2063,7 +2063,7 @@ void Enr_SignUpInCrs (void)
if (RoleFromForm == Rol_TCH)
Notify = true;
else
Notify = (Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
Notify = (Usr_GetNumUsrsInCrss (HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
1 << Rol_TCH) != 0); // This course has teachers
if (Notify)
Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_ENROLMENT_REQUEST,ReqCod);
@ -2305,13 +2305,13 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
Enr_RemoveExpiredEnrolmentRequests ();
/***** Get scope *****/
Gbl.Scope.Allowed = 1 << Hie_Lvl_SYS |
1 << Hie_Lvl_CTY |
1 << Hie_Lvl_INS |
1 << Hie_Lvl_CTR |
1 << Hie_Lvl_DEG |
1 << Hie_Lvl_CRS;
Gbl.Scope.Default = Hie_Lvl_CRS;
Gbl.Scope.Allowed = 1 << HieLvl_SYS |
1 << HieLvl_CTY |
1 << HieLvl_INS |
1 << HieLvl_CTR |
1 << HieLvl_DEG |
1 << HieLvl_CRS;
Gbl.Scope.Default = HieLvl_CRS;
Sco_GetScope ("ScopeEnr");
/***** Begin box *****/
@ -2359,7 +2359,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
/***** Build query *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS: // Show requesters for the whole platform
case HieLvl_SYS: // Show requesters for the whole platform
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_TCH:
@ -2400,7 +2400,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
" AND crs_courses.CrsCod=crs_requests.CrsCod"
" AND ((1<<crs_requests.Role)&%u)<>0"
" ORDER BY crs_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_DEG),
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (HieLvl_DEG),
RolesSelected);
break;
case Rol_CTR_ADM:
@ -2423,7 +2423,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
" AND crs_courses.CrsCod=crs_requests.CrsCod"
" AND ((1<<crs_requests.Role)&%u)<>0"
" ORDER BY crs_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (HieLvl_CTR),
RolesSelected);
break;
case Rol_INS_ADM:
@ -2448,7 +2448,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
" AND crs_courses.CrsCod=crs_requests.CrsCod"
" AND ((1<<crs_requests.Role)&%u)<>0"
" ORDER BY crs_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_INS),
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (HieLvl_INS),
RolesSelected);
break;
case Rol_SYS_ADM:
@ -2470,7 +2470,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
break;
}
break;
case Hie_Lvl_CTY: // Show requesters for the current country
case HieLvl_CTY: // Show requesters for the current country
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_TCH:
@ -2529,7 +2529,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
" AND ((1<<crs_requests.Role)&%u)<>0"
" ORDER BY crs_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
Sco_GetDBStrFromScope (HieLvl_DEG),
Gbl.Hierarchy.Cty.CtyCod,
RolesSelected);
break;
@ -2559,7 +2559,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
" AND ((1<<crs_requests.Role)&%u)<>0"
" ORDER BY crs_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_CTR),
Sco_GetDBStrFromScope (HieLvl_CTR),
Gbl.Hierarchy.Cty.CtyCod,
RolesSelected);
break;
@ -2589,7 +2589,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
" AND ((1<<crs_requests.Role)&%u)<>0"
" ORDER BY crs_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_INS),
Sco_GetDBStrFromScope (HieLvl_INS),
Gbl.Hierarchy.Cty.CtyCod,
RolesSelected);
break;
@ -2622,7 +2622,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
break;
}
break;
case Hie_Lvl_INS: // Show requesters for the current institution
case HieLvl_INS: // Show requesters for the current institution
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_TCH:
@ -2677,7 +2677,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
" AND ((1<<crs_requests.Role)&%u)<>0"
" ORDER BY crs_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
Sco_GetDBStrFromScope (HieLvl_DEG),
Gbl.Hierarchy.Ins.InsCod,
RolesSelected);
break;
@ -2704,7 +2704,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
" AND crs_courses.CrsCod=crs_requests.CrsCod"
" AND ((1<<crs_requests.Role)&%u)<>0"
" ORDER BY crs_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (HieLvl_CTR),
Gbl.Hierarchy.Ins.InsCod,
RolesSelected);
break;
@ -2736,7 +2736,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
break;
}
break;
case Hie_Lvl_CTR: // Show requesters for the current center
case HieLvl_CTR: // Show requesters for the current center
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_TCH:
@ -2787,7 +2787,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
" AND ((1<<crs_requests.Role)&%u)<>0"
" ORDER BY crs_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
Sco_GetDBStrFromScope (HieLvl_DEG),
Gbl.Hierarchy.Ctr.CtrCod,
RolesSelected);
break;
@ -2818,7 +2818,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
break;
}
break;
case Hie_Lvl_DEG: // Show requesters for the current degree
case HieLvl_DEG: // Show requesters for the current degree
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_TCH:
@ -2871,7 +2871,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
break;
}
break;
case Hie_Lvl_CRS: // Show requesters for the current course
case HieLvl_CRS: // Show requesters for the current course
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_TCH: // If I am logged as teacher of this course , I can view all the requesters from this course
@ -2988,7 +2988,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
/***** Number of teachers in the course *****/
HTM_TD_Begin ("class=\"DAT RT\"");
HTM_Unsigned (Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,Crs.CrsCod,
HTM_Unsigned (Usr_GetNumUsrsInCrss (HieLvl_CRS,Crs.CrsCod,
1 << Rol_TCH));
HTM_TD_End ();
@ -3398,7 +3398,7 @@ static void Enr_ShowFormToEditOtherUsr (void)
if (Usr_ChkIfUsrCodExists (Gbl.Usrs.Other.UsrDat.UsrCod))
{
/***** Show form to edit user *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
/* Check if this user belongs to the current course */
if (Usr_CheckIfUsrBelongsToCurrentCrs (&Gbl.Usrs.Other.UsrDat))
@ -3440,7 +3440,7 @@ static void Enr_ShowFormToEditOtherUsr (void)
void Enr_AddAdmToIns (void)
{
Enr_AddAdm (Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod,Gbl.Hierarchy.Ins.FullName);
Enr_AddAdm (HieLvl_INS,Gbl.Hierarchy.Ins.InsCod,Gbl.Hierarchy.Ins.FullName);
}
/*****************************************************************************/
@ -3449,7 +3449,7 @@ void Enr_AddAdmToIns (void)
void Enr_AddAdmToCtr (void)
{
Enr_AddAdm (Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,Gbl.Hierarchy.Ctr.FullName);
Enr_AddAdm (HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,Gbl.Hierarchy.Ctr.FullName);
}
/*****************************************************************************/
@ -3458,14 +3458,14 @@ void Enr_AddAdmToCtr (void)
void Enr_AddAdmToDeg (void)
{
Enr_AddAdm (Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod,Gbl.Hierarchy.Deg.FullName);
Enr_AddAdm (HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod,Gbl.Hierarchy.Deg.FullName);
}
/*****************************************************************************/
/******************* Add an administrator to current degree ******************/
/*****************************************************************************/
static void Enr_AddAdm (Hie_Lvl_Level_t Scope,long Cod,const char *InsCtrDegName)
static void Enr_AddAdm (HieLvl_Level_t Scope,long Cod,const char *InsCtrDegName)
{
bool ICanRegister;
@ -3475,9 +3475,9 @@ static void Enr_AddAdm (Hie_Lvl_Level_t Scope,long Cod,const char *InsCtrDegName
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
{
/* Check if I am allowed to register user as administrator in institution/center/degree */
ICanRegister = ((Scope == Hie_Lvl_DEG && Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ||
(Scope == Hie_Lvl_CTR && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ||
(Scope == Hie_Lvl_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM));
ICanRegister = ((Scope == HieLvl_DEG && Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ||
(Scope == HieLvl_CTR && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ||
(Scope == HieLvl_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM));
if (ICanRegister)
{
/***** Register administrator in current institution/center/degree in database *****/
@ -3499,7 +3499,7 @@ static void Enr_AddAdm (Hie_Lvl_Level_t Scope,long Cod,const char *InsCtrDegName
/**************** Register administrator in current institution **************/
/*****************************************************************************/
static void Enr_RegisterAdmin (struct UsrData *UsrDat,Hie_Lvl_Level_t Scope,long Cod,const char *InsCtrDegName)
static void Enr_RegisterAdmin (struct UsrData *UsrDat,HieLvl_Level_t Scope,long Cod,const char *InsCtrDegName)
{
extern const char *Txt_THE_USER_X_is_already_an_administrator_of_Y;
extern const char *Txt_THE_USER_X_has_been_enroled_as_administrator_of_Y;
@ -3617,7 +3617,7 @@ static bool Enr_CheckIfICanRemUsrFromCrs (void)
static void Enr_ReqRemAdmOfIns (void)
{
Enr_ReqRemOrRemAdm (Enr_REQUEST_REMOVE_USR,Hie_Lvl_INS,
Enr_ReqRemOrRemAdm (Enr_REQUEST_REMOVE_USR,HieLvl_INS,
Gbl.Hierarchy.Ins.InsCod,Gbl.Hierarchy.Ins.FullName);
}
@ -3627,7 +3627,7 @@ static void Enr_ReqRemAdmOfIns (void)
static void Enr_ReqRemAdmOfCtr (void)
{
Enr_ReqRemOrRemAdm (Enr_REQUEST_REMOVE_USR,Hie_Lvl_CTR,
Enr_ReqRemOrRemAdm (Enr_REQUEST_REMOVE_USR,HieLvl_CTR,
Gbl.Hierarchy.Ctr.CtrCod,Gbl.Hierarchy.Ctr.FullName);
}
@ -3637,7 +3637,7 @@ static void Enr_ReqRemAdmOfCtr (void)
static void Enr_ReqRemAdmOfDeg (void)
{
Enr_ReqRemOrRemAdm (Enr_REQUEST_REMOVE_USR,Hie_Lvl_DEG,
Enr_ReqRemOrRemAdm (Enr_REQUEST_REMOVE_USR,HieLvl_DEG,
Gbl.Hierarchy.Deg.DegCod,Gbl.Hierarchy.Deg.FullName);
}
@ -3647,7 +3647,7 @@ static void Enr_ReqRemAdmOfDeg (void)
void Enr_RemAdmIns (void)
{
Enr_ReqRemOrRemAdm (Enr_REMOVE_USR,Hie_Lvl_INS,
Enr_ReqRemOrRemAdm (Enr_REMOVE_USR,HieLvl_INS,
Gbl.Hierarchy.Ins.InsCod,Gbl.Hierarchy.Ins.FullName);
}
@ -3657,7 +3657,7 @@ void Enr_RemAdmIns (void)
void Enr_RemAdmCtr (void)
{
Enr_ReqRemOrRemAdm (Enr_REMOVE_USR,Hie_Lvl_CTR,
Enr_ReqRemOrRemAdm (Enr_REMOVE_USR,HieLvl_CTR,
Gbl.Hierarchy.Ctr.CtrCod,Gbl.Hierarchy.Ctr.FullName);
}
@ -3667,7 +3667,7 @@ void Enr_RemAdmCtr (void)
void Enr_RemAdmDeg (void)
{
Enr_ReqRemOrRemAdm (Enr_REMOVE_USR,Hie_Lvl_DEG,
Enr_ReqRemOrRemAdm (Enr_REMOVE_USR,HieLvl_DEG,
Gbl.Hierarchy.Deg.DegCod,Gbl.Hierarchy.Deg.FullName);
}
@ -3675,7 +3675,7 @@ void Enr_RemAdmDeg (void)
/***************** Remove an admin from current institution ******************/
/*****************************************************************************/
static void Enr_ReqRemOrRemAdm (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr,Hie_Lvl_Level_t Scope,
static void Enr_ReqRemOrRemAdm (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr,HieLvl_Level_t Scope,
long Cod,const char *InsCtrDegName)
{
extern const char *Txt_THE_USER_X_is_not_an_administrator_of_Y;
@ -3690,9 +3690,9 @@ static void Enr_ReqRemOrRemAdm (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr,Hie_Lvl_Leve
/* Check if it's forbidden to remove an administrator */
ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod);
ICanRemove = (ItsMe ||
(Scope == Hie_Lvl_DEG && Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ||
(Scope == Hie_Lvl_CTR && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ||
(Scope == Hie_Lvl_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM));
(Scope == HieLvl_DEG && Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ||
(Scope == HieLvl_CTR && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ||
(Scope == HieLvl_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM));
if (ICanRemove)
{
/* Check if the other user is an admin of the current institution/center/degree */
@ -3725,20 +3725,20 @@ static void Enr_ReqRemOrRemAdm (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr,Hie_Lvl_Leve
/**** Ask if really wanted to add an administrator to current institution ****/
/*****************************************************************************/
static void Enr_ReqAddAdm (Hie_Lvl_Level_t Scope,long Cod,const char *InsCtrDegName)
static void Enr_ReqAddAdm (HieLvl_Level_t Scope,long Cod,const char *InsCtrDegName)
{
extern const char *Txt_THE_USER_X_is_already_an_administrator_of_Y;
extern const char *Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_X;
extern const char *Txt_Register_user_IN_A_COURSE_OR_DEGREE;
static const Act_Action_t Enr_ActNewAdm[Hie_Lvl_NUM_LEVELS] =
static const Act_Action_t Enr_ActNewAdm[HieLvl_NUM_LEVELS] =
{
[Hie_Lvl_UNK] = ActUnk,
[Hie_Lvl_SYS] = ActUnk,
[Hie_Lvl_CTY] = ActUnk,
[Hie_Lvl_INS] = ActNewAdmIns,
[Hie_Lvl_CTR] = ActNewAdmCtr,
[Hie_Lvl_DEG] = ActNewAdmDeg,
[Hie_Lvl_CRS] = ActUnk,
[HieLvl_UNK] = ActUnk,
[HieLvl_SYS] = ActUnk,
[HieLvl_CTY] = ActUnk,
[HieLvl_INS] = ActNewAdmIns,
[HieLvl_CTR] = ActNewAdmCtr,
[HieLvl_DEG] = ActNewAdmDeg,
[HieLvl_CRS] = ActUnk,
};
bool ICanRegister;
@ -3748,9 +3748,9 @@ static void Enr_ReqAddAdm (Hie_Lvl_Level_t Scope,long Cod,const char *InsCtrDegN
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
{
/* Check if I am allowed to register user as administrator in institution/center/degree */
ICanRegister = ((Scope == Hie_Lvl_DEG && Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ||
(Scope == Hie_Lvl_CTR && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ||
(Scope == Hie_Lvl_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM));
ICanRegister = ((Scope == HieLvl_DEG && Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) ||
(Scope == HieLvl_CTR && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ||
(Scope == HieLvl_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM));
if (ICanRegister)
{
if (Usr_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,Scope,Cod)) // User is already an administrator of current institution/center/degree
@ -3838,7 +3838,7 @@ void Enr_CreateNewUsr1 (void)
false); // I am NOT creating my own account
/***** Register user in current course in database *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
if (Usr_CheckIfUsrBelongsToCurrentCrs (&Gbl.Usrs.Other.UsrDat))
{
@ -3953,7 +3953,7 @@ void Enr_ModifyUsr1 (void)
/***** Update user's data in database *****/
Enr_UpdateUsrData (&Gbl.Usrs.Other.UsrDat);
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
/***** Get new role from record form *****/
NewRole = Rec_GetRoleFromRecordForm ();
@ -4097,15 +4097,15 @@ void Enr_ModifyUsr2 (void)
Enr_ShowFormToEditOtherUsr ();
break;
case Enr_REGISTER_ONE_DEGREE_ADMIN:
Enr_ReqAddAdm (Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod,
Enr_ReqAddAdm (HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod,
Gbl.Hierarchy.Deg.FullName);
break;
case Enr_REGISTER_ONE_CENTER_ADMIN:
Enr_ReqAddAdm (Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,
Enr_ReqAddAdm (HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,
Gbl.Hierarchy.Ctr.FullName);
break;
case Enr_REGISTER_ONE_INSTITUTION_ADMIN:
Enr_ReqAddAdm (Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod,
Enr_ReqAddAdm (HieLvl_INS,Gbl.Hierarchy.Ins.InsCod,
Gbl.Hierarchy.Ins.FullName);
break;
case Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE:
@ -4372,22 +4372,22 @@ void Enr_DB_RemUsrFromAllCrss (long UsrCod)
/** Ask if really wanted to remove an administrator from current institution */
/*****************************************************************************/
static void Enr_AskIfRemAdm (bool ItsMe,Hie_Lvl_Level_t Scope,
static void Enr_AskIfRemAdm (bool ItsMe,HieLvl_Level_t Scope,
const char *InsCtrDegName)
{
extern const char *Txt_Do_you_really_want_to_be_removed_as_an_administrator_of_X;
extern const char *Txt_Do_you_really_want_to_remove_the_following_user_as_an_administrator_of_X;
extern const char *Txt_Remove_me_as_an_administrator;
extern const char *Txt_Remove_USER_as_an_administrator;
static const Act_Action_t Enr_ActRemAdm[Hie_Lvl_NUM_LEVELS] =
static const Act_Action_t Enr_ActRemAdm[HieLvl_NUM_LEVELS] =
{
[Hie_Lvl_UNK] = ActUnk,
[Hie_Lvl_SYS] = ActUnk,
[Hie_Lvl_CTY] = ActUnk,
[Hie_Lvl_INS] = ActRemAdmIns,
[Hie_Lvl_CTR] = ActRemAdmCtr,
[Hie_Lvl_DEG] = ActRemAdmDeg,
[Hie_Lvl_CRS] = ActUnk,
[HieLvl_UNK] = ActUnk,
[HieLvl_SYS] = ActUnk,
[HieLvl_CTY] = ActUnk,
[HieLvl_INS] = ActRemAdmIns,
[HieLvl_CTR] = ActRemAdmCtr,
[HieLvl_DEG] = ActRemAdmDeg,
[HieLvl_CRS] = ActUnk,
};
if (Usr_ChkIfUsrCodExists (Gbl.Usrs.Other.UsrDat.UsrCod))
@ -4416,7 +4416,7 @@ static void Enr_AskIfRemAdm (bool ItsMe,Hie_Lvl_Level_t Scope,
/**** Remove an administrator from current institution, center or degree *****/
/*****************************************************************************/
static void Enr_EffectivelyRemAdm (struct UsrData *UsrDat,Hie_Lvl_Level_t Scope,
static void Enr_EffectivelyRemAdm (struct UsrData *UsrDat,HieLvl_Level_t Scope,
long Cod,const char *InsCtrDegName)
{
extern const char *Txt_THE_USER_X_has_been_removed_as_administrator_of_Y;

View File

@ -45,6 +45,7 @@
#include "swad_figure.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_match.h"
#include "swad_match_result.h"
@ -1748,16 +1749,16 @@ bool Exa_CheckIfEditable (const struct Exa_Exam *Exam)
/*****************************************************************************/
// Returns the number of courses with exams in this location
unsigned Exa_GetNumCoursesWithExams (Hie_Lvl_Level_t Scope)
unsigned Exa_GetNumCoursesWithExams (HieLvl_Level_t Scope)
{
/***** Get number of courses with exams from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return DB_QueryCOUNT ("can not get number of courses with exams",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM exa_exams");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return DB_QueryCOUNT ("can not get number of courses with exams",
"SELECT COUNT(DISTINCT exa_exams.CrsCod)"
" FROM ins_instits,"
@ -1771,7 +1772,7 @@ unsigned Exa_GetNumCoursesWithExams (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return DB_QueryCOUNT ("can not get number of courses with exams",
"SELECT COUNT(DISTINCT exa_exams.CrsCod)"
" FROM ctr_centers,"
@ -1783,7 +1784,7 @@ unsigned Exa_GetNumCoursesWithExams (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return DB_QueryCOUNT ("can not get number of courses with exams",
"SELECT COUNT(DISTINCT exa_exams.CrsCod)"
" FROM deg_degrees,"
@ -1793,7 +1794,7 @@ unsigned Exa_GetNumCoursesWithExams (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return DB_QueryCOUNT ("can not get number of courses with exams",
"SELECT COUNT(DISTINCT exa_exams.CrsCod)"
" FROM crs_courses,"
@ -1801,7 +1802,7 @@ unsigned Exa_GetNumCoursesWithExams (Hie_Lvl_Level_t Scope)
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return DB_QueryCOUNT ("can not get number of courses with exams",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM exa_exams"
@ -1818,16 +1819,16 @@ unsigned Exa_GetNumCoursesWithExams (Hie_Lvl_Level_t Scope)
/*****************************************************************************/
// Returns the number of exams in this location
unsigned Exa_GetNumExams (Hie_Lvl_Level_t Scope)
unsigned Exa_GetNumExams (HieLvl_Level_t Scope)
{
/***** Get number of exams from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return DB_QueryCOUNT ("can not get number of exams",
"SELECT COUNT(*)"
" FROM exa_exams");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return DB_QueryCOUNT ("can not get number of exams",
"SELECT COUNT(*)"
" FROM ins_instits,"
@ -1841,7 +1842,7 @@ unsigned Exa_GetNumExams (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return DB_QueryCOUNT ("can not get number of exams",
"SELECT COUNT(*)"
" FROM ctr_centers,"
@ -1853,7 +1854,7 @@ unsigned Exa_GetNumExams (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return DB_QueryCOUNT ("can not get number of exams",
"SELECT COUNT(*)"
" FROM deg_degrees,"
@ -1863,7 +1864,7 @@ unsigned Exa_GetNumExams (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return DB_QueryCOUNT ("can not get number of exams",
"SELECT COUNT(*)"
" FROM crs_courses,"
@ -1871,7 +1872,7 @@ unsigned Exa_GetNumExams (Hie_Lvl_Level_t Scope)
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return DB_QueryCOUNT ("can not get number of exams",
"SELECT COUNT(*)"
" FROM exa_exams"
@ -1887,12 +1888,12 @@ unsigned Exa_GetNumExams (Hie_Lvl_Level_t Scope)
/************* Get average number of questions per course exam ***************/
/*****************************************************************************/
double Exa_GetNumQstsPerCrsExam (Hie_Lvl_Level_t Scope)
double Exa_GetNumQstsPerCrsExam (HieLvl_Level_t Scope)
{
/***** Get number of questions per exam from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return DB_QuerySELECTDouble ("can not get number of questions per exam",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(exa_set_questions.QstCod) AS NumQsts"
@ -1900,7 +1901,7 @@ double Exa_GetNumQstsPerCrsExam (Hie_Lvl_Level_t Scope)
"exa_set_questions"
" WHERE exa_exams.ExaCod=exa_set_questions.ExaCod"
" GROUP BY exa_set_questions.ExaCod) AS NumQstsTable");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return DB_QuerySELECTDouble ("can not get number of questions per exam",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(exa_set_questions.QstCod) AS NumQsts"
@ -1918,7 +1919,7 @@ double Exa_GetNumQstsPerCrsExam (Hie_Lvl_Level_t Scope)
" AND exa_exams.ExaCod=exa_set_questions.ExaCod"
" GROUP BY exa_set_questions.ExaCod) AS NumQstsTable",
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return DB_QuerySELECTDouble ("can not get number of questions per exam",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(exa_set_questions.QstCod) AS NumQsts"
@ -1934,7 +1935,7 @@ double Exa_GetNumQstsPerCrsExam (Hie_Lvl_Level_t Scope)
" AND exa_exams.ExaCod=exa_set_questions.ExaCod"
" GROUP BY exa_set_questions.ExaCod) AS NumQstsTable",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return DB_QuerySELECTDouble ("can not get number of questions per exam",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(exa_set_questions.QstCod) AS NumQsts"
@ -1948,7 +1949,7 @@ double Exa_GetNumQstsPerCrsExam (Hie_Lvl_Level_t Scope)
" AND exa_exams.ExaCod=exa_set_questions.ExaCod"
" GROUP BY exa_set_questions.ExaCod) AS NumQstsTable",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return DB_QuerySELECTDouble ("can not get number of questions per exam",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(exa_set_questions.QstCod) AS NumQsts"
@ -1960,7 +1961,7 @@ double Exa_GetNumQstsPerCrsExam (Hie_Lvl_Level_t Scope)
" AND exa_exams.ExaCod=exa_set_questions.ExaCod"
" GROUP BY exa_set_questions.ExaCod) AS NumQstsTable",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return DB_QuerySELECTDouble ("can not get number of questions per exam",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(exa_set_questions.QstCod) AS NumQsts"

View File

@ -91,8 +91,8 @@ void Exa_ReceiveFormExam (void);
bool Exa_CheckIfEditable (const struct Exa_Exam *Exam);
unsigned Exa_GetNumCoursesWithExams (Hie_Lvl_Level_t Scope);
unsigned Exa_GetNumExams (Hie_Lvl_Level_t Scope);
double Exa_GetNumQstsPerCrsExam (Hie_Lvl_Level_t Scope);
unsigned Exa_GetNumCoursesWithExams (HieLvl_Level_t Scope);
unsigned Exa_GetNumExams (HieLvl_Level_t Scope);
double Exa_GetNumQstsPerCrsExam (HieLvl_Level_t Scope);
#endif

View File

@ -104,7 +104,7 @@ struct Fig_FiguresForum
static void Fig_ReqShowFigure (Fig_FigureType_t SelectedFigureType);
static void Fig_PutHiddenParamFigureType (Fig_FigureType_t FigureType);
static void Fig_PutHiddenParamScopeFig (Hie_Lvl_Level_t ScopeFig);
static void Fig_PutHiddenParamScopeFig (HieLvl_Level_t ScopeFig);
static void Fig_GetAndShowHierarchyStats (void);
static void Fig_WriteHeadHierarchy (void);
@ -142,7 +142,7 @@ static void Fig_GetAndShowNumUsrsNotBelongingToAnyCrs (void);
static void Fig_GetAndShowUsersRanking (void);
static void Fig_GetAndShowFileBrowsersStats (void);
static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
static void Fig_GetSizeOfFileZoneFromDB (HieLvl_Level_t Scope,
Brw_FileBrowser_t FileBrowser,
struct Fig_SizeOfFileZones *SizeOfFileZones);
static void Fig_WriteStatsExpTreesTableHead1 (void);
@ -159,7 +159,7 @@ static void Fig_WriteRowStatsFileBrowsers3 (const char *NameOfFileZones,
struct Fig_SizeOfFileZones *SizeOfFileZones);
static void Fig_GetAndShowOERsStats (void);
static void Fig_GetNumberOfOERsFromDB (Hie_Lvl_Level_t Scope,
static void Fig_GetNumberOfOERsFromDB (HieLvl_Level_t Scope,
Brw_License_t License,
unsigned long NumFiles[2]);
@ -237,13 +237,13 @@ static void Fig_ReqShowFigure (Fig_FigureType_t SelectedFigureType)
/***** Compute stats for anywhere, degree or course? *****/
HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
HTM_TxtColonNBSP (Txt_Scope);
Gbl.Scope.Allowed = 1 << Hie_Lvl_SYS |
1 << Hie_Lvl_CTY |
1 << Hie_Lvl_INS |
1 << Hie_Lvl_CTR |
1 << Hie_Lvl_DEG |
1 << Hie_Lvl_CRS;
Gbl.Scope.Default = Hie_Lvl_SYS;
Gbl.Scope.Allowed = 1 << HieLvl_SYS |
1 << HieLvl_CTY |
1 << HieLvl_INS |
1 << HieLvl_CTR |
1 << HieLvl_DEG |
1 << HieLvl_CRS;
Gbl.Scope.Default = HieLvl_SYS;
Sco_GetScope ("ScopeFig");
Sco_PutSelectorScope ("ScopeFig",HTM_DONT_SUBMIT_ON_CHANGE);
HTM_LABEL_End ();
@ -283,7 +283,7 @@ void Fig_PutIconToShowFigure (Fig_FigureType_t FigureType)
struct Fig_Figures Figures;
/***** Set default scope (used only if Gbl.Scope.Current is unknown) *****/
Gbl.Scope.Default = Hie_Lvl_CRS;
Gbl.Scope.Default = HieLvl_CRS;
Sco_AdjustScope ();
/***** Put icon to show figure *****/
@ -321,7 +321,7 @@ static void Fig_PutHiddenParamFigureType (Fig_FigureType_t FigureType)
/********* Put hidden parameter for the type of figure (statistic) ***********/
/*****************************************************************************/
static void Fig_PutHiddenParamScopeFig (Hie_Lvl_Level_t ScopeFig)
static void Fig_PutHiddenParamScopeFig (HieLvl_Level_t ScopeFig)
{
Sco_PutParamScope ("ScopeFig",ScopeFig);
}
@ -434,11 +434,11 @@ static void Fig_GetAndShowNumUsrsInCrss (Rol_Role_t Role)
{
extern const char *Txt_Total;
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
long Cod = (Gbl.Scope.Current == Hie_Lvl_CTY ? Gbl.Hierarchy.Cty.CtyCod :
(Gbl.Scope.Current == Hie_Lvl_INS ? Gbl.Hierarchy.Ins.InsCod :
(Gbl.Scope.Current == Hie_Lvl_CTR ? Gbl.Hierarchy.Ctr.CtrCod :
(Gbl.Scope.Current == Hie_Lvl_DEG ? Gbl.Hierarchy.Deg.DegCod :
(Gbl.Scope.Current == Hie_Lvl_CRS ? Gbl.Hierarchy.Crs.CrsCod :
long Cod = (Gbl.Scope.Current == HieLvl_CTY ? Gbl.Hierarchy.Cty.CtyCod :
(Gbl.Scope.Current == HieLvl_INS ? Gbl.Hierarchy.Ins.InsCod :
(Gbl.Scope.Current == HieLvl_CTR ? Gbl.Hierarchy.Ctr.CtrCod :
(Gbl.Scope.Current == HieLvl_DEG ? Gbl.Hierarchy.Deg.DegCod :
(Gbl.Scope.Current == HieLvl_CRS ? Gbl.Hierarchy.Crs.CrsCod :
-1L)))));
char *Class = (Role == Rol_UNK) ? "DAT_N LINE_TOP RB" :
"DAT RB";
@ -666,14 +666,14 @@ static void Fig_GetAndShowHierarchyWithInss (void)
/***** Get number of elements with institutions *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumCtysWithInss = Cty_GetCachedNumCtysWithInss ();
break;
case Hie_Lvl_CTY:
case Hie_Lvl_INS:
case Hie_Lvl_CTR:
case Hie_Lvl_DEG:
case Hie_Lvl_CRS:
case HieLvl_CTY:
case HieLvl_INS:
case HieLvl_CTR:
case HieLvl_DEG:
case HieLvl_CRS:
break;
default:
Err_WrongScopeExit ();
@ -705,18 +705,18 @@ static void Fig_GetAndShowHierarchyWithCtrs (void)
/***** Get number of elements with centers *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumCtysWithCtrs = Cty_GetCachedNumCtysWithCtrs ();
NumInssWithCtrs = Ins_GetCachedNumInssWithCtrs ("",Hie_Lvl_SYS,-1L);
NumInssWithCtrs = Ins_GetCachedNumInssWithCtrs ("",HieLvl_SYS,-1L);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
sprintf (SubQuery,"ins_instits.CtyCod=%ld AND ",Gbl.Hierarchy.Cty.CtyCod);
NumInssWithCtrs = Ins_GetCachedNumInssWithCtrs (SubQuery,Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumInssWithCtrs = Ins_GetCachedNumInssWithCtrs (SubQuery,HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case Hie_Lvl_CTR:
case Hie_Lvl_DEG:
case Hie_Lvl_CRS:
case HieLvl_INS:
case HieLvl_CTR:
case HieLvl_DEG:
case HieLvl_CRS:
break;
default:
Err_WrongScopeExit ();
@ -749,23 +749,23 @@ static void Fig_GetAndShowHierarchyWithDegs (void)
/***** Get number of elements with degrees *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumCtysWithDegs = Cty_GetCachedNumCtysWithDegs ();
NumInssWithDegs = Ins_GetCachedNumInssWithDegs ("",Hie_Lvl_SYS,-1L);
NumCtrsWithDegs = Ctr_GetCachedNumCtrsWithDegs ("",Hie_Lvl_SYS,-1L);
NumInssWithDegs = Ins_GetCachedNumInssWithDegs ("",HieLvl_SYS,-1L);
NumCtrsWithDegs = Ctr_GetCachedNumCtrsWithDegs ("",HieLvl_SYS,-1L);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
sprintf (SubQuery,"ins_instits.CtyCod=%ld AND ",Gbl.Hierarchy.Cty.CtyCod);
NumInssWithDegs = Ins_GetCachedNumInssWithDegs (SubQuery,Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumCtrsWithDegs = Ctr_GetCachedNumCtrsWithDegs (SubQuery,Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumInssWithDegs = Ins_GetCachedNumInssWithDegs (SubQuery,HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumCtrsWithDegs = Ctr_GetCachedNumCtrsWithDegs (SubQuery,HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
sprintf (SubQuery,"ctr_centers.InsCod=%ld AND ",Gbl.Hierarchy.Ins.InsCod);
NumCtrsWithDegs = Ctr_GetCachedNumCtrsWithDegs (SubQuery,Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod);
NumCtrsWithDegs = Ctr_GetCachedNumCtrsWithDegs (SubQuery,HieLvl_INS,Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
case Hie_Lvl_DEG:
case Hie_Lvl_CRS:
case HieLvl_CTR:
case HieLvl_DEG:
case HieLvl_CRS:
break;
default:
Err_WrongScopeExit ();
@ -799,30 +799,30 @@ static void Fig_GetAndShowHierarchyWithCrss (void)
/***** Get number of elements with courses *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumCtysWithCrss = Cty_GetCachedNumCtysWithCrss ();
NumInssWithCrss = Ins_GetCachedNumInssWithCrss ("",Hie_Lvl_SYS,-1L);
NumCtrsWithCrss = Ctr_GetCachedNumCtrsWithCrss ("",Hie_Lvl_SYS,-1L);
NumDegsWithCrss = Deg_GetCachedNumDegsWithCrss ("",Hie_Lvl_SYS,-1L);
NumInssWithCrss = Ins_GetCachedNumInssWithCrss ("",HieLvl_SYS,-1L);
NumCtrsWithCrss = Ctr_GetCachedNumCtrsWithCrss ("",HieLvl_SYS,-1L);
NumDegsWithCrss = Deg_GetCachedNumDegsWithCrss ("",HieLvl_SYS,-1L);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
sprintf (SubQuery,"ins_instits.CtyCod=%ld AND ",Gbl.Hierarchy.Cty.CtyCod);
NumInssWithCrss = Ins_GetCachedNumInssWithCrss (SubQuery,Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumCtrsWithCrss = Ctr_GetCachedNumCtrsWithCrss (SubQuery,Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumDegsWithCrss = Deg_GetCachedNumDegsWithCrss (SubQuery,Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumInssWithCrss = Ins_GetCachedNumInssWithCrss (SubQuery,HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumCtrsWithCrss = Ctr_GetCachedNumCtrsWithCrss (SubQuery,HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumDegsWithCrss = Deg_GetCachedNumDegsWithCrss (SubQuery,HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
sprintf (SubQuery,"ctr_centers.InsCod=%ld AND ",Gbl.Hierarchy.Ins.InsCod);
NumCtrsWithCrss = Ctr_GetCachedNumCtrsWithCrss (SubQuery,Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod);
NumDegsWithCrss = Deg_GetCachedNumDegsWithCrss (SubQuery,Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod);
NumCtrsWithCrss = Ctr_GetCachedNumCtrsWithCrss (SubQuery,HieLvl_INS,Gbl.Hierarchy.Ins.InsCod);
NumDegsWithCrss = Deg_GetCachedNumDegsWithCrss (SubQuery,HieLvl_INS,Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
sprintf (SubQuery,"deg_degrees.CtrCod=%ld AND ",
Gbl.Hierarchy.Ctr.CtrCod);
NumDegsWithCrss = Deg_GetCachedNumDegsWithCrss (SubQuery,Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod);
NumDegsWithCrss = Deg_GetCachedNumDegsWithCrss (SubQuery,HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
case Hie_Lvl_CRS:
case HieLvl_DEG:
case HieLvl_CRS:
break;
default:
Err_WrongScopeExit ();
@ -857,53 +857,53 @@ static void Fig_GetAndShowHierarchyWithUsrs (Rol_Role_t Role)
/***** Get number of elements with students *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,"",Hie_Lvl_SYS,-1L);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,"",Hie_Lvl_SYS,-1L);
NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,"",Hie_Lvl_SYS,-1L);
NumDegsWithUsrs = Deg_GetCachedNumDegsWithUsrs (Role,"",Hie_Lvl_SYS,-1L);
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,"",Hie_Lvl_SYS,-1L);
case HieLvl_SYS:
NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,"",HieLvl_SYS,-1L);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,"",HieLvl_SYS,-1L);
NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,"",HieLvl_SYS,-1L);
NumDegsWithUsrs = Deg_GetCachedNumDegsWithUsrs (Role,"",HieLvl_SYS,-1L);
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,"",HieLvl_SYS,-1L);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
sprintf (SubQuery,"ins_instits.CtyCod=%ld AND ",Gbl.Hierarchy.Cty.CtyCod);
NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,SubQuery,Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,SubQuery,Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,SubQuery,Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumDegsWithUsrs = Deg_GetCachedNumDegsWithUsrs (Role,SubQuery,Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,Hie_Lvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,SubQuery,HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,SubQuery,HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,SubQuery,HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumDegsWithUsrs = Deg_GetCachedNumDegsWithUsrs (Role,SubQuery,HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,HieLvl_CTY,Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
sprintf (SubQuery,"ctr_centers.InsCod=%ld AND ",Gbl.Hierarchy.Ins.InsCod);
NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,SubQuery,Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,SubQuery,Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod);
NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,SubQuery,Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod);
NumDegsWithUsrs = Deg_GetCachedNumDegsWithUsrs (Role,SubQuery,Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod);
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod);
NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,SubQuery,HieLvl_INS,Gbl.Hierarchy.Ins.InsCod);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,SubQuery,HieLvl_INS,Gbl.Hierarchy.Ins.InsCod);
NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,SubQuery,HieLvl_INS,Gbl.Hierarchy.Ins.InsCod);
NumDegsWithUsrs = Deg_GetCachedNumDegsWithUsrs (Role,SubQuery,HieLvl_INS,Gbl.Hierarchy.Ins.InsCod);
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,HieLvl_INS,Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
sprintf (SubQuery,"deg_degrees.CtrCod=%ld AND ",
Gbl.Hierarchy.Ctr.CtrCod);
NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,SubQuery,Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,SubQuery,Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod);
NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,SubQuery,Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod);
NumDegsWithUsrs = Deg_GetCachedNumDegsWithUsrs (Role,SubQuery,Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod);
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod);
NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,SubQuery,HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,SubQuery,HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod);
NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,SubQuery,HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod);
NumDegsWithUsrs = Deg_GetCachedNumDegsWithUsrs (Role,SubQuery,HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod);
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
sprintf (SubQuery,"crs_courses.DegCod=%ld AND ",Gbl.Hierarchy.Deg.DegCod);
NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,SubQuery,Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,SubQuery,Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod);
NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,SubQuery,Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod);
NumDegsWithUsrs = Deg_GetCachedNumDegsWithUsrs (Role,SubQuery,Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod);
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod);
NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,SubQuery,HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,SubQuery,HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod);
NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,SubQuery,HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod);
NumDegsWithUsrs = Deg_GetCachedNumDegsWithUsrs (Role,SubQuery,HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod);
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
sprintf (SubQuery,"crs_users.CrsCod=%ld AND ",Gbl.Hierarchy.Crs.CrsCod);
NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,SubQuery,Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,SubQuery,Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,SubQuery,Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
NumDegsWithUsrs = Deg_GetCachedNumDegsWithUsrs (Role,SubQuery,Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,SubQuery,HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,SubQuery,HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,SubQuery,HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
NumDegsWithUsrs = Deg_GetCachedNumDegsWithUsrs (Role,SubQuery,HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Err_WrongScopeExit ();
@ -936,32 +936,32 @@ static void Fig_GetAndShowHierarchyTotal (void)
/***** Get total number of elements *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumCtysTotal = Cty_GetCachedNumCtysInSys ();
NumInssTotal = Ins_GetCachedNumInssInSys ();
NumCtrsTotal = Ctr_GetCachedNumCtrsInSys ();
NumDegsTotal = Deg_GetCachedNumDegsInSys ();
NumCrssTotal = Crs_GetCachedNumCrssInSys ();
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumInssTotal = Ins_GetCachedNumInssInCty (Gbl.Hierarchy.Cty.CtyCod);
NumCtrsTotal = Ctr_GetCachedNumCtrsInCty (Gbl.Hierarchy.Cty.CtyCod);
NumDegsTotal = Deg_GetCachedNumDegsInCty (Gbl.Hierarchy.Cty.CtyCod);
NumCrssTotal = Crs_GetCachedNumCrssInCty (Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
NumCtrsTotal = Ctr_GetCachedNumCtrsInIns (Gbl.Hierarchy.Ins.InsCod);
NumDegsTotal = Deg_GetCachedNumDegsInIns (Gbl.Hierarchy.Ins.InsCod);
NumCrssTotal = Crs_GetCachedNumCrssInIns (Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
NumDegsTotal = Deg_GetCachedNumDegsInCtr (Gbl.Hierarchy.Ctr.CtrCod);
NumCrssTotal = Crs_GetCachedNumCrssInCtr (Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
NumCrssTotal = Crs_GetCachedNumCrssInDeg (Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
break;
default:
Err_WrongScopeExit ();
@ -1080,7 +1080,7 @@ static void Fig_GetAndShowInssOrderedByNumCtrs (void)
/***** Get institutions ordered by number of centers *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT InsCod," // row[0]
@ -1089,7 +1089,7 @@ static void Fig_GetAndShowInssOrderedByNumCtrs (void)
" GROUP BY InsCod"
" ORDER BY N DESC");
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod," // row[0]
@ -1102,10 +1102,10 @@ static void Fig_GetAndShowInssOrderedByNumCtrs (void)
" ORDER BY N DESC",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case Hie_Lvl_CTR:
case Hie_Lvl_DEG:
case Hie_Lvl_CRS:
case HieLvl_INS:
case HieLvl_CTR:
case HieLvl_DEG:
case HieLvl_CRS:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT InsCod," // row[0]
@ -1150,7 +1150,7 @@ static void Fig_GetAndShowInssOrderedByNumDegs (void)
/***** Get institutions ordered by number of degrees *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod," // row[0]
@ -1161,7 +1161,7 @@ static void Fig_GetAndShowInssOrderedByNumDegs (void)
" GROUP BY InsCod"
" ORDER BY N DESC");
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod," // row[0]
@ -1176,10 +1176,10 @@ static void Fig_GetAndShowInssOrderedByNumDegs (void)
" ORDER BY N DESC",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case Hie_Lvl_CTR:
case Hie_Lvl_DEG:
case Hie_Lvl_CRS:
case HieLvl_INS:
case HieLvl_CTR:
case HieLvl_DEG:
case HieLvl_CRS:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod," // row[0]
@ -1226,7 +1226,7 @@ static void Fig_GetAndShowInssOrderedByNumCrss (void)
/***** Get institutions ordered by number of courses *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod," // row[0]
@ -1239,7 +1239,7 @@ static void Fig_GetAndShowInssOrderedByNumCrss (void)
" GROUP BY InsCod"
" ORDER BY N DESC");
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod," // row[0]
@ -1256,10 +1256,10 @@ static void Fig_GetAndShowInssOrderedByNumCrss (void)
" ORDER BY N DESC",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case Hie_Lvl_CTR:
case Hie_Lvl_DEG:
case Hie_Lvl_CRS:
case HieLvl_INS:
case HieLvl_CTR:
case HieLvl_DEG:
case HieLvl_CRS:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod," // row[0]
@ -1308,7 +1308,7 @@ static void Fig_GetAndShowInssOrderedByNumUsrsInCrss (void)
/***** Get institutions ordered by number of users in courses *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod," // row[0]
@ -1323,7 +1323,7 @@ static void Fig_GetAndShowInssOrderedByNumUsrsInCrss (void)
" GROUP BY InsCod"
" ORDER BY N DESC");
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod," // row[0]
@ -1342,10 +1342,10 @@ static void Fig_GetAndShowInssOrderedByNumUsrsInCrss (void)
" ORDER BY N DESC",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case Hie_Lvl_CTR:
case Hie_Lvl_DEG:
case Hie_Lvl_CRS:
case HieLvl_INS:
case HieLvl_CTR:
case HieLvl_DEG:
case HieLvl_CRS:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT ctr_centers.InsCod," // row[0]
@ -1397,7 +1397,7 @@ static void Fig_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void)
/***** Get institutions ordered by number of users who claim to belong to them *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT InsCod," // row[0]
@ -1407,7 +1407,7 @@ static void Fig_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void)
" GROUP BY InsCod"
" ORDER BY N DESC");
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT usr_data.InsCod," // row[0]
@ -1419,10 +1419,10 @@ static void Fig_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void)
" ORDER BY N DESC",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case Hie_Lvl_CTR:
case Hie_Lvl_DEG:
case Hie_Lvl_CRS:
case HieLvl_INS:
case HieLvl_CTR:
case HieLvl_DEG:
case HieLvl_CRS:
NumInss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get institutions",
"SELECT InsCod," // row[0]
@ -1539,7 +1539,7 @@ static void Fig_ShowInss (MYSQL_RES **mysql_res,unsigned NumInss,
HTM_BUTTON_SUBMIT_Begin (Ins.ShrtName,The_ClassFormLinkInBox[Gbl.Prefs.Theme],NULL);
if (Gbl.Usrs.Listing.WithPhotos)
{
Lgo_DrawLogo (Hie_Lvl_INS,Ins.InsCod,Ins.ShrtName,
Lgo_DrawLogo (HieLvl_INS,Ins.InsCod,Ins.ShrtName,
40,NULL,true);
HTM_NBSP ();
}
@ -1595,7 +1595,7 @@ static unsigned Fig_GetInsAndStat (struct Ins_Instit *Ins,MYSQL_RES *mysql_res)
static void Fig_GetAndShowDegreeTypesStats (void)
{
/***** Show statistic about number of degrees in each type of degree *****/
DT_SeeDegreeTypesInStaTab ();
DegTyp_SeeDegreeTypesInStaTab ();
}
/*****************************************************************************/
@ -1680,7 +1680,7 @@ static void Fig_GetAndShowFileBrowsersStats (void)
/**************** Get the size of a file zone from database ******************/
/*****************************************************************************/
static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
static void Fig_GetSizeOfFileZoneFromDB (HieLvl_Level_t Scope,
Brw_FileBrowser_t FileBrowser,
struct Fig_SizeOfFileZones *SizeOfFileZones)
{
@ -1691,7 +1691,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
switch (Scope)
{
/* Scope = the whole platform */
case Hie_Lvl_SYS:
case HieLvl_SYS:
switch (FileBrowser)
{
case Brw_UNKNOWN:
@ -1807,7 +1807,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
}
break;
/* Scope = the current country */
case Hie_Lvl_CTY:
case HieLvl_CTY:
switch (FileBrowser)
{
case Brw_UNKNOWN:
@ -1985,7 +1985,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
}
break;
/* Scope = the current institution */
case Hie_Lvl_INS:
case HieLvl_INS:
switch (FileBrowser)
{
case Brw_UNKNOWN:
@ -2151,7 +2151,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
}
break;
/* Scope = the current center */
case Hie_Lvl_CTR:
case HieLvl_CTR:
switch (FileBrowser)
{
case Brw_UNKNOWN:
@ -2305,7 +2305,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
}
break;
/* Scope = the current degree */
case Hie_Lvl_DEG:
case HieLvl_DEG:
switch (FileBrowser)
{
case Brw_UNKNOWN:
@ -2447,7 +2447,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
}
break;
/* Scope = the current course */
case Hie_Lvl_CRS:
case HieLvl_CRS:
switch (FileBrowser)
{
case Brw_UNKNOWN:
@ -2962,7 +2962,7 @@ static void Fig_GetAndShowOERsStats (void)
/**************** Get the size of a file zone from database ******************/
/*****************************************************************************/
static void Fig_GetNumberOfOERsFromDB (Hie_Lvl_Level_t Scope,
static void Fig_GetNumberOfOERsFromDB (HieLvl_Level_t Scope,
Brw_License_t License,
unsigned long NumFiles[2])
{
@ -2975,7 +2975,7 @@ static void Fig_GetNumberOfOERsFromDB (Hie_Lvl_Level_t Scope,
/***** Get the size of a file browser *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of OERs",
"SELECT Public," // row[0]
@ -2985,7 +2985,7 @@ static void Fig_GetNumberOfOERsFromDB (Hie_Lvl_Level_t Scope,
" GROUP BY Public",
(unsigned) License);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of OERs",
"SELECT brw_files.Public," // row[0]
@ -3008,7 +3008,7 @@ static void Fig_GetNumberOfOERsFromDB (Hie_Lvl_Level_t Scope,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of OERs",
"SELECT brw_files.Public," // row[0]
@ -3029,7 +3029,7 @@ static void Fig_GetNumberOfOERsFromDB (Hie_Lvl_Level_t Scope,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of OERs",
"SELECT brw_files.Public," // row[0]
@ -3048,7 +3048,7 @@ static void Fig_GetNumberOfOERsFromDB (Hie_Lvl_Level_t Scope,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of OERs",
"SELECT brw_files.Public," // row[0]
@ -3065,7 +3065,7 @@ static void Fig_GetNumberOfOERsFromDB (Hie_Lvl_Level_t Scope,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of OERs",
"SELECT Public," // row[0]
@ -3589,7 +3589,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
{
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(*)," // row[0]
@ -3597,7 +3597,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
" FROM tml_notes WHERE NoteType=%u",
NoteType);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
@ -3618,7 +3618,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) NoteType);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
@ -3637,7 +3637,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
Gbl.Hierarchy.Ins.InsCod,
(unsigned) NoteType);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
@ -3654,7 +3654,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) NoteType);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
@ -3669,7 +3669,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
Gbl.Hierarchy.Deg.DegCod,
(unsigned) NoteType);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
@ -3741,14 +3741,14 @@ static void Fig_GetAndShowTimelineActivityStats (void)
/***** Get and write totals *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(*)," // row[0]
"COUNT(DISTINCT UsrCod)" // row[1]
" FROM tml_notes");
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
@ -3767,7 +3767,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
@ -3784,7 +3784,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
@ -3799,7 +3799,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
@ -3812,7 +3812,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
@ -3930,14 +3930,14 @@ static void Fig_GetAndShowFollowStats (void)
{
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT %s)"
" FROM usr_follow",
FieldDB[Fol]);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT usr_follow.%s)"
@ -3957,7 +3957,7 @@ static void Fig_GetAndShowFollowStats (void)
Gbl.Hierarchy.Cty.CtyCod,
FieldDB[Fol]);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT usr_follow.%s)"
@ -3975,7 +3975,7 @@ static void Fig_GetAndShowFollowStats (void)
Gbl.Hierarchy.Ins.InsCod,
FieldDB[Fol]);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT usr_follow.%s)"
@ -3991,7 +3991,7 @@ static void Fig_GetAndShowFollowStats (void)
Gbl.Hierarchy.Ctr.CtrCod,
FieldDB[Fol]);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT usr_follow.%s)"
@ -4005,7 +4005,7 @@ static void Fig_GetAndShowFollowStats (void)
Gbl.Hierarchy.Deg.DegCod,
FieldDB[Fol]);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the total number of following/followers",
"SELECT COUNT(DISTINCT usr_follow.%s)"
@ -4051,7 +4051,7 @@ static void Fig_GetAndShowFollowStats (void)
{
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
Average = DB_QuerySELECTDouble ("can not get number of questions"
" per survey",
"SELECT AVG(N)"
@ -4061,7 +4061,7 @@ static void Fig_GetAndShowFollowStats (void)
FieldDB[Fol],
FieldDB[1 - Fol]);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
Average = DB_QuerySELECTDouble ("can not get number of questions"
" per survey",
"SELECT AVG(N)"
@ -4084,7 +4084,7 @@ static void Fig_GetAndShowFollowStats (void)
FieldDB[Fol],
FieldDB[1 - Fol]);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
Average = DB_QuerySELECTDouble ("can not get number of questions"
" per survey",
"SELECT AVG(N)"
@ -4105,7 +4105,7 @@ static void Fig_GetAndShowFollowStats (void)
FieldDB[Fol],
FieldDB[1 - Fol]);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
Average = DB_QuerySELECTDouble ("can not get number of questions"
" per survey",
"SELECT AVG(N)"
@ -4124,7 +4124,7 @@ static void Fig_GetAndShowFollowStats (void)
FieldDB[Fol],
FieldDB[1 - Fol]);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
Average = DB_QuerySELECTDouble ("can not get number of questions"
" per survey",
"SELECT AVG(N)"
@ -4141,7 +4141,7 @@ static void Fig_GetAndShowFollowStats (void)
FieldDB[Fol],
FieldDB[1 - Fol]);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
Average = DB_QuerySELECTDouble ("can not get number of questions"
" per survey",
"SELECT AVG(N)"
@ -4232,7 +4232,7 @@ static void Fig_GetAndShowForumStats (void)
/***** Write a row for each type of forum *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
Fig_ShowStatOfAForumType (For_FORUM_GLOBAL_USRS,-1L,-1L,-1L,-1L,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_GLOBAL_TCHS,-1L,-1L,-1L,-1L,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM__SWAD__USRS,-1L,-1L,-1L,-1L,-1L,&FiguresForum);
@ -4246,7 +4246,7 @@ static void Fig_GetAndShowForumStats (void)
Fig_ShowStatOfAForumType (For_FORUM_COURSE_USRS,-1L,-1L,-1L,-1L,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_COURSE_TCHS,-1L,-1L,-1L,-1L,-1L,&FiguresForum);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
Fig_ShowStatOfAForumType (For_FORUM_INSTIT_USRS,Gbl.Hierarchy.Cty.CtyCod,-1L,-1L,-1L,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_INSTIT_TCHS,Gbl.Hierarchy.Cty.CtyCod,-1L,-1L,-1L,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_CENTER_USRS,Gbl.Hierarchy.Cty.CtyCod,-1L,-1L,-1L,-1L,&FiguresForum);
@ -4256,7 +4256,7 @@ static void Fig_GetAndShowForumStats (void)
Fig_ShowStatOfAForumType (For_FORUM_COURSE_USRS,Gbl.Hierarchy.Cty.CtyCod,-1L,-1L,-1L,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_COURSE_TCHS,Gbl.Hierarchy.Cty.CtyCod,-1L,-1L,-1L,-1L,&FiguresForum);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
Fig_ShowStatOfAForumType (For_FORUM_INSTIT_USRS,-1L,Gbl.Hierarchy.Ins.InsCod,-1L,-1L,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_INSTIT_TCHS,-1L,Gbl.Hierarchy.Ins.InsCod,-1L,-1L,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_CENTER_USRS,-1L,Gbl.Hierarchy.Ins.InsCod,-1L,-1L,-1L,&FiguresForum);
@ -4266,7 +4266,7 @@ static void Fig_GetAndShowForumStats (void)
Fig_ShowStatOfAForumType (For_FORUM_COURSE_USRS,-1L,Gbl.Hierarchy.Ins.InsCod,-1L,-1L,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_COURSE_TCHS,-1L,Gbl.Hierarchy.Ins.InsCod,-1L,-1L,-1L,&FiguresForum);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
Fig_ShowStatOfAForumType (For_FORUM_CENTER_USRS,-1L,-1L,Gbl.Hierarchy.Ctr.CtrCod,-1L,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_CENTER_TCHS,-1L,-1L,Gbl.Hierarchy.Ctr.CtrCod,-1L,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_DEGREE_USRS,-1L,-1L,Gbl.Hierarchy.Ctr.CtrCod,-1L,-1L,&FiguresForum);
@ -4274,13 +4274,13 @@ static void Fig_GetAndShowForumStats (void)
Fig_ShowStatOfAForumType (For_FORUM_COURSE_USRS,-1L,-1L,Gbl.Hierarchy.Ctr.CtrCod,-1L,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_COURSE_TCHS,-1L,-1L,Gbl.Hierarchy.Ctr.CtrCod,-1L,-1L,&FiguresForum);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
Fig_ShowStatOfAForumType (For_FORUM_DEGREE_USRS,-1L,-1L,-1L,Gbl.Hierarchy.Deg.DegCod,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_DEGREE_TCHS,-1L,-1L,-1L,Gbl.Hierarchy.Deg.DegCod,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_COURSE_USRS,-1L,-1L,-1L,Gbl.Hierarchy.Deg.DegCod,-1L,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_COURSE_TCHS,-1L,-1L,-1L,Gbl.Hierarchy.Deg.DegCod,-1L,&FiguresForum);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
Fig_ShowStatOfAForumType (For_FORUM_COURSE_USRS,-1L,-1L,-1L,-1L,Gbl.Hierarchy.Crs.CrsCod,&FiguresForum);
Fig_ShowStatOfAForumType (For_FORUM_COURSE_TCHS,-1L,-1L,-1L,-1L,Gbl.Hierarchy.Crs.CrsCod,&FiguresForum);
break;
@ -4590,7 +4590,7 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
/* Get number of notifications by email from database */
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get the number"
" of notifications by email",
"SELECT SUM(NumEvents)," // row[0]
@ -4599,7 +4599,7 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
" WHERE NotifyEvent=%u",
(unsigned) NotifyEvent);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get the number"
" of notifications by email",
"SELECT SUM(sta_notifications.NumEvents)," // row[0]
@ -4616,7 +4616,7 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) NotifyEvent);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
DB_QuerySELECT (&mysql_res,"can not get the number"
" of notifications by email",
"SELECT SUM(sta_notifications.NumEvents)," // row[0]
@ -4631,7 +4631,7 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
Gbl.Hierarchy.Ins.InsCod,
(unsigned) NotifyEvent);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get the number"
" of notifications by email",
"SELECT SUM(sta_notifications.NumEvents)," // row[0]
@ -4644,7 +4644,7 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) NotifyEvent);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get the number"
" of notifications by email",
"SELECT SUM(NumEvents)," // row[0]
@ -4655,7 +4655,7 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
Gbl.Hierarchy.Deg.DegCod,
(unsigned) NotifyEvent);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get the number"
" of notifications by email",
"SELECT SUM(NumEvents)," // row[0]
@ -5844,14 +5844,14 @@ unsigned Fig_GetNumUsrsWhoChoseAnOption (const char *SubQuery)
this privacy option from database *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(*)"
" FROM usr_data WHERE %s",
SubQuery);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)"
@ -5870,7 +5870,7 @@ unsigned Fig_GetNumUsrsWhoChoseAnOption (const char *SubQuery)
" AND %s",
Gbl.Hierarchy.Cty.CtyCod,SubQuery);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)"
@ -5887,7 +5887,7 @@ unsigned Fig_GetNumUsrsWhoChoseAnOption (const char *SubQuery)
" AND %s",
Gbl.Hierarchy.Ins.InsCod,SubQuery);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)"
@ -5902,7 +5902,7 @@ unsigned Fig_GetNumUsrsWhoChoseAnOption (const char *SubQuery)
" AND %s",
Gbl.Hierarchy.Ctr.CtrCod,SubQuery);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)"
@ -5915,7 +5915,7 @@ unsigned Fig_GetNumUsrsWhoChoseAnOption (const char *SubQuery)
" AND %s",
Gbl.Hierarchy.Deg.DegCod,SubQuery);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get the number of users who have chosen an option",
"SELECT COUNT(DISTINCT usr_data.UsrCod)"

View File

@ -74,7 +74,7 @@ typedef enum
struct Fig_Figures
{
Hie_Lvl_Level_t Scope;
HieLvl_Level_t Scope;
Fig_FigureType_t FigureType;
};

View File

@ -57,7 +57,7 @@
/*****************************************************************************/
void FigCch_UpdateFigureIntoCache (FigCch_FigureCached_t Figure,
Hie_Lvl_Level_t Scope,long Cod,
HieLvl_Level_t Scope,long Cod,
FigCch_Type_t Type,const void *ValuePtr)
{
/***** Trivial check *****/
@ -100,19 +100,19 @@ void FigCch_UpdateFigureIntoCache (FigCch_FigureCached_t Figure,
// Return true is figure is found (if figure is cached and recently updated)
bool FigCch_GetFigureFromCache (FigCch_FigureCached_t Figure,
Hie_Lvl_Level_t Scope,long Cod,
HieLvl_Level_t Scope,long Cod,
FigCch_Type_t Type,void *ValuePtr)
{
/* The higher the level, the longer a value remains cached */
time_t TimeCached[Hie_Lvl_NUM_LEVELS] = // Time in seconds
time_t TimeCached[HieLvl_NUM_LEVELS] = // Time in seconds
{
[Hie_Lvl_UNK] = (time_t) ( 0), // Unknown
[Hie_Lvl_SYS] = (time_t) (24UL * 60UL * 60UL), // System
[Hie_Lvl_CTY] = (time_t) (12UL * 60UL * 60UL), // Country
[Hie_Lvl_INS] = (time_t) ( 6UL * 60UL * 60UL), // Institution
[Hie_Lvl_CTR] = (time_t) ( 3UL * 60UL * 60UL), // Center
[Hie_Lvl_DEG] = (time_t) ( 1UL * 60UL * 60UL), // Degree
[Hie_Lvl_CRS] = (time_t) ( 60UL), // Course
[HieLvl_UNK] = (time_t) ( 0), // Unknown
[HieLvl_SYS] = (time_t) (24UL * 60UL * 60UL), // System
[HieLvl_CTY] = (time_t) (12UL * 60UL * 60UL), // Country
[HieLvl_INS] = (time_t) ( 6UL * 60UL * 60UL), // Institution
[HieLvl_CTR] = (time_t) ( 3UL * 60UL * 60UL), // Center
[HieLvl_DEG] = (time_t) ( 1UL * 60UL * 60UL), // Degree
[HieLvl_CRS] = (time_t) ( 60UL), // Course
};
static const char *Field[FigCch_NUM_TYPES] =
{
@ -136,7 +136,7 @@ bool FigCch_GetFigureFromCache (FigCch_FigureCached_t Figure,
/***** Trivial check *****/
if (Figure == FigCch_UNKNOWN || // Unknown figure
Scope == Hie_Lvl_UNK) // Unknown scope
Scope == HieLvl_UNK) // Unknown scope
return false;
/***** Get figure's value if cached and recent *****/

View File

@ -111,10 +111,10 @@ typedef enum
/*****************************************************************************/
void FigCch_UpdateFigureIntoCache (FigCch_FigureCached_t Figure,
Hie_Lvl_Level_t Scope,long Cod,
HieLvl_Level_t Scope,long Cod,
FigCch_Type_t Type,const void *ValuePtr);
bool FigCch_GetFigureFromCache (FigCch_FigureCached_t Figure,
Hie_Lvl_Level_t Scope,long Cod,
HieLvl_Level_t Scope,long Cod,
FigCch_Type_t Type,void *ValuePtr);
#endif

View File

@ -49,6 +49,7 @@
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_ID.h"
#include "swad_logo.h"
@ -12054,7 +12055,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
HTM_BUTTON_SUBMIT_Begin (Hie_BuildGoToMsg (InsShortName),
"BT_LINK LT DAT",NULL);
Hie_FreeGoToMsg ();
Lgo_DrawLogo (Hie_Lvl_INS,InsCod,InsShortName,20,"BT_LINK LT",true);
Lgo_DrawLogo (HieLvl_INS,InsCod,InsShortName,20,"BT_LINK LT",true);
HTM_TxtF ("&nbsp;%s",InsShortName);
HTM_BUTTON_End ();
Frm_EndForm ();
@ -12070,7 +12071,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
HTM_BUTTON_SUBMIT_Begin (Hie_BuildGoToMsg (CtrShortName),
"BT_LINK LT DAT",NULL);
Hie_FreeGoToMsg ();
Lgo_DrawLogo (Hie_Lvl_CTR,CtrCod,CtrShortName,20,"LT",true);
Lgo_DrawLogo (HieLvl_CTR,CtrCod,CtrShortName,20,"LT",true);
HTM_TxtF ("&nbsp;%s",CtrShortName);
HTM_BUTTON_End ();
Frm_EndForm ();
@ -12086,7 +12087,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
HTM_BUTTON_SUBMIT_Begin (Hie_BuildGoToMsg (DegShortName),
"BT_LINK LT DAT",NULL);
Hie_FreeGoToMsg ();
Lgo_DrawLogo (Hie_Lvl_DEG,DegCod,DegShortName,20,"LT",true);
Lgo_DrawLogo (HieLvl_DEG,DegCod,DegShortName,20,"LT",true);
HTM_TxtF ("&nbsp;%s",DegShortName);
HTM_BUTTON_End ();
Frm_EndForm ();

View File

@ -30,6 +30,7 @@
#include "swad_follow.h"
#include "swad_follow_database.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
/*****************************************************************************/
/****************************** Public constants *****************************/
@ -358,7 +359,7 @@ unsigned Fol_DB_GetRankingFollowers (MYSQL_RES **mysql_res)
/***** Get ranking from database *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get ranking",
"SELECT FollowedCod," // row[0]
@ -368,7 +369,7 @@ unsigned Fol_DB_GetRankingFollowers (MYSQL_RES **mysql_res)
" ORDER BY N DESC,"
"FollowedCod"
" LIMIT 100");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod," // row[0]
@ -390,7 +391,7 @@ unsigned Fol_DB_GetRankingFollowers (MYSQL_RES **mysql_res)
"usr_follow.FollowedCod"
" LIMIT 100",
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod," // row[0]
@ -410,7 +411,7 @@ unsigned Fol_DB_GetRankingFollowers (MYSQL_RES **mysql_res)
"usr_follow.FollowedCod"
" LIMIT 100",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod," // row[0]
@ -428,7 +429,7 @@ unsigned Fol_DB_GetRankingFollowers (MYSQL_RES **mysql_res)
"usr_follow.FollowedCod"
" LIMIT 100",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod," // row[0]
@ -444,7 +445,7 @@ unsigned Fol_DB_GetRankingFollowers (MYSQL_RES **mysql_res)
"usr_follow.FollowedCod"
" LIMIT 100",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod," // row[0]

View File

@ -32,6 +32,7 @@
#include "swad_error.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
/*****************************************************************************/
@ -200,27 +201,27 @@ void Frm_SetParamsForm (char ParamsStr[Frm_MAX_BYTES_PARAMS_STR + 1],Act_Action_
it is necessary to send a parameter with course code */
switch (Gbl.Hierarchy.Level)
{
case Hie_Lvl_CTY: // Country
case HieLvl_CTY: // Country
snprintf (ParamLocation,sizeof (ParamLocation),
"<input type=\"hidden\" name=\"cty\" value=\"%ld\" />",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS: // Institution
case HieLvl_INS: // Institution
snprintf (ParamLocation,sizeof (ParamLocation),
"<input type=\"hidden\" name=\"ins\" value=\"%ld\" />",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR: // Center
case HieLvl_CTR: // Center
snprintf (ParamLocation,sizeof (ParamLocation),
"<input type=\"hidden\" name=\"ctr\" value=\"%ld\" />",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG: // Degree
case HieLvl_DEG: // Degree
snprintf (ParamLocation,sizeof (ParamLocation),
"<input type=\"hidden\" name=\"deg\" value=\"%ld\" />",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS: // Course
case HieLvl_CRS: // Course
snprintf (ParamLocation,sizeof (ParamLocation),
"<input type=\"hidden\" name=\"crs\" value=\"%ld\" />",
Gbl.Hierarchy.Crs.CrsCod);

View File

@ -2141,15 +2141,15 @@ static void For_WriteLinkToForum (const struct For_Forums *Forums,
break;
case For_FORUM_INSTIT_USRS:
case For_FORUM_INSTIT_TCHS:
Lgo_DrawLogo (Hie_Lvl_INS,Forum->Location,ForumName,16,NULL,true);
Lgo_DrawLogo (HieLvl_INS,Forum->Location,ForumName,16,NULL,true);
break;
case For_FORUM_CENTER_USRS:
case For_FORUM_CENTER_TCHS:
Lgo_DrawLogo (Hie_Lvl_CTR,Forum->Location,ForumName,16,NULL,true);
Lgo_DrawLogo (HieLvl_CTR,Forum->Location,ForumName,16,NULL,true);
break;
case For_FORUM_DEGREE_USRS:
case For_FORUM_DEGREE_TCHS:
Lgo_DrawLogo (Hie_Lvl_DEG,Forum->Location,ForumName,16,NULL,true);
Lgo_DrawLogo (HieLvl_DEG,Forum->Location,ForumName,16,NULL,true);
break;
case For_FORUM_COURSE_USRS:
case For_FORUM_COURSE_TCHS:
@ -4690,21 +4690,21 @@ void For_DB_RemoveUsrFromThrClipboard (long UsrCod)
/********** Remove all the threads and posts in forums of a degree ***********/
/*****************************************************************************/
void For_RemoveForums (Hie_Lvl_Level_t Scope,long ForumLocation)
void For_RemoveForums (HieLvl_Level_t Scope,long ForumLocation)
{
static const struct
{
For_ForumType_t Usrs;
For_ForumType_t Tchs;
} ForumType[Hie_Lvl_NUM_LEVELS] =
} ForumType[HieLvl_NUM_LEVELS] =
{
[Hie_Lvl_UNK] = {For_FORUM_GLOBAL_USRS,For_FORUM_GLOBAL_TCHS}, // No forums for this scope
[Hie_Lvl_SYS] = {For_FORUM_GLOBAL_USRS,For_FORUM_GLOBAL_TCHS}, // Not removable
[Hie_Lvl_CTY] = {For_FORUM_GLOBAL_USRS,For_FORUM_GLOBAL_TCHS}, // No forums for this scope
[Hie_Lvl_INS] = {For_FORUM_INSTIT_USRS,For_FORUM_INSTIT_TCHS},
[Hie_Lvl_CTR] = {For_FORUM_CENTER_USRS,For_FORUM_CENTER_TCHS},
[Hie_Lvl_DEG] = {For_FORUM_DEGREE_USRS,For_FORUM_DEGREE_TCHS},
[Hie_Lvl_CRS] = {For_FORUM_COURSE_USRS,For_FORUM_COURSE_TCHS},
[HieLvl_UNK] = {For_FORUM_GLOBAL_USRS,For_FORUM_GLOBAL_TCHS}, // No forums for this scope
[HieLvl_SYS] = {For_FORUM_GLOBAL_USRS,For_FORUM_GLOBAL_TCHS}, // Not removable
[HieLvl_CTY] = {For_FORUM_GLOBAL_USRS,For_FORUM_GLOBAL_TCHS}, // No forums for this scope
[HieLvl_INS] = {For_FORUM_INSTIT_USRS,For_FORUM_INSTIT_TCHS},
[HieLvl_CTR] = {For_FORUM_CENTER_USRS,For_FORUM_CENTER_TCHS},
[HieLvl_DEG] = {For_FORUM_DEGREE_USRS,For_FORUM_DEGREE_TCHS},
[HieLvl_CRS] = {For_FORUM_COURSE_USRS,For_FORUM_COURSE_TCHS},
};
/***** Remove disabled posts *****/

View File

@ -159,6 +159,6 @@ void For_CutThread (void);
void For_PasteThread (void);
void For_DB_RemoveUsrFromThrClipboard (long UsrCod);
void For_RemoveForums (Hie_Lvl_Level_t Scope,long ForumLocation);
void For_RemoveForums (HieLvl_Level_t Scope,long ForumLocation);
#endif

View File

@ -39,6 +39,7 @@
#include "swad_form.h"
#include "swad_game.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_match.h"
#include "swad_match_result.h"
@ -2620,17 +2621,17 @@ void Gam_RequestNewMatch (void)
/*****************************************************************************/
// Returns the number of courses with games in this location
unsigned Gam_DB_GetNumCoursesWithGames (Hie_Lvl_Level_t Scope)
unsigned Gam_DB_GetNumCoursesWithGames (HieLvl_Level_t Scope)
{
/***** Get number of courses with games from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with games",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM gam_games");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with games",
"SELECT COUNT(DISTINCT gam_games.CrsCod)"
@ -2645,7 +2646,7 @@ unsigned Gam_DB_GetNumCoursesWithGames (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with games",
"SELECT COUNT(DISTINCT gam_games.CrsCod)"
@ -2658,7 +2659,7 @@ unsigned Gam_DB_GetNumCoursesWithGames (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with games",
"SELECT COUNT(DISTINCT gam_games.CrsCod)"
@ -2669,7 +2670,7 @@ unsigned Gam_DB_GetNumCoursesWithGames (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with games",
"SELECT COUNT(DISTINCT gam_games.CrsCod)"
@ -2678,7 +2679,7 @@ unsigned Gam_DB_GetNumCoursesWithGames (Hie_Lvl_Level_t Scope)
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with games",
"SELECT COUNT(DISTINCT CrsCod)"
@ -2695,17 +2696,17 @@ unsigned Gam_DB_GetNumCoursesWithGames (Hie_Lvl_Level_t Scope)
/*****************************************************************************/
// Returns the number of games in this location
unsigned Gam_DB_GetNumGames (Hie_Lvl_Level_t Scope)
unsigned Gam_DB_GetNumGames (HieLvl_Level_t Scope)
{
/***** Get number of games from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QueryCOUNT ("can not get number of games",
"SELECT COUNT(*)"
" FROM gam_games");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of games",
"SELECT COUNT(*)"
@ -2720,7 +2721,7 @@ unsigned Gam_DB_GetNumGames (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of games",
"SELECT COUNT(*)"
@ -2733,7 +2734,7 @@ unsigned Gam_DB_GetNumGames (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QueryCOUNT ("can not get number of games",
"SELECT COUNT(*)"
@ -2744,7 +2745,7 @@ unsigned Gam_DB_GetNumGames (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QueryCOUNT ("can not get number of games",
"SELECT COUNT(*)"
@ -2753,7 +2754,7 @@ unsigned Gam_DB_GetNumGames (Hie_Lvl_Level_t Scope)
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QueryCOUNT ("can not get number of games",
"SELECT COUNT(*)"
@ -2769,12 +2770,12 @@ unsigned Gam_DB_GetNumGames (Hie_Lvl_Level_t Scope)
/***************** Get average number of questions per game ******************/
/*****************************************************************************/
double Gam_DB_GetNumQstsPerGame (Hie_Lvl_Level_t Scope)
double Gam_DB_GetNumQstsPerGame (HieLvl_Level_t Scope)
{
/***** Get number of questions per game from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return DB_QuerySELECTDouble ("can not get number of questions per game",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(gam_questions.QstCod) AS NumQsts"
@ -2782,7 +2783,7 @@ double Gam_DB_GetNumQstsPerGame (Hie_Lvl_Level_t Scope)
"gam_questions"
" WHERE gam_games.GamCod=gam_questions.GamCod"
" GROUP BY gam_questions.GamCod) AS NumQstsTable");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return DB_QuerySELECTDouble ("can not get number of questions per game",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(gam_questions.QstCod) AS NumQsts"
@ -2800,7 +2801,7 @@ double Gam_DB_GetNumQstsPerGame (Hie_Lvl_Level_t Scope)
" AND gam_games.GamCod=gam_questions.GamCod"
" GROUP BY gam_questions.GamCod) AS NumQstsTable",
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return DB_QuerySELECTDouble ("can not get number of questions per game",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(gam_questions.QstCod) AS NumQsts"
@ -2816,7 +2817,7 @@ double Gam_DB_GetNumQstsPerGame (Hie_Lvl_Level_t Scope)
" AND gam_games.GamCod=gam_questions.GamCod"
" GROUP BY gam_questions.GamCod) AS NumQstsTable",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return DB_QuerySELECTDouble ("can not get number of questions per game",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(gam_questions.QstCod) AS NumQsts"
@ -2830,7 +2831,7 @@ double Gam_DB_GetNumQstsPerGame (Hie_Lvl_Level_t Scope)
" AND gam_games.GamCod=gam_questions.GamCod"
" GROUP BY gam_questions.GamCod) AS NumQstsTable",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return DB_QuerySELECTDouble ("can not get number of questions per game",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(gam_questions.QstCod) AS NumQsts"
@ -2842,7 +2843,7 @@ double Gam_DB_GetNumQstsPerGame (Hie_Lvl_Level_t Scope)
" AND gam_games.GamCod=gam_questions.GamCod"
" GROUP BY gam_questions.GamCod) AS NumQstsTable",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return DB_QuerySELECTDouble ("can not get number of questions per game",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(gam_questions.QstCod) AS NumQsts"

View File

@ -165,9 +165,9 @@ void Gam_MoveDownQst (void);
void Gam_PutButtonNewMatch (struct Gam_Games *Games,long GamCod);
void Gam_RequestNewMatch (void);
unsigned Gam_DB_GetNumCoursesWithGames (Hie_Lvl_Level_t Scope);
unsigned Gam_DB_GetNumGames (Hie_Lvl_Level_t Scope);
double Gam_DB_GetNumQstsPerGame (Hie_Lvl_Level_t Scope);
unsigned Gam_DB_GetNumCoursesWithGames (HieLvl_Level_t Scope);
unsigned Gam_DB_GetNumGames (HieLvl_Level_t Scope);
double Gam_DB_GetNumQstsPerGame (HieLvl_Level_t Scope);
void Gam_ShowTstTagsPresentInAGame (long GamCod);

View File

@ -43,6 +43,7 @@
#include "swad_follow.h"
#include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_level.h"
#include "swad_icon.h"
#include "swad_link.h"
#include "swad_parameter.h"
@ -285,7 +286,7 @@ void Gbl_InitializeGlobals (void)
Gbl.Usrs.ClassPhoto.AllGroups = true;
Gbl.Usrs.ClassPhoto.Cols = Usr_CLASS_PHOTO_COLS_DEF;
Gbl.Scope.Current = Hie_Lvl_CRS;
Gbl.Scope.Current = HieLvl_CRS;
Gbl.Usrs.Connected.TimeToRefreshInMs = Con_MAX_TIME_TO_REFRESH_CONNECTED_IN_MS;
@ -370,7 +371,7 @@ void Gbl_Cleanup (void)
Grp_FreeListCodSelectedGrps ();
Crs_FreeListCoursesInCurrentDegree ();
Deg_FreeListDegs (&Gbl.Hierarchy.Degs);
DT_FreeListDegreeTypes ();
DegTyp_FreeListDegreeTypes ();
Ins_FreeListInstitutions ();
Ctr_FreeListCenters ();
Cty_FreeListCountries ();

View File

@ -186,7 +186,7 @@ struct Globals
} HTMLOutput;
struct
{
Hie_Lvl_Level_t Level; // Current level in the hierarchy: system, country, institution, center, degree or course
HieLvl_Level_t Level; // Current level in the hierarchy: system, country, institution, center, degree or course
long Cod; // Code of the current country, institution, center, degree or course
struct ListCountries Ctys;// List of countries
struct Cty_Countr Cty; // Current country
@ -360,8 +360,8 @@ struct Globals
} Record;
struct
{
Hie_Lvl_Level_t Current;
Hie_Lvl_Level_t Default;
HieLvl_Level_t Current;
HieLvl_Level_t Default;
unsigned Allowed;
} Scope;
struct

View File

@ -31,6 +31,7 @@
#include "swad_form.h"
#include "swad_global.h"
#include "swad_help.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_user.h"
@ -132,7 +133,7 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
if (Gbl.Usrs.Me.Logged) // I am logged
{
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
if (Gbl.Usrs.Me.IBelongToCurrentCrs) // I belong to this course
{
@ -162,9 +163,9 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
if (Gbl.Usrs.Me.MyCrss.Num) // I am enroled in some courses
{
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS && // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS && // Course selected
Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs == Rol_TCH) // I am a teacher in current course
if (!Usr_GetCachedNumUsrsInCrss (Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
if (!Usr_GetCachedNumUsrsInCrss (HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
1 << Rol_STD)) // Current course probably has no students
{
/* Request students enrolment */
@ -185,7 +186,7 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
if (Gbl.Hierarchy.Deg.DegCod > 0) // Degree selected
{
/* Select a course */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Gbl.Hierarchy.Level == Hie_Lvl_CRS ? Txt_Select_create_course_in_X :
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Gbl.Hierarchy.Level == HieLvl_CRS ? Txt_Select_create_course_in_X :
Txt_Select_or_create_one_course_in_X,
Gbl.Hierarchy.Deg.ShrtName),
ActSeeCrs,

View File

@ -34,6 +34,7 @@
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_logo.h"
@ -384,7 +385,7 @@ void Hie_WriteHierarchyInBreadcrumb (void)
}
HTM_DIV_Begin ("class=\"BC%s %s\"",
(Gbl.Hierarchy.Level == Hie_Lvl_CRS) ? "" :
(Gbl.Hierarchy.Level == HieLvl_CRS) ? "" :
((Gbl.Hierarchy.Deg.DegCod > 0) ? " BC_SEMIOFF" :
" BC_OFF"),
ClassTxt);
@ -413,23 +414,23 @@ void Hie_WriteBigNameCtyInsCtrDegCrs (void)
/***** Logo *****/
switch (Gbl.Hierarchy.Level)
{
case Hie_Lvl_SYS: // System
case HieLvl_SYS: // System
Ico_PutIcon ("swad64x64.png",Cfg_PLATFORM_FULL_NAME,"ICO40x40 TOP_LOGO");
break;
case Hie_Lvl_CTY: // Country
case HieLvl_CTY: // Country
Cty_DrawCountryMap (&Gbl.Hierarchy.Cty,"COUNTRY_MAP_TITLE");
break;
case Hie_Lvl_INS: // Institution
Lgo_DrawLogo (Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod,
case HieLvl_INS: // Institution
Lgo_DrawLogo (HieLvl_INS,Gbl.Hierarchy.Ins.InsCod,
Gbl.Hierarchy.Ins.ShrtName,40,"TOP_LOGO",false);
break;
case Hie_Lvl_CTR: // Center
Lgo_DrawLogo (Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,
case HieLvl_CTR: // Center
Lgo_DrawLogo (HieLvl_CTR,Gbl.Hierarchy.Ctr.CtrCod,
Gbl.Hierarchy.Ctr.ShrtName,40,"TOP_LOGO",false);
break;
case Hie_Lvl_DEG: // Degree
case Hie_Lvl_CRS: // Course
Lgo_DrawLogo (Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod,
case HieLvl_DEG: // Degree
case HieLvl_CRS: // Course
Lgo_DrawLogo (HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod,
Gbl.Hierarchy.Deg.ShrtName,40,"TOP_LOGO",false);
break;
default:
@ -441,10 +442,10 @@ void Hie_WriteBigNameCtyInsCtrDegCrs (void)
if (Gbl.Hierarchy.Cty.CtyCod > 0)
{
HTM_DIV_Begin ("id=\"big_full_name\"");
HTM_Txt ( (Gbl.Hierarchy.Level == Hie_Lvl_CRS) ? Gbl.Hierarchy.Crs.FullName :// Full name
((Gbl.Hierarchy.Level == Hie_Lvl_DEG) ? Gbl.Hierarchy.Deg.FullName :
((Gbl.Hierarchy.Level == Hie_Lvl_CTR) ? Gbl.Hierarchy.Ctr.FullName :
((Gbl.Hierarchy.Level == Hie_Lvl_INS) ? Gbl.Hierarchy.Ins.FullName :
HTM_Txt ( (Gbl.Hierarchy.Level == HieLvl_CRS) ? Gbl.Hierarchy.Crs.FullName :// Full name
((Gbl.Hierarchy.Level == HieLvl_DEG) ? Gbl.Hierarchy.Deg.FullName :
((Gbl.Hierarchy.Level == HieLvl_CTR) ? Gbl.Hierarchy.Ctr.FullName :
((Gbl.Hierarchy.Level == HieLvl_INS) ? Gbl.Hierarchy.Ins.FullName :
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]))));
HTM_DIV_End ();
@ -453,10 +454,10 @@ void Hie_WriteBigNameCtyInsCtrDegCrs (void)
HTM_DIV_End ();
HTM_DIV_Begin ("id=\"big_short_name\"");
HTM_Txt ( (Gbl.Hierarchy.Level == Hie_Lvl_CRS) ? Gbl.Hierarchy.Crs.ShrtName :// Short name
((Gbl.Hierarchy.Level == Hie_Lvl_DEG) ? Gbl.Hierarchy.Deg.ShrtName :
((Gbl.Hierarchy.Level == Hie_Lvl_CTR) ? Gbl.Hierarchy.Ctr.ShrtName :
((Gbl.Hierarchy.Level == Hie_Lvl_INS) ? Gbl.Hierarchy.Ins.ShrtName :
HTM_Txt ( (Gbl.Hierarchy.Level == HieLvl_CRS) ? Gbl.Hierarchy.Crs.ShrtName :// Short name
((Gbl.Hierarchy.Level == HieLvl_DEG) ? Gbl.Hierarchy.Deg.ShrtName :
((Gbl.Hierarchy.Level == HieLvl_CTR) ? Gbl.Hierarchy.Ctr.ShrtName :
((Gbl.Hierarchy.Level == HieLvl_INS) ? Gbl.Hierarchy.Ins.ShrtName :
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]))));
HTM_DIV_End ();
}
@ -490,19 +491,19 @@ void Hie_SetHierarchyFromUsrLastHierarchy (void)
/***** Copy last hierarchy scope and code to current hierarchy *****/
switch (Gbl.Usrs.Me.UsrLast.LastHie.Scope)
{
case Hie_Lvl_CTY: // Country
case HieLvl_CTY: // Country
Gbl.Hierarchy.Cty.CtyCod = Gbl.Usrs.Me.UsrLast.LastHie.Cod;
break;
case Hie_Lvl_INS: // Institution
case HieLvl_INS: // Institution
Gbl.Hierarchy.Ins.InsCod = Gbl.Usrs.Me.UsrLast.LastHie.Cod;
break;
case Hie_Lvl_CTR: // Center
case HieLvl_CTR: // Center
Gbl.Hierarchy.Ctr.CtrCod = Gbl.Usrs.Me.UsrLast.LastHie.Cod;
break;
case Hie_Lvl_DEG: // Degree
case HieLvl_DEG: // Degree
Gbl.Hierarchy.Deg.DegCod = Gbl.Usrs.Me.UsrLast.LastHie.Cod;
break;
case Hie_Lvl_CRS: // Course
case HieLvl_CRS: // Course
Gbl.Hierarchy.Crs.CrsCod = Gbl.Usrs.Me.UsrLast.LastHie.Cod;
break;
default:
@ -567,37 +568,37 @@ void Hie_InitHierarchy (void)
depending on course code, degree code, etc. *****/
if (Gbl.Hierarchy.Crs.CrsCod > 0) // Course selected
{
Gbl.Hierarchy.Level = Hie_Lvl_CRS;
Gbl.Hierarchy.Level = HieLvl_CRS;
Gbl.Hierarchy.Cod = Gbl.Hierarchy.Crs.CrsCod;
}
else if (Gbl.Hierarchy.Deg.DegCod > 0) // Degree selected
{
Gbl.Hierarchy.Level = Hie_Lvl_DEG;
Gbl.Hierarchy.Level = HieLvl_DEG;
Gbl.Hierarchy.Cod = Gbl.Hierarchy.Deg.DegCod;
}
else if (Gbl.Hierarchy.Ctr.CtrCod > 0) // Center selected
{
Gbl.Hierarchy.Level = Hie_Lvl_CTR;
Gbl.Hierarchy.Level = HieLvl_CTR;
Gbl.Hierarchy.Cod = Gbl.Hierarchy.Ctr.CtrCod;
}
else if (Gbl.Hierarchy.Ins.InsCod > 0) // Institution selected
{
Gbl.Hierarchy.Level = Hie_Lvl_INS;
Gbl.Hierarchy.Level = HieLvl_INS;
Gbl.Hierarchy.Cod = Gbl.Hierarchy.Ins.InsCod;
}
else if (Gbl.Hierarchy.Cty.CtyCod > 0) // Country selected
{
Gbl.Hierarchy.Level = Hie_Lvl_CTY;
Gbl.Hierarchy.Level = HieLvl_CTY;
Gbl.Hierarchy.Cod = Gbl.Hierarchy.Cty.CtyCod;
}
else
{
Gbl.Hierarchy.Level = Hie_Lvl_SYS;
Gbl.Hierarchy.Level = HieLvl_SYS;
Gbl.Hierarchy.Cod = -1L;
}
/***** Initialize paths *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
/***** Paths of course directories *****/
snprintf (Gbl.Crs.PathPriv,sizeof (Gbl.Crs.PathPriv),"%s/%ld",
@ -643,7 +644,7 @@ void Hie_ResetHierarchy (void)
Gbl.Hierarchy.Crs.CrsCod = -1L;
/***** Hierarchy level and code *****/
Gbl.Hierarchy.Level = Hie_Lvl_UNK;
Gbl.Hierarchy.Level = HieLvl_UNK;
Gbl.Hierarchy.Cod = -1L;
}
@ -699,10 +700,10 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
" AND usr_admins.Cod=deg_degrees.DegCod)"
" ORDER BY S,"
"FullName",
(unsigned) Hie_Lvl_SYS,UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_SYS),
(unsigned) Hie_Lvl_INS,UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_INS),
(unsigned) Hie_Lvl_CTR,UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
(unsigned) Hie_Lvl_DEG,UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_DEG));
(unsigned) HieLvl_SYS,UsrCod,Sco_GetDBStrFromScope (HieLvl_SYS),
(unsigned) HieLvl_INS,UsrCod,Sco_GetDBStrFromScope (HieLvl_INS),
(unsigned) HieLvl_CTR,UsrCod,Sco_GetDBStrFromScope (HieLvl_CTR),
(unsigned) HieLvl_DEG,UsrCod,Sco_GetDBStrFromScope (HieLvl_DEG));
if (NumRows)
/***** Get the list of degrees *****/
for (NumRow = 1;
@ -728,11 +729,11 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
/* Get scope */
switch (Sco_GetScopeFromUnsignedStr (row[0]))
{
case Hie_Lvl_SYS: // System
case HieLvl_SYS: // System
Ico_PutIcon ("swad64x64.png",Txt_all_degrees,"ICO16x16");
HTM_TxtF ("&nbsp;%s",Txt_all_degrees);
break;
case Hie_Lvl_INS: // Institution
case HieLvl_INS: // Institution
Hie.Ins.InsCod = Str_ConvertStrCodToLongCod (row[1]);
if (Hie.Ins.InsCod > 0)
{
@ -744,7 +745,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
"BT_LINK DAT_SMALL_NOBR","LT");
}
break;
case Hie_Lvl_CTR: // Center
case HieLvl_CTR: // Center
Hie.Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[1]);
if (Hie.Ctr.CtrCod > 0)
{
@ -756,7 +757,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
"BT_LINK DAT_SMALL_NOBR","LT");
}
break;
case Hie_Lvl_DEG: // Degree
case HieLvl_DEG: // Degree
Hie.Deg.DegCod = Str_ConvertStrCodToLongCod (row[1]);
if (Hie.Deg.DegCod > 0)
{

View File

@ -59,7 +59,7 @@ extern struct Globals Gbl;
/*****************************************************************************/
void HieCfg_Title (bool PutLink,
Hie_Lvl_Level_t LogoScope,
HieLvl_Level_t LogoScope,
long LogoCod,
char LogoShrtName[Cns_HIERARCHY_MAX_BYTES_SHRT_NAME + 1],
char LogoFullName[Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1],
@ -320,7 +320,7 @@ void HieCfg_QR (const char *ParamName,long HieCod)
/************************ Number of users in courses *************************/
/*****************************************************************************/
void HieCfg_NumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Role)
void HieCfg_NumUsrsInCrss (HieLvl_Level_t Scope,long Cod,Rol_Role_t Role)
{
extern const char *Txt_Users_in_courses;
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];

View File

@ -40,7 +40,7 @@
/*****************************************************************************/
void HieCfg_Title (bool PutLink,
Hie_Lvl_Level_t LogoScope,
HieLvl_Level_t LogoScope,
long LogoCod,
char LogoShrtName[Cns_HIERARCHY_MAX_BYTES_SHRT_NAME + 1],
char LogoFullName[Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1],
@ -56,6 +56,6 @@ void HieCfg_Shortcut (bool PrintView,const char *ParamName,long HieCod);
void HieCfg_NumCtrs (unsigned NumCtrs,bool PutForm);
void HieCfg_NumCtrsWithMap (unsigned NumCtrs,unsigned NumCtrsWithMap);
void HieCfg_QR (const char *ParamName,long HieCod);
void HieCfg_NumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Role);
void HieCfg_NumUsrsInCrss (HieLvl_Level_t Scope,long Cod,Rol_Role_t Role);
#endif

View File

@ -36,17 +36,17 @@
/*****************************************************************************/
// Levels in the hierarchy
#define Hie_Lvl_NUM_LEVELS 7
#define HieLvl_NUM_LEVELS 7
typedef enum
{
Hie_Lvl_UNK = 0, // Unknown
Hie_Lvl_SYS = 1, // System
Hie_Lvl_CTY = 2, // Country
Hie_Lvl_INS = 3, // Institution
Hie_Lvl_CTR = 4, // Center
Hie_Lvl_DEG = 5, // Degree
Hie_Lvl_CRS = 6, // Course
} Hie_Lvl_Level_t;
HieLvl_UNK = 0, // Unknown
HieLvl_SYS = 1, // System
HieLvl_CTY = 2, // Country
HieLvl_INS = 3, // Institution
HieLvl_CTR = 4, // Center
HieLvl_DEG = 5, // Degree
HieLvl_CRS = 6, // Course
} HieLvl_Level_t;
/*****************************************************************************/
/***************************** Public prototypes *****************************/

View File

@ -37,6 +37,7 @@
#include "swad_form.h"
#include "swad_forum.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_indicator.h"
#include "swad_message.h"
@ -149,7 +150,7 @@ void Ind_ReqIndicatorsCourses (void)
/* Data */
HTM_TD_Begin ("class=\"DAT LT\"");
DT_WriteSelectorDegreeTypes (Indicators.DegTypCod);
DegTyp_WriteSelectorDegreeTypes (Indicators.DegTypCod);
HTM_Txt (" (");
HTM_TxtF (Txt_only_if_the_scope_is_X,Cfg_PLATFORM_SHORT_NAME);
HTM_Txt (")");
@ -239,18 +240,18 @@ void Ind_ReqIndicatorsCourses (void)
static void Ind_GetParamsIndicators (struct Ind_Indicators *Indicators)
{
/***** Get scope *****/
Gbl.Scope.Allowed = 1 << Hie_Lvl_SYS |
1 << Hie_Lvl_CTY |
1 << Hie_Lvl_INS |
1 << Hie_Lvl_CTR |
1 << Hie_Lvl_DEG |
1 << Hie_Lvl_CRS;
Gbl.Scope.Default = Hie_Lvl_CRS;
Gbl.Scope.Allowed = 1 << HieLvl_SYS |
1 << HieLvl_CTY |
1 << HieLvl_INS |
1 << HieLvl_CTR |
1 << HieLvl_DEG |
1 << HieLvl_CRS;
Gbl.Scope.Default = HieLvl_CRS;
Sco_GetScope ("ScopeInd");
/***** Get degree type code *****/
Indicators->DegTypCod = (Gbl.Scope.Current == Hie_Lvl_SYS) ?
DT_GetAndCheckParamOtherDegTypCod (-1L) : // -1L (any degree type) is allowed here
Indicators->DegTypCod = (Gbl.Scope.Current == HieLvl_SYS) ?
DegTyp_GetAndCheckParamOtherDegTypCod (-1L) : // -1L (any degree type) is allowed here
-1L;
/***** Get department code *****/
@ -350,7 +351,7 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
if (Indicators->DptCod >= 0) // 0 means another department
{
if (Indicators->DegTypCod > 0)
@ -428,7 +429,7 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
"crs_courses.FullName");
}
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
if (Indicators->DptCod >= 0) // 0 means another department
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
@ -475,7 +476,7 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
"crs_courses.FullName",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
if (Indicators->DptCod >= 0) // 0 means another department
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
@ -518,7 +519,7 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
"crs_courses.FullName",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
if (Indicators->DptCod >= 0) // 0 means another department
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
@ -557,7 +558,7 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
"crs_courses.FullName",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
if (Indicators->DptCod >= 0) // 0 means another department
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
@ -596,7 +597,7 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
"crs_courses.FullName",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
if (Indicators->DptCod >= 0) // 0 means another department
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
@ -1117,10 +1118,10 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I
break;
case Ind_INDICATORS_FULL:
/* Get number of users */
NumTchs = Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,CrsCod,
NumTchs = Usr_GetNumUsrsInCrss (HieLvl_CRS,CrsCod,
1 << Rol_NET | // Non-editing teachers
1 << Rol_TCH); // Teachers
NumStds = Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,CrsCod,
NumStds = Usr_GetNumUsrsInCrss (HieLvl_CRS,CrsCod,
1 << Rol_STD); // Students
HTM_TR_Begin (NULL);

View File

@ -39,6 +39,7 @@
#include "swad_forum.h"
#include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_institution.h"
#include "swad_logo.h"
@ -238,7 +239,7 @@ void Ins_DrawInstitutionLogoWithLink (struct Ins_Instit *Ins,unsigned Size)
Ins_PutParamInsCod (Ins->InsCod);
HTM_BUTTON_SUBMIT_Begin (Ins->FullName,"BT_LINK",NULL);
}
Lgo_DrawLogo (Hie_Lvl_INS,Ins->InsCod,Ins->FullName,
Lgo_DrawLogo (HieLvl_INS,Ins->InsCod,Ins->FullName,
Size,NULL,true);
if (PutLink)
{
@ -263,7 +264,7 @@ void Ins_DrawInstitutionLogoAndNameWithLink (struct Ins_Instit *Ins,Act_Action_t
Hie_FreeGoToMsg ();
/***** Institution logo and name *****/
Lgo_DrawLogo (Hie_Lvl_INS,Ins->InsCod,Ins->ShrtName,16,ClassLogo,true);
Lgo_DrawLogo (HieLvl_INS,Ins->InsCod,Ins->ShrtName,16,ClassLogo,true);
HTM_TxtF ("&nbsp;%s",Ins->FullName);
/***** End link *****/
@ -450,7 +451,7 @@ static void Ins_ListOneInstitutionForSeeing (struct Ins_Instit *Ins,unsigned Num
/* Number of users in courses of this institution */
HTM_TD_Begin ("class=\"%s RM %s\"",TxtClassNormal,BgColor);
HTM_Unsigned (Usr_GetCachedNumUsrsInCrss (Hie_Lvl_INS,Ins->InsCod,
HTM_Unsigned (Usr_GetCachedNumUsrsInCrss (HieLvl_INS,Ins->InsCod,
1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH)); // Any user);
@ -1084,7 +1085,7 @@ static void Ins_ListInstitutionsForEdition (void)
ICanEdit = Ins_CheckIfICanEdit (Ins);
NumCtrs = Ctr_GetNumCtrsInIns (Ins->InsCod);
NumUsrsIns = Usr_GetNumUsrsWhoClaimToBelongToIns (Ins);
NumUsrsInCrssOfIns = Usr_GetNumUsrsInCrss (Hie_Lvl_INS,Ins->InsCod,
NumUsrsInCrssOfIns = Usr_GetNumUsrsInCrss (HieLvl_INS,Ins->InsCod,
1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH); // Any user
@ -1111,7 +1112,7 @@ static void Ins_ListInstitutionsForEdition (void)
/* Institution logo */
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ins->FullName);
Lgo_DrawLogo (Hie_Lvl_INS,Ins->InsCod,Ins->ShrtName,20,NULL,true);
Lgo_DrawLogo (HieLvl_INS,Ins->InsCod,Ins->ShrtName,20,NULL,true);
HTM_TD_End ();
/* Institution short name */
@ -1356,7 +1357,7 @@ void Ins_RemoveInstitution (void)
// Institution has users ==> don't remove
Ale_CreateAlert (Ale_WARNING,NULL,
Txt_To_remove_an_institution_you_must_first_remove_all_centers_and_users_in_the_institution);
else if (Usr_GetNumUsrsInCrss (Hie_Lvl_INS,Ins_EditingIns->InsCod,
else if (Usr_GetNumUsrsInCrss (HieLvl_INS,Ins_EditingIns->InsCod,
1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH)) // Any user
@ -1366,10 +1367,10 @@ void Ins_RemoveInstitution (void)
else // Institution has no users ==> remove it
{
/***** Remove all the threads and posts in forums of the institution *****/
For_RemoveForums (Hie_Lvl_INS,Ins_EditingIns->InsCod);
For_RemoveForums (HieLvl_INS,Ins_EditingIns->InsCod);
/***** Remove surveys of the institution *****/
Svy_RemoveSurveys (Hie_Lvl_INS,Ins_EditingIns->InsCod);
Svy_RemoveSurveys (HieLvl_INS,Ins_EditingIns->InsCod);
/***** Remove information related to files in institution *****/
Brw_DB_RemoveInsFiles (Ins_EditingIns->InsCod);
@ -1725,7 +1726,7 @@ static void Ins_PutFormToCreateInstitution (void)
/***** Institution logo *****/
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ins_EditingIns->FullName);
Lgo_DrawLogo (Hie_Lvl_INS,-1L,"",20,NULL,true);
Lgo_DrawLogo (HieLvl_INS,-1L,"",20,NULL,true);
HTM_TD_End ();
/***** Institution short name *****/
@ -1932,12 +1933,12 @@ unsigned Ins_GetCachedNumInssInSys (void)
unsigned NumInss;
/***** Get number of institutions from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_INSS,Hie_Lvl_SYS,-1L,
if (!FigCch_GetFigureFromCache (FigCch_NUM_INSS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumInss))
{
/***** Get current number of institutions from database and update cache *****/
NumInss = (unsigned) DB_GetNumRowsTable ("ins_instits");
FigCch_UpdateFigureIntoCache (FigCch_NUM_INSS,Hie_Lvl_SYS,-1L,
FigCch_UpdateFigureIntoCache (FigCch_NUM_INSS,HieLvl_SYS,-1L,
FigCch_UNSIGNED,&NumInss);
}
@ -1969,7 +1970,7 @@ unsigned Ins_GetNumInssInCty (long CtyCod)
" WHERE CtyCod=%ld",
CtyCod);
Gbl.Cache.NumInssInCty.Valid = true;
FigCch_UpdateFigureIntoCache (FigCch_NUM_INSS,Hie_Lvl_CTY,Gbl.Cache.NumInssInCty.CtyCod,
FigCch_UpdateFigureIntoCache (FigCch_NUM_INSS,HieLvl_CTY,Gbl.Cache.NumInssInCty.CtyCod,
FigCch_UNSIGNED,&Gbl.Cache.NumInssInCty.NumInss);
return Gbl.Cache.NumInssInCty.NumInss;
}
@ -1979,7 +1980,7 @@ unsigned Ins_GetCachedNumInssInCty (long CtyCod)
unsigned NumInss;
/***** Get number of institutions from cache *****/
if (!FigCch_GetFigureFromCache (FigCch_NUM_INSS,Hie_Lvl_CTY,CtyCod,
if (!FigCch_GetFigureFromCache (FigCch_NUM_INSS,HieLvl_CTY,CtyCod,
FigCch_UNSIGNED,&NumInss))
/***** Get current number of institutions from database and update cache *****/
NumInss = Ins_GetNumInssInCty (CtyCod);
@ -1992,7 +1993,7 @@ unsigned Ins_GetCachedNumInssInCty (long CtyCod)
/*****************************************************************************/
unsigned Ins_GetCachedNumInssWithCtrs (const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod)
HieLvl_Level_t Scope,long Cod)
{
unsigned NumInssWithCtrs;
@ -2020,7 +2021,7 @@ unsigned Ins_GetCachedNumInssWithCtrs (const char *SubQuery,
/*****************************************************************************/
unsigned Ins_GetCachedNumInssWithDegs (const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod)
HieLvl_Level_t Scope,long Cod)
{
unsigned NumInssWithDegs;
@ -2050,7 +2051,7 @@ unsigned Ins_GetCachedNumInssWithDegs (const char *SubQuery,
/*****************************************************************************/
unsigned Ins_GetCachedNumInssWithCrss (const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod)
HieLvl_Level_t Scope,long Cod)
{
unsigned NumInssWithCrss;
@ -2082,7 +2083,7 @@ unsigned Ins_GetCachedNumInssWithCrss (const char *SubQuery,
/*****************************************************************************/
unsigned Ins_GetCachedNumInssWithUsrs (Rol_Role_t Role,const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod)
HieLvl_Level_t Scope,long Cod)
{
static const FigCch_FigureCached_t FigureInss[Rol_NUM_ROLES] =
{

View File

@ -136,13 +136,13 @@ unsigned Ins_GetNumInssInCty (long CtyCod);
unsigned Ins_GetCachedNumInssInCty (long CtyCod);
unsigned Ins_GetCachedNumInssWithCtrs (const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod);
HieLvl_Level_t Scope,long Cod);
unsigned Ins_GetCachedNumInssWithDegs (const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod);
HieLvl_Level_t Scope,long Cod);
unsigned Ins_GetCachedNumInssWithCrss (const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod);
HieLvl_Level_t Scope,long Cod);
unsigned Ins_GetCachedNumInssWithUsrs (Rol_Role_t Role,const char *SubQuery,
Hie_Lvl_Level_t Scope,long Cod);
HieLvl_Level_t Scope,long Cod);
void Ins_ListInssFound (MYSQL_RES **mysql_res,unsigned NumInss);

View File

@ -40,6 +40,7 @@
#include "swad_help.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_config.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_institution.h"
#include "swad_logo.h"
@ -184,10 +185,10 @@ static void InsCfg_Configuration (bool PrintView)
InsCfg_NumDpts ();
/***** Number of users in courses of this institution *****/
HieCfg_NumUsrsInCrss (Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod,Rol_TCH);
HieCfg_NumUsrsInCrss (Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod,Rol_NET);
HieCfg_NumUsrsInCrss (Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod,Rol_STD);
HieCfg_NumUsrsInCrss (Hie_Lvl_INS,Gbl.Hierarchy.Ins.InsCod,Rol_UNK);
HieCfg_NumUsrsInCrss (HieLvl_INS,Gbl.Hierarchy.Ins.InsCod,Rol_TCH);
HieCfg_NumUsrsInCrss (HieLvl_INS,Gbl.Hierarchy.Ins.InsCod,Rol_NET);
HieCfg_NumUsrsInCrss (HieLvl_INS,Gbl.Hierarchy.Ins.InsCod,Rol_STD);
HieCfg_NumUsrsInCrss (HieLvl_INS,Gbl.Hierarchy.Ins.InsCod,Rol_UNK);
}
/***** End table *****/
@ -223,7 +224,7 @@ static void InsCfg_PutIconsToPrintAndUpload (__attribute__((unused)) void *Args)
if (Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM)
/***** Icon to upload logo of institution *****/
Lgo_PutIconToChangeLogo (Hie_Lvl_INS);
Lgo_PutIconToChangeLogo (HieLvl_INS);
/***** Put icon to view places *****/
Plc_PutIconToViewPlaces ();
@ -236,7 +237,7 @@ static void InsCfg_PutIconsToPrintAndUpload (__attribute__((unused)) void *Args)
static void InsCfg_Title (bool PutLink)
{
HieCfg_Title (PutLink,
Hie_Lvl_INS, // Logo scope
HieLvl_INS, // Logo scope
Gbl.Hierarchy.Ins.InsCod, // Logo code
Gbl.Hierarchy.Ins.ShrtName, // Logo short name
Gbl.Hierarchy.Ins.FullName, // Logo full name
@ -546,7 +547,7 @@ static void InsCfg_NumDpts (void)
void InsCfg_RequestLogo (void)
{
Lgo_RequestLogo (Hie_Lvl_INS);
Lgo_RequestLogo (HieLvl_INS);
}
/*****************************************************************************/
@ -555,7 +556,7 @@ void InsCfg_RequestLogo (void)
void InsCfg_ReceiveLogo (void)
{
Lgo_ReceiveLogo (Hie_Lvl_INS);
Lgo_ReceiveLogo (HieLvl_INS);
}
/*****************************************************************************/
@ -564,7 +565,7 @@ void InsCfg_ReceiveLogo (void)
void InsCfg_RemoveLogo (void)
{
Lgo_RemoveLogo (Hie_Lvl_INS);
Lgo_RemoveLogo (HieLvl_INS);
}
/*****************************************************************************/

View File

@ -445,7 +445,7 @@ static void Lay_WritePageTitle (void)
if (Gbl.Params.GetMethod && Gbl.Hierarchy.Deg.DegCod > 0)
{
HTM_TxtF ("%s &gt; %s",Cfg_PLATFORM_SHORT_NAME,Gbl.Hierarchy.Deg.ShrtName);
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS)
if (Gbl.Hierarchy.Level == HieLvl_CRS)
HTM_TxtF (" &gt; %s",Gbl.Hierarchy.Crs.ShrtName);
}
else
@ -1161,7 +1161,7 @@ static void Lay_ShowLeftColumn (void)
HTM_DIV_End ();
/***** Notices (yellow notes) *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS)
if (Gbl.Hierarchy.Level == HieLvl_CRS)
{
HTM_DIV_Begin ("class=\"LEFT_RIGHT_CELL\"");
Not_ShowNotices (Not_LIST_BRIEF_NOTICES,
@ -1194,10 +1194,10 @@ static void Lay_ShowRightColumn (void)
}
/***** Number of connected users in the current course *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // There is a course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // There is a course selected
{
HTM_DIV_Begin ("id=\"courseconnected\" class=\"LEFT_RIGHT_CELL\""); // Used for AJAX based refresh
Gbl.Scope.Current = Hie_Lvl_CRS;
Gbl.Scope.Current = HieLvl_CRS;
Con_ShowConnectedUsrsBelongingToCurrentCrs ();
HTM_DIV_End (); // Used for AJAX based refresh
}
@ -1428,7 +1428,7 @@ void Lay_RefreshNotifsAndConnected (void)
{
unsigned NumUsr;
bool ShowConnected = (Gbl.Prefs.SideCols & Lay_SHOW_RIGHT_COLUMN) &&
Gbl.Hierarchy.Level == Hie_Lvl_CRS; // Right column visible && There is a course selected
Gbl.Hierarchy.Level == HieLvl_CRS; // Right column visible && There is a course selected
/***** Sometimes, someone must do this work,
so who best than processes that refresh via AJAX? *****/
@ -1469,7 +1469,7 @@ void Lay_RefreshNotifsAndConnected (void)
HTM_Txt ("|");
if (ShowConnected)
{
Gbl.Scope.Current = Hie_Lvl_CRS;
Gbl.Scope.Current = HieLvl_CRS;
Con_ShowConnectedUsrsBelongingToCurrentCrs ();
}
HTM_Txt ("|");
@ -1551,7 +1551,7 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
{
if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\"",Hie.Ins.WWW);
Lgo_DrawLogo (Hie_Lvl_INS,Hie.Ins.InsCod,Hie.Ins.ShrtName,40,NULL,true);
Lgo_DrawLogo (HieLvl_INS,Hie.Ins.InsCod,Hie.Ins.ShrtName,40,NULL,true);
if (!PrintView)
HTM_A_End ();
}
@ -1598,7 +1598,7 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"CLASSPHOTO_TITLE\"",
Hie.Deg.WWW);
Lgo_DrawLogo (Hie_Lvl_DEG,Hie.Deg.DegCod,Hie.Deg.ShrtName,40,NULL,true);
Lgo_DrawLogo (HieLvl_DEG,Hie.Deg.DegCod,Hie.Deg.ShrtName,40,NULL,true);
if (!PrintView)
HTM_A_End ();
}

View File

@ -32,6 +32,7 @@
#include "swad_banner.h"
#include "swad_config.h"
#include "swad_database.h"
#include "swad_degree_database.h"
#include "swad_exam_log.h"
#include "swad_global.h"
#include "swad_hierarchy.h"
@ -341,7 +342,7 @@ void Log_GetAndShowLastClicks (void)
/* Get degree code (row[7]) */
Hie.Deg.DegCod = Str_ConvertStrCodToLongCod (row[7]);
Deg_GetShortNameOfDegreeByCod (&Hie.Deg);
Deg_DB_GetShortNameOfDegreeByCod (&Hie.Deg);
/* Print table row */
HTM_TR_Begin (NULL);

View File

@ -32,6 +32,7 @@
#include "swad_action.h"
#include "swad_box.h"
#include "swad_degree_database.h"
#include "swad_error.h"
#include "swad_form.h"
#include "swad_global.h"
@ -74,18 +75,18 @@ static void Lgo_PutIconToRemoveLogo (Act_Action_t ActionRem);
/****************************** Draw degree logo *****************************/
/*****************************************************************************/
void Lgo_DrawLogo (Hie_Lvl_Level_t Scope,long Cod,const char *AltText,
void Lgo_DrawLogo (HieLvl_Level_t Scope,long Cod,const char *AltText,
unsigned Size,const char *Class,bool PutIconIfNotExists)
{
static const char *HieIcon[Hie_Lvl_NUM_LEVELS] =
static const char *HieIcon[HieLvl_NUM_LEVELS] =
{
[Hie_Lvl_UNK] = "sitemap.svg", // not applicable here
[Hie_Lvl_SYS] = "sitemap.svg", // not applicable here
[Hie_Lvl_CTY] = "sitemap.svg", // not applicable here
[Hie_Lvl_INS] = "university.svg",
[Hie_Lvl_CTR] = "building.svg",
[Hie_Lvl_DEG] = "graduation-cap.svg",
[Hie_Lvl_CRS] = "sitemap.svg", // not applicable here
[HieLvl_UNK] = "sitemap.svg", // not applicable here
[HieLvl_SYS] = "sitemap.svg", // not applicable here
[HieLvl_CTY] = "sitemap.svg", // not applicable here
[HieLvl_INS] = "university.svg",
[HieLvl_CTR] = "building.svg",
[HieLvl_DEG] = "graduation-cap.svg",
[HieLvl_CRS] = "sitemap.svg", // not applicable here
};
const char *Folder = NULL; // To avoid warning
char PathLogo[PATH_MAX + 1];
@ -103,7 +104,7 @@ void Lgo_DrawLogo (Hie_Lvl_Level_t Scope,long Cod,const char *AltText,
if (Cod > 0) // Institution, center or degree exists
{
/* Degree */
if (Scope == Hie_Lvl_DEG)
if (Scope == HieLvl_DEG)
{
Folder = Cfg_FOLDER_DEG;
DegCod = Cod;
@ -118,11 +119,11 @@ void Lgo_DrawLogo (Hie_Lvl_Level_t Scope,long Cod,const char *AltText,
}
/* Center */
if (!LogoFound && Scope != Hie_Lvl_INS)
if (!LogoFound && Scope != HieLvl_INS)
{
Folder = Cfg_FOLDER_CTR;
if (Scope == Hie_Lvl_DEG) // && !LogoFound
CtrCod = Deg_GetCtrCodOfDegreeByCod (Cod);
if (Scope == HieLvl_DEG) // && !LogoFound
CtrCod = Deg_DB_GetCtrCodOfDegreeByCod (Cod);
else
CtrCod = Cod;
snprintf (PathLogo,sizeof (PathLogo),"%s/%02u/%u/logo/%u.png",
@ -139,9 +140,9 @@ void Lgo_DrawLogo (Hie_Lvl_Level_t Scope,long Cod,const char *AltText,
if (!LogoFound)
{
Folder = Cfg_FOLDER_INS;
if (Scope == Hie_Lvl_DEG) // && !LogoFound
if (Scope == HieLvl_DEG) // && !LogoFound
InsCod = Deg_GetInsCodOfDegreeByCod (Cod);
else if (Scope == Hie_Lvl_CTR) // && !LogoFound
else if (Scope == HieLvl_CTR) // && !LogoFound
InsCod = Ctr_GetInsCodOfCenterByCod (Cod);
else
InsCod = Cod;
@ -198,7 +199,7 @@ void Lgo_DrawLogo (Hie_Lvl_Level_t Scope,long Cod,const char *AltText,
/************* the logo of institution, center or degree ***************/
/*****************************************************************************/
void Lgo_PutIconToChangeLogo (Hie_Lvl_Level_t Scope)
void Lgo_PutIconToChangeLogo (HieLvl_Level_t Scope)
{
extern const char *Txt_Change_logo;
extern const char *Txt_Upload_logo;
@ -211,17 +212,17 @@ void Lgo_PutIconToChangeLogo (Hie_Lvl_Level_t Scope)
/***** Set variables depending on scope *****/
switch (Scope)
{
case Hie_Lvl_INS:
case HieLvl_INS:
Action = ActReqInsLog;
Cod = Gbl.Hierarchy.Ins.InsCod;
Folder = Cfg_FOLDER_INS;
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
Action = ActReqCtrLog;
Cod = Gbl.Hierarchy.Ctr.CtrCod;
Folder = Cfg_FOLDER_CTR;
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
Action = ActReqDegLog;
Cod = Gbl.Hierarchy.Deg.DegCod;
Folder = Cfg_FOLDER_DEG;
@ -250,7 +251,7 @@ void Lgo_PutIconToChangeLogo (Hie_Lvl_Level_t Scope)
/**** Show a form for sending a logo of the institution, center or degree ****/
/*****************************************************************************/
void Lgo_RequestLogo (Hie_Lvl_Level_t Scope)
void Lgo_RequestLogo (HieLvl_Level_t Scope)
{
extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *Txt_Logo;
@ -265,19 +266,19 @@ void Lgo_RequestLogo (Hie_Lvl_Level_t Scope)
/***** Set action depending on scope *****/
switch (Scope)
{
case Hie_Lvl_INS:
case HieLvl_INS:
Cod = Gbl.Hierarchy.Ins.InsCod;
Folder = Cfg_FOLDER_INS;
ActionRec = ActRecInsLog;
FunctionToDrawContextualIcons = Lgo_PutIconToRemoveLogoIns;
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
Cod = Gbl.Hierarchy.Ctr.CtrCod;
Folder = Cfg_FOLDER_CTR;
ActionRec = ActRecCtrLog;
FunctionToDrawContextualIcons = Lgo_PutIconToRemoveLogoCtr;
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
Cod = Gbl.Hierarchy.Deg.DegCod;
Folder = Cfg_FOLDER_DEG;
ActionRec = ActRecDegLog;
@ -357,7 +358,7 @@ static void Lgo_PutIconToRemoveLogo (Act_Action_t ActionRem)
/******* Receive the logo of the current institution, center or degree *******/
/*****************************************************************************/
void Lgo_ReceiveLogo (Hie_Lvl_Level_t Scope)
void Lgo_ReceiveLogo (HieLvl_Level_t Scope)
{
extern const char *Txt_The_file_is_not_X;
long Cod;
@ -372,15 +373,15 @@ void Lgo_ReceiveLogo (Hie_Lvl_Level_t Scope)
/***** Set variables depending on scope *****/
switch (Scope)
{
case Hie_Lvl_INS:
case HieLvl_INS:
Cod = Gbl.Hierarchy.Ins.InsCod;
Folder = Cfg_FOLDER_INS;
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
Cod = Gbl.Hierarchy.Ctr.CtrCod;
Folder = Cfg_FOLDER_CTR;
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
Cod = Gbl.Hierarchy.Deg.DegCod;
Folder = Cfg_FOLDER_DEG;
break;
@ -434,7 +435,7 @@ void Lgo_ReceiveLogo (Hie_Lvl_Level_t Scope)
/******* Remove the logo of the current institution, center or degree ********/
/*****************************************************************************/
void Lgo_RemoveLogo (Hie_Lvl_Level_t Scope)
void Lgo_RemoveLogo (HieLvl_Level_t Scope)
{
long Cod;
const char *Folder;
@ -443,15 +444,15 @@ void Lgo_RemoveLogo (Hie_Lvl_Level_t Scope)
/***** Set variables depending on scope *****/
switch (Scope)
{
case Hie_Lvl_INS:
case HieLvl_INS:
Cod = Gbl.Hierarchy.Ins.InsCod;
Folder = Cfg_FOLDER_INS;
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
Cod = Gbl.Hierarchy.Ctr.CtrCod;
Folder = Cfg_FOLDER_CTR;
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
Cod = Gbl.Hierarchy.Deg.DegCod;
Folder = Cfg_FOLDER_DEG;
break;

View File

@ -39,11 +39,11 @@
/***************************** Public prototypes *****************************/
/*****************************************************************************/
void Lgo_DrawLogo (Hie_Lvl_Level_t Scope,long Cod,const char *AltText,
void Lgo_DrawLogo (HieLvl_Level_t Scope,long Cod,const char *AltText,
unsigned Size,const char *Class,bool PutIconIfNotExists);
void Lgo_PutIconToChangeLogo (Hie_Lvl_Level_t Scope);
void Lgo_RequestLogo (Hie_Lvl_Level_t Scope);
void Lgo_ReceiveLogo (Hie_Lvl_Level_t Scope);
void Lgo_RemoveLogo (Hie_Lvl_Level_t Scope);
void Lgo_PutIconToChangeLogo (HieLvl_Level_t Scope);
void Lgo_RequestLogo (HieLvl_Level_t Scope);
void Lgo_ReceiveLogo (HieLvl_Level_t Scope);
void Lgo_RemoveLogo (HieLvl_Level_t Scope);
#endif

View File

@ -37,6 +37,7 @@
#include "swad_error.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_ID.h"
#include "swad_mark.h"
@ -623,7 +624,7 @@ void Mrk_ShowMyMarks (void)
}
else // Course zone
{
if (Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
if (Usr_GetNumUsrsInCrss (HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
1 << Rol_STD)) // If there are students in this course
{
Gbl.Usrs.Other.UsrDat.UsrCod = Usr_GetRamdomStdFromCrs (Gbl.Hierarchy.Crs.CrsCod);

View File

@ -45,6 +45,7 @@
#include "swad_global.h"
#include "swad_group.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_ID.h"
#include "swad_message.h"
@ -283,9 +284,9 @@ static void Msg_PutFormMsgUsrs (struct Msg_Messages *Messages,
Grp_GetParCodsSeveralGrpsToShowUsrs ();
/***** Get and order lists of users from this course *****/
Usr_GetListUsrs (Hie_Lvl_CRS,Rol_STD);
Usr_GetListUsrs (Hie_Lvl_CRS,Rol_NET);
Usr_GetListUsrs (Hie_Lvl_CRS,Rol_TCH);
Usr_GetListUsrs (HieLvl_CRS,Rol_STD);
Usr_GetListUsrs (HieLvl_CRS,Rol_NET);
Usr_GetListUsrs (HieLvl_CRS,Rol_TCH);
NumUsrsInCrs = Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs + // Students
Gbl.Usrs.LstUsrs[Rol_NET].NumUsrs + // Non-editing teachers
Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs; // Teachers
@ -534,7 +535,7 @@ static void Msg_WriteFormUsrsIDsOrNicksOtherRecipients (void)
extern const char *Txt_nicks_emails_or_IDs_separated_by_commas;
char Nickname[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1];
unsigned ColSpan;
bool StdsAndTchsWritten = Gbl.Hierarchy.Level == Hie_Lvl_CRS && // Course selected
bool StdsAndTchsWritten = Gbl.Hierarchy.Level == HieLvl_CRS && // Course selected
(Gbl.Usrs.Me.IBelongToCurrentCrs || // I belong to it
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM);
@ -2348,7 +2349,7 @@ unsigned Msg_GetNumMsgsSentByUsr (long UsrCod)
/******** (all the platform, current degree or current course) **********/
/*****************************************************************************/
unsigned Msg_GetNumMsgsSent (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
unsigned Msg_GetNumMsgsSent (HieLvl_Level_t Scope,Msg_Status_t MsgStatus)
{
const char *Table = "msg_snt";
@ -2366,9 +2367,9 @@ unsigned Msg_GetNumMsgsSent (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
}
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned) DB_GetNumRowsTable (Table);
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
@ -2385,7 +2386,7 @@ unsigned Msg_GetNumMsgsSent (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
Table,
Gbl.Hierarchy.Cty.CtyCod,
Table);
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
@ -2400,7 +2401,7 @@ unsigned Msg_GetNumMsgsSent (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
Table,
Gbl.Hierarchy.Ins.InsCod,
Table);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
@ -2413,7 +2414,7 @@ unsigned Msg_GetNumMsgsSent (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
Table,
Gbl.Hierarchy.Ctr.CtrCod,
Table);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
@ -2424,7 +2425,7 @@ unsigned Msg_GetNumMsgsSent (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
Table,
Gbl.Hierarchy.Deg.DegCod,
Table);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
@ -2442,7 +2443,7 @@ unsigned Msg_GetNumMsgsSent (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
/****** (all the platform, current degree or current course) ********/
/*****************************************************************************/
unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
unsigned Msg_GetNumMsgsReceived (HieLvl_Level_t Scope,Msg_Status_t MsgStatus)
{
char *Table;
@ -2456,9 +2457,9 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
"msg_rcv_deleted";
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned) DB_GetNumRowsTable (Table);
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
@ -2477,7 +2478,7 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
Table,
Gbl.Hierarchy.Cty.CtyCod,
Table);
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
@ -2494,7 +2495,7 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
Table,
Gbl.Hierarchy.Ins.InsCod,
Table);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
@ -2509,7 +2510,7 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
Table,
Gbl.Hierarchy.Ctr.CtrCod,
Table);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
@ -2522,7 +2523,7 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
Table,
Gbl.Hierarchy.Deg.DegCod,
Table);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
@ -2533,7 +2534,7 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
Table,
Gbl.Hierarchy.Crs.CrsCod,
Table);
case Hie_Lvl_UNK:
case HieLvl_UNK:
default:
return 0;
}
@ -2541,7 +2542,7 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
case Msg_STATUS_NOTIFIED:
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
@ -2552,7 +2553,7 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
"(SELECT COUNT(*)"
" FROM msg_rcv_deleted"
" WHERE Notified='Y')");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
@ -2587,7 +2588,7 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
" AND msg_rcv_deleted.Notified='Y')",
Gbl.Hierarchy.Cty.CtyCod,
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
@ -2618,7 +2619,7 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
" AND msg_rcv_deleted.Notified='Y')",
Gbl.Hierarchy.Ins.InsCod,
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
@ -2645,7 +2646,7 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
" AND msg_rcv_deleted.Notified='Y')",
Gbl.Hierarchy.Ctr.CtrCod,
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
@ -2668,7 +2669,7 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
" AND msg_rcv_deleted.Notified='Y')",
Gbl.Hierarchy.Deg.DegCod,
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
@ -2687,7 +2688,7 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
" AND msg_rcv_deleted.Notified='Y')",
Gbl.Hierarchy.Crs.CrsCod,
Gbl.Hierarchy.Crs.CrsCod);
case Hie_Lvl_UNK:
case HieLvl_UNK:
default:
return 0;
}

View File

@ -111,8 +111,8 @@ void Msg_ShowRecMsgs (void);
unsigned Msg_GetNumMsgsSentByTchsCrs (long CrsCod);
unsigned Msg_GetNumMsgsSentByUsr (long UsrCod);
unsigned Msg_GetNumMsgsSent (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus);
unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus);
unsigned Msg_GetNumMsgsSent (HieLvl_Level_t Scope,Msg_Status_t MsgStatus);
unsigned Msg_GetNumMsgsReceived (HieLvl_Level_t Scope,Msg_Status_t MsgStatus);
void Msg_PutHiddenParamsMsgsFilters (void *Messages);
void Msg_GetNotifMessage (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],

View File

@ -33,6 +33,7 @@
#include "swad_figure.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_parameter.h"
#include "swad_profile.h"
@ -428,7 +429,7 @@ void Net_ShowWebAndSocialNetworksStats (void)
/***** Get number of users with a web / social network *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",
@ -439,7 +440,7 @@ void Net_ShowWebAndSocialNetworksStats (void)
" ORDER BY N DESC,"
"Web");
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",
@ -462,7 +463,7 @@ void Net_ShowWebAndSocialNetworksStats (void)
"usr_webs.Web",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",
@ -483,7 +484,7 @@ void Net_ShowWebAndSocialNetworksStats (void)
"usr_webs.Web",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",
@ -502,7 +503,7 @@ void Net_ShowWebAndSocialNetworksStats (void)
"usr_webs.Web",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",
@ -519,7 +520,7 @@ void Net_ShowWebAndSocialNetworksStats (void)
"usr_webs.Web",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",

View File

@ -38,6 +38,7 @@
#include "swad_figure.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_notice.h"
#include "swad_notification.h"
@ -391,7 +392,7 @@ void Not_ShowNotices (Not_Listing_t TypeNoticesListing,long HighlightNotCod)
char RSSLink[Cns_MAX_BYTES_WWW + 1];
/***** Trivial check *****/
if (Gbl.Hierarchy.Level != Hie_Lvl_CRS) // No course selected
if (Gbl.Hierarchy.Level != HieLvl_CRS) // No course selected
return;
/***** Get notices from database *****/
@ -841,7 +842,7 @@ void Not_GetSummaryAndContentNotice (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
// Returns the number of (active or obsolete) notices
// sent from this location (all the platform, current degree or current course)
unsigned Not_GetNumNotices (Hie_Lvl_Level_t Scope,Not_Status_t Status,unsigned *NumNotif)
unsigned Not_GetNumNotices (HieLvl_Level_t Scope,Not_Status_t Status,unsigned *NumNotif)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -850,7 +851,7 @@ unsigned Not_GetNumNotices (Hie_Lvl_Level_t Scope,Not_Status_t Status,unsigned *
/***** Get number of notices from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of notices",
"SELECT COUNT(*)," // row[0]
"SUM(NumNotif)" // row[1]
@ -858,7 +859,7 @@ unsigned Not_GetNumNotices (Hie_Lvl_Level_t Scope,Not_Status_t Status,unsigned *
" WHERE Status=%u",
Status);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of notices",
"SELECT COUNT(*)," // row[0]
"SUM(not_notices.NumNotif)" // row[1]
@ -876,7 +877,7 @@ unsigned Not_GetNumNotices (Hie_Lvl_Level_t Scope,Not_Status_t Status,unsigned *
Gbl.Hierarchy.Cty.CtyCod,
Status);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of notices",
"SELECT COUNT(*)," // row[0]
"SUM(not_notices.NumNotif)" // row[1]
@ -892,7 +893,7 @@ unsigned Not_GetNumNotices (Hie_Lvl_Level_t Scope,Not_Status_t Status,unsigned *
Gbl.Hierarchy.Ins.InsCod,
Status);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of notices",
"SELECT COUNT(*)," // row[0]
"SUM(not_notices.NumNotif)" // row[1]
@ -906,7 +907,7 @@ unsigned Not_GetNumNotices (Hie_Lvl_Level_t Scope,Not_Status_t Status,unsigned *
Gbl.Hierarchy.Ctr.CtrCod,
Status);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of notices",
"SELECT COUNT(*)," // row[0]
"SUM(not_notices.NumNotif)" // row[1]
@ -918,7 +919,7 @@ unsigned Not_GetNumNotices (Hie_Lvl_Level_t Scope,Not_Status_t Status,unsigned *
Gbl.Hierarchy.Deg.DegCod,
Status);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of notices",
"SELECT COUNT(*)," // row[0]
"SUM(NumNotif)" // row[1]
@ -959,7 +960,7 @@ unsigned Not_GetNumNotices (Hie_Lvl_Level_t Scope,Not_Status_t Status,unsigned *
// Returns the number of deleted notices
// sent from this location (all the platform, current degree or current course)
unsigned Not_GetNumNoticesDeleted (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
unsigned Not_GetNumNoticesDeleted (HieLvl_Level_t Scope,unsigned *NumNotif)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -968,13 +969,13 @@ unsigned Not_GetNumNoticesDeleted (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
/***** Get number of notices from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of deleted notices",
"SELECT COUNT(*)," // row[0]
"SUM(NumNotif)" // row[1]
" FROM not_deleted");
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of deleted notices",
"SELECT COUNT(*)," // row[0]
"SUM(not_deleted.NumNotif)" // row[1]
@ -990,7 +991,7 @@ unsigned Not_GetNumNoticesDeleted (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
" AND crs_courses.CrsCod=not_deleted.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of deleted notices",
"SELECT COUNT(*)," // row[0]
"SUM(not_deleted.NumNotif)" // row[1]
@ -1004,7 +1005,7 @@ unsigned Not_GetNumNoticesDeleted (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
" AND crs_courses.CrsCod=not_deleted.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of deleted notices",
"SELECT COUNT(*)," // row[0]
"SUM(not_deleted.NumNotif)" // row[1]
@ -1016,7 +1017,7 @@ unsigned Not_GetNumNoticesDeleted (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
" AND crs_courses.CrsCod=not_deleted.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of deleted notices",
"SELECT COUNT(*)," // row[0]
"SUM(not_deleted.NumNotif)" // row[1]
@ -1026,7 +1027,7 @@ unsigned Not_GetNumNoticesDeleted (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
" AND crs_courses.CrsCod=not_deleted.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of deleted notices",
"SELECT COUNT(*)," // row[0]
"SUM(NumNotif)" // row[1]

View File

@ -72,8 +72,8 @@ void Not_ShowNotices (Not_Listing_t TypeNoticesListing,long HighlightNotCod);
void Not_GetSummaryAndContentNotice (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
char **ContentStr,
long NotCod,bool GetContent);
unsigned Not_GetNumNotices (Hie_Lvl_Level_t Scope,Not_Status_t Status,unsigned *NumNotif);
unsigned Not_GetNumNoticesDeleted (Hie_Lvl_Level_t Scope,unsigned *NumNotif);
unsigned Not_GetNumNotices (HieLvl_Level_t Scope,Not_Status_t Status,unsigned *NumNotif);
unsigned Not_GetNumNoticesDeleted (HieLvl_Level_t Scope,unsigned *NumNotif);
void Not_PutHiddenParamNotCod (long NotCod);

View File

@ -45,6 +45,7 @@
#include "swad_forum.h"
#include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_mark.h"
#include "swad_message.h"
@ -1318,7 +1319,7 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
case Ntf_EVENT_ENROLMENT_TCH: // This function should not be called in this case
return 0;
case Ntf_EVENT_ENROLMENT_REQUEST:
if (Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
if (Usr_GetNumUsrsInCrss (HieLvl_CRS,Gbl.Hierarchy.Crs.CrsCod,
1 << Rol_TCH))
// If this course has teachers ==> send notification to teachers
NumUsrs = (unsigned)
@ -1345,10 +1346,10 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
" OR (Scope='%s' AND Cod=%ld)"
" OR (Scope='%s' AND Cod=%ld))"
" AND UsrCod<>%ld",
Sco_GetDBStrFromScope (Hie_Lvl_SYS),
Sco_GetDBStrFromScope (Hie_Lvl_INS),Gbl.Hierarchy.Ins.InsCod,
Sco_GetDBStrFromScope (Hie_Lvl_CTR),Gbl.Hierarchy.Ctr.CtrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG),Gbl.Hierarchy.Deg.DegCod,
Sco_GetDBStrFromScope (HieLvl_SYS),
Sco_GetDBStrFromScope (HieLvl_INS),Gbl.Hierarchy.Ins.InsCod,
Sco_GetDBStrFromScope (HieLvl_CTR),Gbl.Hierarchy.Ctr.CtrCod,
Sco_GetDBStrFromScope (HieLvl_DEG),Gbl.Hierarchy.Deg.DegCod,
Gbl.Usrs.Me.UsrDat.UsrCod);
break;
case Ntf_EVENT_TL_COMMENT: // New comment to one of my social notes or comments
@ -1450,11 +1451,11 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
" AND (svy_surveys.Roles&(1<<crs_users.Role))<>0)",
Cod,
Cod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS),
Sco_GetDBStrFromScope (HieLvl_CRS),
Gbl.Usrs.Me.UsrDat.UsrCod,
Cod,
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
Sco_GetDBStrFromScope (HieLvl_CRS));
break;
}

View File

@ -47,6 +47,7 @@
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_logo.h"
#include "swad_parameter.h"
@ -2252,7 +2253,7 @@ static void Pho_ShowOrPrintListDegrees (struct Pho_DegPhotos *DegPhotos,
"BT_LINK DAT","CT");
else // Pho_DEGREES_PRINT
{
Lgo_DrawLogo (Hie_Lvl_DEG,Deg.DegCod,Deg.ShrtName,20,"CT",true);
Lgo_DrawLogo (HieLvl_DEG,Deg.DegCod,Deg.ShrtName,20,"CT",true);
HTM_TxtF ("&nbsp;%s",Deg.FullName);
}
HTM_TD_End ();

View File

@ -40,6 +40,7 @@
#include "swad_form.h"
#include "swad_forum.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_language.h"
#include "swad_message.h"
@ -315,7 +316,7 @@ bool Prf_ShowUserProfile (struct UsrData *UsrDat)
/***** Shared record card *****/
if (!ItsMe && // If not me...
Gbl.Hierarchy.Level == Hie_Lvl_CRS) // ...and a course is selected
Gbl.Hierarchy.Level == HieLvl_CRS) // ...and a course is selected
{
/* Get user's role in current course */
UsrDat->Roles.InCurrentCrs = Rol_GetRoleUsrInCrs (UsrDat->UsrCod,
@ -974,7 +975,7 @@ static void Prf_ShowRanking (unsigned Rank,unsigned NumUsrs)
/***** Rank in form to go to ranking *****/
Frm_BeginForm (ActSeeUseGbl);
Sco_PutParamScope ("ScopeSta",Hie_Lvl_SYS);
Sco_PutParamScope ("ScopeSta",HieLvl_SYS);
Par_PutHiddenParamUnsigned (NULL,"FigureType",(unsigned) Fig_USERS_RANKING);
if (asprintf (&Title,"#%u %s %u",
Rank,Txt_of_PART_OF_A_TOTAL,NumUsrs) < 0)
@ -1461,7 +1462,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
/***** Get ranking from database *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT UsrCod," // row[0]
@ -1478,7 +1479,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
FieldName,
FieldName);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
@ -1508,7 +1509,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
FieldName,
FieldName);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
@ -1536,7 +1537,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
FieldName,
FieldName);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
@ -1561,7 +1562,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
Gbl.Hierarchy.Ctr.CtrCod,
FieldName,FieldName);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
@ -1584,7 +1585,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
Gbl.Hierarchy.Deg.DegCod,
FieldName,FieldName);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
@ -1695,7 +1696,7 @@ void Prf_GetAndShowRankingClicksPerDay (void)
/***** Get ranking from database *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT UsrCod," // row[0]
@ -1711,7 +1712,7 @@ void Prf_GetAndShowRankingClicksPerDay (void)
"UsrCod"
" LIMIT 100");
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
@ -1740,7 +1741,7 @@ void Prf_GetAndShowRankingClicksPerDay (void)
" LIMIT 100",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
@ -1767,7 +1768,7 @@ void Prf_GetAndShowRankingClicksPerDay (void)
" LIMIT 100",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
@ -1792,7 +1793,7 @@ void Prf_GetAndShowRankingClicksPerDay (void)
" LIMIT 100",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
@ -1815,7 +1816,7 @@ void Prf_GetAndShowRankingClicksPerDay (void)
" LIMIT 100",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "

View File

@ -38,6 +38,7 @@
#include "swad_figure.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_pagination.h"
#include "swad_parameter.h"
@ -2190,18 +2191,18 @@ void Prg_RemoveCrsItems (long CrsCod)
// Returns the number of courses with program items
// in this location (all the platform, current degree or current course)
unsigned Prg_GetNumCoursesWithItems (Hie_Lvl_Level_t Scope)
unsigned Prg_GetNumCoursesWithItems (HieLvl_Level_t Scope)
{
/***** Get number of courses with program items from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with program items",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM prg_items"
" WHERE CrsCod>0");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with program items",
"SELECT COUNT(DISTINCT prg_items.CrsCod)"
@ -2216,7 +2217,7 @@ unsigned Prg_GetNumCoursesWithItems (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with program items",
"SELECT COUNT(DISTINCT prg_items.CrsCod)"
@ -2229,7 +2230,7 @@ unsigned Prg_GetNumCoursesWithItems (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with program items",
"SELECT COUNT(DISTINCT prg_items.CrsCod)"
@ -2240,7 +2241,7 @@ unsigned Prg_GetNumCoursesWithItems (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with program items",
"SELECT COUNT(DISTINCT prg_items.CrsCod)"
@ -2249,7 +2250,7 @@ unsigned Prg_GetNumCoursesWithItems (Hie_Lvl_Level_t Scope)
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with program items",
"SELECT COUNT(DISTINCT CrsCod)"
@ -2266,19 +2267,19 @@ unsigned Prg_GetNumCoursesWithItems (Hie_Lvl_Level_t Scope)
/*****************************************************************************/
// Returns the number of program items in a hierarchy scope
unsigned Prg_GetNumItems (Hie_Lvl_Level_t Scope)
unsigned Prg_GetNumItems (HieLvl_Level_t Scope)
{
/***** Get number of program items from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QueryCOUNT ("can not get number of program items",
"SELECT COUNT(*)"
" FROM prg_items"
" WHERE CrsCod>0");
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of program items",
"SELECT COUNT(*)"
@ -2294,7 +2295,7 @@ unsigned Prg_GetNumItems (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of program items",
"SELECT COUNT(*)"
@ -2308,7 +2309,7 @@ unsigned Prg_GetNumItems (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QueryCOUNT ("can not get number of program items",
"SELECT COUNT(*)"
@ -2320,7 +2321,7 @@ unsigned Prg_GetNumItems (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QueryCOUNT ("can not get number of program items",
"SELECT COUNT(*)"
@ -2330,7 +2331,7 @@ unsigned Prg_GetNumItems (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QueryCOUNT ("can not get number of program items",
"SELECT COUNT(*)"

View File

@ -56,7 +56,7 @@ void Prg_MoveRightItem (void);
void Prg_RemoveCrsItems (long CrsCod);
unsigned Prg_GetNumCoursesWithItems (Hie_Lvl_Level_t Scope);
unsigned Prg_GetNumItems (Hie_Lvl_Level_t Scope);
unsigned Prg_GetNumCoursesWithItems (HieLvl_Level_t Scope);
unsigned Prg_GetNumItems (HieLvl_Level_t Scope);
#endif

View File

@ -39,6 +39,7 @@
#include "swad_figure.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_ID.h"
#include "swad_notification.h"
@ -4619,18 +4620,18 @@ void Prj_RemoveUsrFromProjects (long UsrCod)
// Returns the number of courses with projects
// in this location (all the platform, current degree or current course)
unsigned Prj_GetNumCoursesWithProjects (Hie_Lvl_Level_t Scope)
unsigned Prj_GetNumCoursesWithProjects (HieLvl_Level_t Scope)
{
/***** Get number of courses with projects from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM prj_projects"
" WHERE CrsCod>0");
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT prj_projects.CrsCod)"
@ -4645,7 +4646,7 @@ unsigned Prj_GetNumCoursesWithProjects (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=prj_projects.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT prj_projects.CrsCod)"
@ -4658,7 +4659,7 @@ unsigned Prj_GetNumCoursesWithProjects (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=prj_projects.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT prj_projects.CrsCod)"
@ -4669,7 +4670,7 @@ unsigned Prj_GetNumCoursesWithProjects (Hie_Lvl_Level_t Scope)
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=prj_projects.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT prj_projects.CrsCod)"
@ -4679,7 +4680,7 @@ unsigned Prj_GetNumCoursesWithProjects (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=prj_projects.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT CrsCod)"
@ -4697,19 +4698,19 @@ unsigned Prj_GetNumCoursesWithProjects (Hie_Lvl_Level_t Scope)
/*****************************************************************************/
// Returns the number of projects in this location
unsigned Prj_GetNumProjects (Hie_Lvl_Level_t Scope)
unsigned Prj_GetNumProjects (HieLvl_Level_t Scope)
{
/***** Get number of projects from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
" FROM prj_projects"
" WHERE CrsCod>0");
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
@ -4725,7 +4726,7 @@ unsigned Prj_GetNumProjects (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=prj_projects.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
@ -4739,7 +4740,7 @@ unsigned Prj_GetNumProjects (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=prj_projects.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
@ -4751,7 +4752,7 @@ unsigned Prj_GetNumProjects (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=prj_projects.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
@ -4761,7 +4762,7 @@ unsigned Prj_GetNumProjects (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=prj_projects.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"

View File

@ -238,7 +238,7 @@ void Prj_UnloProjectEdition (void);
void Prj_RemoveCrsProjects (long CrsCod);
void Prj_RemoveUsrFromProjects (long UsrCod);
unsigned Prj_GetNumCoursesWithProjects (Hie_Lvl_Level_t Scope);
unsigned Prj_GetNumProjects (Hie_Lvl_Level_t Scope);
unsigned Prj_GetNumCoursesWithProjects (HieLvl_Level_t Scope);
unsigned Prj_GetNumProjects (HieLvl_Level_t Scope);
#endif

View File

@ -43,6 +43,7 @@
#include "swad_follow_database.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_ID.h"
#include "swad_logo.h"
@ -1745,7 +1746,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"LM\" style=\"width:%upx;\"",Rec_DEGREE_LOGO_SIZE);
Lgo_DrawLogo (Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod,
Lgo_DrawLogo (HieLvl_DEG,Gbl.Hierarchy.Deg.DegCod,
Gbl.Hierarchy.Deg.ShrtName,Rec_DEGREE_LOGO_SIZE,NULL,true);
HTM_TD_End ();
@ -2071,7 +2072,7 @@ void Rec_ShowFormOtherNewSharedRecord (struct UsrData *UsrDat,Rol_Role_t Default
/* In this case UsrDat->Roles.InCurrentCrsDB
is not the current role in current course.
Instead it is initialized with the preferred role. */
UsrDat->Roles.InCurrentCrs = (Gbl.Hierarchy.Level == Hie_Lvl_CRS) ? DefaultRole : // Course selected
UsrDat->Roles.InCurrentCrs = (Gbl.Hierarchy.Level == HieLvl_CRS) ? DefaultRole : // Course selected
Rol_UNK; // No course selected
Rec_ShowSharedUsrRecord (Rec_SHA_OTHER_NEW_USR_FORM,UsrDat,NULL);
}
@ -2536,7 +2537,7 @@ static void Rec_PutIconsCommands (__attribute__((unused)) void *Args)
Txt_Administer_user);
}
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
if (Gbl.Record.UsrDat->Roles.InCurrentCrs == Rol_STD) // He/she is a student in current course
{
@ -2710,7 +2711,7 @@ static void Rec_ShowInstitutionInHead (struct Ins_Instit *Ins,bool PutFormLinks)
Ins_PutParamInsCod (Ins->InsCod);
HTM_BUTTON_SUBMIT_Begin (Ins->FullName,"BT_LINK",NULL);
}
Lgo_DrawLogo (Hie_Lvl_INS,Ins->InsCod,Ins->ShrtName,
Lgo_DrawLogo (HieLvl_INS,Ins->InsCod,Ins->ShrtName,
Rec_INSTITUTION_LOGO_SIZE,NULL,true);
if (PutFormLinks)
{
@ -2957,7 +2958,7 @@ static void Rec_ShowRole (struct UsrData *UsrDat,
HTM_SELECT_End ();
break;
case Rec_SHA_OTHER_EXISTING_USR_FORM: // The other user already exists in the platform
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
/***** Set default role *****/
switch (UsrDat->Roles.InCurrentCrs)
@ -3054,7 +3055,7 @@ static void Rec_ShowRole (struct UsrData *UsrDat,
}
break;
case Rec_SHA_OTHER_NEW_USR_FORM: // The user does not exist in platform
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_TCH:

View File

@ -34,6 +34,7 @@
#include "swad_error.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_ID.h"
#include "swad_profile.h"
@ -1194,11 +1195,11 @@ static void Rep_WriteRowCrsData (long CrsCod,Rol_Role_t Role,
/***** Write number of teachers / students in course *****/
if (WriteNumUsrs)
fprintf (Gbl.F.Rep," (%u %s / %u %s)",
Usr_GetCachedNumUsrsInCrss (Hie_Lvl_CRS,Crs.CrsCod,
Usr_GetCachedNumUsrsInCrss (HieLvl_CRS,Crs.CrsCod,
1 << Rol_NET |
1 << Rol_TCH),
Txt_teachers_ABBREVIATION,
Usr_GetCachedNumUsrsInCrss (Hie_Lvl_CRS,Crs.CrsCod,
Usr_GetCachedNumUsrsInCrss (HieLvl_CRS,Crs.CrsCod,
1 << Rol_STD),
Txt_students_ABBREVIATION);
}

View File

@ -29,6 +29,7 @@
#include "swad_database.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_parameter.h"
#include "swad_role.h"
@ -117,24 +118,24 @@ void Rol_SetMyRoles (void)
{
/* Check if I am and administrator of current institution */
ICanBeInsAdm = Usr_CheckIfUsrIsAdm (Gbl.Usrs.Me.UsrDat.UsrCod,
Hie_Lvl_INS,
HieLvl_INS,
Gbl.Hierarchy.Ins.InsCod);
if (Gbl.Hierarchy.Ctr.CtrCod > 0)
{
/* Check if I am and administrator of current center */
ICanBeCtrAdm = Usr_CheckIfUsrIsAdm (Gbl.Usrs.Me.UsrDat.UsrCod,
Hie_Lvl_CTR,
HieLvl_CTR,
Gbl.Hierarchy.Ctr.CtrCod);
if (Gbl.Hierarchy.Deg.DegCod > 0)
/* Check if I am and administrator of current degree */
ICanBeDegAdm = Usr_CheckIfUsrIsAdm (Gbl.Usrs.Me.UsrDat.UsrCod,
Hie_Lvl_DEG,
HieLvl_DEG,
Gbl.Hierarchy.Deg.DegCod);
}
}
/***** Check if I belong to current course *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
Gbl.Usrs.Me.IBelongToCurrentCrs = Usr_CheckIfUsrBelongsToCurrentCrs (&Gbl.Usrs.Me.UsrDat);
if (Gbl.Usrs.Me.IBelongToCurrentCrs)
@ -182,7 +183,7 @@ void Rol_SetMyRoles (void)
Gbl.Usrs.Me.IBelongToCurrentIns = false;
/***** Build my list of available roles for current course *****/
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS)
if (Gbl.Hierarchy.Level == HieLvl_CRS)
{
if (Gbl.Usrs.Me.IBelongToCurrentCrs)
Gbl.Usrs.Me.Role.Available = (1 << Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs);

View File

@ -72,15 +72,15 @@ void Sco_PutSelectorScope (const char *ParamName,HTM_SubmitOnChange_t SubmitOnCh
extern const char *Txt_Center;
extern const char *Txt_Degree;
extern const char *Txt_Course;
Hie_Lvl_Level_t Scope;
HieLvl_Level_t Scope;
unsigned ScopeUnsigned;
bool WriteScope;
HTM_SELECT_Begin (SubmitOnChange,
"id=\"%s\" name=\"%s\"",ParamName,ParamName);
for (Scope = (Hie_Lvl_Level_t) 0;
Scope <= (Hie_Lvl_Level_t) (Hie_Lvl_NUM_LEVELS - 1);
for (Scope = (HieLvl_Level_t) 0;
Scope <= (HieLvl_Level_t) (HieLvl_NUM_LEVELS - 1);
Scope++)
if ((Gbl.Scope.Allowed & (1 << Scope)))
{
@ -88,27 +88,27 @@ void Sco_PutSelectorScope (const char *ParamName,HTM_SubmitOnChange_t SubmitOnCh
WriteScope = false;
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
WriteScope = true;
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
if (Gbl.Hierarchy.Cty.CtyCod > 0)
WriteScope = true;
break;
case Hie_Lvl_INS:
case HieLvl_INS:
if (Gbl.Hierarchy.Ins.InsCod > 0)
WriteScope = true;
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
if (Gbl.Hierarchy.Ctr.CtrCod > 0)
WriteScope = true;
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
if (Gbl.Hierarchy.Deg.DegCod > 0)
WriteScope = true;
break;
case Hie_Lvl_CRS:
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS)
case HieLvl_CRS:
if (Gbl.Hierarchy.Level == HieLvl_CRS)
WriteScope = true;
break;
default:
@ -122,42 +122,42 @@ void Sco_PutSelectorScope (const char *ParamName,HTM_SubmitOnChange_t SubmitOnCh
ScopeUnsigned = (unsigned) Scope;
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
HTM_OPTION (HTM_Type_UNSIGNED,&ScopeUnsigned,
Gbl.Scope.Current == Scope,false,
"%s: %s",
Txt_System,
Cfg_PLATFORM_SHORT_NAME);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
HTM_OPTION (HTM_Type_UNSIGNED,&ScopeUnsigned,
Gbl.Scope.Current == Scope,false,
"%s: %s",
Txt_Country,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
HTM_OPTION (HTM_Type_UNSIGNED,&ScopeUnsigned,
Gbl.Scope.Current == Scope,false,
"%s: %s",
Txt_Institution,
Gbl.Hierarchy.Ins.ShrtName);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
HTM_OPTION (HTM_Type_UNSIGNED,&ScopeUnsigned,
Gbl.Scope.Current == Scope,false,
"%s: %s",
Txt_Center,
Gbl.Hierarchy.Ctr.ShrtName);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
HTM_OPTION (HTM_Type_UNSIGNED,&ScopeUnsigned,
Gbl.Scope.Current == Scope,false,
"%s: %s",
Txt_Degree,
Gbl.Hierarchy.Deg.ShrtName);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
HTM_OPTION (HTM_Type_UNSIGNED,&ScopeUnsigned,
Gbl.Scope.Current == Scope,false,
"%s: %s",
@ -181,10 +181,10 @@ void Sco_PutSelectorScope (const char *ParamName,HTM_SubmitOnChange_t SubmitOnCh
void Sco_PutParamCurrentScope (void *Scope)
{
if (Scope)
Sco_PutParamScope ("ScopeUsr",*((Hie_Lvl_Level_t *) Scope));
Sco_PutParamScope ("ScopeUsr",*((HieLvl_Level_t *) Scope));
}
void Sco_PutParamScope (const char *ParamName,Hie_Lvl_Level_t Scope)
void Sco_PutParamScope (const char *ParamName,HieLvl_Level_t Scope)
{
Par_PutHiddenParamUnsigned (NULL,ParamName,(unsigned) Scope);
}
@ -196,11 +196,11 @@ void Sco_PutParamScope (const char *ParamName,Hie_Lvl_Level_t Scope)
void Sco_GetScope (const char *ParamName)
{
/***** Get parameter with scope *****/
Gbl.Scope.Current = (Hie_Lvl_Level_t)
Gbl.Scope.Current = (HieLvl_Level_t)
Par_GetParToUnsignedLong (ParamName,
0,
Hie_Lvl_NUM_LEVELS - 1,
(unsigned long) Hie_Lvl_UNK);
HieLvl_NUM_LEVELS - 1,
(unsigned long) HieLvl_UNK);
/***** Adjust scope avoiding impossible or forbidden scopes *****/
Sco_AdjustScope ();
@ -213,28 +213,28 @@ void Sco_GetScope (const char *ParamName)
void Sco_AdjustScope (void)
{
/***** Is scope is unknow, use default scope *****/
if (Gbl.Scope.Current == Hie_Lvl_UNK)
if (Gbl.Scope.Current == HieLvl_UNK)
Gbl.Scope.Current = Gbl.Scope.Default;
/***** Avoid impossible scopes *****/
if (Gbl.Scope.Current == Hie_Lvl_CRS && Gbl.Hierarchy.Crs.CrsCod <= 0)
Gbl.Scope.Current = Hie_Lvl_DEG;
if (Gbl.Scope.Current == HieLvl_CRS && Gbl.Hierarchy.Crs.CrsCod <= 0)
Gbl.Scope.Current = HieLvl_DEG;
if (Gbl.Scope.Current == Hie_Lvl_DEG && Gbl.Hierarchy.Deg.DegCod <= 0)
Gbl.Scope.Current = Hie_Lvl_CTR;
if (Gbl.Scope.Current == HieLvl_DEG && Gbl.Hierarchy.Deg.DegCod <= 0)
Gbl.Scope.Current = HieLvl_CTR;
if (Gbl.Scope.Current == Hie_Lvl_CTR && Gbl.Hierarchy.Ctr.CtrCod <= 0)
Gbl.Scope.Current = Hie_Lvl_INS;
if (Gbl.Scope.Current == HieLvl_CTR && Gbl.Hierarchy.Ctr.CtrCod <= 0)
Gbl.Scope.Current = HieLvl_INS;
if (Gbl.Scope.Current == Hie_Lvl_INS && Gbl.Hierarchy.Ins.InsCod <= 0)
Gbl.Scope.Current = Hie_Lvl_CTY;
if (Gbl.Scope.Current == HieLvl_INS && Gbl.Hierarchy.Ins.InsCod <= 0)
Gbl.Scope.Current = HieLvl_CTY;
if (Gbl.Scope.Current == Hie_Lvl_CTY && Gbl.Hierarchy.Cty.CtyCod <= 0)
Gbl.Scope.Current = Hie_Lvl_SYS;
if (Gbl.Scope.Current == HieLvl_CTY && Gbl.Hierarchy.Cty.CtyCod <= 0)
Gbl.Scope.Current = HieLvl_SYS;
/***** Avoid forbidden scopes *****/
if ((Gbl.Scope.Allowed & (1 << Gbl.Scope.Current)) == 0)
Gbl.Scope.Current = Hie_Lvl_UNK;
Gbl.Scope.Current = HieLvl_UNK;
}
/*****************************************************************************/
@ -246,24 +246,24 @@ void Sco_SetScopesForListingGuests (void)
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_CTR_ADM:
Gbl.Scope.Allowed = 1 << Hie_Lvl_CTR;
Gbl.Scope.Default = Hie_Lvl_CTR;
Gbl.Scope.Allowed = 1 << HieLvl_CTR;
Gbl.Scope.Default = HieLvl_CTR;
break;
case Rol_INS_ADM:
Gbl.Scope.Allowed = 1 << Hie_Lvl_INS |
1 << Hie_Lvl_CTR;
Gbl.Scope.Default = Hie_Lvl_INS;
Gbl.Scope.Allowed = 1 << HieLvl_INS |
1 << HieLvl_CTR;
Gbl.Scope.Default = HieLvl_INS;
break;
case Rol_SYS_ADM:
Gbl.Scope.Allowed = 1 << Hie_Lvl_SYS |
1 << Hie_Lvl_CTY |
1 << Hie_Lvl_INS |
1 << Hie_Lvl_CTR;
Gbl.Scope.Default = Hie_Lvl_SYS;
Gbl.Scope.Allowed = 1 << HieLvl_SYS |
1 << HieLvl_CTY |
1 << HieLvl_INS |
1 << HieLvl_CTR;
Gbl.Scope.Default = HieLvl_SYS;
break;
default:
Gbl.Scope.Allowed = 0;
Gbl.Scope.Default = Hie_Lvl_UNK;
Gbl.Scope.Default = HieLvl_UNK;
break;
}
}
@ -274,40 +274,40 @@ void Sco_SetScopesForListingGuests (void)
void Sco_SetScopesForListingStudents (void)
{
Gbl.Scope.Default = Hie_Lvl_CRS;
Gbl.Scope.Default = HieLvl_CRS;
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_STD:
case Rol_NET:
case Rol_TCH:
Gbl.Scope.Allowed = 1 << Hie_Lvl_CRS;
Gbl.Scope.Allowed = 1 << HieLvl_CRS;
break;
case Rol_DEG_ADM:
Gbl.Scope.Allowed = 1 << Hie_Lvl_DEG |
1 << Hie_Lvl_CRS;
Gbl.Scope.Allowed = 1 << HieLvl_DEG |
1 << HieLvl_CRS;
break;
case Rol_CTR_ADM:
Gbl.Scope.Allowed = 1 << Hie_Lvl_CTR |
1 << Hie_Lvl_DEG |
1 << Hie_Lvl_CRS;
Gbl.Scope.Allowed = 1 << HieLvl_CTR |
1 << HieLvl_DEG |
1 << HieLvl_CRS;
break;
case Rol_INS_ADM:
Gbl.Scope.Allowed = 1 << Hie_Lvl_INS |
1 << Hie_Lvl_CTR |
1 << Hie_Lvl_DEG |
1 << Hie_Lvl_CRS;
Gbl.Scope.Allowed = 1 << HieLvl_INS |
1 << HieLvl_CTR |
1 << HieLvl_DEG |
1 << HieLvl_CRS;
break;
case Rol_SYS_ADM:
Gbl.Scope.Allowed = 1 << Hie_Lvl_SYS |
1 << Hie_Lvl_CTY |
1 << Hie_Lvl_INS |
1 << Hie_Lvl_CTR |
1 << Hie_Lvl_DEG |
1 << Hie_Lvl_CRS;
Gbl.Scope.Allowed = 1 << HieLvl_SYS |
1 << HieLvl_CTY |
1 << HieLvl_INS |
1 << HieLvl_CTR |
1 << HieLvl_DEG |
1 << HieLvl_CRS;
break;
default:
Gbl.Scope.Allowed = 0;
Gbl.Scope.Default = Hie_Lvl_UNK;
Gbl.Scope.Default = HieLvl_UNK;
break;
}
}
@ -316,53 +316,53 @@ void Sco_SetScopesForListingStudents (void)
/*********************** Get scope from unsigned string **********************/
/*****************************************************************************/
Hie_Lvl_Level_t Sco_GetScopeFromUnsignedStr (const char *UnsignedStr)
HieLvl_Level_t Sco_GetScopeFromUnsignedStr (const char *UnsignedStr)
{
unsigned UnsignedNum;
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum < Hie_Lvl_NUM_LEVELS)
return (Hie_Lvl_Level_t) UnsignedNum;
if (UnsignedNum < HieLvl_NUM_LEVELS)
return (HieLvl_Level_t) UnsignedNum;
return Hie_Lvl_UNK;
return HieLvl_UNK;
}
/*****************************************************************************/
/*********************** Get scope from database string **********************/
/*****************************************************************************/
Hie_Lvl_Level_t Sco_GetScopeFromDBStr (const char *ScopeDBStr)
HieLvl_Level_t Sco_GetScopeFromDBStr (const char *ScopeDBStr)
{
Hie_Lvl_Level_t Scope;
HieLvl_Level_t Scope;
for (Scope = (Hie_Lvl_Level_t) 0;
Scope <= (Hie_Lvl_Level_t) (Hie_Lvl_NUM_LEVELS - 1);
for (Scope = (HieLvl_Level_t) 0;
Scope <= (HieLvl_Level_t) (HieLvl_NUM_LEVELS - 1);
Scope++)
if (!strcmp (Sco_GetDBStrFromScope (Scope),ScopeDBStr))
return Scope;
return Hie_Lvl_UNK;
return HieLvl_UNK;
}
/*****************************************************************************/
/*********************** Get scope from database string **********************/
/*****************************************************************************/
const char *Sco_GetDBStrFromScope (Hie_Lvl_Level_t Scope)
const char *Sco_GetDBStrFromScope (HieLvl_Level_t Scope)
{
static const char *Sco_ScopeDB[Hie_Lvl_NUM_LEVELS] =
static const char *Sco_ScopeDB[HieLvl_NUM_LEVELS] =
{
[Hie_Lvl_UNK] = "Unk",
[Hie_Lvl_SYS] = "Sys",
[Hie_Lvl_CTY] = "Cty",
[Hie_Lvl_INS] = "Ins",
[Hie_Lvl_CTR] = "Ctr",
[Hie_Lvl_DEG] = "Deg",
[Hie_Lvl_CRS] = "Crs",
[HieLvl_UNK] = "Unk",
[HieLvl_SYS] = "Sys",
[HieLvl_CTY] = "Cty",
[HieLvl_INS] = "Ins",
[HieLvl_CTR] = "Ctr",
[HieLvl_DEG] = "Deg",
[HieLvl_CRS] = "Crs",
};
if (Scope >= Hie_Lvl_NUM_LEVELS)
Scope = Hie_Lvl_UNK;
if (Scope >= HieLvl_NUM_LEVELS)
Scope = HieLvl_UNK;
return Sco_ScopeDB[Scope];
}

View File

@ -46,15 +46,15 @@
void Sco_PutSelectorScope (const char *ParamName,HTM_SubmitOnChange_t SubmitOnChange);
void Sco_PutParamCurrentScope (void *Scope);
void Sco_PutParamScope (const char *ParamName,Hie_Lvl_Level_t Scope);
void Sco_PutParamScope (const char *ParamName,HieLvl_Level_t Scope);
void Sco_GetScope (const char *ParamName);
void Sco_AdjustScope (void);
void Sco_SetScopesForListingGuests (void);
void Sco_SetScopesForListingStudents (void);
Hie_Lvl_Level_t Sco_GetScopeFromUnsignedStr (const char *UnsignedStr);
Hie_Lvl_Level_t Sco_GetScopeFromDBStr (const char *ScopeDBStr);
const char *Sco_GetDBStrFromScope (Hie_Lvl_Level_t Scope);
HieLvl_Level_t Sco_GetScopeFromUnsignedStr (const char *UnsignedStr);
HieLvl_Level_t Sco_GetScopeFromDBStr (const char *ScopeDBStr);
const char *Sco_GetDBStrFromScope (HieLvl_Level_t Scope);
#endif

View File

@ -31,6 +31,7 @@
#include "swad_database.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_layout.h"
#include "swad_parameter.h"
@ -64,7 +65,7 @@ extern struct Globals Gbl;
/***************************** Private prototypes ****************************/
/*****************************************************************************/
static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,Hie_Lvl_Level_t DefaultScope);
static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,HieLvl_Level_t DefaultScope);
static bool Sch_CheckIfIHavePermissionToSearch (Sch_WhatToSearch_t WhatToSearch);
static void Sch_GetParamSearch (void);
static void Sch_SearchInDB (void);
@ -88,14 +89,14 @@ void Sch_ReqSysSearch (void)
{
/***** Search courses, teachers, documents... *****/
Sch_GetParamWhatToSearch ();
Sch_PutFormToSearchWithWhatToSearchAndScope (ActSch,Hie_Lvl_SYS);
Sch_PutFormToSearchWithWhatToSearchAndScope (ActSch,HieLvl_SYS);
}
/*****************************************************************************/
/****************** Put a form to search, including scope ********************/
/*****************************************************************************/
static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,Hie_Lvl_Level_t DefaultScope)
static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,HieLvl_Level_t DefaultScope)
{
extern const char *Hlp_START_Search;
extern const char *The_ClassFormInBox[The_NUM_THEMES];
@ -147,12 +148,12 @@ static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,Hie
HTM_DIV_Begin ("class=\"CM\"");
HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
HTM_TxtColonNBSP (Txt_Scope);
Gbl.Scope.Allowed = 1 << Hie_Lvl_SYS |
1 << Hie_Lvl_CTY |
1 << Hie_Lvl_INS |
1 << Hie_Lvl_CTR |
1 << Hie_Lvl_DEG |
1 << Hie_Lvl_CRS;
Gbl.Scope.Allowed = 1 << HieLvl_SYS |
1 << HieLvl_CTY |
1 << HieLvl_INS |
1 << HieLvl_CTR |
1 << HieLvl_DEG |
1 << HieLvl_CRS;
Gbl.Scope.Default = DefaultScope;
Sco_GetScope ("ScopeSch");
Sco_PutSelectorScope ("ScopeSch",HTM_DONT_SUBMIT_ON_CHANGE);
@ -231,7 +232,7 @@ void Sch_PutFormToSearchInPageTopHeading (void)
/***** Put form *****/
Frm_BeginForm (ActSch);
Sco_PutParamScope ("ScopeSch",Hie_Lvl_SYS);
Sco_PutParamScope ("ScopeSch",HieLvl_SYS);
Sch_PutInputStringToSearch ("head_search_text");
Sch_PutMagnifyingGlassButton ("search-white.svg");
Frm_EndForm ();
@ -323,7 +324,7 @@ void Sch_SysSearch (void)
if (Gbl.Search.Str[0])
{
/***** Show search form again *****/
Sch_PutFormToSearchWithWhatToSearchAndScope (ActSch,Hie_Lvl_SYS);
Sch_PutFormToSearchWithWhatToSearchAndScope (ActSch,HieLvl_SYS);
/***** Show results of search *****/
Sch_SearchInDB ();
@ -348,28 +349,28 @@ static void Sch_SearchInDB (void)
/***** Select courses in all the degrees or in current degree *****/
switch (Gbl.Scope.Current)
{
case Hie_Lvl_UNK:
case HieLvl_UNK:
// Not aplicable
case Hie_Lvl_SYS:
case HieLvl_SYS:
RangeQuery[0] = '\0';
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
sprintf (RangeQuery," AND cty_countrs.CtyCod=%ld",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
sprintf (RangeQuery," AND ins_instits.InsCod=%ld",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
sprintf (RangeQuery," AND ctr_centers.CtrCod=%ld",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
sprintf (RangeQuery," AND deg_degrees.DegCod=%ld",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
sprintf (RangeQuery," AND crs_courses.CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);
break;
@ -451,10 +452,10 @@ static unsigned Sch_SearchCountriesInDB (const char *RangeQuery)
unsigned NumCtys;
/***** Check scope *****/
if (Gbl.Scope.Current != Hie_Lvl_INS &&
Gbl.Scope.Current != Hie_Lvl_CTR &&
Gbl.Scope.Current != Hie_Lvl_DEG &&
Gbl.Scope.Current != Hie_Lvl_CRS)
if (Gbl.Scope.Current != HieLvl_INS &&
Gbl.Scope.Current != HieLvl_CTR &&
Gbl.Scope.Current != HieLvl_DEG &&
Gbl.Scope.Current != HieLvl_CRS)
/***** Check user's permission *****/
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_COUNTRIES))
{
@ -495,9 +496,9 @@ static unsigned Sch_SearchInstitutionsInDB (const char *RangeQuery)
unsigned NumInss;
/***** Check scope *****/
if (Gbl.Scope.Current != Hie_Lvl_CTR &&
Gbl.Scope.Current != Hie_Lvl_DEG &&
Gbl.Scope.Current != Hie_Lvl_CRS)
if (Gbl.Scope.Current != HieLvl_CTR &&
Gbl.Scope.Current != HieLvl_DEG &&
Gbl.Scope.Current != HieLvl_CRS)
/***** Check user's permission *****/
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_INSTITS))
/***** Split institutions string into words *****/
@ -536,8 +537,8 @@ static unsigned Sch_SearchCentersInDB (const char *RangeQuery)
unsigned NumCtrs;
/***** Check scope *****/
if (Gbl.Scope.Current != Hie_Lvl_DEG &&
Gbl.Scope.Current != Hie_Lvl_CRS)
if (Gbl.Scope.Current != HieLvl_DEG &&
Gbl.Scope.Current != HieLvl_CRS)
/***** Check user's permission *****/
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_CENTERS))
/***** Split center string into words *****/
@ -576,7 +577,7 @@ static unsigned Sch_SearchDegreesInDB (const char *RangeQuery)
unsigned NumDegs;
/***** Check scope *****/
if (Gbl.Scope.Current != Hie_Lvl_CRS)
if (Gbl.Scope.Current != HieLvl_CRS)
/***** Check user's permission *****/
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_DEGREES))
/***** Split degree string into words *****/
@ -1372,7 +1373,7 @@ static void Sch_SaveLastSearchIntoSession (void)
void Sch_PutLinkToSearchCoursesParams (__attribute__((unused)) void *Args)
{
Sco_PutParamScope ("ScopeSch",Hie_Lvl_SYS);
Sco_PutParamScope ("ScopeSch",HieLvl_SYS);
Par_PutHiddenParamUnsigned (NULL,"WhatToSearch",(unsigned) Sch_SEARCH_COURSES);
}

View File

@ -38,6 +38,7 @@
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_ID.h"
#include "swad_log.h"
@ -274,9 +275,9 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
Grp_GetParCodsSeveralGrpsToShowUsrs ();
/***** Get and order the lists of users of this course *****/
Usr_GetListUsrs (Hie_Lvl_CRS,Rol_STD);
Usr_GetListUsrs (Hie_Lvl_CRS,Rol_NET);
Usr_GetListUsrs (Hie_Lvl_CRS,Rol_TCH);
Usr_GetListUsrs (HieLvl_CRS,Rol_STD);
Usr_GetListUsrs (HieLvl_CRS,Rol_NET);
Usr_GetListUsrs (HieLvl_CRS,Rol_TCH);
NumTotalUsrs = Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs +
Gbl.Usrs.LstUsrs[Rol_NET].NumUsrs +
Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs;
@ -543,13 +544,13 @@ static void Sta_PutFormGblHits (struct Sta_Stats *Stats)
/* Data */
HTM_TD_Begin ("class=\"LT\"");
Gbl.Scope.Allowed = 1 << Hie_Lvl_SYS |
1 << Hie_Lvl_CTY |
1 << Hie_Lvl_INS |
1 << Hie_Lvl_CTR |
1 << Hie_Lvl_DEG |
1 << Hie_Lvl_CRS;
Gbl.Scope.Default = Hie_Lvl_SYS;
Gbl.Scope.Allowed = 1 << HieLvl_SYS |
1 << HieLvl_CTY |
1 << HieLvl_INS |
1 << HieLvl_CTR |
1 << HieLvl_DEG |
1 << HieLvl_CRS;
Gbl.Scope.Default = HieLvl_SYS;
Sco_GetScope ("ScopeSta");
Sco_PutSelectorScope ("ScopeSta",HTM_DONT_SUBMIT_ON_CHANGE);
HTM_TD_End ();
@ -612,7 +613,7 @@ void Sta_PutLinkToCourseHits (void)
{
extern const char *Txt_Visits_to_course;
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_NET:
@ -828,13 +829,13 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
(unsigned long) Sta_ROLE_DEFAULT);
/***** Get users range for access statistics *****/
Gbl.Scope.Allowed = 1 << Hie_Lvl_SYS |
1 << Hie_Lvl_CTY |
1 << Hie_Lvl_INS |
1 << Hie_Lvl_CTR |
1 << Hie_Lvl_DEG |
1 << Hie_Lvl_CRS;
Gbl.Scope.Default = Hie_Lvl_SYS;
Gbl.Scope.Allowed = 1 << HieLvl_SYS |
1 << HieLvl_CTY |
1 << HieLvl_INS |
1 << HieLvl_CTR |
1 << HieLvl_DEG |
1 << HieLvl_CRS;
Gbl.Scope.Default = HieLvl_SYS;
Sco_GetScope ("ScopeSta");
/***** Show form again *****/
@ -900,16 +901,16 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
/***** Check if range of dates is forbidden for me *****/
NumDays = Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,&Gbl.DateRange.DateEnd.Date);
ICanQueryWholeRange = (Gbl.Usrs.Me.Role.Logged >= Rol_TCH && GlobalOrCourse == Sta_SHOW_COURSE_ACCESSES) ||
(Gbl.Usrs.Me.Role.Logged == Rol_TCH && Gbl.Scope.Current == Hie_Lvl_CRS) ||
(Gbl.Usrs.Me.Role.Logged == Rol_DEG_ADM && (Gbl.Scope.Current == Hie_Lvl_DEG ||
Gbl.Scope.Current == Hie_Lvl_CRS)) ||
(Gbl.Usrs.Me.Role.Logged == Rol_CTR_ADM && (Gbl.Scope.Current == Hie_Lvl_CTR ||
Gbl.Scope.Current == Hie_Lvl_DEG ||
Gbl.Scope.Current == Hie_Lvl_CRS)) ||
(Gbl.Usrs.Me.Role.Logged == Rol_INS_ADM && (Gbl.Scope.Current == Hie_Lvl_INS ||
Gbl.Scope.Current == Hie_Lvl_CTR ||
Gbl.Scope.Current == Hie_Lvl_DEG ||
Gbl.Scope.Current == Hie_Lvl_CRS)) ||
(Gbl.Usrs.Me.Role.Logged == Rol_TCH && Gbl.Scope.Current == HieLvl_CRS) ||
(Gbl.Usrs.Me.Role.Logged == Rol_DEG_ADM && (Gbl.Scope.Current == HieLvl_DEG ||
Gbl.Scope.Current == HieLvl_CRS)) ||
(Gbl.Usrs.Me.Role.Logged == Rol_CTR_ADM && (Gbl.Scope.Current == HieLvl_CTR ||
Gbl.Scope.Current == HieLvl_DEG ||
Gbl.Scope.Current == HieLvl_CRS)) ||
(Gbl.Usrs.Me.Role.Logged == Rol_INS_ADM && (Gbl.Scope.Current == HieLvl_INS ||
Gbl.Scope.Current == HieLvl_CTR ||
Gbl.Scope.Current == HieLvl_DEG ||
Gbl.Scope.Current == HieLvl_CRS)) ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM;
if (!ICanQueryWholeRange && NumDays > Cfg_DAYS_IN_RECENT_LOG)
{
@ -1134,10 +1135,10 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
/* Scope */
switch (Gbl.Scope.Current)
{
case Hie_Lvl_UNK:
case Hie_Lvl_SYS:
case HieLvl_UNK:
case HieLvl_SYS:
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
if (Gbl.Hierarchy.Cty.CtyCod > 0)
{
sprintf (QueryAux," AND %s.CtyCod=%ld",
@ -1145,7 +1146,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
Str_Concat (Query,QueryAux,Sta_MAX_BYTES_QUERY_ACCESS);
}
break;
case Hie_Lvl_INS:
case HieLvl_INS:
if (Gbl.Hierarchy.Ins.InsCod > 0)
{
sprintf (QueryAux," AND %s.InsCod=%ld",
@ -1153,7 +1154,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
Str_Concat (Query,QueryAux,Sta_MAX_BYTES_QUERY_ACCESS);
}
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
if (Gbl.Hierarchy.Ctr.CtrCod > 0)
{
sprintf (QueryAux," AND %s.CtrCod=%ld",
@ -1161,7 +1162,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
Str_Concat (Query,QueryAux,Sta_MAX_BYTES_QUERY_ACCESS);
}
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
if (Gbl.Hierarchy.Deg.DegCod > 0)
{
sprintf (QueryAux," AND %s.DegCod=%ld",
@ -1169,8 +1170,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
Str_Concat (Query,QueryAux,Sta_MAX_BYTES_QUERY_ACCESS);
}
break;
case Hie_Lvl_CRS:
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS)
case HieLvl_CRS:
if (Gbl.Hierarchy.Level == HieLvl_CRS)
{
sprintf (QueryAux," AND %s.CrsCod=%ld",
LogTable,Gbl.Hierarchy.Crs.CrsCod);

View File

@ -650,25 +650,25 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
HTM_TxtColonNBSP (Txt_Scope);
switch (Svy.Scope)
{
case Hie_Lvl_UNK: // Unknown
case HieLvl_UNK: // Unknown
Err_WrongScopeExit ();
break;
case Hie_Lvl_SYS: // System
case HieLvl_SYS: // System
HTM_Txt (Cfg_PLATFORM_SHORT_NAME);
break;
case Hie_Lvl_CTY: // Country
case HieLvl_CTY: // Country
HTM_TxtF ("%s&nbsp;%s",Txt_Country,Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]);
break;
case Hie_Lvl_INS: // Institution
case HieLvl_INS: // Institution
HTM_TxtF ("%s&nbsp;%s",Txt_Institution,Gbl.Hierarchy.Ins.ShrtName);
break;
case Hie_Lvl_CTR: // Center
case HieLvl_CTR: // Center
HTM_TxtF ("%s&nbsp;%s",Txt_Center,Gbl.Hierarchy.Ctr.ShrtName);
break;
case Hie_Lvl_DEG: // Degree
case HieLvl_DEG: // Degree
HTM_TxtF ("%s&nbsp;%s",Txt_Degree,Gbl.Hierarchy.Deg.ShrtName);
break;
case Hie_Lvl_CRS: // Course
case HieLvl_CRS: // Course
HTM_TxtF ("%s&nbsp;%s",Txt_Course,Gbl.Hierarchy.Crs.ShrtName);
break;
}
@ -687,7 +687,7 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
HTM_DIV_End ();
/* Groups whose users can answer this survey */
if (Svy.Scope == Hie_Lvl_CRS)
if (Svy.Scope == HieLvl_CRS)
if (Gbl.Crs.Grps.NumGrps)
Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (&Svy);
@ -717,7 +717,7 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
/***** Mark possible notification as seen *****/
if (Svy.Scope == Hie_Lvl_CRS) // Only course surveys are notified
if (Svy.Scope == HieLvl_CRS) // Only course surveys are notified
Ntf_MarkNotifAsSeen (Ntf_EVENT_SURVEY,
SvyCod,Svy.Cod,
Gbl.Usrs.Me.UsrDat.UsrCod);
@ -931,7 +931,7 @@ static void Svy_PutParams (void *Surveys)
static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
{
char *SubQuery[Hie_Lvl_NUM_LEVELS];
char *SubQuery[HieLvl_NUM_LEVELS];
static const char *OrderBySubQuery[Dat_NUM_START_END_TIME] =
{
[Dat_START_TIME] = "StartTime DESC,EndTime DESC,Title DESC",
@ -942,8 +942,8 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
unsigned NumSvy;
unsigned ScopesAllowed = 0;
unsigned HiddenAllowed = 0;
long Cods[Hie_Lvl_NUM_LEVELS];
Hie_Lvl_Level_t Scope;
long Cods[HieLvl_NUM_LEVELS];
HieLvl_Level_t Scope;
bool SubQueryFilled = false;
/***** Free list of surveys *****/
@ -954,16 +954,16 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
Svy_SetAllowedAndHiddenScopes (&ScopesAllowed,&HiddenAllowed);
/***** Get list of surveys from database *****/
Cods[Hie_Lvl_SYS] = -1L; // System
Cods[Hie_Lvl_CTY] = Gbl.Hierarchy.Cty.CtyCod; // Country
Cods[Hie_Lvl_INS] = Gbl.Hierarchy.Ins.InsCod; // Institution
Cods[Hie_Lvl_CTR] = Gbl.Hierarchy.Ctr.CtrCod; // Center
Cods[Hie_Lvl_DEG] = Gbl.Hierarchy.Deg.DegCod; // Degree
Cods[Hie_Lvl_CRS] = Gbl.Hierarchy.Crs.CrsCod; // Course
Cods[HieLvl_SYS] = -1L; // System
Cods[HieLvl_CTY] = Gbl.Hierarchy.Cty.CtyCod; // Country
Cods[HieLvl_INS] = Gbl.Hierarchy.Ins.InsCod; // Institution
Cods[HieLvl_CTR] = Gbl.Hierarchy.Ctr.CtrCod; // Center
Cods[HieLvl_DEG] = Gbl.Hierarchy.Deg.DegCod; // Degree
Cods[HieLvl_CRS] = Gbl.Hierarchy.Crs.CrsCod; // Course
/* Fill subqueries for system, country, institution, center and degree */
for (Scope = Hie_Lvl_SYS;
Scope <= Hie_Lvl_DEG;
for (Scope = HieLvl_SYS;
Scope <= HieLvl_DEG;
Scope++)
if (ScopesAllowed & 1 << Scope)
{
@ -983,11 +983,11 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
}
/* Fill subquery for course */
if (ScopesAllowed & 1 << Hie_Lvl_CRS)
if (ScopesAllowed & 1 << HieLvl_CRS)
{
if (Gbl.Crs.Grps.WhichGrps == Grp_MY_GROUPS)
{
if (asprintf (&SubQuery[Hie_Lvl_CRS],"%s("
if (asprintf (&SubQuery[HieLvl_CRS],"%s("
"Scope='%s'"
" AND Cod=%ld%s"
" AND "
@ -1004,19 +1004,19 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
")",
SubQueryFilled ? " OR " :
"",
Sco_GetDBStrFromScope (Hie_Lvl_CRS),Cods[Hie_Lvl_CRS],
(HiddenAllowed & 1 << Hie_Lvl_CRS) ? "" :
Sco_GetDBStrFromScope (HieLvl_CRS),Cods[HieLvl_CRS],
(HiddenAllowed & 1 << HieLvl_CRS) ? "" :
" AND Hidden='N'",
Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
Err_NotEnoughMemoryExit ();
}
else // Gbl.Crs.Grps.WhichGrps == Grp_ALL_GROUPS
{
if (asprintf (&SubQuery[Hie_Lvl_CRS],"%s(Scope='%s' AND Cod=%ld%s)",
if (asprintf (&SubQuery[HieLvl_CRS],"%s(Scope='%s' AND Cod=%ld%s)",
SubQueryFilled ? " OR " :
"",
Sco_GetDBStrFromScope (Hie_Lvl_CRS),Cods[Hie_Lvl_CRS],
(HiddenAllowed & 1 << Hie_Lvl_CRS) ? "" :
Sco_GetDBStrFromScope (HieLvl_CRS),Cods[HieLvl_CRS],
(HiddenAllowed & 1 << HieLvl_CRS) ? "" :
" AND Hidden='N'") < 0)
Err_NotEnoughMemoryExit ();
}
@ -1024,7 +1024,7 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
}
else
{
if (asprintf (&SubQuery[Hie_Lvl_CRS],"%s","") < 0)
if (asprintf (&SubQuery[HieLvl_CRS],"%s","") < 0)
Err_NotEnoughMemoryExit ();
}
@ -1035,12 +1035,12 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
" FROM svy_surveys"
" WHERE %s%s%s%s%s%s"
" ORDER BY %s",
SubQuery[Hie_Lvl_SYS],
SubQuery[Hie_Lvl_CTY],
SubQuery[Hie_Lvl_INS],
SubQuery[Hie_Lvl_CTR],
SubQuery[Hie_Lvl_DEG],
SubQuery[Hie_Lvl_CRS],
SubQuery[HieLvl_SYS],
SubQuery[HieLvl_CTY],
SubQuery[HieLvl_INS],
SubQuery[HieLvl_CTR],
SubQuery[HieLvl_DEG],
SubQuery[HieLvl_CRS],
OrderBySubQuery[Surveys->SelectedOrder]);
else
{
@ -1049,8 +1049,8 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
}
/* Free allocated memory for subqueries */
for (Scope = Hie_Lvl_SYS;
Scope <= Hie_Lvl_CRS;
for (Scope = HieLvl_SYS;
Scope <= HieLvl_CRS;
Scope++)
free (SubQuery[Scope]);
@ -1094,45 +1094,45 @@ static void Svy_SetAllowedAndHiddenScopes (unsigned *ScopesAllowed,
*HiddenAllowed = 0;
break;
case Rol_GST: // User not belonging to any course *******************
*ScopesAllowed = 1 << Hie_Lvl_SYS;
*ScopesAllowed = 1 << HieLvl_SYS;
*HiddenAllowed = 0;
break;
case Rol_USR: // Student or teacher in other courses...
// ...but not belonging to the current course *********
*ScopesAllowed = 1 << Hie_Lvl_SYS;
*ScopesAllowed = 1 << HieLvl_SYS;
*HiddenAllowed = 0;
if (Usr_CheckIfIBelongToCty (Gbl.Hierarchy.Cty.CtyCod))
{
*ScopesAllowed |= 1 << Hie_Lvl_CTY;
*ScopesAllowed |= 1 << HieLvl_CTY;
if (Usr_CheckIfIBelongToIns (Gbl.Hierarchy.Ins.InsCod))
{
*ScopesAllowed |= 1 << Hie_Lvl_INS;
*ScopesAllowed |= 1 << HieLvl_INS;
if (Usr_CheckIfIBelongToCtr (Gbl.Hierarchy.Ctr.CtrCod))
{
*ScopesAllowed |= 1 << Hie_Lvl_CTR;
*ScopesAllowed |= 1 << HieLvl_CTR;
if (Usr_CheckIfIBelongToDeg (Gbl.Hierarchy.Deg.DegCod))
*ScopesAllowed |= 1 << Hie_Lvl_DEG;
*ScopesAllowed |= 1 << HieLvl_DEG;
}
}
}
break;
case Rol_STD: // Student in current course **************************
*ScopesAllowed = 1 << Hie_Lvl_SYS;
*ScopesAllowed = 1 << HieLvl_SYS;
*HiddenAllowed = 0;
if (Usr_CheckIfIBelongToCty (Gbl.Hierarchy.Cty.CtyCod))
{
*ScopesAllowed |= 1 << Hie_Lvl_CTY;
*ScopesAllowed |= 1 << HieLvl_CTY;
if (Usr_CheckIfIBelongToIns (Gbl.Hierarchy.Ins.InsCod))
{
*ScopesAllowed |= 1 << Hie_Lvl_INS;
*ScopesAllowed |= 1 << HieLvl_INS;
if (Usr_CheckIfIBelongToCtr (Gbl.Hierarchy.Ctr.CtrCod))
{
*ScopesAllowed |= 1 << Hie_Lvl_CTR;
*ScopesAllowed |= 1 << HieLvl_CTR;
if (Usr_CheckIfIBelongToDeg (Gbl.Hierarchy.Deg.DegCod))
{
*ScopesAllowed |= 1 << Hie_Lvl_DEG;
*ScopesAllowed |= 1 << HieLvl_DEG;
if (Gbl.Usrs.Me.IBelongToCurrentCrs)
*ScopesAllowed |= 1 << Hie_Lvl_CRS;
*ScopesAllowed |= 1 << HieLvl_CRS;
}
}
}
@ -1140,24 +1140,24 @@ static void Svy_SetAllowedAndHiddenScopes (unsigned *ScopesAllowed,
break;
case Rol_NET: // Non-editing teacher in current course **************
case Rol_TCH: // Teacher in current course **************************
*ScopesAllowed = 1 << Hie_Lvl_SYS;
*ScopesAllowed = 1 << HieLvl_SYS;
*HiddenAllowed = 0;
if (Usr_CheckIfIBelongToCty (Gbl.Hierarchy.Cty.CtyCod))
{
*ScopesAllowed |= 1 << Hie_Lvl_CTY;
*ScopesAllowed |= 1 << HieLvl_CTY;
if (Usr_CheckIfIBelongToIns (Gbl.Hierarchy.Ins.InsCod))
{
*ScopesAllowed |= 1 << Hie_Lvl_INS;
*ScopesAllowed |= 1 << HieLvl_INS;
if (Usr_CheckIfIBelongToCtr (Gbl.Hierarchy.Ctr.CtrCod))
{
*ScopesAllowed |= 1 << Hie_Lvl_CTR;
*ScopesAllowed |= 1 << HieLvl_CTR;
if (Usr_CheckIfIBelongToDeg (Gbl.Hierarchy.Deg.DegCod))
{
*ScopesAllowed |= 1 << Hie_Lvl_DEG;
*ScopesAllowed |= 1 << HieLvl_DEG;
if (Gbl.Usrs.Me.IBelongToCurrentCrs)
{
*ScopesAllowed |= 1 << Hie_Lvl_CRS;
*HiddenAllowed |= 1 << Hie_Lvl_CRS; // A non-editing teacher or teacher can view hidden course surveys
*ScopesAllowed |= 1 << HieLvl_CRS;
*HiddenAllowed |= 1 << HieLvl_CRS; // A non-editing teacher or teacher can view hidden course surveys
}
}
}
@ -1165,79 +1165,79 @@ static void Svy_SetAllowedAndHiddenScopes (unsigned *ScopesAllowed,
}
break;
case Rol_DEG_ADM: // Degree administrator *******************************
*ScopesAllowed = 1 << Hie_Lvl_SYS;
*ScopesAllowed = 1 << HieLvl_SYS;
*HiddenAllowed = 0;
if (Gbl.Hierarchy.Cty.CtyCod > 0) // Country selected
{
*ScopesAllowed |= 1 << Hie_Lvl_CTY;
*ScopesAllowed |= 1 << HieLvl_CTY;
if (Gbl.Hierarchy.Ins.InsCod > 0) // Institution selected
{
*ScopesAllowed |= 1 << Hie_Lvl_INS;
*ScopesAllowed |= 1 << HieLvl_INS;
if (Gbl.Hierarchy.Ctr.CtrCod > 0) // Center selected
{
*ScopesAllowed |= 1 << Hie_Lvl_CTR;
*ScopesAllowed |= 1 << HieLvl_CTR;
if (Gbl.Hierarchy.Deg.DegCod > 0) // Degree selected
{
*ScopesAllowed |= 1 << Hie_Lvl_DEG;
*HiddenAllowed |= 1 << Hie_Lvl_DEG; // A degree admin can view hidden degree surveys
*ScopesAllowed |= 1 << HieLvl_DEG;
*HiddenAllowed |= 1 << HieLvl_DEG; // A degree admin can view hidden degree surveys
}
}
}
}
break;
case Rol_CTR_ADM: // Center administrator *******************************
*ScopesAllowed = 1 << Hie_Lvl_SYS;
*ScopesAllowed = 1 << HieLvl_SYS;
*HiddenAllowed = 0;
if (Gbl.Hierarchy.Cty.CtyCod > 0) // Country selected
{
*ScopesAllowed |= 1 << Hie_Lvl_CTY;
*ScopesAllowed |= 1 << HieLvl_CTY;
if (Gbl.Hierarchy.Ins.InsCod > 0) // Institution selected
{
*ScopesAllowed |= 1 << Hie_Lvl_INS;
*ScopesAllowed |= 1 << HieLvl_INS;
if (Gbl.Hierarchy.Ctr.CtrCod > 0) // Center selected
{
*ScopesAllowed |= 1 << Hie_Lvl_CTR;
*HiddenAllowed |= 1 << Hie_Lvl_CTR; // A center admin can view hidden center surveys
*ScopesAllowed |= 1 << HieLvl_CTR;
*HiddenAllowed |= 1 << HieLvl_CTR; // A center admin can view hidden center surveys
}
}
}
break;
case Rol_INS_ADM: // Institution administrator **************************
*ScopesAllowed = 1 << Hie_Lvl_SYS;
*ScopesAllowed = 1 << HieLvl_SYS;
*HiddenAllowed = 0;
if (Gbl.Hierarchy.Cty.CtyCod > 0) // Country selected
{
*ScopesAllowed |= 1 << Hie_Lvl_CTY;
*ScopesAllowed |= 1 << HieLvl_CTY;
if (Gbl.Hierarchy.Ins.InsCod > 0) // Institution selected
{
*ScopesAllowed |= 1 << Hie_Lvl_INS;
*HiddenAllowed |= 1 << Hie_Lvl_INS; // An institution admin can view hidden institution surveys
*ScopesAllowed |= 1 << HieLvl_INS;
*HiddenAllowed |= 1 << HieLvl_INS; // An institution admin can view hidden institution surveys
}
}
break;
case Rol_SYS_ADM: // System administrator (superuser) *******************
*ScopesAllowed = 1 << Hie_Lvl_SYS;
*HiddenAllowed = 1 << Hie_Lvl_SYS; // A system admin can view hidden system surveys
*ScopesAllowed = 1 << HieLvl_SYS;
*HiddenAllowed = 1 << HieLvl_SYS; // A system admin can view hidden system surveys
if (Gbl.Hierarchy.Cty.CtyCod > 0) // Country selected
{
*ScopesAllowed |= 1 << Hie_Lvl_CTY;
*HiddenAllowed |= 1 << Hie_Lvl_CTY; // A system admin can view hidden country surveys
*ScopesAllowed |= 1 << HieLvl_CTY;
*HiddenAllowed |= 1 << HieLvl_CTY; // A system admin can view hidden country surveys
if (Gbl.Hierarchy.Ins.InsCod > 0) // Institution selected
{
*ScopesAllowed |= 1 << Hie_Lvl_INS;
*HiddenAllowed |= 1 << Hie_Lvl_INS; // A system admin can view hidden institution surveys
*ScopesAllowed |= 1 << HieLvl_INS;
*HiddenAllowed |= 1 << HieLvl_INS; // A system admin can view hidden institution surveys
if (Gbl.Hierarchy.Ctr.CtrCod > 0) // Center selected
{
*ScopesAllowed |= 1 << Hie_Lvl_CTR;
*HiddenAllowed |= 1 << Hie_Lvl_CTR; // A system admin can view hidden center surveys
*ScopesAllowed |= 1 << HieLvl_CTR;
*HiddenAllowed |= 1 << HieLvl_CTR; // A system admin can view hidden center surveys
if (Gbl.Hierarchy.Deg.DegCod > 0) // Degree selected
{
*ScopesAllowed |= 1 << Hie_Lvl_DEG;
*HiddenAllowed |= 1 << Hie_Lvl_DEG; // A system admin can view hidden degree surveys
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
*ScopesAllowed |= 1 << HieLvl_DEG;
*HiddenAllowed |= 1 << HieLvl_DEG; // A system admin can view hidden degree surveys
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
*ScopesAllowed |= 1 << Hie_Lvl_CRS;
*HiddenAllowed |= 1 << Hie_Lvl_CRS; // A system admin can view hidden course surveys
*ScopesAllowed |= 1 << HieLvl_CRS;
*HiddenAllowed |= 1 << HieLvl_CRS; // A system admin can view hidden course surveys
}
}
}
@ -1282,7 +1282,7 @@ void Svy_GetDataOfSurveyByCod (struct Svy_Survey *Svy)
Svy->SvyCod = Str_ConvertStrCodToLongCod (row[0]);
/* Get survey scope (row[1]) */
if ((Svy->Scope = Sco_GetScopeFromDBStr (row[1])) == Hie_Lvl_UNK)
if ((Svy->Scope = Sco_GetScopeFromDBStr (row[1])) == HieLvl_UNK)
Err_WrongScopeExit ();
/* Get code of the country, institution, center, degree or course (row[2]) */
@ -1320,25 +1320,25 @@ void Svy_GetDataOfSurveyByCod (struct Svy_Survey *Svy)
/* Do I belong to valid groups to answer this survey? */
switch (Svy->Scope)
{
case Hie_Lvl_UNK: // Unknown
case HieLvl_UNK: // Unknown
Err_WrongScopeExit ();
break;
case Hie_Lvl_SYS: // System
case HieLvl_SYS: // System
Svy->Status.IBelongToScope = Gbl.Usrs.Me.Logged;
break;
case Hie_Lvl_CTY: // Country
case HieLvl_CTY: // Country
Svy->Status.IBelongToScope = Usr_CheckIfIBelongToCty (Svy->Cod);
break;
case Hie_Lvl_INS: // Institution
case HieLvl_INS: // Institution
Svy->Status.IBelongToScope = Usr_CheckIfIBelongToIns (Svy->Cod);
break;
case Hie_Lvl_CTR: // Center
case HieLvl_CTR: // Center
Svy->Status.IBelongToScope = Usr_CheckIfIBelongToCtr (Svy->Cod);
break;
case Hie_Lvl_DEG: // Degree
case HieLvl_DEG: // Degree
Svy->Status.IBelongToScope = Usr_CheckIfIBelongToDeg (Svy->Cod);
break;
case Hie_Lvl_CRS: // Course
case HieLvl_CRS: // Course
Svy->Status.IBelongToScope = Usr_CheckIfIBelongToCrs (Svy->Cod) &&
Svy_CheckIfICanDoThisSurveyBasedOnGrps (Svy->SvyCod);
break;
@ -1360,12 +1360,12 @@ void Svy_GetDataOfSurveyByCod (struct Svy_Survey *Svy)
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_STD:
Svy->Status.ICanViewResults = (Svy->Scope == Hie_Lvl_CRS ||
Svy->Scope == Hie_Lvl_DEG ||
Svy->Scope == Hie_Lvl_CTR ||
Svy->Scope == Hie_Lvl_INS ||
Svy->Scope == Hie_Lvl_CTY ||
Svy->Scope == Hie_Lvl_SYS) &&
Svy->Status.ICanViewResults = (Svy->Scope == HieLvl_CRS ||
Svy->Scope == HieLvl_DEG ||
Svy->Scope == HieLvl_CTR ||
Svy->Scope == HieLvl_INS ||
Svy->Scope == HieLvl_CTY ||
Svy->Scope == HieLvl_SYS) &&
(Svy->NumQsts != 0) &&
Svy->Status.Visible &&
Svy->Status.Open &&
@ -1375,56 +1375,56 @@ void Svy_GetDataOfSurveyByCod (struct Svy_Survey *Svy)
Svy->Status.ICanEdit = false;
break;
case Rol_NET:
Svy->Status.ICanViewResults = (Svy->Scope == Hie_Lvl_CRS ||
Svy->Scope == Hie_Lvl_DEG ||
Svy->Scope == Hie_Lvl_CTR ||
Svy->Scope == Hie_Lvl_INS ||
Svy->Scope == Hie_Lvl_CTY ||
Svy->Scope == Hie_Lvl_SYS) &&
Svy->Status.ICanViewResults = (Svy->Scope == HieLvl_CRS ||
Svy->Scope == HieLvl_DEG ||
Svy->Scope == HieLvl_CTR ||
Svy->Scope == HieLvl_INS ||
Svy->Scope == HieLvl_CTY ||
Svy->Scope == HieLvl_SYS) &&
Svy->NumQsts != 0 &&
!Svy->Status.ICanAnswer;
Svy->Status.ICanEdit = false;
break;
case Rol_TCH:
Svy->Status.ICanViewResults = (Svy->Scope == Hie_Lvl_CRS ||
Svy->Scope == Hie_Lvl_DEG ||
Svy->Scope == Hie_Lvl_CTR ||
Svy->Scope == Hie_Lvl_INS ||
Svy->Scope == Hie_Lvl_CTY ||
Svy->Scope == Hie_Lvl_SYS) &&
Svy->Status.ICanViewResults = (Svy->Scope == HieLvl_CRS ||
Svy->Scope == HieLvl_DEG ||
Svy->Scope == HieLvl_CTR ||
Svy->Scope == HieLvl_INS ||
Svy->Scope == HieLvl_CTY ||
Svy->Scope == HieLvl_SYS) &&
Svy->NumQsts != 0 &&
!Svy->Status.ICanAnswer;
Svy->Status.ICanEdit = Svy->Scope == Hie_Lvl_CRS &&
Svy->Status.ICanEdit = Svy->Scope == HieLvl_CRS &&
Svy->Status.IBelongToScope;
break;
case Rol_DEG_ADM:
Svy->Status.ICanViewResults = (Svy->Scope == Hie_Lvl_DEG ||
Svy->Scope == Hie_Lvl_CTR ||
Svy->Scope == Hie_Lvl_INS ||
Svy->Scope == Hie_Lvl_CTY ||
Svy->Scope == Hie_Lvl_SYS) &&
Svy->Status.ICanViewResults = (Svy->Scope == HieLvl_DEG ||
Svy->Scope == HieLvl_CTR ||
Svy->Scope == HieLvl_INS ||
Svy->Scope == HieLvl_CTY ||
Svy->Scope == HieLvl_SYS) &&
(Svy->NumQsts != 0) &&
!Svy->Status.ICanAnswer;
Svy->Status.ICanEdit = Svy->Scope == Hie_Lvl_DEG &&
Svy->Status.ICanEdit = Svy->Scope == HieLvl_DEG &&
Svy->Status.IBelongToScope;
break;
case Rol_CTR_ADM:
Svy->Status.ICanViewResults = (Svy->Scope == Hie_Lvl_CTR ||
Svy->Scope == Hie_Lvl_INS ||
Svy->Scope == Hie_Lvl_CTY ||
Svy->Scope == Hie_Lvl_SYS) &&
Svy->Status.ICanViewResults = (Svy->Scope == HieLvl_CTR ||
Svy->Scope == HieLvl_INS ||
Svy->Scope == HieLvl_CTY ||
Svy->Scope == HieLvl_SYS) &&
(Svy->NumQsts != 0) &&
!Svy->Status.ICanAnswer;
Svy->Status.ICanEdit = Svy->Scope == Hie_Lvl_CTR &&
Svy->Status.ICanEdit = Svy->Scope == HieLvl_CTR &&
Svy->Status.IBelongToScope;
break;
case Rol_INS_ADM:
Svy->Status.ICanViewResults = (Svy->Scope == Hie_Lvl_INS ||
Svy->Scope == Hie_Lvl_CTY ||
Svy->Scope == Hie_Lvl_SYS) &&
Svy->Status.ICanViewResults = (Svy->Scope == HieLvl_INS ||
Svy->Scope == HieLvl_CTY ||
Svy->Scope == HieLvl_SYS) &&
(Svy->NumQsts != 0) &&
!Svy->Status.ICanAnswer;
Svy->Status.ICanEdit = Svy->Scope == Hie_Lvl_INS &&
Svy->Status.ICanEdit = Svy->Scope == HieLvl_INS &&
Svy->Status.IBelongToScope;
break;
case Rol_SYS_ADM:
@ -1441,7 +1441,7 @@ void Svy_GetDataOfSurveyByCod (struct Svy_Survey *Svy)
{
/* Initialize to empty survey */
Svy->SvyCod = -1L;
Svy->Scope = Hie_Lvl_UNK;
Svy->Scope = HieLvl_UNK;
Svy->Roles = 0;
Svy->UsrCod = -1L;
Svy->TimeUTC[Svy_START_TIME] =
@ -1906,7 +1906,7 @@ void Svy_RequestCreatOrEditSvy (void)
/* Initialize to empty survey */
Svy.SvyCod = -1L;
Svy.Scope = Hie_Lvl_UNK;
Svy.Scope = HieLvl_UNK;
Svy.Roles = (1 << Rol_STD);
Svy.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
Svy.TimeUTC[Svy_START_TIME] = Gbl.StartExecutionTimeUTC;
@ -2050,66 +2050,66 @@ static void Svy_SetDefaultAndAllowedScope (struct Svy_Survey *Svy)
bool ICanEdit = false;
/***** Set default scope *****/
Gbl.Scope.Default = Hie_Lvl_UNK;
Gbl.Scope.Default = HieLvl_UNK;
Gbl.Scope.Allowed = 0;
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_TCH: // Teachers only can edit course surveys
if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{
if (Svy->Scope == Hie_Lvl_UNK) // Scope not defined
Svy->Scope = Hie_Lvl_CRS;
if (Svy->Scope == Hie_Lvl_CRS)
if (Svy->Scope == HieLvl_UNK) // Scope not defined
Svy->Scope = HieLvl_CRS;
if (Svy->Scope == HieLvl_CRS)
{
Gbl.Scope.Default = Svy->Scope;
Gbl.Scope.Allowed = 1 << Hie_Lvl_CRS;
Gbl.Scope.Allowed = 1 << HieLvl_CRS;
ICanEdit = true;
}
}
break;
case Rol_DEG_ADM: // Degree admins only can edit degree surveys
if (Svy->Scope == Hie_Lvl_UNK) // Scope not defined
Svy->Scope = Hie_Lvl_DEG;
if (Svy->Scope == Hie_Lvl_DEG)
if (Svy->Scope == HieLvl_UNK) // Scope not defined
Svy->Scope = HieLvl_DEG;
if (Svy->Scope == HieLvl_DEG)
{
Gbl.Scope.Default = Svy->Scope;
Gbl.Scope.Allowed = 1 << Hie_Lvl_DEG;
Gbl.Scope.Allowed = 1 << HieLvl_DEG;
ICanEdit = true;
}
break;
case Rol_CTR_ADM: // Center admins only can edit center surveys
if (Svy->Scope == Hie_Lvl_UNK) // Scope not defined
Svy->Scope = Hie_Lvl_CTR;
if (Svy->Scope == Hie_Lvl_CTR)
if (Svy->Scope == HieLvl_UNK) // Scope not defined
Svy->Scope = HieLvl_CTR;
if (Svy->Scope == HieLvl_CTR)
{
Gbl.Scope.Default = Svy->Scope;
Gbl.Scope.Allowed = 1 << Hie_Lvl_CTR;
Gbl.Scope.Allowed = 1 << HieLvl_CTR;
ICanEdit = true;
}
break;
case Rol_INS_ADM: // Institution admins only can edit institution surveys
if (Svy->Scope == Hie_Lvl_UNK) // Scope not defined
Svy->Scope = Hie_Lvl_INS;
if (Svy->Scope == Hie_Lvl_INS)
if (Svy->Scope == HieLvl_UNK) // Scope not defined
Svy->Scope = HieLvl_INS;
if (Svy->Scope == HieLvl_INS)
{
Gbl.Scope.Default = Svy->Scope;
Gbl.Scope.Allowed = 1 << Hie_Lvl_INS;
Gbl.Scope.Allowed = 1 << HieLvl_INS;
ICanEdit = true;
}
break;
case Rol_SYS_ADM:// System admins can edit any survey
if (Svy->Scope == Hie_Lvl_UNK) // Scope not defined
Svy->Scope = (Gbl.Hierarchy.Level < Hie_Lvl_NUM_LEVELS &&
Gbl.Hierarchy.Level != Hie_Lvl_UNK) ? Gbl.Hierarchy.Level :
Hie_Lvl_SYS;
if (Svy->Scope == HieLvl_UNK) // Scope not defined
Svy->Scope = (Gbl.Hierarchy.Level < HieLvl_NUM_LEVELS &&
Gbl.Hierarchy.Level != HieLvl_UNK) ? Gbl.Hierarchy.Level :
HieLvl_SYS;
Gbl.Scope.Default = Svy->Scope;
Gbl.Scope.Allowed = 1 << Hie_Lvl_SYS |
1 << Hie_Lvl_CTY |
1 << Hie_Lvl_INS |
1 << Hie_Lvl_CTR |
1 << Hie_Lvl_DEG |
1 << Hie_Lvl_CRS;
Gbl.Scope.Allowed = 1 << HieLvl_SYS |
1 << HieLvl_CTY |
1 << HieLvl_INS |
1 << HieLvl_CTR |
1 << HieLvl_DEG |
1 << HieLvl_CRS;
ICanEdit = true;
break;
default:
@ -2209,7 +2209,7 @@ void Svy_ReceiveFormSurvey (void)
ItsANewSurvey = ((NewSvy.SvyCod = Svy_GetParamSvyCod ()) <= 0);
if (ItsANewSurvey)
NewSvy.Scope = Hie_Lvl_UNK;
NewSvy.Scope = HieLvl_UNK;
else
{
/* Get data of the old (current) survey from database */
@ -2225,44 +2225,44 @@ void Svy_ReceiveFormSurvey (void)
Sco_GetScope ("ScopeSvy");
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM)
Err_WrongScopeExit ();
NewSvy.Scope = Hie_Lvl_SYS;
NewSvy.Scope = HieLvl_SYS;
NewSvy.Cod = -1L;
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM)
Err_WrongScopeExit ();
NewSvy.Scope = Hie_Lvl_CTY;
NewSvy.Scope = HieLvl_CTY;
NewSvy.Cod = Gbl.Hierarchy.Cty.CtyCod;
break;
case Hie_Lvl_INS:
case HieLvl_INS:
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM &&
Gbl.Usrs.Me.Role.Logged != Rol_INS_ADM)
Err_WrongScopeExit ();
NewSvy.Scope = Hie_Lvl_INS;
NewSvy.Scope = HieLvl_INS;
NewSvy.Cod = Gbl.Hierarchy.Ins.InsCod;
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM &&
Gbl.Usrs.Me.Role.Logged != Rol_CTR_ADM)
Err_WrongScopeExit ();
NewSvy.Scope = Hie_Lvl_CTR;
NewSvy.Scope = HieLvl_CTR;
NewSvy.Cod = Gbl.Hierarchy.Ctr.CtrCod;
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM &&
Gbl.Usrs.Me.Role.Logged != Rol_DEG_ADM)
Err_WrongScopeExit ();
NewSvy.Scope = Hie_Lvl_DEG;
NewSvy.Scope = HieLvl_DEG;
NewSvy.Cod = Gbl.Hierarchy.Deg.DegCod;
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM &&
Gbl.Usrs.Me.Role.Logged != Rol_TCH)
Err_WrongScopeExit ();
NewSvy.Scope = Hie_Lvl_CRS;
NewSvy.Scope = HieLvl_CRS;
NewSvy.Cod = Gbl.Hierarchy.Crs.CrsCod;
break;
default:
@ -2324,7 +2324,7 @@ void Svy_ReceiveFormSurvey (void)
Svy_RequestCreatOrEditSvy ();
/***** Notify by email about the new survey *****/
if (NewSvy.Scope == Hie_Lvl_CRS) // Notify only the surveys for a course, not for a degree or global
if (NewSvy.Scope == HieLvl_CRS) // Notify only the surveys for a course, not for a degree or global
if ((NumUsrsToBeNotifiedByEMail = Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_SURVEY,NewSvy.SvyCod)))
Svy_UpdateNumUsrsNotifiedByEMailAboutSurvey (NewSvy.SvyCod,NumUsrsToBeNotifiedByEMail);
@ -2564,7 +2564,7 @@ static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Svy_Survey *Svy)
/************ (country, institution, center, degree or course) *************/
/*****************************************************************************/
void Svy_RemoveSurveys (Hie_Lvl_Level_t Scope,long Cod)
void Svy_RemoveSurveys (HieLvl_Level_t Scope,long Cod)
{
/***** Remove all the users in course surveys *****/
DB_QueryDELETE ("can not remove users"
@ -3939,19 +3939,19 @@ static unsigned Svy_GetNumUsrsWhoHaveAnsweredSvy (long SvyCod)
// Returns the number of courses with surveys for courses
// in this location (all the platform, current degree or current course)
unsigned Svy_GetNumCoursesWithCrsSurveys (Hie_Lvl_Level_t Scope)
unsigned Svy_GetNumCoursesWithCrsSurveys (HieLvl_Level_t Scope)
{
/***** Get number of courses with surveys from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT Cod)"
" FROM svy_surveys"
" WHERE Scope='%s'",
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
case Hie_Lvl_CTY:
Sco_GetDBStrFromScope (HieLvl_CRS));
case HieLvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
@ -3967,8 +3967,8 @@ unsigned Svy_GetNumCoursesWithCrsSurveys (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ins.InsCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
case Hie_Lvl_INS:
Sco_GetDBStrFromScope (HieLvl_CRS));
case HieLvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
@ -3982,8 +3982,8 @@ unsigned Svy_GetNumCoursesWithCrsSurveys (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ins.InsCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
case Hie_Lvl_CTR:
Sco_GetDBStrFromScope (HieLvl_CRS));
case HieLvl_CTR:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
@ -3995,8 +3995,8 @@ unsigned Svy_GetNumCoursesWithCrsSurveys (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ctr.CtrCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
case Hie_Lvl_DEG:
Sco_GetDBStrFromScope (HieLvl_CRS));
case HieLvl_DEG:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
@ -4006,15 +4006,15 @@ unsigned Svy_GetNumCoursesWithCrsSurveys (Hie_Lvl_Level_t Scope)
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Deg.DegCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
case Hie_Lvl_CRS:
Sco_GetDBStrFromScope (HieLvl_CRS));
case HieLvl_CRS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT Cod)"
" FROM svy_surveys"
" WHERE Scope='%s'"
" AND Cod=%ld",
Sco_GetDBStrFromScope (Hie_Lvl_CRS),
Sco_GetDBStrFromScope (HieLvl_CRS),
Gbl.Hierarchy.Crs.CrsCod);
default:
return 0;
@ -4027,7 +4027,7 @@ unsigned Svy_GetNumCoursesWithCrsSurveys (Hie_Lvl_Level_t Scope)
// Returns the number of surveys for courses
// in this location (all the platform, current degree or current course)
unsigned Svy_GetNumCrsSurveys (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
unsigned Svy_GetNumCrsSurveys (HieLvl_Level_t Scope,unsigned *NumNotif)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -4036,15 +4036,15 @@ unsigned Svy_GetNumCrsSurveys (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
/***** Get number of surveys from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of surveys",
"SELECT COUNT(*)," // row[0]
"SUM(NumNotif)" // row[1]
" FROM svy_surveys"
" WHERE Scope='%s'",
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
Sco_GetDBStrFromScope (HieLvl_CRS));
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of surveys",
"SELECT COUNT(*)," // row[0]
"SUM(svy_surveys.NumNotif)" // row[1]
@ -4060,9 +4060,9 @@ unsigned Svy_GetNumCrsSurveys (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Cty.CtyCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
Sco_GetDBStrFromScope (HieLvl_CRS));
break;
case Hie_Lvl_INS:
case HieLvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of surveys",
"SELECT COUNT(*)," // row[0]
"SUM(svy_surveys.NumNotif)" // row[1]
@ -4076,9 +4076,9 @@ unsigned Svy_GetNumCrsSurveys (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ins.InsCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
Sco_GetDBStrFromScope (HieLvl_CRS));
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of surveys",
"SELECT COUNT(*)," // row[0]
"SUM(svy_surveys.NumNotif)" // row[1]
@ -4090,9 +4090,9 @@ unsigned Svy_GetNumCrsSurveys (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ctr.CtrCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
Sco_GetDBStrFromScope (HieLvl_CRS));
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of surveys",
"SELECT COUNT(*)," // row[0]
"SUM(svy_surveys.NumNotif)" // row[1]
@ -4102,16 +4102,16 @@ unsigned Svy_GetNumCrsSurveys (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Deg.DegCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
Sco_GetDBStrFromScope (HieLvl_CRS));
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of surveys",
"SELECT COUNT(*)," // row[0]
"SUM(NumNotif)" // row[1]
" FROM svy_surveys"
" WHERE svy_surveys.Scope='%s'"
" AND CrsCod=%ld",
Sco_GetDBStrFromScope (Hie_Lvl_CRS),
Sco_GetDBStrFromScope (HieLvl_CRS),
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
@ -4143,12 +4143,12 @@ unsigned Svy_GetNumCrsSurveys (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
/************ Get average number of questions per course survey **************/
/*****************************************************************************/
double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
double Svy_GetNumQstsPerCrsSurvey (HieLvl_Level_t Scope)
{
/***** Get number of questions per survey from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
return DB_QuerySELECTDouble ("can not get number of questions per survey",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
@ -4157,8 +4157,8 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
" WHERE svy_surveys.Scope='%s'"
" AND svy_surveys.SvyCod=svy_questions.SvyCod"
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
case Hie_Lvl_CTY:
Sco_GetDBStrFromScope (HieLvl_CRS));
case HieLvl_CTY:
return DB_QuerySELECTDouble ("can not get number of questions per survey",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
@ -4177,8 +4177,8 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
" AND svy_surveys.SvyCod=svy_questions.SvyCod"
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",
Gbl.Hierarchy.Cty.CtyCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
case Hie_Lvl_INS:
Sco_GetDBStrFromScope (HieLvl_CRS));
case HieLvl_INS:
return DB_QuerySELECTDouble ("can not get number of questions per survey",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
@ -4195,8 +4195,8 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
" AND svy_surveys.SvyCod=svy_questions.SvyCod"
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",
Gbl.Hierarchy.Ins.InsCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
case Hie_Lvl_CTR:
Sco_GetDBStrFromScope (HieLvl_CRS));
case HieLvl_CTR:
return DB_QuerySELECTDouble ("can not get number of questions per survey",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
@ -4211,8 +4211,8 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
" AND svy_surveys.SvyCod=svy_questions.SvyCod"
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",
Gbl.Hierarchy.Ctr.CtrCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
case Hie_Lvl_DEG:
Sco_GetDBStrFromScope (HieLvl_CRS));
case HieLvl_DEG:
return DB_QuerySELECTDouble ("can not get number of questions per survey",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
@ -4225,8 +4225,8 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
" AND svy_surveys.SvyCod=svy_questions.SvyCod"
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",
Gbl.Hierarchy.Deg.DegCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
case Hie_Lvl_CRS:
Sco_GetDBStrFromScope (HieLvl_CRS));
case HieLvl_CRS:
return DB_QuerySELECTDouble ("can not get number of questions per survey",
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
@ -4236,7 +4236,7 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
" AND svy_surveys.Cod=%ld"
" AND svy_surveys.SvyCod=svy_questions.SvyCod"
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",
Sco_GetDBStrFromScope (Hie_Lvl_CRS),Gbl.Hierarchy.Crs.CrsCod);
Sco_GetDBStrFromScope (HieLvl_CRS),Gbl.Hierarchy.Crs.CrsCod);
default:
Err_WrongScopeExit ();
return 0.0; // Not reached

View File

@ -58,7 +58,7 @@ struct Svy_Surveys
struct Svy_Survey
{
long SvyCod;
Hie_Lvl_Level_t Scope;
HieLvl_Level_t Scope;
long Cod; // Country, institution, center, degree or course code
unsigned Roles; // Example: if survey can be made by students, Roles == (1 << Rol_STD)
long UsrCod;
@ -110,7 +110,7 @@ void Svy_UnhideSurvey (void);
void Svy_ReceiveFormSurvey (void);
void Svy_RemoveGroup (long GrpCod);
void Svy_RemoveGroupsOfType (long GrpTypCod);
void Svy_RemoveSurveys (Hie_Lvl_Level_t Scope,long Cod);
void Svy_RemoveSurveys (HieLvl_Level_t Scope,long Cod);
void Svy_RequestEditQuestion (void);
void Svy_ReceiveQst (void);
@ -120,8 +120,8 @@ void Svy_RemoveQst (void);
void Svy_ReceiveSurveyAnswers (void);
unsigned Svy_GetNumCoursesWithCrsSurveys (Hie_Lvl_Level_t Scope);
unsigned Svy_GetNumCrsSurveys (Hie_Lvl_Level_t Scope,unsigned *NumNotif);
double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope);
unsigned Svy_GetNumCoursesWithCrsSurveys (HieLvl_Level_t Scope);
unsigned Svy_GetNumCrsSurveys (HieLvl_Level_t Scope,unsigned *NumNotif);
double Svy_GetNumQstsPerCrsSurvey (HieLvl_Level_t Scope);
#endif

View File

@ -40,8 +40,8 @@
#include "swad_figure_cache.h"
#include "swad_form.h"
#include "swad_help.h"
#include "swad_hierarchy_level.h"
#include "swad_hierarchy_config.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_role.h"
#include "swad_system_config.h"
@ -156,10 +156,10 @@ static void SysCfg_Configuration (bool PrintView)
SysCfg_NumCrss ();
/***** Number of users in courses of this country *****/
HieCfg_NumUsrsInCrss (Hie_Lvl_SYS,-1L,Rol_TCH);
HieCfg_NumUsrsInCrss (Hie_Lvl_SYS,-1L,Rol_NET);
HieCfg_NumUsrsInCrss (Hie_Lvl_SYS,-1L,Rol_STD);
HieCfg_NumUsrsInCrss (Hie_Lvl_SYS,-1L,Rol_UNK);
HieCfg_NumUsrsInCrss (HieLvl_SYS,-1L,Rol_TCH);
HieCfg_NumUsrsInCrss (HieLvl_SYS,-1L,Rol_NET);
HieCfg_NumUsrsInCrss (HieLvl_SYS,-1L,Rol_STD);
HieCfg_NumUsrsInCrss (HieLvl_SYS,-1L,Rol_UNK);
}
/***** End table *****/

View File

@ -27,6 +27,7 @@
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_parameter.h"
#include "swad_tab.h"
@ -165,9 +166,9 @@ static bool Tab_CheckIfICanViewTab (Tab_Tab_t Tab)
return (Gbl.Hierarchy.Deg.DegCod > 0 && // Degree selected
Gbl.Hierarchy.Crs.CrsCod <= 0); // No course selected
case TabCrs:
return (Gbl.Hierarchy.Level == Hie_Lvl_CRS); // Course selected
return (Gbl.Hierarchy.Level == HieLvl_CRS); // Course selected
case TabAss:
return (Gbl.Hierarchy.Level == Hie_Lvl_CRS || // Course selected
return (Gbl.Hierarchy.Level == HieLvl_CRS || // Course selected
Gbl.Usrs.Me.Role.Logged >= Rol_STD); // I belong to course or I am an admin
case TabFil:
return (Gbl.Hierarchy.Ins.InsCod > 0 || // Institution selected

View File

@ -45,6 +45,7 @@
#include "swad_figure.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_hierarchy_level.h"
#include "swad_HTML.h"
#include "swad_ID.h"
#include "swad_language.h"
@ -226,9 +227,9 @@ static void Tst_RemoveMediaFromAllAnsOfQst (long CrsCod,long QstCod);
static void Tst_RemoveAllMedFilesFromStemOfAllQstsInCrs (long CrsCod);
static void Tst_RemoveAllMedFilesFromAnsOfAllQstsInCrs (long CrsCod);
static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t AnsType,struct Tst_Stats *Stats);
static unsigned Tst_GetNumCoursesWithTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t AnsType);
static unsigned Tst_GetNumCoursesWithPluggableTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t AnsType);
static unsigned Tst_GetNumTstQuestions (HieLvl_Level_t Scope,Tst_AnswerType_t AnsType,struct Tst_Stats *Stats);
static unsigned Tst_GetNumCoursesWithTstQuestions (HieLvl_Level_t Scope,Tst_AnswerType_t AnsType);
static unsigned Tst_GetNumCoursesWithPluggableTstQuestions (HieLvl_Level_t Scope,Tst_AnswerType_t AnsType);
/*****************************************************************************/
/********************* Request a self-assessment test ************************/
@ -5340,7 +5341,7 @@ void Tst_GetTestStats (Tst_AnswerType_t AnsType,struct Tst_Stats *Stats)
// Returns the number of test questions
// in this location (all the platform, current degree or current course)
static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t AnsType,struct Tst_Stats *Stats)
static unsigned Tst_GetNumTstQuestions (HieLvl_Level_t Scope,Tst_AnswerType_t AnsType,struct Tst_Stats *Stats)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -5348,7 +5349,7 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
/***** Get number of test questions from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of test questions",
"SELECT COUNT(*)," // row[0]
@ -5364,7 +5365,7 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
" WHERE AnsType='%s'",
Tst_StrAnswerTypesDB[AnsType]);
break;
case Hie_Lvl_CTY:
case HieLvl_CTY:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of test questions",
"SELECT COUNT(*)," // row[0]
@ -5400,7 +5401,7 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
Gbl.Hierarchy.Cty.CtyCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
case Hie_Lvl_INS:
case HieLvl_INS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of test questions",
"SELECT COUNT(*)," // row[0]
@ -5432,7 +5433,7 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
Gbl.Hierarchy.Ins.InsCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
case Hie_Lvl_CTR:
case HieLvl_CTR:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of test questions",
"SELECT COUNT(*)," // row[0]
@ -5460,7 +5461,7 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
Gbl.Hierarchy.Ctr.CtrCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
case Hie_Lvl_DEG:
case HieLvl_DEG:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of test questions",
"SELECT COUNT(*)," // row[0]
@ -5484,7 +5485,7 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
Gbl.Hierarchy.Deg.DegCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
case Hie_Lvl_CRS:
case HieLvl_CRS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of test questions",
"SELECT COUNT(*)," // row[0]
@ -5542,12 +5543,12 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
// Returns the number of courses with test questions
// in this location (all the platform, current degree or current course)
static unsigned Tst_GetNumCoursesWithTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t AnsType)
static unsigned Tst_GetNumCoursesWithTstQuestions (HieLvl_Level_t Scope,Tst_AnswerType_t AnsType)
{
/***** Get number of courses with test questions from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
@ -5560,7 +5561,7 @@ static unsigned Tst_GetNumCoursesWithTstQuestions (Hie_Lvl_Level_t Scope,Tst_Ans
" FROM tst_questions"
" WHERE AnsType='%s'",
Tst_StrAnswerTypesDB[AnsType]);
case Hie_Lvl_CTY:
case HieLvl_CTY:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
@ -5593,7 +5594,7 @@ static unsigned Tst_GetNumCoursesWithTstQuestions (Hie_Lvl_Level_t Scope,Tst_Ans
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Cty.CtyCod,
Tst_StrAnswerTypesDB[AnsType]);
case Hie_Lvl_INS:
case HieLvl_INS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
@ -5622,7 +5623,7 @@ static unsigned Tst_GetNumCoursesWithTstQuestions (Hie_Lvl_Level_t Scope,Tst_Ans
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Ins.InsCod,
Tst_StrAnswerTypesDB[AnsType]);
case Hie_Lvl_CTR:
case HieLvl_CTR:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
@ -5647,7 +5648,7 @@ static unsigned Tst_GetNumCoursesWithTstQuestions (Hie_Lvl_Level_t Scope,Tst_Ans
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Ctr.CtrCod,
Tst_StrAnswerTypesDB[AnsType]);
case Hie_Lvl_DEG:
case HieLvl_DEG:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
@ -5668,7 +5669,7 @@ static unsigned Tst_GetNumCoursesWithTstQuestions (Hie_Lvl_Level_t Scope,Tst_Ans
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Deg.DegCod,
Tst_StrAnswerTypesDB[AnsType]);
case Hie_Lvl_CRS:
case HieLvl_CRS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
@ -5696,14 +5697,14 @@ static unsigned Tst_GetNumCoursesWithTstQuestions (Hie_Lvl_Level_t Scope,Tst_Ans
// Returns the number of courses with pluggable test questions
// in this location (all the platform, current degree or current course)
static unsigned Tst_GetNumCoursesWithPluggableTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t AnsType)
static unsigned Tst_GetNumCoursesWithPluggableTstQuestions (HieLvl_Level_t Scope,Tst_AnswerType_t AnsType)
{
extern const char *TstCfg_PluggableDB[TstCfg_NUM_OPTIONS_PLUGGABLE];
/***** Get number of courses with test questions from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
case HieLvl_SYS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
@ -5724,7 +5725,7 @@ static unsigned Tst_GetNumCoursesWithPluggableTstQuestions (Hie_Lvl_Level_t Scop
" AND tst_config.pluggable='%s'",
Tst_StrAnswerTypesDB[AnsType],
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
case Hie_Lvl_CTY:
case HieLvl_CTY:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
@ -5765,7 +5766,7 @@ static unsigned Tst_GetNumCoursesWithPluggableTstQuestions (Hie_Lvl_Level_t Scop
Gbl.Hierarchy.Cty.CtyCod,
Tst_StrAnswerTypesDB[AnsType],
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
case Hie_Lvl_INS:
case HieLvl_INS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
@ -5802,7 +5803,7 @@ static unsigned Tst_GetNumCoursesWithPluggableTstQuestions (Hie_Lvl_Level_t Scop
Gbl.Hierarchy.Ins.InsCod,
Tst_StrAnswerTypesDB[AnsType],
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
case Hie_Lvl_CTR:
case HieLvl_CTR:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
@ -5835,7 +5836,7 @@ static unsigned Tst_GetNumCoursesWithPluggableTstQuestions (Hie_Lvl_Level_t Scop
Gbl.Hierarchy.Ctr.CtrCod,
Tst_StrAnswerTypesDB[AnsType],
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
case Hie_Lvl_DEG:
case HieLvl_DEG:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
@ -5864,7 +5865,7 @@ static unsigned Tst_GetNumCoursesWithPluggableTstQuestions (Hie_Lvl_Level_t Scop
Gbl.Hierarchy.Deg.DegCod,
Tst_StrAnswerTypesDB[AnsType],
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
case Hie_Lvl_CRS:
case HieLvl_CRS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",

View File

@ -8206,9 +8206,9 @@ const char *Txt_DEGREE_STATUS[Deg_NUM_STATUS_TXT] =
#endif
};
const char *Txt_DEGREE_TYPES_HELP_ORDER[DT_NUM_ORDERS] =
const char *Txt_DEGREE_TYPES_HELP_ORDER[DegTyp_NUM_ORDERS] =
{
[DT_ORDER_BY_DEGREE_TYPE] =
[DegTyp_ORDER_BY_DEGREE_TYPE] =
#if L==1 // ca
"Ordenar por tipus de titulaci&oacute;"
#elif L==2 // de
@ -8229,7 +8229,7 @@ const char *Txt_DEGREE_TYPES_HELP_ORDER[DT_NUM_ORDERS] =
"Classificar por tipo de grau"
#endif
,
[DT_ORDER_BY_NUM_DEGREES] =
[DegTyp_ORDER_BY_NUM_DEGREES] =
#if L==1 // ca
"Ordenar per nombre de titulacions"
#elif L==2 // de
@ -8251,9 +8251,9 @@ const char *Txt_DEGREE_TYPES_HELP_ORDER[DT_NUM_ORDERS] =
#endif
};
const char *Txt_DEGREE_TYPES_ORDER[DT_NUM_ORDERS] =
const char *Txt_DEGREE_TYPES_ORDER[DegTyp_NUM_ORDERS] =
{
[DT_ORDER_BY_DEGREE_TYPE] =
[DegTyp_ORDER_BY_DEGREE_TYPE] =
#if L==1 // ca
"Tipus de titulaci&oacute;"
#elif L==2 // de
@ -8274,7 +8274,7 @@ const char *Txt_DEGREE_TYPES_ORDER[DT_NUM_ORDERS] =
"Tipos de grau"
#endif
,
[DT_ORDER_BY_NUM_DEGREES] =
[DegTyp_ORDER_BY_NUM_DEGREES] =
#if L==1 // ca
"Titulacions"
#elif L==2 // de

File diff suppressed because it is too large Load Diff

View File

@ -231,7 +231,7 @@ struct UsrLast
Sch_WhatToSearch_t WhatToSearch; // Search courses, teachers, documents...?
struct
{
Hie_Lvl_Level_t Scope; // Course, degree, center, etc.
HieLvl_Level_t Scope; // Course, degree, center, etc.
long Cod; // Course code, degree code, center code, etc.
} LastHie;
Act_Action_t LastAct;
@ -305,7 +305,7 @@ void Usr_WriteFirstNameBRSurnames (const struct UsrData *UsrDat);
void Usr_FlushCachesUsr (void);
bool Usr_CheckIfUsrIsAdm (long UsrCod,Hie_Lvl_Level_t Scope,long Cod);
bool Usr_CheckIfUsrIsAdm (long UsrCod,HieLvl_Level_t Scope,long Cod);
void Usr_FlushCacheUsrIsSuperuser (void);
bool Usr_CheckIfUsrIsSuperuser (long UsrCod);
@ -440,7 +440,7 @@ void Usr_FlushCacheNumUsrsWhoClaimToBelongToCtr (void);
unsigned Usr_GetNumUsrsWhoClaimToBelongToCtr (struct Ctr_Center *Ctr);
unsigned Usr_GetCachedNumUsrsWhoClaimToBelongToCtr (struct Ctr_Center *Ctr);
void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role);
void Usr_GetListUsrs (HieLvl_Level_t Scope,Rol_Role_t Role);
void Usr_SearchListUsrs (Rol_Role_t Role);
void Usr_CreateTmpTableAndSearchCandidateUsrs (const char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1]);
@ -530,13 +530,13 @@ bool Usr_ChkIfUsrCodExists (long UsrCod);
void Usr_ShowWarningNoUsersFound (Rol_Role_t Role);
unsigned Usr_GetTotalNumberOfUsers (void);
unsigned Usr_GetNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles);
unsigned Usr_GetCachedNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles);
unsigned Usr_GetNumUsrsInCrss (HieLvl_Level_t Scope,long Cod,unsigned Roles);
unsigned Usr_GetCachedNumUsrsInCrss (HieLvl_Level_t Scope,long Cod,unsigned Roles);
unsigned Usr_GetCachedNumUsrsNotBelongingToAnyCrs (void);
double Usr_GetCachedNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Role);
double Usr_GetCachedNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Role);
double Usr_GetCachedNumCrssPerUsr (HieLvl_Level_t Scope,long Cod,Rol_Role_t Role);
double Usr_GetCachedNumUsrsPerCrs (HieLvl_Level_t Scope,long Cod,Rol_Role_t Role);
bool Usr_DB_CheckIfUsrBanned (long UsrCod);
void Usr_DB_RemoveUsrFromBanned (long UsrCod);