diff --git a/Makefile b/Makefile index 8ec3e415..c2314dd4 100644 --- a/Makefile +++ b/Makefile @@ -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 \ diff --git a/swad_API.c b/swad_API.c index f1ee9c80..9f8e6bed 100644 --- a/swad_API.c +++ b/swad_API.c @@ -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)) diff --git a/swad_ID.c b/swad_ID.c index 04f6323a..6ac63a00 100644 --- a/swad_ID.c +++ b/swad_ID.c @@ -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); diff --git a/swad_action.c b/swad_action.c index 1afebc09..064f9585 100644 --- a/swad_action.c +++ b/swad_action.c @@ -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]; diff --git a/swad_agenda_database.c b/swad_agenda_database.c index a6f83eec..b1603f56 100644 --- a/swad_agenda_database.c +++ b/swad_agenda_database.c @@ -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(*)" diff --git a/swad_agenda_database.h b/swad_agenda_database.h index e5e90bca..33a14c3d 100644 --- a/swad_agenda_database.h +++ b/swad_agenda_database.h @@ -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 diff --git a/swad_assignment.c b/swad_assignment.c index 5531f59d..c3b8be88 100644 --- a/swad_assignment.c +++ b/swad_assignment.c @@ -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; diff --git a/swad_assignment.h b/swad_assignment.h index 8acd9162..bf4ae129 100644 --- a/swad_assignment.h +++ b/swad_assignment.h @@ -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 diff --git a/swad_assignment_database.c b/swad_assignment_database.c index f7d6cee2..3c0fb015 100644 --- a/swad_assignment_database.c +++ b/swad_assignment_database.c @@ -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] diff --git a/swad_assignment_database.h b/swad_assignment_database.h index aba60952..f3bbe545 100644 --- a/swad_assignment_database.h +++ b/swad_assignment_database.h @@ -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); diff --git a/swad_attendance.c b/swad_attendance.c index 848391b0..52d1ca85 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -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... { diff --git a/swad_attendance.h b/swad_attendance.h index 85eea1d0..6a7842d2 100644 --- a/swad_attendance.h +++ b/swad_attendance.h @@ -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); diff --git a/swad_attendance_database.c b/swad_attendance_database.c index 51efa468..475ac0a2 100644 --- a/swad_attendance_database.c +++ b/swad_attendance_database.c @@ -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] diff --git a/swad_attendance_database.h b/swad_attendance_database.h index d08ed199..7ca5a7bf 100644 --- a/swad_attendance_database.h +++ b/swad_attendance_database.h @@ -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 diff --git a/swad_calendar.c b/swad_calendar.c index 2475b79b..d2531ff0 100644 --- a/swad_calendar.c +++ b/swad_calendar.c @@ -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 (); } diff --git a/swad_call_for_exam.c b/swad_call_for_exam.c index 70fd075a..6075e9f1 100644 --- a/swad_call_for_exam.c +++ b/swad_call_for_exam.c @@ -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) diff --git a/swad_center.c b/swad_center.c index ea679e16..d174f889 100644 --- a/swad_center.c +++ b/swad_center.c @@ -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] = { diff --git a/swad_center.h b/swad_center.h index 96cfd22e..bcfc7bef 100644 --- a/swad_center.h +++ b/swad_center.h @@ -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); diff --git a/swad_center_config.c b/swad_center_config.c index e0560180..03f2215a 100644 --- a/swad_center_config.c +++ b/swad_center_config.c @@ -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); } /*****************************************************************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 4ea44b1b..10bf116f 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -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) diff --git a/swad_chat.c b/swad_chat.c index 8eaa8416..f3e83bfd 100644 --- a/swad_chat.c +++ b/swad_chat.c @@ -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 */ diff --git a/swad_connected.c b/swad_connected.c index 843d8ac2..6d47130a 100644 --- a/swad_connected.c +++ b/swad_connected.c @@ -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 diff --git a/swad_connected_database.c b/swad_connected_database.c index eb1aaaaf..e1d6e51a 100644 --- a/swad_connected_database.c +++ b/swad_connected_database.c @@ -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", diff --git a/swad_country.c b/swad_country.c index b05ef2d7..57a68b43 100644 --- a/swad_country.c +++ b/swad_country.c @@ -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] = { diff --git a/swad_country.h b/swad_country.h index cf8345be..c0585d55 100644 --- a/swad_country.h +++ b/swad_country.h @@ -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); diff --git a/swad_country_config.c b/swad_country_config.c index ae8cb32a..b44f81e1 100644 --- a/swad_country_config.c +++ b/swad_country_config.c @@ -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 */ diff --git a/swad_course.c b/swad_course.c index 3f1ef021..bd84a591 100644 --- a/swad_course.c +++ b/swad_course.c @@ -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 (" %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 (" %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 (" %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 (" %s (%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 (); diff --git a/swad_course.h b/swad_course.h index c3421c7a..563575f5 100644 --- a/swad_course.h +++ b/swad_course.h @@ -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); diff --git a/swad_course_config.c b/swad_course_config.c index 955aabea..8c1f7d6c 100644 --- a/swad_course_config.c +++ b/swad_course_config.c @@ -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); diff --git a/swad_degree.c b/swad_degree.c index a716d1ef..ac85aad5 100644 --- a/swad_degree.c +++ b/swad_degree.c @@ -33,6 +33,7 @@ #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" @@ -82,7 +83,6 @@ static Deg_Status_t Deg_GetStatusBitsFromStatusTxt (Deg_StatusTxt_t StatusTxt); static void Deg_PutFormToCreateDegree (void); static void Deg_PutHeadDegreesForSeeing (void); static void Deg_PutHeadDegreesForEdition (void); -static void Deg_CreateDegree (unsigned Status); static void Deg_ListDegrees (void); static bool Deg_CheckIfICanCreateDegrees (void); @@ -98,7 +98,7 @@ static void Deg_PutParamOtherDegCod (void *DegCod); static void Deg_GetDataOfDegreeFromRow (struct Deg_Degree *Deg,MYSQL_ROW row); -static void Deg_UpdateDegNameDB (long DegCod,const char *FieldName,const char *NewDegName); +static void Deg_DB_UpdateDegNameDB (long DegCod,const char *FieldName,const char *NewDegName); static void Deg_ShowAlertAndButtonToGoToDeg (void); static void Deg_PutParamGoToDeg (void *DegCod); @@ -125,93 +125,54 @@ void Deg_SeeDegWithPendingCrss (void) const char *BgColor; /***** Get degrees with pending courses *****/ - switch (Gbl.Usrs.Me.Role.Logged) - { - case Rol_DEG_ADM: - NumDegs = (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 (Hie_Lvl_DEG), - (unsigned) Crs_STATUS_BIT_PENDING); - break; - case Rol_SYS_ADM: - NumDegs = (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); - break; - default: // Forbidden for other users - return; - } - - /***** Get degrees *****/ - if (NumDegs) + if ((NumDegs = Deg_DB_GetDegsWithPendingCrss (&mysql_res))) { /***** Begin box and table *****/ Box_BoxTableBegin (NULL,Txt_Degrees_with_pending_courses, NULL,NULL, Hlp_SYSTEM_Pending,Box_NOT_CLOSABLE,2); - /***** Write heading *****/ - HTM_TR_Begin (NULL); + /***** Write heading *****/ + HTM_TR_Begin (NULL); - HTM_TH (1,1,"LM",Txt_Degree); - HTM_TH (1,1,"RM",Txt_Courses_ABBREVIATION); + HTM_TH (1,1,"LM",Txt_Degree); + HTM_TH (1,1,"RM",Txt_Courses_ABBREVIATION); - HTM_TR_End (); + HTM_TR_End (); - /***** List the degrees *****/ - for (NumDeg = 0; - NumDeg < NumDegs; - NumDeg++) - { - /* Get next degree */ - row = mysql_fetch_row (mysql_res); + /***** List the degrees *****/ + for (NumDeg = 0; + NumDeg < NumDegs; + NumDeg++, Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd) + { + /* Get next degree */ + row = mysql_fetch_row (mysql_res); - /* Get degree code (row[0]) */ - Deg.DegCod = Str_ConvertStrCodToLongCod (row[0]); - BgColor = (Deg.DegCod == Gbl.Hierarchy.Deg.DegCod) ? "LIGHT_BLUE" : - Gbl.ColorRows[Gbl.RowEvenOdd]; + /* Get degree code (row[0]) */ + Deg.DegCod = Str_ConvertStrCodToLongCod (row[0]); + BgColor = (Deg.DegCod == Gbl.Hierarchy.Deg.DegCod) ? "LIGHT_BLUE" : + Gbl.ColorRows[Gbl.RowEvenOdd]; - /* Get data of degree */ - Deg_GetDataOfDegreeByCod (&Deg); + /* Get data of degree */ + Deg_GetDataOfDegreeByCod (&Deg); - HTM_TR_Begin (NULL); + /* Begin table row */ + HTM_TR_Begin (NULL); - /* Degree logo and full name */ - HTM_TD_Begin ("class=\"LM %s\"",BgColor); - Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeCrs, - "BT_LINK DAT_NOBR","CM"); - HTM_TD_End (); + /* Degree logo and full name */ + HTM_TD_Begin ("class=\"LM %s\"",BgColor); + Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeCrs, + "BT_LINK DAT_NOBR","CM"); + HTM_TD_End (); - /* Number of pending courses (row[1]) */ - HTM_TD_Begin ("class=\"DAT RM %s\"",BgColor); - HTM_Txt (row[1]); - HTM_TD_End (); + /* Number of pending courses (row[1]) */ + HTM_TD_Begin ("class=\"DAT RM %s\"",BgColor); + HTM_Txt (row[1]); + HTM_TD_End (); - HTM_TR_End (); - - Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; - } + /* End table row */ + HTM_TR_End (); + } /***** End table and box *****/ Box_BoxTableEnd (); @@ -234,16 +195,16 @@ void Deg_DrawDegreeLogoAndNameWithLink (struct Deg_Degree *Deg,Act_Action_t Acti Frm_BeginFormGoTo (Action); Deg_PutParamDegCod (Deg->DegCod); - /***** Link to action *****/ - HTM_BUTTON_SUBMIT_Begin (Hie_BuildGoToMsg (Deg->FullName),ClassLink,NULL); - Hie_FreeGoToMsg (); + /***** Link to action *****/ + HTM_BUTTON_SUBMIT_Begin (Hie_BuildGoToMsg (Deg->FullName),ClassLink,NULL); + Hie_FreeGoToMsg (); - /***** Degree logo and name *****/ - Lgo_DrawLogo (Hie_Lvl_DEG,Deg->DegCod,Deg->ShrtName,16,ClassLogo,true); - HTM_TxtF (" %s",Deg->FullName); + /***** Degree logo and name *****/ + Lgo_DrawLogo (HieLvl_DEG,Deg->DegCod,Deg->ShrtName,16,ClassLogo,true); + HTM_TxtF (" %s",Deg->FullName); - /***** End link *****/ - HTM_BUTTON_End (); + /***** End link *****/ + HTM_BUTTON_End (); /***** End form *****/ Frm_EndForm (); @@ -264,54 +225,51 @@ void Deg_WriteSelectorOfDegree (void) /***** Begin form *****/ Frm_BeginFormGoTo (ActSeeCrs); - if (Gbl.Hierarchy.Ctr.CtrCod > 0) - HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE, - "id=\"deg\" name=\"deg\" class=\"HIE_SEL\""); - else - HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE, - "id=\"deg\" name=\"deg\" class=\"HIE_SEL\"" - " disabled=\"disabled\""); - HTM_OPTION (HTM_Type_STRING,"", - Gbl.Hierarchy.Deg.DegCod < 0,true, - "[%s]",Txt_Degree); - if (Gbl.Hierarchy.Ctr.CtrCod > 0) - { - /***** Get degrees belonging to the current center from database *****/ - NumDegs = (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); + /***** Begin selector of degree *****/ + if (Gbl.Hierarchy.Ctr.CtrCod > 0) + HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE, + "id=\"deg\" name=\"deg\" class=\"HIE_SEL\""); + else + HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE, + "id=\"deg\" name=\"deg\" class=\"HIE_SEL\"" + " disabled=\"disabled\""); + HTM_OPTION (HTM_Type_STRING,"", + Gbl.Hierarchy.Deg.DegCod < 0,true, + "[%s]",Txt_Degree); - /***** Get degrees of this center *****/ - for (NumDeg = 0; - NumDeg < NumDegs; - NumDeg++) - { - /* Get next degree */ - row = mysql_fetch_row (mysql_res); + if (Gbl.Hierarchy.Ctr.CtrCod > 0) + { + /***** Get degrees belonging to the current center from database *****/ + NumDegs = Deg_DB_GetDegsOfCurrentCtr (&mysql_res); - /* Get degree code (row[0]) */ - if ((DegCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) - Err_WrongDegreeExit (); + /***** Get degrees of this center *****/ + for (NumDeg = 0; + NumDeg < NumDegs; + NumDeg++) + { + /* Get next degree */ + row = mysql_fetch_row (mysql_res); - /* Write option */ - HTM_OPTION (HTM_Type_LONG,&DegCod, - Gbl.Hierarchy.Deg.DegCod > 0 && - DegCod == Gbl.Hierarchy.Deg.DegCod,false, - "%s",row[1]); - } + /* Get degree code (row[0]) */ + if ((DegCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) + Err_WrongDegreeExit (); - /***** Free structure that stores the query result *****/ - DB_FreeMySQLResult (&mysql_res); - } + /* Write option */ + HTM_OPTION (HTM_Type_LONG,&DegCod, + Gbl.Hierarchy.Deg.DegCod > 0 && + DegCod == Gbl.Hierarchy.Deg.DegCod,false, + "%s",row[1]); + } + + /***** Free structure that stores the query result *****/ + DB_FreeMySQLResult (&mysql_res); + } + + /***** End selector of degree *****/ + HTM_SELECT_End (); /***** End form *****/ - HTM_SELECT_End (); Frm_EndForm (); } @@ -362,173 +320,175 @@ static void Deg_ListDegreesForEdition (void) /***** Initialize structure with user's data *****/ Usr_UsrDataConstructor (&UsrDat); - /***** Write heading *****/ + /***** Begin table of degrees *****/ HTM_TABLE_BeginWidePadding (2); - Deg_PutHeadDegreesForEdition (); - /***** List the degrees *****/ - for (NumDeg = 0; - NumDeg < Gbl.Hierarchy.Degs.Num; - NumDeg++) - { - Deg = &(Gbl.Hierarchy.Degs.Lst[NumDeg]); + /***** Write heading *****/ + Deg_PutHeadDegreesForEdition (); - ICanEdit = Deg_CheckIfICanEditADegree (Deg); - NumCrss = Crs_GetNumCrssInDeg (Deg->DegCod); - NumUsrsInCrssOfDeg = Usr_GetNumUsrsInCrss (Hie_Lvl_DEG,Deg->DegCod, - 1 << Rol_STD | - 1 << Rol_NET | - 1 << Rol_TCH); // Any user - - HTM_TR_Begin (NULL); - - /* Put icon to remove degree */ - HTM_TD_Begin ("class=\"BM\""); - if (!ICanEdit || - NumCrss || // Degree has courses ==> deletion forbidden - NumUsrsInCrssOfDeg) - Ico_PutIconRemovalNotAllowed (); - else - Ico_PutContextualIconToRemove (ActRemDeg,NULL, - Deg_PutParamOtherDegCod,&Deg->DegCod); - HTM_TD_End (); - - /* Degree code */ - HTM_TD_Begin ("class=\"DAT CODE\""); - HTM_Long (Deg->DegCod); - HTM_TD_End (); - - /* Degree logo */ - HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Deg->FullName); - Lgo_DrawLogo (Hie_Lvl_DEG,Deg->DegCod,Deg->ShrtName,20,NULL,true); - HTM_TD_End (); - - /* Degree short name */ - HTM_TD_Begin ("class=\"DAT LM\""); - if (ICanEdit) + /***** List the degrees *****/ + for (NumDeg = 0; + NumDeg < Gbl.Hierarchy.Degs.Num; + NumDeg++) { - Frm_BeginForm (ActRenDegSho); - Deg_PutParamOtherDegCod (&Deg->DegCod); - HTM_INPUT_TEXT ("ShortName",Cns_HIERARCHY_MAX_CHARS_SHRT_NAME,Deg->ShrtName, - HTM_SUBMIT_ON_CHANGE, - "class=\"INPUT_SHORT_NAME\""); - Frm_EndForm (); + Deg = &(Gbl.Hierarchy.Degs.Lst[NumDeg]); + + ICanEdit = Deg_CheckIfICanEditADegree (Deg); + NumCrss = Crs_GetNumCrssInDeg (Deg->DegCod); + NumUsrsInCrssOfDeg = Usr_GetNumUsrsInCrss (HieLvl_DEG,Deg->DegCod, + 1 << Rol_STD | + 1 << Rol_NET | + 1 << Rol_TCH); // Any user + + HTM_TR_Begin (NULL); + + /* Put icon to remove degree */ + HTM_TD_Begin ("class=\"BM\""); + if (!ICanEdit || + NumCrss || // Degree has courses ==> deletion forbidden + NumUsrsInCrssOfDeg) + Ico_PutIconRemovalNotAllowed (); + else + Ico_PutContextualIconToRemove (ActRemDeg,NULL, + Deg_PutParamOtherDegCod,&Deg->DegCod); + HTM_TD_End (); + + /* Degree code */ + HTM_TD_Begin ("class=\"DAT CODE\""); + HTM_Long (Deg->DegCod); + HTM_TD_End (); + + /* Degree logo */ + HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Deg->FullName); + Lgo_DrawLogo (HieLvl_DEG,Deg->DegCod,Deg->ShrtName,20,NULL,true); + HTM_TD_End (); + + /* Degree short name */ + HTM_TD_Begin ("class=\"DAT LM\""); + if (ICanEdit) + { + Frm_BeginForm (ActRenDegSho); + Deg_PutParamOtherDegCod (&Deg->DegCod); + HTM_INPUT_TEXT ("ShortName",Cns_HIERARCHY_MAX_CHARS_SHRT_NAME,Deg->ShrtName, + HTM_SUBMIT_ON_CHANGE, + "class=\"INPUT_SHORT_NAME\""); + Frm_EndForm (); + } + else + HTM_Txt (Deg->ShrtName); + HTM_TD_End (); + + /* Degree full name */ + HTM_TD_Begin ("class=\"DAT LM\""); + if (ICanEdit) + { + Frm_BeginForm (ActRenDegFul); + Deg_PutParamOtherDegCod (&Deg->DegCod); + HTM_INPUT_TEXT ("FullName",Cns_HIERARCHY_MAX_CHARS_FULL_NAME,Deg->FullName, + HTM_SUBMIT_ON_CHANGE, + "class=\"INPUT_FULL_NAME\""); + Frm_EndForm (); + } + else + HTM_Txt (Deg->FullName); + HTM_TD_End (); + + /* Degree type */ + HTM_TD_Begin ("class=\"DAT LM\""); + if (ICanEdit) + { + Frm_BeginForm (ActChgDegTyp); + Deg_PutParamOtherDegCod (&Deg->DegCod); + HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE, + "name=\"OthDegTypCod\" class=\"HIE_SEL_NARROW\""); + for (NumDegTyp = 0; + NumDegTyp < Gbl.DegTypes.Num; + NumDegTyp++) + { + DegTyp = &Gbl.DegTypes.Lst[NumDegTyp]; + HTM_OPTION (HTM_Type_LONG,&DegTyp->DegTypCod, + // Gbl.Hierarchy.Deg.DegCod > 0 && + DegTyp->DegTypCod == Deg->DegTypCod,false, + "%s",DegTyp->DegTypName); + } + HTM_SELECT_End (); + Frm_EndForm (); + } + else + for (NumDegTyp = 0; + NumDegTyp < Gbl.DegTypes.Num; + NumDegTyp++) + if (Gbl.DegTypes.Lst[NumDegTyp].DegTypCod == Deg->DegTypCod) + HTM_Txt (Gbl.DegTypes.Lst[NumDegTyp].DegTypName); + HTM_TD_End (); + + /* Degree WWW */ + HTM_TD_Begin ("class=\"DAT LM\""); + if (ICanEdit) + { + Frm_BeginForm (ActChgDegWWW); + Deg_PutParamOtherDegCod (&Deg->DegCod); + HTM_INPUT_URL ("WWW",Deg->WWW,HTM_SUBMIT_ON_CHANGE, + "class=\"INPUT_WWW_NARROW\" required=\"required\""); + Frm_EndForm (); + } + else + { + Str_Copy (WWW,Deg->WWW,sizeof (WWW) - 1); + HTM_DIV_Begin ("class=\"EXTERNAL_WWW_SHORT\""); + HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"DAT\" title=\"%s\"", + Deg->WWW,Deg->WWW); + HTM_Txt (WWW); + HTM_A_End (); + HTM_DIV_End (); + } + HTM_TD_End (); + + /* Number of courses in this degree */ + HTM_TD_Begin ("class=\"DAT RM\""); + HTM_Unsigned (NumCrss); + HTM_TD_End (); + + /* Number of users in courses of this degree */ + HTM_TD_Begin ("class=\"DAT RM\""); + HTM_Unsigned (NumUsrsInCrssOfDeg); + HTM_TD_End (); + + /* Degree requester */ + UsrDat.UsrCod = Deg->RequesterUsrCod; + Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat, + Usr_DONT_GET_PREFS, + Usr_DONT_GET_ROLE_IN_CURRENT_CRS); + HTM_TD_Begin ("class=\"DAT INPUT_REQUESTER LT\""); + Msg_WriteMsgAuthor (&UsrDat,true,NULL); + HTM_TD_End (); + + /* Degree status */ + StatusTxt = Deg_GetStatusTxtFromStatusBits (Deg->Status); + HTM_TD_Begin ("class=\"DAT LM\""); + if (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM && + StatusTxt == Deg_STATUS_PENDING) + { + Frm_BeginForm (ActChgDegSta); + Deg_PutParamOtherDegCod (&Deg->DegCod); + HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE, + "name=\"Status\" class=\"INPUT_STATUS\""); + StatusUnsigned = (unsigned) Deg_GetStatusBitsFromStatusTxt (Deg_STATUS_PENDING); + HTM_OPTION (HTM_Type_UNSIGNED,&StatusUnsigned,true,false, + "%s",Txt_DEGREE_STATUS[Deg_STATUS_PENDING]); + StatusUnsigned = (unsigned) Deg_GetStatusBitsFromStatusTxt (Deg_STATUS_ACTIVE); + HTM_OPTION (HTM_Type_UNSIGNED,&StatusUnsigned,false,false, + "%s",Txt_DEGREE_STATUS[Deg_STATUS_ACTIVE]); + HTM_SELECT_End (); + Frm_EndForm (); + } + else if (StatusTxt != Deg_STATUS_ACTIVE) // If active ==> do not show anything + HTM_Txt (Txt_DEGREE_STATUS[StatusTxt]); + HTM_TD_End (); + HTM_TR_End (); } - else - HTM_Txt (Deg->ShrtName); - HTM_TD_End (); - /* Degree full name */ - HTM_TD_Begin ("class=\"DAT LM\""); - if (ICanEdit) - { - Frm_BeginForm (ActRenDegFul); - Deg_PutParamOtherDegCod (&Deg->DegCod); - HTM_INPUT_TEXT ("FullName",Cns_HIERARCHY_MAX_CHARS_FULL_NAME,Deg->FullName, - HTM_SUBMIT_ON_CHANGE, - "class=\"INPUT_FULL_NAME\""); - Frm_EndForm (); - } - else - HTM_Txt (Deg->FullName); - HTM_TD_End (); - - /* Degree type */ - HTM_TD_Begin ("class=\"DAT LM\""); - if (ICanEdit) - { - Frm_BeginForm (ActChgDegTyp); - Deg_PutParamOtherDegCod (&Deg->DegCod); - HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE, - "name=\"OthDegTypCod\" class=\"HIE_SEL_NARROW\""); - for (NumDegTyp = 0; - NumDegTyp < Gbl.DegTypes.Num; - NumDegTyp++) - { - DegTyp = &Gbl.DegTypes.Lst[NumDegTyp]; - HTM_OPTION (HTM_Type_LONG,&DegTyp->DegTypCod, - // Gbl.Hierarchy.Deg.DegCod > 0 && - DegTyp->DegTypCod == Deg->DegTypCod,false, - "%s",DegTyp->DegTypName); - } - HTM_SELECT_End (); - Frm_EndForm (); - } - else - for (NumDegTyp = 0; - NumDegTyp < Gbl.DegTypes.Num; - NumDegTyp++) - if (Gbl.DegTypes.Lst[NumDegTyp].DegTypCod == Deg->DegTypCod) - HTM_Txt (Gbl.DegTypes.Lst[NumDegTyp].DegTypName); - HTM_TD_End (); - - /* Degree WWW */ - HTM_TD_Begin ("class=\"DAT LM\""); - if (ICanEdit) - { - Frm_BeginForm (ActChgDegWWW); - Deg_PutParamOtherDegCod (&Deg->DegCod); - HTM_INPUT_URL ("WWW",Deg->WWW,HTM_SUBMIT_ON_CHANGE, - "class=\"INPUT_WWW_NARROW\" required=\"required\""); - Frm_EndForm (); - } - else - { - Str_Copy (WWW,Deg->WWW,sizeof (WWW) - 1); - HTM_DIV_Begin ("class=\"EXTERNAL_WWW_SHORT\""); - HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"DAT\" title=\"%s\"", - Deg->WWW,Deg->WWW); - HTM_Txt (WWW); - HTM_A_End (); - HTM_DIV_End (); - } - HTM_TD_End (); - - /* Number of courses in this degree */ - HTM_TD_Begin ("class=\"DAT RM\""); - HTM_Unsigned (NumCrss); - HTM_TD_End (); - - /* Number of users in courses of this degree */ - HTM_TD_Begin ("class=\"DAT RM\""); - HTM_Unsigned (NumUsrsInCrssOfDeg); - HTM_TD_End (); - - /* Degree requester */ - UsrDat.UsrCod = Deg->RequesterUsrCod; - Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat, - Usr_DONT_GET_PREFS, - Usr_DONT_GET_ROLE_IN_CURRENT_CRS); - HTM_TD_Begin ("class=\"DAT INPUT_REQUESTER LT\""); - Msg_WriteMsgAuthor (&UsrDat,true,NULL); - HTM_TD_End (); - - /* Degree status */ - StatusTxt = Deg_GetStatusTxtFromStatusBits (Deg->Status); - HTM_TD_Begin ("class=\"DAT LM\""); - if (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM && - StatusTxt == Deg_STATUS_PENDING) - { - Frm_BeginForm (ActChgDegSta); - Deg_PutParamOtherDegCod (&Deg->DegCod); - HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE, - "name=\"Status\" class=\"INPUT_STATUS\""); - StatusUnsigned = (unsigned) Deg_GetStatusBitsFromStatusTxt (Deg_STATUS_PENDING); - HTM_OPTION (HTM_Type_UNSIGNED,&StatusUnsigned,true,false, - "%s",Txt_DEGREE_STATUS[Deg_STATUS_PENDING]); - StatusUnsigned = (unsigned) Deg_GetStatusBitsFromStatusTxt (Deg_STATUS_ACTIVE); - HTM_OPTION (HTM_Type_UNSIGNED,&StatusUnsigned,false,false, - "%s",Txt_DEGREE_STATUS[Deg_STATUS_ACTIVE]); - HTM_SELECT_End (); - Frm_EndForm (); - } - else if (StatusTxt != Deg_STATUS_ACTIVE) // If active ==> do not show anything - HTM_Txt (Txt_DEGREE_STATUS[StatusTxt]); - HTM_TD_End (); - HTM_TR_End (); - } - - /***** End table *****/ + /***** End table of degrees *****/ HTM_TABLE_End (); /***** Free memory used for user's data *****/ @@ -612,80 +572,80 @@ static void Deg_PutFormToCreateDegree (void) NULL,NULL, NULL,Box_NOT_CLOSABLE,2); - /***** Write heading *****/ - Deg_PutHeadDegreesForEdition (); + /***** Write heading *****/ + Deg_PutHeadDegreesForEdition (); - HTM_TR_Begin (NULL); + HTM_TR_Begin (NULL); - /***** Column to remove degree, disabled here *****/ - HTM_TD_Begin ("class=\"BM\""); - HTM_TD_End (); + /***** Column to remove degree, disabled here *****/ + HTM_TD_Begin ("class=\"BM\""); + HTM_TD_End (); - /***** Degree code *****/ - HTM_TD_Begin ("class=\"CODE\""); - HTM_TD_End (); + /***** Degree code *****/ + HTM_TD_Begin ("class=\"CODE\""); + HTM_TD_End (); - /***** Degree logo *****/ - HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Deg_EditingDeg->FullName); - Lgo_DrawLogo (Hie_Lvl_DEG,-1L,"",20,NULL,true); - HTM_TD_End (); + /***** Degree logo *****/ + HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Deg_EditingDeg->FullName); + Lgo_DrawLogo (HieLvl_DEG,-1L,"",20,NULL,true); + HTM_TD_End (); - /***** Degree short name *****/ - HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Cns_HIERARCHY_MAX_CHARS_SHRT_NAME,Deg_EditingDeg->ShrtName, - HTM_DONT_SUBMIT_ON_CHANGE, - "class=\"INPUT_SHORT_NAME\" required=\"required\""); - HTM_TD_End (); + /***** Degree short name *****/ + HTM_TD_Begin ("class=\"LM\""); + HTM_INPUT_TEXT ("ShortName",Cns_HIERARCHY_MAX_CHARS_SHRT_NAME,Deg_EditingDeg->ShrtName, + HTM_DONT_SUBMIT_ON_CHANGE, + "class=\"INPUT_SHORT_NAME\" required=\"required\""); + HTM_TD_End (); - /***** Degree full name *****/ - HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Cns_HIERARCHY_MAX_CHARS_FULL_NAME,Deg_EditingDeg->FullName, - HTM_DONT_SUBMIT_ON_CHANGE, - "class=\"INPUT_FULL_NAME\" required=\"required\""); - HTM_TD_End (); + /***** Degree full name *****/ + HTM_TD_Begin ("class=\"LM\""); + HTM_INPUT_TEXT ("FullName",Cns_HIERARCHY_MAX_CHARS_FULL_NAME,Deg_EditingDeg->FullName, + HTM_DONT_SUBMIT_ON_CHANGE, + "class=\"INPUT_FULL_NAME\" required=\"required\""); + HTM_TD_End (); - /***** Degree type *****/ - HTM_TD_Begin ("class=\"LM\""); - HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE, - "name=\"OthDegTypCod\" class=\"HIE_SEL_NARROW\""); - for (NumDegTyp = 0; - NumDegTyp < Gbl.DegTypes.Num; - NumDegTyp++) - { - DegTyp = &Gbl.DegTypes.Lst[NumDegTyp]; - HTM_OPTION (HTM_Type_LONG,&DegTyp->DegTypCod, - DegTyp->DegTypCod == Deg_EditingDeg->DegTypCod,false, - "%s",DegTyp->DegTypName); - } - HTM_SELECT_End (); - HTM_TD_End (); + /***** Degree type *****/ + HTM_TD_Begin ("class=\"LM\""); + HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE, + "name=\"OthDegTypCod\" class=\"HIE_SEL_NARROW\""); + for (NumDegTyp = 0; + NumDegTyp < Gbl.DegTypes.Num; + NumDegTyp++) + { + DegTyp = &Gbl.DegTypes.Lst[NumDegTyp]; + HTM_OPTION (HTM_Type_LONG,&DegTyp->DegTypCod, + DegTyp->DegTypCod == Deg_EditingDeg->DegTypCod,false, + "%s",DegTyp->DegTypName); + } + HTM_SELECT_End (); + HTM_TD_End (); - /***** Degree WWW *****/ - HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_URL ("WWW",Deg_EditingDeg->WWW,HTM_DONT_SUBMIT_ON_CHANGE, - "class=\"INPUT_WWW_NARROW\" required=\"required\""); - HTM_TD_End (); + /***** Degree WWW *****/ + HTM_TD_Begin ("class=\"LM\""); + HTM_INPUT_URL ("WWW",Deg_EditingDeg->WWW,HTM_DONT_SUBMIT_ON_CHANGE, + "class=\"INPUT_WWW_NARROW\" required=\"required\""); + HTM_TD_End (); - /***** Number of courses in this degree *****/ - HTM_TD_Begin ("class=\"DAT RM\""); - HTM_Unsigned (0); - HTM_TD_End (); + /***** Number of courses in this degree *****/ + HTM_TD_Begin ("class=\"DAT RM\""); + HTM_Unsigned (0); + HTM_TD_End (); - /***** Number of users in courses of this degree *****/ - HTM_TD_Begin ("class=\"DAT RM\""); - HTM_Unsigned (0); - HTM_TD_End (); + /***** Number of users in courses of this degree *****/ + HTM_TD_Begin ("class=\"DAT RM\""); + HTM_Unsigned (0); + HTM_TD_End (); - /***** Degree requester *****/ - HTM_TD_Begin ("class=\"DAT INPUT_REQUESTER LT\""); - Msg_WriteMsgAuthor (&Gbl.Usrs.Me.UsrDat,true,NULL); - HTM_TD_End (); + /***** Degree requester *****/ + HTM_TD_Begin ("class=\"DAT INPUT_REQUESTER LT\""); + Msg_WriteMsgAuthor (&Gbl.Usrs.Me.UsrDat,true,NULL); + HTM_TD_End (); - /***** Degree status *****/ - HTM_TD_Begin ("class=\"DAT LM\""); - HTM_TD_End (); + /***** Degree status *****/ + HTM_TD_Begin ("class=\"DAT LM\""); + HTM_TD_End (); - HTM_TR_End (); + HTM_TR_End (); /***** End table, send button and end box *****/ Box_BoxTableWithButtonEnd (Btn_CREATE_BUTTON,Txt_Create_degree); @@ -707,17 +667,17 @@ static void Deg_PutHeadDegreesForSeeing (void) HTM_TR_Begin (NULL); - HTM_TH (1,1,"BM",NULL); - HTM_TH_Empty (1); - HTM_TH (1,1,"LM",Txt_Degree); - HTM_TH (1,1,"LM",Txt_Type); - HTM_TH (1,1,"RM",Txt_Courses_ABBREVIATION); - HTM_TH_Begin (1,1,"RM"); - HTM_TxtF ("%s+",Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH]); - HTM_BR (); - HTM_Txt (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_STD]); - HTM_TH_End (); - HTM_TH_Empty (1); + HTM_TH (1,1,"BM",NULL); + HTM_TH_Empty (1); + HTM_TH (1,1,"LM",Txt_Degree); + HTM_TH (1,1,"LM",Txt_Type); + HTM_TH (1,1,"RM",Txt_Courses_ABBREVIATION); + HTM_TH_Begin (1,1,"RM"); + HTM_TxtF ("%s+",Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH]); + HTM_BR (); + HTM_Txt (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_STD]); + HTM_TH_End (); + HTM_TH_Empty (1); HTM_TR_End (); } @@ -739,21 +699,21 @@ static void Deg_PutHeadDegreesForEdition (void) HTM_TR_Begin (NULL); - HTM_TH (1,1,"BM",NULL); - HTM_TH (1,1,"RM",Txt_Code); - HTM_TH_Empty (1); - HTM_TH (1,1,"LM",Txt_Short_name_of_the_degree); - HTM_TH (1,1,"LM",Txt_Full_name_of_the_degree); - HTM_TH (1,1,"LM",Txt_Type); - HTM_TH (1,1,"LM",Txt_WWW); - HTM_TH (1,1,"RM",Txt_Courses_ABBREVIATION); - HTM_TH_Begin (1,1,"RM"); - HTM_TxtF ("%s+",Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH]); - HTM_BR (); - HTM_Txt (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_STD]); - HTM_TH_End (); - HTM_TH (1,1,"LM",Txt_Requester); - HTM_TH_Empty (1); + HTM_TH (1,1,"BM",NULL); + HTM_TH (1,1,"RM",Txt_Code); + HTM_TH_Empty (1); + HTM_TH (1,1,"LM",Txt_Short_name_of_the_degree); + HTM_TH (1,1,"LM",Txt_Full_name_of_the_degree); + HTM_TH (1,1,"LM",Txt_Type); + HTM_TH (1,1,"LM",Txt_WWW); + HTM_TH (1,1,"RM",Txt_Courses_ABBREVIATION); + HTM_TH_Begin (1,1,"RM"); + HTM_TxtF ("%s+",Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH]); + HTM_BR (); + HTM_Txt (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_STD]); + HTM_TH_End (); + HTM_TH (1,1,"LM",Txt_Requester); + HTM_TH_Empty (1); HTM_TR_End (); } @@ -775,30 +735,6 @@ unsigned Deg_ConvStrToYear (const char *StrYear) return (unsigned) Year; } -/*****************************************************************************/ -/***************************** Create a new degree ***************************/ -/*****************************************************************************/ - -static void Deg_CreateDegree (unsigned Status) - { - /***** Create a new degree *****/ - Deg_EditingDeg->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_EditingDeg->CtrCod, - Deg_EditingDeg->DegTypCod, - Status, - Gbl.Usrs.Me.UsrDat.UsrCod, - Deg_EditingDeg->ShrtName, - Deg_EditingDeg->FullName, - Deg_EditingDeg->WWW); - } - /*****************************************************************************/ /************** List degrees belonging to the current center *****************/ /*****************************************************************************/ @@ -819,32 +755,34 @@ static void Deg_ListDegrees (void) Hlp_CENTER_Degrees,Box_NOT_CLOSABLE); Str_FreeString (); - if (Gbl.Hierarchy.Degs.Num) // There are degrees in the current center - { - /***** Write heading *****/ - HTM_TABLE_BeginWideMarginPadding (2); - Deg_PutHeadDegreesForSeeing (); + if (Gbl.Hierarchy.Degs.Num) // There are degrees in the current center + { + /***** Begin table *****/ + HTM_TABLE_BeginWideMarginPadding (2); - /***** List the degrees *****/ - for (NumDeg = 0; - NumDeg < Gbl.Hierarchy.Degs.Num; - NumDeg++) - Deg_ListOneDegreeForSeeing (&(Gbl.Hierarchy.Degs.Lst[NumDeg]),NumDeg + 1); + /***** Write heading *****/ + Deg_PutHeadDegreesForSeeing (); - /***** End table *****/ - HTM_TABLE_End (); - } - else // No degrees created in the current center - Ale_ShowAlert (Ale_INFO,Txt_No_degrees); + /***** List the degrees *****/ + for (NumDeg = 0; + NumDeg < Gbl.Hierarchy.Degs.Num; + NumDeg++) + Deg_ListOneDegreeForSeeing (&(Gbl.Hierarchy.Degs.Lst[NumDeg]),NumDeg + 1); - /***** Button to create degree *****/ - if (Deg_CheckIfICanCreateDegrees ()) - { - Frm_BeginForm (ActEdiDeg); - Btn_PutConfirmButton (Gbl.Hierarchy.Degs.Num ? Txt_Create_another_degree : - Txt_Create_degree); - Frm_EndForm (); - } + /***** End table *****/ + HTM_TABLE_End (); + } + else // No degrees created in the current center + Ale_ShowAlert (Ale_INFO,Txt_No_degrees); + + /***** Button to create degree *****/ + if (Deg_CheckIfICanCreateDegrees ()) + { + Frm_BeginForm (ActEdiDeg); + Btn_PutConfirmButton (Gbl.Hierarchy.Degs.Num ? Txt_Create_another_degree : + Txt_Create_degree); + Frm_EndForm (); + } /***** End box *****/ Box_BoxEnd (); @@ -870,7 +808,7 @@ static void Deg_PutIconsListingDegrees (__attribute__((unused)) void *Args) Deg_PutIconToEditDegrees (); /***** Put icon to view degree types *****/ - DT_PutIconToViewDegreeTypes (); + DegTyp_PutIconToViewDegreeTypes (); /***** Put icon to show a figure *****/ Fig_PutIconToShowFigure (Fig_HIERARCHY); @@ -904,7 +842,7 @@ static void Deg_ListOneDegreeForSeeing (struct Deg_Degree *Deg,unsigned NumDeg) /***** Get data of type of degree of this degree *****/ DegTyp.DegTypCod = Deg->DegTypCod; - if (!DT_GetDataOfDegreeTypeByCod (&DegTyp)) + if (!DegTyp_GetDataOfDegreeTypeByCod (&DegTyp)) Err_WrongDegTypExit (); if (Deg->Status & Deg_STATUS_BIT_PENDING) @@ -920,53 +858,55 @@ static void Deg_ListOneDegreeForSeeing (struct Deg_Degree *Deg,unsigned NumDeg) BgColor = (Deg->DegCod == Gbl.Hierarchy.Deg.DegCod) ? "LIGHT_BLUE" : Gbl.ColorRows[Gbl.RowEvenOdd]; + /***** Begin table row *****/ HTM_TR_Begin (NULL); - /***** Put tip if degree has courses *****/ - HTM_TD_Begin ("class=\"%s CM %s\" title=\"%s\"", - TxtClassNormal,BgColor, - NumCrss ? Txt_DEGREE_With_courses : - Txt_DEGREE_Without_courses); - HTM_Txt (NumCrss ? "✓" : - " "); - HTM_TD_End (); + /***** Put tip if degree has courses *****/ + HTM_TD_Begin ("class=\"%s CM %s\" title=\"%s\"", + TxtClassNormal,BgColor, + NumCrss ? Txt_DEGREE_With_courses : + Txt_DEGREE_Without_courses); + HTM_Txt (NumCrss ? "✓" : + " "); + HTM_TD_End (); - /***** Number of degree in this list *****/ - HTM_TD_Begin ("class=\"%s RM %s\"",TxtClassNormal,BgColor); - HTM_Unsigned (NumDeg); - HTM_TD_End (); + /***** Number of degree in this list *****/ + HTM_TD_Begin ("class=\"%s RM %s\"",TxtClassNormal,BgColor); + HTM_Unsigned (NumDeg); + HTM_TD_End (); - /***** Degree logo and name *****/ - HTM_TD_Begin ("class=\"LM %s\"",BgColor); - Deg_DrawDegreeLogoAndNameWithLink (Deg,ActSeeCrs, - TxtClassStrong,"CM"); - HTM_TD_End (); + /***** Degree logo and name *****/ + HTM_TD_Begin ("class=\"LM %s\"",BgColor); + Deg_DrawDegreeLogoAndNameWithLink (Deg,ActSeeCrs, + TxtClassStrong,"CM"); + HTM_TD_End (); - /***** Type of degree *****/ - HTM_TD_Begin ("class=\"%s LM %s\"",TxtClassNormal,BgColor); - HTM_Txt (DegTyp.DegTypName); - HTM_TD_End (); + /***** Type of degree *****/ + HTM_TD_Begin ("class=\"%s LM %s\"",TxtClassNormal,BgColor); + HTM_Txt (DegTyp.DegTypName); + HTM_TD_End (); - /***** Current number of courses in this degree *****/ - HTM_TD_Begin ("class=\"%s RM %s\"",TxtClassNormal,BgColor); - HTM_Unsigned (NumCrss); - HTM_TD_End (); + /***** Current number of courses in this degree *****/ + HTM_TD_Begin ("class=\"%s RM %s\"",TxtClassNormal,BgColor); + HTM_Unsigned (NumCrss); + HTM_TD_End (); - /***** Number of users in courses of this degree *****/ - HTM_TD_Begin ("class=\"%s RM %s\"",TxtClassNormal,BgColor); - HTM_Unsigned (Usr_GetCachedNumUsrsInCrss (Hie_Lvl_DEG,Deg->DegCod, - 1 << Rol_STD | - 1 << Rol_NET | - 1 << Rol_TCH)); // Any user - HTM_TD_End (); + /***** Number of users in courses of this degree *****/ + HTM_TD_Begin ("class=\"%s RM %s\"",TxtClassNormal,BgColor); + HTM_Unsigned (Usr_GetCachedNumUsrsInCrss (HieLvl_DEG,Deg->DegCod, + 1 << Rol_STD | + 1 << Rol_NET | + 1 << Rol_TCH)); // Any user + HTM_TD_End (); - /***** Degree status *****/ - StatusTxt = Deg_GetStatusTxtFromStatusBits (Deg->Status); - HTM_TD_Begin ("class=\"%s LM %s\"",TxtClassNormal,BgColor); - if (StatusTxt != Deg_STATUS_ACTIVE) // If active ==> do not show anything - HTM_Txt (Txt_DEGREE_STATUS[StatusTxt]); - HTM_TD_End (); + /***** Degree status *****/ + StatusTxt = Deg_GetStatusTxtFromStatusBits (Deg->Status); + HTM_TD_Begin ("class=\"%s LM %s\"",TxtClassNormal,BgColor); + if (StatusTxt != Deg_STATUS_ACTIVE) // If active ==> do not show anything + HTM_Txt (Txt_DEGREE_STATUS[StatusTxt]); + HTM_TD_End (); + /***** End table row *****/ HTM_TR_End (); Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; @@ -998,7 +938,7 @@ static void Deg_EditDegreesInternal (void) Deg_GetListDegsInCurrentCtr (); /***** Get list of degree types *****/ - DT_GetListDegreeTypes (Hie_Lvl_SYS,DT_ORDER_BY_DEGREE_TYPE); + DegTyp_GetListDegreeTypes (HieLvl_SYS,DegTyp_ORDER_BY_DEGREE_TYPE); /***** Write menu to select country, institution and center *****/ Hie_WriteMenuHierarchy (); @@ -1010,30 +950,30 @@ static void Deg_EditDegreesInternal (void) Hlp_CENTER_Degrees,Box_NOT_CLOSABLE); Str_FreeString (); - if (Gbl.DegTypes.Num) - { - /***** Put a form to create a new degree *****/ - Deg_PutFormToCreateDegree (); + if (Gbl.DegTypes.Num) + { + /***** Put a form to create a new degree *****/ + Deg_PutFormToCreateDegree (); - /***** Forms to edit current degrees *****/ - if (Gbl.Hierarchy.Degs.Num) - Deg_ListDegreesForEdition (); - } - else // No degree types - { - /***** Warning message *****/ - Ale_ShowAlert (Ale_WARNING,Txt_No_types_of_degree); + /***** Forms to edit current degrees *****/ + if (Gbl.Hierarchy.Degs.Num) + Deg_ListDegreesForEdition (); + } + else // No degree types + { + /***** Warning message *****/ + Ale_ShowAlert (Ale_WARNING,Txt_No_types_of_degree); - /***** Form to create the first degree type *****/ - if (DT_CheckIfICanCreateDegreeTypes ()) - DT_EditDegreeTypes (); - } + /***** Form to create the first degree type *****/ + if (DegTyp_CheckIfICanCreateDegreeTypes ()) + DegTyp_EditDegreeTypes (); + } /***** End box *****/ Box_BoxEnd (); /***** Free list of degree types *****/ - DT_FreeListDegreeTypes (); + DegTyp_FreeListDegreeTypes (); /***** Free list of degrees in the current center *****/ Deg_FreeListDegs (&Gbl.Hierarchy.Degs); @@ -1049,7 +989,7 @@ static void Deg_PutIconsEditingDegrees (__attribute__((unused)) void *Args) Deg_PutIconToViewDegrees (); /***** Put icon to view types of degree *****/ - DT_PutIconToViewDegreeTypes (); + DegTyp_PutIconToViewDegreeTypes (); /***** Put icon to show a figure *****/ Fig_PutIconToShowFigure (Fig_HIERARCHY); @@ -1237,7 +1177,7 @@ static void Deg_ReceiveFormRequestOrCreateDeg (unsigned Status) Par_GetParToText ("FullName",Deg_EditingDeg->FullName,Cns_HIERARCHY_MAX_BYTES_FULL_NAME); /* Get degree type */ - Deg_EditingDeg->DegTypCod = DT_GetAndCheckParamOtherDegTypCod (1); + Deg_EditingDeg->DegTypCod = DegTyp_GetAndCheckParamOtherDegTypCod (1); /* Get degree WWW */ Par_GetParToText ("WWW",Deg_EditingDeg->WWW,Cns_MAX_BYTES_WWW); @@ -1248,19 +1188,19 @@ static void Deg_ReceiveFormRequestOrCreateDeg (unsigned Status) if (Deg_EditingDeg->WWW[0]) { /***** If name of degree was in database... *****/ - if (Deg_CheckIfDegNameExistsInCtr ("ShortName",Deg_EditingDeg->ShrtName, - -1L,Deg_EditingDeg->CtrCod)) + if (Deg_DB_CheckIfDegNameExistsInCtr ("ShortName",Deg_EditingDeg->ShrtName, + -1L,Deg_EditingDeg->CtrCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_degree_X_already_exists, Deg_EditingDeg->ShrtName); - else if (Deg_CheckIfDegNameExistsInCtr ("FullName",Deg_EditingDeg->FullName, - -1L,Deg_EditingDeg->CtrCod)) + else if (Deg_DB_CheckIfDegNameExistsInCtr ("FullName",Deg_EditingDeg->FullName, + -1L,Deg_EditingDeg->CtrCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_degree_X_already_exists, Deg_EditingDeg->FullName); else // Add new degree to database { - Deg_CreateDegree (Status); + Deg_DB_CreateDegree (Deg_EditingDeg,Status); Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_Created_new_degree_X, Deg_EditingDeg->FullName); @@ -1369,18 +1309,7 @@ bool Deg_GetDataOfDegreeByCod (struct Deg_Degree *Deg) if (Deg->DegCod > 0) { /***** Get data of a degree from database *****/ - if (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", - Deg->DegCod)) // Degree found... + if (Deg_DB_GetDataOfDegreeByCod (&mysql_res,Deg->DegCod)) // Degree found... { /***** Get data of degree *****/ row = mysql_fetch_row (mysql_res); @@ -1426,46 +1355,6 @@ static void Deg_GetDataOfDegreeFromRow (struct Deg_Degree *Deg,MYSQL_ROW row) Str_Copy (Deg->WWW ,row[7],sizeof (Deg->WWW ) - 1); } -/*****************************************************************************/ -/************* Get the short name of a degree from its code ******************/ -/*****************************************************************************/ - -void Deg_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); - } - -/*****************************************************************************/ -/************* Get the center code of a degree from its code *****************/ -/*****************************************************************************/ - -long Deg_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 institution code of a degree from its code ***************/ /*****************************************************************************/ @@ -1523,10 +1412,10 @@ void Deg_RemoveDegreeCompletely (long DegCod) DB_FreeMySQLResult (&mysql_res); /***** Remove all the threads and posts in forums of the degree *****/ - For_RemoveForums (Hie_Lvl_DEG,DegCod); + For_RemoveForums (HieLvl_DEG,DegCod); /***** Remove surveys of the degree *****/ - Svy_RemoveSurveys (Hie_Lvl_DEG,DegCod); + Svy_RemoveSurveys (HieLvl_DEG,DegCod); /***** Remove information related to files in degree *****/ Brw_DB_RemoveDegFiles (DegCod); @@ -1543,7 +1432,7 @@ void Deg_RemoveDegreeCompletely (long DegCod) "DELETE FROM usr_admins" " WHERE Scope='%s'" " AND Cod=%ld", - Sco_GetDBStrFromScope (Hie_Lvl_DEG), + Sco_GetDBStrFromScope (HieLvl_DEG), DegCod); /***** Remove the degree *****/ @@ -1629,14 +1518,14 @@ void Deg_RenameDegree (struct Deg_Degree *Deg,Cns_ShrtOrFullName_t ShrtOrFullNam if (strcmp (CurrentDegName,NewDegName)) // Different names { /***** If degree was in database... *****/ - if (Deg_CheckIfDegNameExistsInCtr (ParamName,NewDegName,Deg->DegCod,Deg->CtrCod)) + if (Deg_DB_CheckIfDegNameExistsInCtr (ParamName,NewDegName,Deg->DegCod,Deg->CtrCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_degree_X_already_exists, NewDegName); else { /* Update the table changing old name by new name */ - Deg_UpdateDegNameDB (Deg->DegCod,FieldName,NewDegName); + Deg_DB_UpdateDegNameDB (Deg->DegCod,FieldName,NewDegName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, @@ -1660,8 +1549,8 @@ void Deg_RenameDegree (struct Deg_Degree *Deg,Cns_ShrtOrFullName_t ShrtOrFullNam /********************* Check if the name of degree exists ********************/ /*****************************************************************************/ -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) { /***** Get number of degrees with a type and a name from database *****/ return (DB_QueryCOUNT ("can not check if the name of a degree" @@ -1680,7 +1569,7 @@ bool Deg_CheckIfDegNameExistsInCtr (const char *FieldName,const char *Name, /***************** Update degree name in table of degrees ********************/ /*****************************************************************************/ -static void Deg_UpdateDegNameDB (long DegCod,const char *FieldName,const char *NewDegName) +static void Deg_DB_UpdateDegNameDB (long DegCod,const char *FieldName,const char *NewDegName) { /***** Update degree changing old name by new name *****/ DB_QueryUPDATE ("can not update the name of a degree", @@ -1709,7 +1598,7 @@ void Deg_ChangeDegreeType (void) Deg_EditingDeg->DegCod = Deg_GetAndCheckParamOtherDegCod (1); /* Get the new degree type */ - NewDegTypCod = DT_GetAndCheckParamOtherDegTypCod (1); + NewDegTypCod = DegTyp_GetAndCheckParamOtherDegTypCod (1); /***** Get data of degree *****/ Deg_GetDataOfDegreeByCod (Deg_EditingDeg); @@ -1756,7 +1645,7 @@ void Deg_ChangeDegWWW (void) if (NewWWW[0]) { /***** Update the table changing old WWW by new WWW *****/ - Deg_UpdateDegWWWDB (Deg_EditingDeg->DegCod,NewWWW); + Deg_DB_UpdateDegWWW (Deg_EditingDeg->DegCod,NewWWW); Str_Copy (Deg_EditingDeg->WWW,NewWWW,sizeof (Deg_EditingDeg->WWW) - 1); /***** Write alert to show the change made @@ -1773,7 +1662,7 @@ void Deg_ChangeDegWWW (void) /**************** Update database changing old WWW by new WWW ****************/ /*****************************************************************************/ -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]) { /***** Update database changing old WWW by new WWW *****/ DB_QueryUPDATE ("can not update the web of a degree", @@ -1882,7 +1771,7 @@ static void Deg_PutParamGoToDeg (void *DegCod) void Deg_RequestLogo (void) { - Lgo_RequestLogo (Hie_Lvl_DEG); + Lgo_RequestLogo (HieLvl_DEG); } /*****************************************************************************/ @@ -1891,7 +1780,7 @@ void Deg_RequestLogo (void) void Deg_ReceiveLogo (void) { - Lgo_ReceiveLogo (Hie_Lvl_DEG); + Lgo_ReceiveLogo (HieLvl_DEG); } /*****************************************************************************/ @@ -1900,7 +1789,7 @@ void Deg_ReceiveLogo (void) void Deg_RemoveLogo (void) { - Lgo_RemoveLogo (Hie_Lvl_DEG); + Lgo_RemoveLogo (HieLvl_DEG); } /*****************************************************************************/ @@ -1912,12 +1801,12 @@ unsigned Deg_GetCachedNumDegsInSys (void) unsigned NumDegs; /***** Get number of degrees from cache *****/ - if (!FigCch_GetFigureFromCache (FigCch_NUM_DEGS,Hie_Lvl_SYS,-1L, + if (!FigCch_GetFigureFromCache (FigCch_NUM_DEGS,HieLvl_SYS,-1L, FigCch_UNSIGNED,&NumDegs)) { /***** Get current number of degrees from database and update cache *****/ NumDegs = (unsigned) DB_GetNumRowsTable ("deg_degrees"); - FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,Hie_Lvl_SYS,-1L, + FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_SYS,-1L, FigCch_UNSIGNED,&NumDegs); } @@ -1956,7 +1845,7 @@ unsigned Deg_GetNumDegsInCty (long CtyCod) " AND ins_instits.InsCod=ctr_centers.InsCod" " AND ctr_centers.CtrCod=deg_degrees.CtrCod", CtyCod); - FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,Hie_Lvl_CTY,Gbl.Cache.NumDegsInCty.CtyCod, + FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_CTY,Gbl.Cache.NumDegsInCty.CtyCod, FigCch_UNSIGNED,&Gbl.Cache.NumDegsInCty.NumDegs); return Gbl.Cache.NumDegsInCty.NumDegs; } @@ -1966,7 +1855,7 @@ unsigned Deg_GetCachedNumDegsInCty (long CtyCod) unsigned NumDegs; /***** Get number of degrees from cache *****/ - if (!FigCch_GetFigureFromCache (FigCch_NUM_DEGS,Hie_Lvl_CTY,CtyCod, + if (!FigCch_GetFigureFromCache (FigCch_NUM_DEGS,HieLvl_CTY,CtyCod, FigCch_UNSIGNED,&NumDegs)) /***** Get current number of degrees from database and update cache *****/ NumDegs = Deg_GetNumDegsInCty (CtyCod); @@ -2004,7 +1893,7 @@ unsigned Deg_GetNumDegsInIns (long InsCod) " WHERE ctr_centers.InsCod=%ld" " AND ctr_centers.CtrCod=deg_degrees.CtrCod", InsCod); - FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,Hie_Lvl_INS,Gbl.Cache.NumDegsInIns.InsCod, + FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_INS,Gbl.Cache.NumDegsInIns.InsCod, FigCch_UNSIGNED,&Gbl.Cache.NumDegsInIns.NumDegs); return Gbl.Cache.NumDegsInIns.NumDegs; } @@ -2014,7 +1903,7 @@ unsigned Deg_GetCachedNumDegsInIns (long InsCod) unsigned NumDegs; /***** Get number of degrees from cache *****/ - if (!FigCch_GetFigureFromCache (FigCch_NUM_DEGS,Hie_Lvl_INS,InsCod, + if (!FigCch_GetFigureFromCache (FigCch_NUM_DEGS,HieLvl_INS,InsCod, FigCch_UNSIGNED,&NumDegs)) /***** Get current number of degrees from database and update cache *****/ NumDegs = Deg_GetNumDegsInIns (InsCod); @@ -2050,7 +1939,7 @@ unsigned Deg_GetNumDegsInCtr (long CtrCod) " FROM deg_degrees" " WHERE CtrCod=%ld", CtrCod); - FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,Hie_Lvl_CTR,Gbl.Cache.NumDegsInCtr.CtrCod, + FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_CTR,Gbl.Cache.NumDegsInCtr.CtrCod, FigCch_UNSIGNED,&Gbl.Cache.NumDegsInCtr.NumDegs); return Gbl.Cache.NumDegsInCtr.NumDegs; } @@ -2060,7 +1949,7 @@ unsigned Deg_GetCachedNumDegsInCtr (long CtrCod) unsigned NumDegs; /***** Get number of degrees from cache *****/ - if (!FigCch_GetFigureFromCache (FigCch_NUM_DEGS,Hie_Lvl_CTR,CtrCod, + if (!FigCch_GetFigureFromCache (FigCch_NUM_DEGS,HieLvl_CTR,CtrCod, FigCch_UNSIGNED,&NumDegs)) /***** Get current number of degrees from database and update cache *****/ NumDegs = Deg_GetNumDegsInCtr (CtrCod); @@ -2073,7 +1962,7 @@ 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 NumDegsWithCrss; @@ -2105,7 +1994,7 @@ unsigned Deg_GetCachedNumDegsWithCrss (const char *SubQuery, /*****************************************************************************/ unsigned Deg_GetCachedNumDegsWithUsrs (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 FigureDegs[Rol_NUM_ROLES] = { @@ -2164,23 +2053,23 @@ void Deg_ListDegsFound (MYSQL_RES **mysql_res,unsigned NumDegs) NULL,Box_NOT_CLOSABLE,2); Str_FreeString (); - /***** Write heading *****/ - Deg_PutHeadDegreesForSeeing (); + /***** Write heading *****/ + Deg_PutHeadDegreesForSeeing (); - /***** List the degrees (one row per degree) *****/ - for (NumDeg = 1; - NumDeg <= NumDegs; - NumDeg++) - { - /* Get next degree */ - Deg.DegCod = DB_GetNextCode (*mysql_res); + /***** List the degrees (one row per degree) *****/ + for (NumDeg = 1; + NumDeg <= NumDegs; + NumDeg++) + { + /* Get next degree */ + Deg.DegCod = DB_GetNextCode (*mysql_res); - /* Get data of degree */ - Deg_GetDataOfDegreeByCod (&Deg); + /* Get data of degree */ + Deg_GetDataOfDegreeByCod (&Deg); - /* Write data of this degree */ - Deg_ListOneDegreeForSeeing (&Deg,NumDeg); - } + /* Write data of this degree */ + Deg_ListOneDegreeForSeeing (&Deg,NumDeg); + } /***** End table and box *****/ Box_BoxTableEnd (); diff --git a/swad_degree.h b/swad_degree.h index dbf9df75..bc249447 100644 --- a/swad_degree.h +++ b/swad_degree.h @@ -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); diff --git a/swad_degree_config.c b/swad_degree_config.c index 5155e7dc..ec02dcd6 100644 --- a/swad_degree_config.c +++ b/swad_degree_config.c @@ -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 *****/ diff --git a/swad_degree_database.c b/swad_degree_database.c new file mode 100644 index 00000000..fddb900b --- /dev/null +++ b/swad_degree_database.c @@ -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 . +*/ +/*****************************************************************************/ +/********************************* Headers ***********************************/ +/*****************************************************************************/ + +// #include // For boolean type +// #include // For NULL +// #include // For free +// #include // 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); + } diff --git a/swad_degree_database.h b/swad_degree_database.h new file mode 100644 index 00000000..33840ed1 --- /dev/null +++ b/swad_degree_database.h @@ -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 . +*/ +/*****************************************************************************/ +/********************************* Headers ***********************************/ +/*****************************************************************************/ + +#include // 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 diff --git a/swad_degree_type.c b/swad_degree_type.c index c145c1ff..4b626705 100644 --- a/swad_degree_type.c +++ b/swad_degree_type.c @@ -36,11 +36,13 @@ #include "swad_config.h" #include "swad_database.h" #include "swad_degree.h" +#include "swad_degree_database.h" #include "swad_degree_type.h" #include "swad_error.h" #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" @@ -62,120 +64,117 @@ extern struct Globals Gbl; /**************************** Private variables ******************************/ /*****************************************************************************/ -static struct DegreeType *DT_EditingDegTyp = NULL; // Static variable to keep the degree type being edited +static struct DegreeType *DegTyp_EditingDegTyp = NULL; // Static variable to keep the degree type being edited /*****************************************************************************/ /*************************** Private prototypes ******************************/ /*****************************************************************************/ -static void DT_SeeDegreeTypes (Act_Action_t NextAction,Hie_Lvl_Level_t Scope, - DT_Order_t DefaultOrder); -static DT_Order_t DT_GetParamDegTypOrder (DT_Order_t DefaultOrder); +static void DegTyp_SeeDegreeTypes (Act_Action_t NextAction,HieLvl_Level_t Scope, + DegTyp_Order_t DefaultOrder); +static DegTyp_Order_t DegTyp_GetParamDegTypOrder (DegTyp_Order_t DefaultOrder); -static void DT_ListDegreeTypes (Act_Action_t NextAction, - Hie_Lvl_Level_t Scope, - DT_Order_t SelectedOrder); +static void DegTyp_ListDegreeTypes (Act_Action_t NextAction, + HieLvl_Level_t Scope, + DegTyp_Order_t SelectedOrder); -static void DT_EditDegreeTypesInternal (void); -static void DT_PutIconsEditingDegreeTypes (__attribute__((unused)) void *Args); +static void DegTyp_EditDegreeTypesInternal (void); +static void DegTyp_PutIconsEditingDegreeTypes (__attribute__((unused)) void *Args); -static void DT_ListDegreeTypesForSeeing (void); -static void DT_PutIconsListingDegTypes (__attribute__((unused)) void *Args); -static void DT_PutIconToEditDegTypes (__attribute__((unused)) void *Args); -static void DT_ListDegreeTypesForEdition (void); +static void DegTyp_ListDegreeTypesForSeeing (void); +static void DegTyp_PutIconsListingDegTypes (__attribute__((unused)) void *Args); +static void DegTyp_PutIconToEditDegTypes (__attribute__((unused)) void *Args); +static void DegTyp_ListDegreeTypesForEdition (void); -static void DT_PutFormToCreateDegreeType (void); +static void DegTyp_PutFormToCreateDegreeType (void); -static void DT_PutHeadDegreeTypesForSeeing (Act_Action_t NextAction, - Hie_Lvl_Level_t Scope, - DT_Order_t SelectedOrder); -static void DT_PutHeadDegreeTypesForEdition (void); -static void DT_CreateDegreeType (struct DegreeType *DegTyp); +static void DegTyp_PutHeadDegreeTypesForSeeing (Act_Action_t NextAction, + HieLvl_Level_t Scope, + DegTyp_Order_t SelectedOrder); +static void DegTyp_PutHeadDegreeTypesForEdition (void); -static void DT_PutParamOtherDegTypCod (void *DegTypCod); +static void DegTyp_PutParamOtherDegTypCod (void *DegTypCod); -static unsigned DT_CountNumDegsOfType (long DegTypCod); -static void DT_RemoveDegreeTypeCompletely (long DegTypCod); -static bool DT_CheckIfDegreeTypeNameExists (const char *DegTypName,long DegTypCod); +static void DegTyp_RemoveDegreeTypeCompletely (long DegTypCod); -static void DT_EditingDegreeTypeConstructor (void); -static void DT_EditingDegreeTypeDestructor (void); +static void DegTyp_EditingDegreeTypeConstructor (void); +static void DegTyp_EditingDegreeTypeDestructor (void); /*****************************************************************************/ /************** Show selector of degree types for statistics *****************/ /*****************************************************************************/ -void DT_WriteSelectorDegreeTypes (long SelectedDegTypCod) +void DegTyp_WriteSelectorDegreeTypes (long SelectedDegTypCod) { extern const char *Txt_Any_type_of_degree; unsigned NumDegTyp; /***** Form to select degree types *****/ /* Get list of degree types */ - DT_GetListDegreeTypes (Hie_Lvl_SYS,DT_ORDER_BY_DEGREE_TYPE); + DegTyp_GetListDegreeTypes (HieLvl_SYS,DegTyp_ORDER_BY_DEGREE_TYPE); /* List degree types */ HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE, "id=\"OthDegTypCod\" name=\"OthDegTypCod\""); - HTM_OPTION (HTM_Type_STRING,"-1", - SelectedDegTypCod == -1L,false, - "%s",Txt_Any_type_of_degree); - for (NumDegTyp = 0; - NumDegTyp < Gbl.DegTypes.Num; - NumDegTyp++) - HTM_OPTION (HTM_Type_LONG,&Gbl.DegTypes.Lst[NumDegTyp].DegTypCod, - Gbl.DegTypes.Lst[NumDegTyp].DegTypCod == SelectedDegTypCod,false, - "%s",Gbl.DegTypes.Lst[NumDegTyp].DegTypName); + HTM_OPTION (HTM_Type_STRING,"-1", + SelectedDegTypCod == -1L,false, + "%s",Txt_Any_type_of_degree); + for (NumDegTyp = 0; + NumDegTyp < Gbl.DegTypes.Num; + NumDegTyp++) + HTM_OPTION (HTM_Type_LONG,&Gbl.DegTypes.Lst[NumDegTyp].DegTypCod, + Gbl.DegTypes.Lst[NumDegTyp].DegTypCod == SelectedDegTypCod,false, + "%s",Gbl.DegTypes.Lst[NumDegTyp].DegTypName); HTM_SELECT_End (); /***** Free list of degree types *****/ - DT_FreeListDegreeTypes (); + DegTyp_FreeListDegreeTypes (); } /*****************************************************************************/ /***************************** Show degree types *****************************/ /*****************************************************************************/ -void DT_SeeDegreeTypesInDegTab (void) +void DegTyp_SeeDegreeTypesInDegTab (void) { - DT_SeeDegreeTypes (ActSeeDegTyp,Hie_Lvl_SYS, - DT_ORDER_BY_DEGREE_TYPE); // Default order if not specified + DegTyp_SeeDegreeTypes (ActSeeDegTyp,HieLvl_SYS, + DegTyp_ORDER_BY_DEGREE_TYPE); // Default order if not specified } -void DT_SeeDegreeTypesInStaTab (void) +void DegTyp_SeeDegreeTypesInStaTab (void) { - DT_SeeDegreeTypes (ActSeeUseGbl,Gbl.Scope.Current, - DT_ORDER_BY_NUM_DEGREES); // Default order if not specified + DegTyp_SeeDegreeTypes (ActSeeUseGbl,Gbl.Scope.Current, + DegTyp_ORDER_BY_NUM_DEGREES); // Default order if not specified } -static void DT_SeeDegreeTypes (Act_Action_t NextAction,Hie_Lvl_Level_t Scope, - DT_Order_t DefaultOrder) +static void DegTyp_SeeDegreeTypes (Act_Action_t NextAction,HieLvl_Level_t Scope, + DegTyp_Order_t DefaultOrder) { - DT_Order_t SelectedOrder; + DegTyp_Order_t SelectedOrder; /***** Get parameter with the type of order in the list of degree types *****/ - SelectedOrder = DT_GetParamDegTypOrder (DefaultOrder); + SelectedOrder = DegTyp_GetParamDegTypOrder (DefaultOrder); /***** Get list of degree types *****/ - DT_GetListDegreeTypes (Scope,SelectedOrder); + DegTyp_GetListDegreeTypes (Scope,SelectedOrder); /***** List degree types *****/ - DT_ListDegreeTypes (NextAction,Scope,SelectedOrder); + DegTyp_ListDegreeTypes (NextAction,Scope,SelectedOrder); /***** Free list of degree types *****/ - DT_FreeListDegreeTypes (); + DegTyp_FreeListDegreeTypes (); } /*****************************************************************************/ /******* Get parameter with the type or order in list of degree types ********/ /*****************************************************************************/ -static DT_Order_t DT_GetParamDegTypOrder (DT_Order_t DefaultOrder) +static DegTyp_Order_t DegTyp_GetParamDegTypOrder (DegTyp_Order_t DefaultOrder) { - return (DT_Order_t) Par_GetParToUnsignedLong ("Order", - 0, - DT_NUM_ORDERS - 1, - (unsigned long) DefaultOrder); + return (DegTyp_Order_t) Par_GetParToUnsignedLong ("Order", + 0, + DegTyp_NUM_ORDERS - 1, + (unsigned long) DefaultOrder); } /*****************************************************************************/ @@ -185,9 +184,9 @@ static DT_Order_t DT_GetParamDegTypOrder (DT_Order_t DefaultOrder) // - center tab => NextAction = ActSeeDegTyp // - statistic tab => NextAction = ActSeeUseGbl -static void DT_ListDegreeTypes (Act_Action_t NextAction, - Hie_Lvl_Level_t Scope, - DT_Order_t SelectedOrder) +static void DegTyp_ListDegreeTypes (Act_Action_t NextAction, + HieLvl_Level_t Scope, + DegTyp_Order_t SelectedOrder) { extern const char *Hlp_CENTER_DegreeTypes; extern const char *Hlp_ANALYTICS_Figures_types_of_degree; @@ -201,12 +200,12 @@ static void DT_ListDegreeTypes (Act_Action_t NextAction, { case ActSeeDegTyp: Box_BoxBegin (NULL,Txt_Types_of_degree, - DT_PutIconsListingDegTypes,NULL, + DegTyp_PutIconsListingDegTypes,NULL, Hlp_CENTER_DegreeTypes,Box_NOT_CLOSABLE); break; case ActSeeUseGbl: Box_BoxBegin (NULL,Txt_Types_of_degree, - DT_PutIconToEditDegTypes,NULL, + DegTyp_PutIconToEditDegTypes,NULL, Hlp_ANALYTICS_Figures_types_of_degree,Box_NOT_CLOSABLE); break; default: // Bad call @@ -215,12 +214,14 @@ static void DT_ListDegreeTypes (Act_Action_t NextAction, if (Gbl.DegTypes.Num) { - /***** Write heading *****/ + /***** Begin table *****/ HTM_TABLE_BeginWideMarginPadding (2); - DT_PutHeadDegreeTypesForSeeing (NextAction,Scope,SelectedOrder); - /***** List current degree types for seeing *****/ - DT_ListDegreeTypesForSeeing (); + /***** Write heading *****/ + DegTyp_PutHeadDegreeTypesForSeeing (NextAction,Scope,SelectedOrder); + + /***** List current degree types for seeing *****/ + DegTyp_ListDegreeTypesForSeeing (); /***** End table *****/ HTM_TABLE_End (); @@ -229,11 +230,11 @@ static void DT_ListDegreeTypes (Act_Action_t NextAction, Ale_ShowAlert (Ale_INFO,Txt_No_types_of_degree); /***** Button to create degree type *****/ - if (DT_CheckIfICanCreateDegreeTypes ()) + if (DegTyp_CheckIfICanCreateDegreeTypes ()) { Frm_BeginForm (ActEdiDegTyp); - Btn_PutConfirmButton (Gbl.DegTypes.Num ? Txt_Create_another_type_of_degree : - Txt_Create_type_of_degree); + Btn_PutConfirmButton (Gbl.DegTypes.Num ? Txt_Create_another_type_of_degree : + Txt_Create_type_of_degree); Frm_EndForm (); } @@ -245,53 +246,53 @@ static void DT_ListDegreeTypes (Act_Action_t NextAction, /************************ Put forms to edit degree types *********************/ /*****************************************************************************/ -void DT_EditDegreeTypes (void) +void DegTyp_EditDegreeTypes (void) { /***** Degree type constructor *****/ - DT_EditingDegreeTypeConstructor (); + DegTyp_EditingDegreeTypeConstructor (); /***** Edit degree types *****/ - DT_EditDegreeTypesInternal (); + DegTyp_EditDegreeTypesInternal (); /***** Degree type destructor *****/ - DT_EditingDegreeTypeDestructor (); + DegTyp_EditingDegreeTypeDestructor (); } -static void DT_EditDegreeTypesInternal (void) +static void DegTyp_EditDegreeTypesInternal (void) { extern const char *Hlp_CENTER_DegreeTypes_edit; extern const char *Txt_Types_of_degree; /***** Get list of degree types *****/ - DT_GetListDegreeTypes (Hie_Lvl_SYS,DT_ORDER_BY_DEGREE_TYPE); + DegTyp_GetListDegreeTypes (HieLvl_SYS,DegTyp_ORDER_BY_DEGREE_TYPE); /***** Begin box *****/ Box_BoxBegin (NULL,Txt_Types_of_degree, - DT_PutIconsEditingDegreeTypes,NULL, + DegTyp_PutIconsEditingDegreeTypes,NULL, Hlp_CENTER_DegreeTypes_edit,Box_NOT_CLOSABLE); - /***** Put a form to create a new degree type *****/ - DT_PutFormToCreateDegreeType (); + /***** Put a form to create a new degree type *****/ + DegTyp_PutFormToCreateDegreeType (); - /***** Forms to edit current degree types *****/ - if (Gbl.DegTypes.Num) - DT_ListDegreeTypesForEdition (); + /***** Forms to edit current degree types *****/ + if (Gbl.DegTypes.Num) + DegTyp_ListDegreeTypesForEdition (); /***** End box *****/ Box_BoxEnd (); /***** Free list of degree types *****/ - DT_FreeListDegreeTypes (); + DegTyp_FreeListDegreeTypes (); } /*****************************************************************************/ /************ Put contextual icons when editing degree types *****************/ /*****************************************************************************/ -static void DT_PutIconsEditingDegreeTypes (__attribute__((unused)) void *Args) +static void DegTyp_PutIconsEditingDegreeTypes (__attribute__((unused)) void *Args) { /***** Put icon to view degree types *****/ - DT_PutIconToViewDegreeTypes (); + DegTyp_PutIconToViewDegreeTypes (); /***** Put icon to view degrees *****/ Deg_PutIconToViewDegrees (); @@ -304,7 +305,7 @@ static void DT_PutIconsEditingDegreeTypes (__attribute__((unused)) void *Args) /******************* Put link (form) to view degree types ********************/ /*****************************************************************************/ -void DT_PutIconToViewDegreeTypes (void) +void DegTyp_PutIconToViewDegreeTypes (void) { extern const char *Txt_Types_of_degree; @@ -318,7 +319,7 @@ void DT_PutIconToViewDegreeTypes (void) /******************* List current degree types for seeing ********************/ /*****************************************************************************/ -static void DT_ListDegreeTypesForSeeing (void) +static void DegTyp_ListDegreeTypesForSeeing (void) { unsigned NumDegTyp; const char *BgColor; @@ -326,32 +327,32 @@ static void DT_ListDegreeTypesForSeeing (void) /***** List degree types with forms for edition *****/ for (NumDegTyp = 0; NumDegTyp < Gbl.DegTypes.Num; - NumDegTyp++) + NumDegTyp++, Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd) { BgColor = (Gbl.DegTypes.Lst[NumDegTyp].DegTypCod == Gbl.Hierarchy.Deg.DegTypCod) ? "LIGHT_BLUE" : Gbl.ColorRows[Gbl.RowEvenOdd]; + /* Begin table row */ HTM_TR_Begin (NULL); - /* Number of degree type in this list */ - HTM_TD_Begin ("class=\"DAT_N RM %s\"",BgColor); - HTM_Unsigned (NumDegTyp + 1); - HTM_TD_End (); + /* Number of degree type in this list */ + HTM_TD_Begin ("class=\"DAT_N RM %s\"",BgColor); + HTM_Unsigned (NumDegTyp + 1); + HTM_TD_End (); - /* Name of degree type */ - HTM_TD_Begin ("class=\"DAT_N LM %s\"",BgColor); - HTM_Txt (Gbl.DegTypes.Lst[NumDegTyp].DegTypName); - HTM_TD_End (); + /* Name of degree type */ + HTM_TD_Begin ("class=\"DAT_N LM %s\"",BgColor); + HTM_Txt (Gbl.DegTypes.Lst[NumDegTyp].DegTypName); + HTM_TD_End (); - /* Number of degrees of this type */ - HTM_TD_Begin ("class=\"DAT_N RM %s\"",BgColor); - HTM_Unsigned (Gbl.DegTypes.Lst[NumDegTyp].NumDegs); - HTM_TD_End (); + /* Number of degrees of this type */ + HTM_TD_Begin ("class=\"DAT_N RM %s\"",BgColor); + HTM_Unsigned (Gbl.DegTypes.Lst[NumDegTyp].NumDegs); + HTM_TD_End (); + /* End table row */ HTM_TR_End (); - - Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; } } @@ -359,10 +360,10 @@ static void DT_ListDegreeTypesForSeeing (void) /************** Put contextual icons in list of degree types *****************/ /*****************************************************************************/ -static void DT_PutIconsListingDegTypes (__attribute__((unused)) void *Args) +static void DegTyp_PutIconsListingDegTypes (__attribute__((unused)) void *Args) { /***** Put icon to edit degree types *****/ - DT_PutIconToEditDegTypes (NULL); + DegTyp_PutIconToEditDegTypes (NULL); /***** Put icon to view degrees *****/ Deg_PutIconToViewDegrees (); @@ -375,10 +376,10 @@ static void DT_PutIconsListingDegTypes (__attribute__((unused)) void *Args) /******************* Put link (form) to edit degree types ********************/ /*****************************************************************************/ -static void DT_PutIconToEditDegTypes (__attribute__((unused)) void *Args) +static void DegTyp_PutIconToEditDegTypes (__attribute__((unused)) void *Args) { - if (Gbl.Hierarchy.Level == Hie_Lvl_CTR && // Only editable if center tab is visible - DT_CheckIfICanCreateDegreeTypes ()) + if (Gbl.Hierarchy.Level == HieLvl_CTR && // Only editable if center tab is visible + DegTyp_CheckIfICanCreateDegreeTypes ()) Ico_PutContextualIconToEdit (ActEdiDegTyp,NULL, NULL,NULL); } @@ -387,53 +388,57 @@ static void DT_PutIconToEditDegTypes (__attribute__((unused)) void *Args) /******************* List current degree types for edition *******************/ /*****************************************************************************/ -static void DT_ListDegreeTypesForEdition (void) +static void DegTyp_ListDegreeTypesForEdition (void) { unsigned NumDegTyp; - /***** Write heading *****/ + /***** Begin table *****/ HTM_TABLE_BeginWidePadding (2); - DT_PutHeadDegreeTypesForEdition (); - /***** List degree types with forms for edition *****/ - for (NumDegTyp = 0; - NumDegTyp < Gbl.DegTypes.Num; - NumDegTyp++) - { - HTM_TR_Begin (NULL); + /***** Write heading *****/ + DegTyp_PutHeadDegreeTypesForEdition (); - /* Put icon to remove degree type */ - HTM_TD_Begin ("class=\"BM\""); - if (Gbl.DegTypes.Lst[NumDegTyp].NumDegs) // Degree type has degrees => deletion forbidden - Ico_PutIconRemovalNotAllowed (); - else - Ico_PutContextualIconToRemove (ActRemDegTyp,NULL, - DT_PutParamOtherDegTypCod,&Gbl.DegTypes.Lst[NumDegTyp].DegTypCod); - HTM_TD_End (); + /***** List degree types with forms for edition *****/ + for (NumDegTyp = 0; + NumDegTyp < Gbl.DegTypes.Num; + NumDegTyp++) + { + /* Begin table row */ + HTM_TR_Begin (NULL); - /* Degree type code */ - HTM_TD_Begin ("class=\"DAT CODE\""); - HTM_Long (Gbl.DegTypes.Lst[NumDegTyp].DegTypCod); - HTM_TD_End (); + /* Put icon to remove degree type */ + HTM_TD_Begin ("class=\"BM\""); + if (Gbl.DegTypes.Lst[NumDegTyp].NumDegs) // Degree type has degrees => deletion forbidden + Ico_PutIconRemovalNotAllowed (); + else + Ico_PutContextualIconToRemove (ActRemDegTyp,NULL, + DegTyp_PutParamOtherDegTypCod,&Gbl.DegTypes.Lst[NumDegTyp].DegTypCod); + HTM_TD_End (); - /* Name of degree type */ - HTM_TD_Begin ("class=\"LM\""); - Frm_BeginForm (ActRenDegTyp); - DT_PutParamOtherDegTypCod (&Gbl.DegTypes.Lst[NumDegTyp].DegTypCod); - HTM_INPUT_TEXT ("DegTypName",Deg_MAX_CHARS_DEGREE_TYPE_NAME, - Gbl.DegTypes.Lst[NumDegTyp].DegTypName, - HTM_SUBMIT_ON_CHANGE, - "size=\"25\" required=\"required\""); - Frm_EndForm (); - HTM_TD_End (); + /* Degree type code */ + HTM_TD_Begin ("class=\"DAT CODE\""); + HTM_Long (Gbl.DegTypes.Lst[NumDegTyp].DegTypCod); + HTM_TD_End (); - /* Number of degrees of this type */ - HTM_TD_Begin ("class=\"DAT RM\""); - HTM_Unsigned (Gbl.DegTypes.Lst[NumDegTyp].NumDegs); - HTM_TD_End (); + /* Name of degree type */ + HTM_TD_Begin ("class=\"LM\""); + Frm_BeginForm (ActRenDegTyp); + DegTyp_PutParamOtherDegTypCod (&Gbl.DegTypes.Lst[NumDegTyp].DegTypCod); + HTM_INPUT_TEXT ("DegTypName",DegTyp_MAX_CHARS_DEGREE_TYPE_NAME, + Gbl.DegTypes.Lst[NumDegTyp].DegTypName, + HTM_SUBMIT_ON_CHANGE, + "size=\"25\" required=\"required\""); + Frm_EndForm (); + HTM_TD_End (); - HTM_TR_End (); - } + /* Number of degrees of this type */ + HTM_TD_Begin ("class=\"DAT RM\""); + HTM_Unsigned (Gbl.DegTypes.Lst[NumDegTyp].NumDegs); + HTM_TD_End (); + + /* End table row */ + HTM_TR_End (); + } /***** End table *****/ HTM_TABLE_End (); @@ -443,7 +448,7 @@ static void DT_ListDegreeTypesForEdition (void) /******************** Check if I can create degree types *********************/ /*****************************************************************************/ -bool DT_CheckIfICanCreateDegreeTypes (void) +bool DegTyp_CheckIfICanCreateDegreeTypes (void) { return (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM); } @@ -452,7 +457,7 @@ bool DT_CheckIfICanCreateDegreeTypes (void) /******************** Put a form to create a new degree type *****************/ /*****************************************************************************/ -static void DT_PutFormToCreateDegreeType (void) +static void DegTyp_PutFormToCreateDegreeType (void) { extern const char *Txt_New_type_of_degree; extern const char *Txt_Create_type_of_degree; @@ -460,40 +465,42 @@ static void DT_PutFormToCreateDegreeType (void) /***** Begin form *****/ Frm_BeginForm (ActNewDegTyp); - /***** Begin box and table *****/ - Box_BoxTableBegin (NULL,Txt_New_type_of_degree, - NULL,NULL, - NULL,Box_NOT_CLOSABLE,2); + /***** Begin box and table *****/ + Box_BoxTableBegin (NULL,Txt_New_type_of_degree, + NULL,NULL, + NULL,Box_NOT_CLOSABLE,2); - /***** Write heading *****/ - DT_PutHeadDegreeTypesForEdition (); + /***** Write heading *****/ + DegTyp_PutHeadDegreeTypesForEdition (); - HTM_TR_Begin (NULL); + /***** Begin table row *****/ + HTM_TR_Begin (NULL); - /***** Column to remove degree type, disabled here *****/ - HTM_TD_Begin ("class=\"BM\""); - HTM_TD_End (); + /***** Column to remove degree type, disabled here *****/ + HTM_TD_Begin ("class=\"BM\""); + HTM_TD_End (); - /***** Degree type code *****/ - HTM_TD_Begin ("class=\"CODE\""); - HTM_TD_End (); + /***** Degree type code *****/ + HTM_TD_Begin ("class=\"CODE\""); + HTM_TD_End (); - /***** Degree type name *****/ - HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("DegTypName",Deg_MAX_CHARS_DEGREE_TYPE_NAME,DT_EditingDegTyp->DegTypName, - HTM_DONT_SUBMIT_ON_CHANGE, - "size=\"25\" required=\"required\""); - HTM_TD_End (); + /***** Degree type name *****/ + HTM_TD_Begin ("class=\"LM\""); + HTM_INPUT_TEXT ("DegTypName",DegTyp_MAX_CHARS_DEGREE_TYPE_NAME,DegTyp_EditingDegTyp->DegTypName, + HTM_DONT_SUBMIT_ON_CHANGE, + "size=\"25\" required=\"required\""); + HTM_TD_End (); - /***** Number of degrees of this degree type ****/ - HTM_TD_Begin ("class=\"DAT RM\""); - HTM_Unsigned (0); - HTM_TD_End (); + /***** Number of degrees of this degree type ****/ + HTM_TD_Begin ("class=\"DAT RM\""); + HTM_Unsigned (0); + HTM_TD_End (); - HTM_TR_End (); + /***** End table row *****/ + HTM_TR_End (); - /***** End table, send button and end box *****/ - Box_BoxTableWithButtonEnd (Btn_CREATE_BUTTON,Txt_Create_type_of_degree); + /***** End table, send button and end box *****/ + Box_BoxTableWithButtonEnd (Btn_CREATE_BUTTON,Txt_Create_type_of_degree); /***** End form *****/ Frm_EndForm (); @@ -503,55 +510,60 @@ static void DT_PutFormToCreateDegreeType (void) /***************** Write header with fields of a degree type *****************/ /*****************************************************************************/ -static void DT_PutHeadDegreeTypesForSeeing (Act_Action_t NextAction, - Hie_Lvl_Level_t Scope, - DT_Order_t SelectedOrder) +static void DegTyp_PutHeadDegreeTypesForSeeing (Act_Action_t NextAction, + HieLvl_Level_t Scope, + DegTyp_Order_t SelectedOrder) { - extern const char *Txt_DEGREE_TYPES_HELP_ORDER[DT_NUM_ORDERS]; - extern const char *Txt_DEGREE_TYPES_ORDER[DT_NUM_ORDERS]; - DT_Order_t Order; + extern const char *Txt_DEGREE_TYPES_HELP_ORDER[DegTyp_NUM_ORDERS]; + extern const char *Txt_DEGREE_TYPES_ORDER[DegTyp_NUM_ORDERS]; + DegTyp_Order_t Order; struct Fig_Figures Figures; HTM_TR_Begin (NULL); - HTM_TH_Empty (1); - for (Order = DT_ORDER_BY_DEGREE_TYPE; - Order <= DT_ORDER_BY_NUM_DEGREES; - Order++) - { - HTM_TH_Begin (1,1,Order == DT_ORDER_BY_DEGREE_TYPE ? "LM" : - "RM"); - /* Begin form to change order */ - Frm_BeginForm (NextAction); - if (NextAction == ActSeeUseGbl) + HTM_TH_Empty (1); + + for (Order = DegTyp_ORDER_BY_DEGREE_TYPE; + Order <= DegTyp_ORDER_BY_NUM_DEGREES; + Order++) { - Figures.Scope = Scope; - Figures.FigureType = Fig_DEGREE_TYPES; - Fig_PutHiddenParamFigures (&Figures); + HTM_TH_Begin (1,1,Order == DegTyp_ORDER_BY_DEGREE_TYPE ? "LM" : + "RM"); + + /* Begin form to change order */ + Frm_BeginForm (NextAction); + if (NextAction == ActSeeUseGbl) + { + Figures.Scope = Scope; + Figures.FigureType = Fig_DEGREE_TYPES; + Fig_PutHiddenParamFigures (&Figures); + } + Par_PutHiddenParamUnsigned (NULL,"Order",(unsigned) Order); + + /* Link with the head of this column */ + HTM_BUTTON_SUBMIT_Begin (Txt_DEGREE_TYPES_HELP_ORDER[Order], + "BT_LINK TIT_TBL",NULL); + if (Order == SelectedOrder) + HTM_U_Begin (); + HTM_Txt (Txt_DEGREE_TYPES_ORDER[Order]); + if (Order == SelectedOrder) + HTM_U_End (); + HTM_BUTTON_End (); + + /* End form */ + Frm_EndForm (); + + HTM_TH_End (); } - Par_PutHiddenParamUnsigned (NULL,"Order",(unsigned) Order); - /* Link with the head of this column */ - HTM_BUTTON_SUBMIT_Begin (Txt_DEGREE_TYPES_HELP_ORDER[Order],"BT_LINK TIT_TBL",NULL); - if (Order == SelectedOrder) - HTM_U_Begin (); - HTM_Txt (Txt_DEGREE_TYPES_ORDER[Order]); - if (Order == SelectedOrder) - HTM_U_End (); - HTM_BUTTON_End (); - - /* End form */ - Frm_EndForm (); - - HTM_TH_End (); - } + HTM_TR_End (); } /*****************************************************************************/ /***************** Write header with fields of a degree type *****************/ /*****************************************************************************/ -static void DT_PutHeadDegreeTypesForEdition (void) +static void DegTyp_PutHeadDegreeTypesForEdition (void) { extern const char *Txt_Code; extern const char *Txt_Type_of_degree; @@ -559,148 +571,26 @@ static void DT_PutHeadDegreeTypesForEdition (void) HTM_TR_Begin (NULL); - HTM_TH (1,1,"BM",NULL); - HTM_TH (1,1,"CM",Txt_Code); - HTM_TH (1,1,"CM",Txt_Type_of_degree); - HTM_TH (1,1,"RM",Txt_Degrees); + HTM_TH (1,1,"BM",NULL); + HTM_TH (1,1,"CM",Txt_Code); + HTM_TH (1,1,"CM",Txt_Type_of_degree); + HTM_TH (1,1,"RM",Txt_Degrees); HTM_TR_End (); } -/*****************************************************************************/ -/************************** Create a new degree type *************************/ -/*****************************************************************************/ - -static void DT_CreateDegreeType (struct DegreeType *DegTyp) - { - /***** Create a new degree type *****/ - DB_QueryINSERT ("can not create a new type of degree", - "INSERT INTO deg_types" - " SET DegTypName='%s'", - DegTyp->DegTypName); - } - /*****************************************************************************/ /**************** Create a list with all the degree types ********************/ /*****************************************************************************/ -void DT_GetListDegreeTypes (Hie_Lvl_Level_t Scope,DT_Order_t Order) +void DegTyp_GetListDegreeTypes (HieLvl_Level_t Scope,DegTyp_Order_t Order) { - static const char *OrderBySubQuery[DT_NUM_ORDERS] = - { - [DT_ORDER_BY_DEGREE_TYPE] = "DegTypName", - [DT_ORDER_BY_NUM_DEGREES] = "NumDegs DESC,DegTypName", - }; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumTyp; /***** Get types of degree from database *****/ - switch (Scope) - { - case Hie_Lvl_SYS: - /* Get - all degree types with degrees - union with - all degree types without any degree */ - Gbl.DegTypes.Num = (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]); - break; - case Hie_Lvl_CTY: - /* Get only degree types with degrees in the current country */ - Gbl.DegTypes.Num = (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]); - break; - case Hie_Lvl_INS: - /* Get only degree types with degrees in the current institution */ - Gbl.DegTypes.Num = (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]); - break; - case Hie_Lvl_CTR: - /* Get only degree types with degrees in the current center */ - Gbl.DegTypes.Num = (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]); - break; - case Hie_Lvl_DEG: - case Hie_Lvl_CRS: - /* Get only degree types with degrees in the current degree */ - Gbl.DegTypes.Num = (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]); - break; - default: - Err_WrongScopeExit (); - break; - } + Gbl.DegTypes.Num = Deg_DB_GetDegreeTypes (&mysql_res,Scope,Order); /***** Get degree types *****/ if (Gbl.DegTypes.Num) @@ -740,7 +630,7 @@ void DT_GetListDegreeTypes (Hie_Lvl_Level_t Scope,DT_Order_t Order) /********* Free list of degree types and list of degrees of each type ********/ /*****************************************************************************/ -void DT_FreeListDegreeTypes (void) +void DegTyp_FreeListDegreeTypes (void) { /***** Free memory used by the list of degree types *****/ if (Gbl.DegTypes.Lst) @@ -755,32 +645,32 @@ void DT_FreeListDegreeTypes (void) /***************** Receive form to create a new degree type ******************/ /*****************************************************************************/ -void DT_ReceiveFormNewDegreeType (void) +void DegTyp_ReceiveFormNewDegreeType (void) { extern const char *Txt_The_type_of_degree_X_already_exists; extern const char *Txt_Created_new_type_of_degree_X; extern const char *Txt_You_must_specify_the_name_of_the_new_type_of_degree; /***** Degree type constructor *****/ - DT_EditingDegreeTypeConstructor (); + DegTyp_EditingDegreeTypeConstructor (); /***** Get parameters from form *****/ /* Get the name of degree type */ - Par_GetParToText ("DegTypName",DT_EditingDegTyp->DegTypName,Deg_MAX_BYTES_DEGREE_TYPE_NAME); + Par_GetParToText ("DegTypName",DegTyp_EditingDegTyp->DegTypName,DegTyp_MAX_BYTES_DEGREE_TYPE_NAME); - if (DT_EditingDegTyp->DegTypName[0]) // If there's a degree type name + if (DegTyp_EditingDegTyp->DegTypName[0]) // If there's a degree type name { /***** If name of degree type was in database... *****/ - if (DT_CheckIfDegreeTypeNameExists (DT_EditingDegTyp->DegTypName,-1L)) + if (Deg_DB_CheckIfDegreeTypeNameExists (DegTyp_EditingDegTyp->DegTypName,-1L)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_type_of_degree_X_already_exists, - DT_EditingDegTyp->DegTypName); + DegTyp_EditingDegTyp->DegTypName); else // Add new degree type to database { - DT_CreateDegreeType (DT_EditingDegTyp); + Deg_DB_CreateDegreeType (DegTyp_EditingDegTyp->DegTypName); Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_Created_new_type_of_degree_X, - DT_EditingDegTyp->DegTypName); + DegTyp_EditingDegTyp->DegTypName); } } else // If there is not a degree type name @@ -792,34 +682,34 @@ void DT_ReceiveFormNewDegreeType (void) /**************************** Remove a degree type ***************************/ /*****************************************************************************/ -void DT_RemoveDegreeType (void) +void DegTyp_RemoveDegreeType (void) { extern const char *Txt_To_remove_a_type_of_degree_you_must_first_remove_all_degrees_of_that_type; extern const char *Txt_Type_of_degree_X_removed; /***** Degree type constructor *****/ - DT_EditingDegreeTypeConstructor (); + DegTyp_EditingDegreeTypeConstructor (); /***** Get the code of the degree type *****/ - DT_EditingDegTyp->DegTypCod = DT_GetAndCheckParamOtherDegTypCod (1); + DegTyp_EditingDegTyp->DegTypCod = DegTyp_GetAndCheckParamOtherDegTypCod (1); /***** Get data of the degree type from database *****/ - if (!DT_GetDataOfDegreeTypeByCod (DT_EditingDegTyp)) + if (!DegTyp_GetDataOfDegreeTypeByCod (DegTyp_EditingDegTyp)) Err_WrongDegTypExit (); /***** Check if this degree type has degrees *****/ - if (DT_EditingDegTyp->NumDegs) // Degree type has degrees => don't remove + if (DegTyp_EditingDegTyp->NumDegs) // Degree type has degrees => don't remove Ale_CreateAlert (Ale_WARNING,NULL, Txt_To_remove_a_type_of_degree_you_must_first_remove_all_degrees_of_that_type); else // Degree type has no degrees => remove it { /***** Remove degree type *****/ - DT_RemoveDegreeTypeCompletely (DT_EditingDegTyp->DegTypCod); + DegTyp_RemoveDegreeTypeCompletely (DegTyp_EditingDegTyp->DegTypCod); /***** Write message to show the change made *****/ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_Type_of_degree_X_removed, - DT_EditingDegTyp->DegTypName); + DegTyp_EditingDegTyp->DegTypName); } } @@ -827,7 +717,7 @@ void DT_RemoveDegreeType (void) /***************** Write parameter with code of degree type ******************/ /*****************************************************************************/ -static void DT_PutParamOtherDegTypCod (void *DegTypCod) +static void DegTyp_PutParamOtherDegTypCod (void *DegTypCod) { if (DegTypCod) Par_PutHiddenParamLong (NULL,"OthDegTypCod",*((long *) DegTypCod)); @@ -837,7 +727,7 @@ static void DT_PutParamOtherDegTypCod (void *DegTypCod) /******************* Get parameter with code of degree type ******************/ /*****************************************************************************/ -long DT_GetAndCheckParamOtherDegTypCod (long MinCodAllowed) +long DegTyp_GetAndCheckParamOtherDegTypCod (long MinCodAllowed) { long DegTypCod; @@ -848,26 +738,11 @@ long DT_GetAndCheckParamOtherDegTypCod (long MinCodAllowed) return DegTypCod; } -/*****************************************************************************/ -/**************** Count number of degrees in a degree type ******************/ -/*****************************************************************************/ - -static unsigned DT_CountNumDegsOfType (long DegTypCod) - { - /***** Get number of degrees of a type from database *****/ - return (unsigned) - DB_QueryCOUNT ("can not get number of degrees of a type", - "SELECT COUNT(*)" - " FROM deg_degrees" - " WHERE DegTypCod=%ld", - DegTypCod); - } - /*****************************************************************************/ /****************** Get data of a degree type from its code ******************/ /*****************************************************************************/ -bool DT_GetDataOfDegreeTypeByCod (struct DegreeType *DegTyp) +bool DegTyp_GetDataOfDegreeTypeByCod (struct DegreeType *DegTyp) { /***** Trivial check: code of degree type should be >= 0 *****/ if (DegTyp->DegTypCod <= 0) @@ -878,16 +753,11 @@ bool DT_GetDataOfDegreeTypeByCod (struct DegreeType *DegTyp) } /***** Get the name of a type of degree from database *****/ - 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); + Deg_DB_GetDegTypeNameByCod (DegTyp); if (DegTyp->DegTypName[0]) { /* Count number of degrees of this type */ - DegTyp->NumDegs = DT_CountNumDegsOfType (DegTyp->DegTypCod); + DegTyp->NumDegs = Deg_DB_GetNumDegsOfType (DegTyp->DegTypCod); return true; } @@ -900,7 +770,7 @@ bool DT_GetDataOfDegreeTypeByCod (struct DegreeType *DegTyp) /******************** Remove a degree type and its degrees *******************/ /*****************************************************************************/ -static void DT_RemoveDegreeTypeCompletely (long DegTypCod) +static void DegTyp_RemoveDegreeTypeCompletely (long DegTypCod) { MYSQL_RES *mysql_res; unsigned NumDegs; @@ -908,14 +778,9 @@ static void DT_RemoveDegreeTypeCompletely (long DegTypCod) long DegCod; /***** Get degrees of a type from database *****/ - NumDegs = (unsigned) - DB_QuerySELECT (&mysql_res,"can not get degrees of a type", - "SELECT DegCod" - " FROM deg_degrees" - " WHERE DegTypCod=%ld", - DegTypCod); + NumDegs = Deg_DB_GetDegsOfType (&mysql_res,DegTypCod); - /* Get degrees of this type */ + /***** Remove degrees ******/ for (NumDeg = 0; NumDeg < NumDegs; NumDeg++) @@ -932,35 +797,32 @@ static void DT_RemoveDegreeTypeCompletely (long DegTypCod) DB_FreeMySQLResult (&mysql_res); /***** Remove the degree type *****/ - DB_QueryDELETE ("can not remove a type of degree", - "DELETE FROM deg_types" - " WHERE DegTypCod=%ld", - DegTypCod); + Deg_DB_RemoveDegTyp (DegTypCod); } /*****************************************************************************/ /**************************** Rename a degree type ***************************/ /*****************************************************************************/ -void DT_RenameDegreeType (void) +void DegTyp_RenameDegreeType (void) { extern const char *Txt_The_type_of_degree_X_already_exists; extern const char *Txt_The_type_of_degree_X_has_been_renamed_as_Y; extern const char *Txt_The_name_of_the_type_of_degree_X_has_not_changed; - char NewNameDegTyp[Deg_MAX_BYTES_DEGREE_TYPE_NAME + 1]; + char NewNameDegTyp[DegTyp_MAX_BYTES_DEGREE_TYPE_NAME + 1]; /***** Degree type constructor *****/ - DT_EditingDegreeTypeConstructor (); + DegTyp_EditingDegreeTypeConstructor (); /***** Get parameters from form *****/ /* Get the code of the degree type */ - DT_EditingDegTyp->DegTypCod = DT_GetAndCheckParamOtherDegTypCod (1); + DegTyp_EditingDegTyp->DegTypCod = DegTyp_GetAndCheckParamOtherDegTypCod (1); /* Get the new name for the degree type */ - Par_GetParToText ("DegTypName",NewNameDegTyp,Deg_MAX_BYTES_DEGREE_TYPE_NAME); + Par_GetParToText ("DegTypName",NewNameDegTyp,DegTyp_MAX_BYTES_DEGREE_TYPE_NAME); /***** Get from the database the old name of the degree type *****/ - if (!DT_GetDataOfDegreeTypeByCod (DT_EditingDegTyp)) + if (!DegTyp_GetDataOfDegreeTypeByCod (DegTyp_EditingDegTyp)) Err_WrongDegTypExit (); /***** Check if new name is empty *****/ @@ -968,27 +830,22 @@ void DT_RenameDegreeType (void) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (DT_EditingDegTyp->DegTypName,NewNameDegTyp)) // Different names + if (strcmp (DegTyp_EditingDegTyp->DegTypName,NewNameDegTyp)) // Different names { /***** If degree type was in database... *****/ - if (DT_CheckIfDegreeTypeNameExists (NewNameDegTyp,DT_EditingDegTyp->DegTypCod)) + if (Deg_DB_CheckIfDegreeTypeNameExists (NewNameDegTyp,DegTyp_EditingDegTyp->DegTypCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_type_of_degree_X_already_exists, NewNameDegTyp); else { /* Update the table changing old name by new name */ - DB_QueryUPDATE ("can not update the type of a degree", - "UPDATE deg_types" - " SET DegTypName='%s'" - " WHERE DegTypCod=%ld", - NewNameDegTyp, - DT_EditingDegTyp->DegTypCod); + Deg_DB_UpdateDegTypName (DegTyp_EditingDegTyp->DegTypCod,NewNameDegTyp); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_type_of_degree_X_has_been_renamed_as_Y, - DT_EditingDegTyp->DegTypName,NewNameDegTyp); + DegTyp_EditingDegTyp->DegTypName,NewNameDegTyp); } @@ -1002,68 +859,52 @@ void DT_RenameDegreeType (void) Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Set degree type name *****/ - Str_Copy (DT_EditingDegTyp->DegTypName,NewNameDegTyp, - sizeof (DT_EditingDegTyp->DegTypName) - 1); - } - -/*****************************************************************************/ -/****************** Check if name of degree type exists **********************/ -/*****************************************************************************/ - -static bool DT_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); + Str_Copy (DegTyp_EditingDegTyp->DegTypName,NewNameDegTyp, + sizeof (DegTyp_EditingDegTyp->DegTypName) - 1); } /*****************************************************************************/ /********** Show message of success after changing a degree type *************/ /*****************************************************************************/ -void DT_ContEditAfterChgDegTyp (void) +void DegTyp_ContEditAfterChgDegTyp (void) { /***** Show possible delayed alerts *****/ Ale_ShowAlerts (NULL); /***** Show the form again *****/ - DT_EditDegreeTypesInternal (); + DegTyp_EditDegreeTypesInternal (); /***** Degree type destructor *****/ - DT_EditingDegreeTypeDestructor (); + DegTyp_EditingDegreeTypeDestructor (); } /*****************************************************************************/ /********************* Degree type constructor/destructor ********************/ /*****************************************************************************/ -static void DT_EditingDegreeTypeConstructor (void) +static void DegTyp_EditingDegreeTypeConstructor (void) { /***** Pointer must be NULL *****/ - if (DT_EditingDegTyp != NULL) + if (DegTyp_EditingDegTyp != NULL) Err_WrongDegTypExit (); /***** Allocate memory for degree type *****/ - if ((DT_EditingDegTyp = malloc (sizeof (*DT_EditingDegTyp))) == NULL) + if ((DegTyp_EditingDegTyp = malloc (sizeof (*DegTyp_EditingDegTyp))) == NULL) Err_NotEnoughMemoryExit (); /***** Reset degree type *****/ - DT_EditingDegTyp->DegTypCod = -1L; - DT_EditingDegTyp->DegTypName[0] = '\0'; - DT_EditingDegTyp->NumDegs = 0; + DegTyp_EditingDegTyp->DegTypCod = -1L; + DegTyp_EditingDegTyp->DegTypName[0] = '\0'; + DegTyp_EditingDegTyp->NumDegs = 0; } -static void DT_EditingDegreeTypeDestructor (void) +static void DegTyp_EditingDegreeTypeDestructor (void) { /***** Free memory used for degree type *****/ - if (DT_EditingDegTyp != NULL) + if (DegTyp_EditingDegTyp != NULL) { - free (DT_EditingDegTyp); - DT_EditingDegTyp = NULL; + free (DegTyp_EditingDegTyp); + DegTyp_EditingDegTyp = NULL; } } diff --git a/swad_degree_type.h b/swad_degree_type.h index 0a5c4bcd..9b1dd648 100644 --- a/swad_degree_type.h +++ b/swad_degree_type.h @@ -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 diff --git a/swad_enrolment.c b/swad_enrolment.c index 11593ab9..77f2deeb 100644 --- a/swad_enrolment.c +++ b/swad_enrolment.c @@ -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<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<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<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<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<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<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<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<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<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; diff --git a/swad_exam.c b/swad_exam.c index 3e8485cc..0d0f1199 100644 --- a/swad_exam.c +++ b/swad_exam.c @@ -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" diff --git a/swad_exam.h b/swad_exam.h index 93dc4f70..407503e8 100644 --- a/swad_exam.h +++ b/swad_exam.h @@ -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 diff --git a/swad_figure.c b/swad_figure.c index d9e0c320..b8f2c432 100644 --- a/swad_figure.c +++ b/swad_figure.c @@ -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)" diff --git a/swad_figure.h b/swad_figure.h index 6b33ce58..20ded141 100644 --- a/swad_figure.h +++ b/swad_figure.h @@ -74,7 +74,7 @@ typedef enum struct Fig_Figures { - Hie_Lvl_Level_t Scope; + HieLvl_Level_t Scope; Fig_FigureType_t FigureType; }; diff --git a/swad_figure_cache.c b/swad_figure_cache.c index 54d6de64..a4a91231 100644 --- a/swad_figure_cache.c +++ b/swad_figure_cache.c @@ -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 *****/ diff --git a/swad_figure_cache.h b/swad_figure_cache.h index 6af2737a..9fcb0a54 100644 --- a/swad_figure_cache.h +++ b/swad_figure_cache.h @@ -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 diff --git a/swad_file_browser.c b/swad_file_browser.c index 8beb8337..d650c9b8 100644 --- a/swad_file_browser.c +++ b/swad_file_browser.c @@ -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 (" %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 (" %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 (" %s",DegShortName); HTM_BUTTON_End (); Frm_EndForm (); diff --git a/swad_follow_database.c b/swad_follow_database.c index d9eeee08..903dee82 100644 --- a/swad_follow_database.c +++ b/swad_follow_database.c @@ -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] diff --git a/swad_form.c b/swad_form.c index 45faed38..382e1878 100644 --- a/swad_form.c +++ b/swad_form.c @@ -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), "", Gbl.Hierarchy.Cty.CtyCod); break; - case Hie_Lvl_INS: // Institution + case HieLvl_INS: // Institution snprintf (ParamLocation,sizeof (ParamLocation), "", Gbl.Hierarchy.Ins.InsCod); break; - case Hie_Lvl_CTR: // Center + case HieLvl_CTR: // Center snprintf (ParamLocation,sizeof (ParamLocation), "", Gbl.Hierarchy.Ctr.CtrCod); break; - case Hie_Lvl_DEG: // Degree + case HieLvl_DEG: // Degree snprintf (ParamLocation,sizeof (ParamLocation), "", Gbl.Hierarchy.Deg.DegCod); break; - case Hie_Lvl_CRS: // Course + case HieLvl_CRS: // Course snprintf (ParamLocation,sizeof (ParamLocation), "", Gbl.Hierarchy.Crs.CrsCod); diff --git a/swad_forum.c b/swad_forum.c index 9666106e..23c0b1c2 100644 --- a/swad_forum.c +++ b/swad_forum.c @@ -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 *****/ diff --git a/swad_forum.h b/swad_forum.h index d42e1887..438f5865 100644 --- a/swad_forum.h +++ b/swad_forum.h @@ -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 diff --git a/swad_game.c b/swad_game.c index c90741ba..afc1757b 100644 --- a/swad_game.c +++ b/swad_game.c @@ -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" diff --git a/swad_game.h b/swad_game.h index 9093badc..5cb8e14b 100644 --- a/swad_game.h +++ b/swad_game.h @@ -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); diff --git a/swad_global.c b/swad_global.c index 09d7444e..b7fcbb7f 100644 --- a/swad_global.c +++ b/swad_global.c @@ -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 (); diff --git a/swad_global.h b/swad_global.h index 4fc1f229..cbffb384 100644 --- a/swad_global.h +++ b/swad_global.h @@ -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 diff --git a/swad_help.c b/swad_help.c index 90dcd7df..6120bd9d 100644 --- a/swad_help.c +++ b/swad_help.c @@ -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, diff --git a/swad_hierarchy.c b/swad_hierarchy.c index c90a0010..0d20414e 100644 --- a/swad_hierarchy.c +++ b/swad_hierarchy.c @@ -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 (" %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) { diff --git a/swad_hierarchy_config.c b/swad_hierarchy_config.c index fe977891..74216223 100644 --- a/swad_hierarchy_config.c +++ b/swad_hierarchy_config.c @@ -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]; diff --git a/swad_hierarchy_config.h b/swad_hierarchy_config.h index 9e67acf4..69a07d77 100644 --- a/swad_hierarchy_config.h +++ b/swad_hierarchy_config.h @@ -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 diff --git a/swad_hierarchy_level.h b/swad_hierarchy_level.h index ccd3a7c7..e458e38a 100644 --- a/swad_hierarchy_level.h +++ b/swad_hierarchy_level.h @@ -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 *****************************/ diff --git a/swad_indicator.c b/swad_indicator.c index ad734aca..19af4ecf 100644 --- a/swad_indicator.c +++ b/swad_indicator.c @@ -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); diff --git a/swad_institution.c b/swad_institution.c index d8524b77..13956490 100644 --- a/swad_institution.c +++ b/swad_institution.c @@ -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 (" %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] = { diff --git a/swad_institution.h b/swad_institution.h index 24a1c280..fae4f753 100644 --- a/swad_institution.h +++ b/swad_institution.h @@ -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); diff --git a/swad_institution_config.c b/swad_institution_config.c index e1d756cf..72dd2084 100644 --- a/swad_institution_config.c +++ b/swad_institution_config.c @@ -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); } /*****************************************************************************/ diff --git a/swad_layout.c b/swad_layout.c index d1e6d60e..9c0cfa42 100644 --- a/swad_layout.c +++ b/swad_layout.c @@ -445,7 +445,7 @@ static void Lay_WritePageTitle (void) if (Gbl.Params.GetMethod && Gbl.Hierarchy.Deg.DegCod > 0) { HTM_TxtF ("%s > %s",Cfg_PLATFORM_SHORT_NAME,Gbl.Hierarchy.Deg.ShrtName); - if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) + if (Gbl.Hierarchy.Level == HieLvl_CRS) HTM_TxtF (" > %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 (); } diff --git a/swad_log.c b/swad_log.c index 2ecb526d..a8973828 100644 --- a/swad_log.c +++ b/swad_log.c @@ -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); diff --git a/swad_logo.c b/swad_logo.c index 67ce0111..f9e97cde 100644 --- a/swad_logo.c +++ b/swad_logo.c @@ -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; diff --git a/swad_logo.h b/swad_logo.h index d4f57f45..2c21aced 100644 --- a/swad_logo.h +++ b/swad_logo.h @@ -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 diff --git a/swad_mark.c b/swad_mark.c index e130602b..e3270ed9 100644 --- a/swad_mark.c +++ b/swad_mark.c @@ -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); diff --git a/swad_message.c b/swad_message.c index 673ecf15..52007d16 100644 --- a/swad_message.c +++ b/swad_message.c @@ -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; } diff --git a/swad_message.h b/swad_message.h index 8522365c..df8e1920 100644 --- a/swad_message.h +++ b/swad_message.h @@ -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], diff --git a/swad_network.c b/swad_network.c index f16f2267..05552493 100644 --- a/swad_network.c +++ b/swad_network.c @@ -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", diff --git a/swad_notice.c b/swad_notice.c index 01df8c44..9d2677df 100644 --- a/swad_notice.c +++ b/swad_notice.c @@ -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] diff --git a/swad_notice.h b/swad_notice.h index 3c041a4f..aeb1d135 100644 --- a/swad_notice.h +++ b/swad_notice.h @@ -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); diff --git a/swad_notification.c b/swad_notification.c index 48cecb14..edc691ca 100644 --- a/swad_notification.c +++ b/swad_notification.c @@ -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<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; } diff --git a/swad_photo.c b/swad_photo.c index 0dbbac59..d0a5321f 100644 --- a/swad_photo.c +++ b/swad_photo.c @@ -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 (" %s",Deg.FullName); } HTM_TD_End (); diff --git a/swad_profile.c b/swad_profile.c index 557b100a..dad78558 100644 --- a/swad_profile.c +++ b/swad_profile.c @@ -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 " diff --git a/swad_program.c b/swad_program.c index 958f1447..f150fbb7 100644 --- a/swad_program.c +++ b/swad_program.c @@ -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(*)" diff --git a/swad_program.h b/swad_program.h index a3868074..9c818c67 100644 --- a/swad_program.h +++ b/swad_program.h @@ -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 diff --git a/swad_project.c b/swad_project.c index 21b7f528..b93f8ea4 100644 --- a/swad_project.c +++ b/swad_project.c @@ -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(*)" diff --git a/swad_project.h b/swad_project.h index 89cc723e..e00795b8 100644 --- a/swad_project.h +++ b/swad_project.h @@ -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 diff --git a/swad_record.c b/swad_record.c index cd4fc60e..0b168cae 100644 --- a/swad_record.c +++ b/swad_record.c @@ -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: diff --git a/swad_report.c b/swad_report.c index e68214c8..838fe50b 100644 --- a/swad_report.c +++ b/swad_report.c @@ -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); } diff --git a/swad_role.c b/swad_role.c index fd673a9e..7bb78ff4 100644 --- a/swad_role.c +++ b/swad_role.c @@ -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); diff --git a/swad_scope.c b/swad_scope.c index c6498977..b9c43ec0 100644 --- a/swad_scope.c +++ b/swad_scope.c @@ -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]; } diff --git a/swad_scope.h b/swad_scope.h index 99c43f94..9847396a 100644 --- a/swad_scope.h +++ b/swad_scope.h @@ -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 diff --git a/swad_search.c b/swad_search.c index 18be0a26..315c71c1 100644 --- a/swad_search.c +++ b/swad_search.c @@ -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); } diff --git a/swad_statistic.c b/swad_statistic.c index 7f52525a..f564aae4 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -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); diff --git a/swad_survey.c b/swad_survey.c index 77d1ced2..4c05cc73 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -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 %s",Txt_Country,Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]); break; - case Hie_Lvl_INS: // Institution + case HieLvl_INS: // Institution HTM_TxtF ("%s %s",Txt_Institution,Gbl.Hierarchy.Ins.ShrtName); break; - case Hie_Lvl_CTR: // Center + case HieLvl_CTR: // Center HTM_TxtF ("%s %s",Txt_Center,Gbl.Hierarchy.Ctr.ShrtName); break; - case Hie_Lvl_DEG: // Degree + case HieLvl_DEG: // Degree HTM_TxtF ("%s %s",Txt_Degree,Gbl.Hierarchy.Deg.ShrtName); break; - case Hie_Lvl_CRS: // Course + case HieLvl_CRS: // Course HTM_TxtF ("%s %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 diff --git a/swad_survey.h b/swad_survey.h index b152a958..72a667c5 100644 --- a/swad_survey.h +++ b/swad_survey.h @@ -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 diff --git a/swad_system_config.c b/swad_system_config.c index 3fa7926c..323836a0 100644 --- a/swad_system_config.c +++ b/swad_system_config.c @@ -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 *****/ diff --git a/swad_tab.c b/swad_tab.c index 3e645497..07b69e77 100644 --- a/swad_tab.c +++ b/swad_tab.c @@ -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 diff --git a/swad_test.c b/swad_test.c index 72e98114..97ebfe17 100644 --- a/swad_test.c +++ b/swad_test.c @@ -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", diff --git a/swad_text.c b/swad_text.c index 25e3041f..9aeab173 100644 --- a/swad_text.c +++ b/swad_text.c @@ -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ó" #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ó" #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 diff --git a/swad_user.c b/swad_user.c index 21b90722..01c29da6 100644 --- a/swad_user.c +++ b/swad_user.c @@ -57,6 +57,7 @@ #include "swad_group.h" #include "swad_help.h" #include "swad_hierarchy.h" +#include "swad_hierarchy_level.h" #include "swad_HTML.h" #include "swad_ID.h" #include "swad_language.h" @@ -191,9 +192,9 @@ static void Usr_WriteUsrData (const char *BgColor, static void Usr_BuildQueryToGetUsrsLstCrs (char **Query,Rol_Role_t Role); -static void Usr_GetAdmsLst (Hie_Lvl_Level_t Scope); -static void Usr_GetGstsLst (Hie_Lvl_Level_t Scope); -static void Usr_GetListUsrsFromQuery (char *Query,Rol_Role_t Role,Hie_Lvl_Level_t Scope); +static void Usr_GetAdmsLst (HieLvl_Level_t Scope); +static void Usr_GetGstsLst (HieLvl_Level_t Scope); +static void Usr_GetListUsrsFromQuery (char *Query,Rol_Role_t Role,HieLvl_Level_t Scope); static void Usr_AllocateUsrsList (Rol_Role_t Role); static void Usr_PutButtonToConfirmIWantToSeeBigList (unsigned NumUsrs, @@ -272,8 +273,8 @@ static void Usr_DrawClassPhoto (Usr_ClassPhotoType_t ClassPhotoType, bool PutCheckBoxToSelectUsr); static FigCch_FigureCached_t Usr_GetFigureNumUsrsInCrss (unsigned Roles); -static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Role); -static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Role); +static double Usr_GetNumCrssPerUsr (HieLvl_Level_t Scope,long Cod,Rol_Role_t Role); +static double Usr_GetNumUsrsPerCrs (HieLvl_Level_t Scope,long Cod,Rol_Role_t Role); /*****************************************************************************/ /**** Show alert about number of clicks remaining before sending my photo ****/ @@ -377,7 +378,7 @@ void Usr_ResetUsrDataExceptUsrCodAndIDs (struct UsrData *UsrDat) void Usr_ResetMyLastData (void) { Gbl.Usrs.Me.UsrLast.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT; - Gbl.Usrs.Me.UsrLast.LastHie.Scope = Hie_Lvl_UNK; + Gbl.Usrs.Me.UsrLast.LastHie.Scope = HieLvl_UNK; Gbl.Usrs.Me.UsrLast.LastHie.Cod = -1L; Gbl.Usrs.Me.UsrLast.LastAct = ActUnk; Gbl.Usrs.Me.UsrLast.LastRole = Rol_UNK; @@ -796,23 +797,23 @@ static void Usr_GetMyLastData (void) Gbl.Usrs.Me.UsrLast.LastHie.Scope = Sco_GetScopeFromDBStr (row[1]); switch (Gbl.Usrs.Me.UsrLast.LastHie.Scope) { - case Hie_Lvl_SYS: // System + case HieLvl_SYS: // System Gbl.Usrs.Me.UsrLast.LastHie.Cod = -1L; break; - case Hie_Lvl_CTY: // Country - case Hie_Lvl_INS: // Institution - case Hie_Lvl_CTR: // Center - case Hie_Lvl_DEG: // Degree - case Hie_Lvl_CRS: // Course + case HieLvl_CTY: // Country + case HieLvl_INS: // Institution + case HieLvl_CTR: // Center + case HieLvl_DEG: // Degree + case HieLvl_CRS: // Course Gbl.Usrs.Me.UsrLast.LastHie.Cod = Str_ConvertStrCodToLongCod (row[2]); if (Gbl.Usrs.Me.UsrLast.LastHie.Cod <= 0) { - Gbl.Usrs.Me.UsrLast.LastHie.Scope = Hie_Lvl_UNK; + Gbl.Usrs.Me.UsrLast.LastHie.Scope = HieLvl_UNK; Gbl.Usrs.Me.UsrLast.LastHie.Cod = -1L; } break; default: - Gbl.Usrs.Me.UsrLast.LastHie.Scope = Hie_Lvl_UNK; + Gbl.Usrs.Me.UsrLast.LastHie.Scope = HieLvl_UNK; Gbl.Usrs.Me.UsrLast.LastHie.Cod = -1L; break; } @@ -917,7 +918,7 @@ void Usr_FlushCachesUsr (void) /***** Check if a user is an administrator of a degree/center/institution ****/ /*****************************************************************************/ -bool Usr_CheckIfUsrIsAdm (long UsrCod,Hie_Lvl_Level_t Scope,long Cod) +bool Usr_CheckIfUsrIsAdm (long UsrCod,HieLvl_Level_t Scope,long Cod) { /***** Get if a user is administrator of a degree from database *****/ return (DB_QueryCOUNT ("can not check if a user is administrator", @@ -960,7 +961,7 @@ bool Usr_CheckIfUsrIsSuperuser (long UsrCod) " WHERE UsrCod=%ld" " AND Scope='%s'", UsrCod, - Sco_GetDBStrFromScope (Hie_Lvl_SYS)) != 0); + Sco_GetDBStrFromScope (HieLvl_SYS)) != 0); return Gbl.Cache.UsrIsSuperuser.IsSuperuser; } @@ -3433,13 +3434,13 @@ static void Usr_SetMyPrefsAndRoles (void) /***** Location in hierarchy and role are stored in session, but in login the are got from user's last data *****/ - if (Gbl.Hierarchy.Level == Hie_Lvl_SYS) // No country selected + if (Gbl.Hierarchy.Level == HieLvl_SYS) // No country selected { /***** Copy last hierarchy to current hierarchy *****/ Hie_SetHierarchyFromUsrLastHierarchy (); /* Course may have changed ==> get my role in current course again */ - if (Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected + if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs = Rol_GetMyRoleInCrs (Gbl.Hierarchy.Crs.CrsCod); // role and action will be got from last data @@ -3877,7 +3878,7 @@ static void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames) " ", NULL,true,UsrDat->Accepted); - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) { /***** Write the groups a the que pertenece the student *****/ for (NumGrpTyp = 0; @@ -4217,7 +4218,7 @@ unsigned Usr_GetNumUsrsWhoDontClaimToBelongToAnyCty (void) " FROM usr_data" " WHERE CtyCod<0"); Gbl.Cache.NumUsrsWhoDontClaimToBelongToAnyCty.Valid = true; - FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTY,Hie_Lvl_CTY,-1L, + FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTY,HieLvl_CTY,-1L, FigCch_UNSIGNED,&Gbl.Cache.NumUsrsWhoDontClaimToBelongToAnyCty.NumUsrs); return Gbl.Cache.NumUsrsWhoDontClaimToBelongToAnyCty.NumUsrs; } @@ -4227,7 +4228,7 @@ unsigned Usr_GetCachedNumUsrsWhoDontClaimToBelongToAnyCty (void) unsigned NumUsrs; /***** Get number of user who don't claim to belong to any country from cache *****/ - if (!FigCch_GetFigureFromCache (FigCch_NUM_USRS_BELONG_CTY,Hie_Lvl_CTY,-1L, + if (!FigCch_GetFigureFromCache (FigCch_NUM_USRS_BELONG_CTY,HieLvl_CTY,-1L, FigCch_UNSIGNED,&NumUsrs)) /***** Get current number of user who don't claim to belong to any country from database and update cache *****/ NumUsrs = Usr_GetNumUsrsWhoDontClaimToBelongToAnyCty (); @@ -4258,7 +4259,7 @@ unsigned Usr_GetNumUsrsWhoClaimToBelongToAnotherCty (void) " FROM usr_data" " WHERE CtyCod=0"); Gbl.Cache.NumUsrsWhoClaimToBelongToAnotherCty.Valid = true; - FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTY,Hie_Lvl_CTY,0, + FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTY,HieLvl_CTY,0, FigCch_UNSIGNED,&Gbl.Cache.NumUsrsWhoClaimToBelongToAnotherCty.NumUsrs); return Gbl.Cache.NumUsrsWhoClaimToBelongToAnotherCty.NumUsrs; } @@ -4268,7 +4269,7 @@ unsigned Usr_GetCachedNumUsrsWhoClaimToBelongToAnotherCty (void) unsigned NumUsrsCty; /***** Get number of users who claim to belong to another country form cache *****/ - if (!FigCch_GetFigureFromCache (FigCch_NUM_USRS_BELONG_CTY,Hie_Lvl_CTY,0, + if (!FigCch_GetFigureFromCache (FigCch_NUM_USRS_BELONG_CTY,HieLvl_CTY,0, FigCch_UNSIGNED,&NumUsrsCty)) /***** Get current number of users who claim to belong to another country from database and update cache *****/ NumUsrsCty = Usr_GetNumUsrsWhoClaimToBelongToAnotherCty (); @@ -4315,7 +4316,7 @@ unsigned Usr_GetNumUsrsWhoClaimToBelongToCty (struct Cty_Countr *Cty) " WHERE CtyCod=%ld", Cty->CtyCod); Cty->NumUsrsWhoClaimToBelongToCty.Valid = true; - FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTY,Hie_Lvl_CTY,Gbl.Cache.NumUsrsWhoClaimToBelongToCty.CtyCod, + FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTY,HieLvl_CTY,Gbl.Cache.NumUsrsWhoClaimToBelongToCty.CtyCod, FigCch_UNSIGNED,&Gbl.Cache.NumUsrsWhoClaimToBelongToCty.NumUsrs); return Cty->NumUsrsWhoClaimToBelongToCty.NumUsrs; } @@ -4325,7 +4326,7 @@ unsigned Usr_GetCachedNumUsrsWhoClaimToBelongToCty (struct Cty_Countr *Cty) unsigned NumUsrsCty; /***** Get number of users who claim to belong to country from cache ******/ - if (!FigCch_GetFigureFromCache (FigCch_NUM_USRS_BELONG_CTY,Hie_Lvl_CTY,Cty->CtyCod, + if (!FigCch_GetFigureFromCache (FigCch_NUM_USRS_BELONG_CTY,HieLvl_CTY,Cty->CtyCod, FigCch_UNSIGNED,&NumUsrsCty)) /***** Get current number of users who claim to belong to country from database and update cache ******/ NumUsrsCty = Usr_GetNumUsrsWhoClaimToBelongToCty (Cty); @@ -4372,7 +4373,7 @@ unsigned Usr_GetNumUsrsWhoClaimToBelongToIns (struct Ins_Instit *Ins) " WHERE InsCod=%ld", Ins->InsCod); Ins->NumUsrsWhoClaimToBelongToIns.Valid = true; - FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_INS,Hie_Lvl_INS,Gbl.Cache.NumUsrsWhoClaimToBelongToIns.InsCod, + FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_INS,HieLvl_INS,Gbl.Cache.NumUsrsWhoClaimToBelongToIns.InsCod, FigCch_UNSIGNED,&Gbl.Cache.NumUsrsWhoClaimToBelongToIns.NumUsrs); return Ins->NumUsrsWhoClaimToBelongToIns.NumUsrs; } @@ -4382,7 +4383,7 @@ unsigned Usr_GetCachedNumUsrsWhoClaimToBelongToIns (struct Ins_Instit *Ins) unsigned NumUsrsIns; /***** Get number of users who claim to belong to institution from cache *****/ - if (!FigCch_GetFigureFromCache (FigCch_NUM_USRS_BELONG_INS,Hie_Lvl_INS,Ins->InsCod, + if (!FigCch_GetFigureFromCache (FigCch_NUM_USRS_BELONG_INS,HieLvl_INS,Ins->InsCod, FigCch_UNSIGNED,&NumUsrsIns)) /***** Get current number of users who claim to belong to institution from database and update cache *****/ NumUsrsIns = Usr_GetNumUsrsWhoClaimToBelongToIns (Ins); @@ -4428,7 +4429,7 @@ unsigned Usr_GetNumUsrsWhoClaimToBelongToCtr (struct Ctr_Center *Ctr) " FROM usr_data" " WHERE CtrCod=%ld", Ctr->CtrCod); - FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTR,Hie_Lvl_CTR,Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.CtrCod, + FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTR,HieLvl_CTR,Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.CtrCod, FigCch_UNSIGNED,&Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.NumUsrs); return Ctr->NumUsrsWhoClaimToBelongToCtr.NumUsrs; } @@ -4438,7 +4439,7 @@ unsigned Usr_GetCachedNumUsrsWhoClaimToBelongToCtr (struct Ctr_Center *Ctr) unsigned NumUsrsCtr; /***** Get number of users who claim to belong to center from cache *****/ - if (!FigCch_GetFigureFromCache (FigCch_NUM_USRS_BELONG_CTR,Hie_Lvl_CTR,Ctr->CtrCod, + if (!FigCch_GetFigureFromCache (FigCch_NUM_USRS_BELONG_CTR,HieLvl_CTR,Ctr->CtrCod, FigCch_UNSIGNED,&NumUsrsCtr)) /***** Get current number of users who claim to belong to center from database and update cache *****/ NumUsrsCtr = Usr_GetNumUsrsWhoClaimToBelongToCtr (Ctr); @@ -4485,8 +4486,8 @@ static void Usr_BuildQueryToGetUsrsLstCrs (char **Query,Rol_Role_t Role) row[ 8]: usr_data.PhotoVisibility row[ 9]: usr_data.CtyCod row[10]: usr_data.InsCod - row[11]: crs_users.Role (only if Scope == Hie_Lvl_CRS) - row[12]: crs_users.Accepted (only if Scope == Hie_Lvl_CRS) + row[11]: crs_users.Role (only if Scope == HieLvl_CRS) + row[12]: crs_users.Accepted (only if Scope == HieLvl_CRS) */ /***** If there are no groups selected, don't do anything *****/ @@ -4644,7 +4645,7 @@ static void Usr_BuildQueryToGetUsrsLstCrs (char **Query,Rol_Role_t Role) // - Rol_NET Non-editing teacher // - Rol_TCH Teacher -void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role) +void Usr_GetListUsrs (HieLvl_Level_t Scope,Rol_Role_t Role) { char *Query = NULL; const char *QueryFields = @@ -4671,14 +4672,14 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role) row[ 8]: usr_data.PhotoVisibility row[ 9]: usr_data.CtyCod row[10]: usr_data.InsCod - row[11]: crs_users.Role (only if Scope == Hie_Lvl_CRS) - row[12]: crs_users.Accepted (only if Scope == Hie_Lvl_CRS) + row[11]: crs_users.Role (only if Scope == HieLvl_CRS) + row[12]: crs_users.Accepted (only if Scope == HieLvl_CRS) */ /***** Build query *****/ switch (Scope) { - case Hie_Lvl_SYS: + case HieLvl_SYS: /* Get users in courses from the whole platform */ DB_BuildQuery (&Query, "SELECT %s" @@ -4693,7 +4694,7 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role) QueryFields, (unsigned) Role); break; - case Hie_Lvl_CTY: + case HieLvl_CTY: /* Get users in courses from the current country */ DB_BuildQuery (&Query, "SELECT %s" @@ -4718,7 +4719,7 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role) (unsigned) Role, Gbl.Hierarchy.Cty.CtyCod); break; - case Hie_Lvl_INS: + case HieLvl_INS: /* Get users in courses from the current institution */ DB_BuildQuery (&Query, "SELECT %s" @@ -4741,7 +4742,7 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role) (unsigned) Role, Gbl.Hierarchy.Ins.InsCod); break; - case Hie_Lvl_CTR: + case HieLvl_CTR: /* Get users in courses from the current center */ DB_BuildQuery (&Query, "SELECT %s" @@ -4762,7 +4763,7 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role) (unsigned) Role, Gbl.Hierarchy.Ctr.CtrCod); break; - case Hie_Lvl_DEG: + case HieLvl_DEG: /* Get users in courses from the current degree */ DB_BuildQuery (&Query, "SELECT %s" @@ -4781,7 +4782,7 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role) (unsigned) Role, Gbl.Hierarchy.Deg.DegCod); break; - case Hie_Lvl_CRS: + case HieLvl_CRS: /* Get users from the current course */ Usr_BuildQueryToGetUsrsLstCrs (&Query,Role); break; @@ -4829,8 +4830,8 @@ void Usr_SearchListUsrs (Rol_Role_t Role) row[ 8]: usr_data.PhotoVisibility row[ 9]: usr_data.CtyCod row[10]: usr_data.InsCod - row[11]: crs_users.Role (only if Scope == Hie_Lvl_CRS) - row[12]: crs_users.Accepted (only if Scope == Hie_Lvl_CRS) + row[11]: crs_users.Role (only if Scope == HieLvl_CRS) + row[12]: crs_users.Accepted (only if Scope == HieLvl_CRS) */ const char *OrderQuery = "candidate_users.UsrCod=usr_data.UsrCod" " ORDER BY usr_data.Surname1," @@ -4847,7 +4848,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) case Rol_UNK: // Here Rol_UNK means any rol (role does not matter) switch (Gbl.Scope.Current) { - case Hie_Lvl_SYS: + case HieLvl_SYS: /* Search users from the whole platform */ DB_BuildQuery (&Query, "SELECT %s" @@ -4855,7 +4856,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) " WHERE %s", QueryFields,OrderQuery); break; - case Hie_Lvl_CTY: + case HieLvl_CTY: /* Search users in courses from the current country */ DB_BuildQuery (&Query, "SELECT %s" @@ -4877,7 +4878,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) Gbl.Hierarchy.Cty.CtyCod, OrderQuery); break; - case Hie_Lvl_INS: + case HieLvl_INS: /* Search users in courses from the current institution */ DB_BuildQuery (&Query, "SELECT %s" @@ -4897,7 +4898,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) Gbl.Hierarchy.Ins.InsCod, OrderQuery); break; - case Hie_Lvl_CTR: + case HieLvl_CTR: /* Search users in courses from the current center */ DB_BuildQuery (&Query, "SELECT %s" @@ -4915,7 +4916,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) Gbl.Hierarchy.Ctr.CtrCod, OrderQuery); break; - case Hie_Lvl_DEG: + case HieLvl_DEG: /* Search users in courses from the current degree */ DB_BuildQuery (&Query, "SELECT %s" @@ -4931,7 +4932,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) Gbl.Hierarchy.Deg.DegCod, OrderQuery); break; - case Hie_Lvl_CRS: + case HieLvl_CRS: /* Search users in courses from the current course */ DB_BuildQuery (&Query, "SELECT %s," @@ -4991,7 +4992,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) } switch (Gbl.Scope.Current) { - case Hie_Lvl_SYS: + case HieLvl_SYS: /* Search users in courses from the whole platform */ DB_BuildQuery (&Query, "SELECT %s" @@ -5005,7 +5006,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) SubQueryRole, OrderQuery); break; - case Hie_Lvl_CTY: + case HieLvl_CTY: /* Search users in courses from the current country */ DB_BuildQuery (&Query, "SELECT %s" @@ -5029,7 +5030,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) Gbl.Hierarchy.Cty.CtyCod, OrderQuery); break; - case Hie_Lvl_INS: + case HieLvl_INS: /* Search users in courses from the current institution */ DB_BuildQuery (&Query, "SELECT %s" @@ -5051,7 +5052,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) Gbl.Hierarchy.Ins.InsCod, OrderQuery); break; - case Hie_Lvl_CTR: + case HieLvl_CTR: /* Search users in courses from the current center */ DB_BuildQuery (&Query, "SELECT %s" @@ -5071,7 +5072,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) Gbl.Hierarchy.Ctr.CtrCod, OrderQuery); break; - case Hie_Lvl_DEG: + case HieLvl_DEG: /* Search users in courses from the current degree */ DB_BuildQuery (&Query, "SELECT %s" @@ -5089,7 +5090,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) Gbl.Hierarchy.Deg.DegCod, OrderQuery); break; - case Hie_Lvl_CRS: + case HieLvl_CRS: /* Search users in courses from the current course */ DB_BuildQuery (&Query, "SELECT %s," @@ -5165,7 +5166,7 @@ void Usr_DropTmpTableWithCandidateUsrs (void) /******************** Get list with data of administrators *******************/ /*****************************************************************************/ -static void Usr_GetAdmsLst (Hie_Lvl_Level_t Scope) +static void Usr_GetAdmsLst (HieLvl_Level_t Scope) { const char *QueryFields = "UsrCod," @@ -5201,7 +5202,7 @@ static void Usr_GetAdmsLst (Hie_Lvl_Level_t Scope) // SELECT... WHERE (...) OR (...) <-- very slow switch (Scope) { - case Hie_Lvl_SYS: // All admins + case HieLvl_SYS: // All admins DB_BuildQuery (&Query, "SELECT %s" " FROM usr_data" @@ -5214,7 +5215,7 @@ static void Usr_GetAdmsLst (Hie_Lvl_Level_t Scope) "UsrCod", QueryFields); break; - case Hie_Lvl_CTY: // System admins + case HieLvl_CTY: // System admins // and admins of the institutions, centers and degrees in the current country DB_BuildQuery (&Query, "SELECT %s" @@ -5255,12 +5256,12 @@ static void Usr_GetAdmsLst (Hie_Lvl_Level_t Scope) "FirstName," "UsrCod", QueryFields, - Sco_GetDBStrFromScope (Hie_Lvl_SYS), - Sco_GetDBStrFromScope (Hie_Lvl_INS),Gbl.Hierarchy.Cty.CtyCod, - Sco_GetDBStrFromScope (Hie_Lvl_CTR),Gbl.Hierarchy.Cty.CtyCod, - Sco_GetDBStrFromScope (Hie_Lvl_DEG),Gbl.Hierarchy.Cty.CtyCod); + Sco_GetDBStrFromScope (HieLvl_SYS), + Sco_GetDBStrFromScope (HieLvl_INS),Gbl.Hierarchy.Cty.CtyCod, + Sco_GetDBStrFromScope (HieLvl_CTR),Gbl.Hierarchy.Cty.CtyCod, + Sco_GetDBStrFromScope (HieLvl_DEG),Gbl.Hierarchy.Cty.CtyCod); break; - case Hie_Lvl_INS: // System admins, + case HieLvl_INS: // System admins, // admins of the current institution, // and admins of the centers and degrees in the current institution DB_BuildQuery (&Query, @@ -5296,12 +5297,12 @@ static void Usr_GetAdmsLst (Hie_Lvl_Level_t Scope) "FirstName," "UsrCod", QueryFields, - Sco_GetDBStrFromScope (Hie_Lvl_SYS), - Sco_GetDBStrFromScope (Hie_Lvl_INS),Gbl.Hierarchy.Ins.InsCod, - Sco_GetDBStrFromScope (Hie_Lvl_CTR),Gbl.Hierarchy.Ins.InsCod, - Sco_GetDBStrFromScope (Hie_Lvl_DEG),Gbl.Hierarchy.Ins.InsCod); + Sco_GetDBStrFromScope (HieLvl_SYS), + Sco_GetDBStrFromScope (HieLvl_INS),Gbl.Hierarchy.Ins.InsCod, + Sco_GetDBStrFromScope (HieLvl_CTR),Gbl.Hierarchy.Ins.InsCod, + Sco_GetDBStrFromScope (HieLvl_DEG),Gbl.Hierarchy.Ins.InsCod); break; - case Hie_Lvl_CTR: // System admins, + case HieLvl_CTR: // System admins, // admins of the current institution, // admins and the current center, // and admins of the degrees in the current center @@ -5334,12 +5335,12 @@ static void Usr_GetAdmsLst (Hie_Lvl_Level_t Scope) "FirstName," "UsrCod", QueryFields, - 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.Ctr.CtrCod); + 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.Ctr.CtrCod); break; - case Hie_Lvl_DEG: // System admins + case HieLvl_DEG: // System admins // and admins of the current institution, center or degree DB_BuildQuery (&Query, "SELECT %s" @@ -5368,10 +5369,10 @@ static void Usr_GetAdmsLst (Hie_Lvl_Level_t Scope) "FirstName," "UsrCod", QueryFields, - 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); break; default: // not aplicable Err_WrongScopeExit (); @@ -5386,7 +5387,7 @@ static void Usr_GetAdmsLst (Hie_Lvl_Level_t Scope) /************************ Get list with data of guests ***********************/ /*****************************************************************************/ -static void Usr_GetGstsLst (Hie_Lvl_Level_t Scope) +static void Usr_GetGstsLst (HieLvl_Level_t Scope) { const char *QueryFields = "UsrCod," @@ -5418,7 +5419,7 @@ static void Usr_GetGstsLst (Hie_Lvl_Level_t Scope) /***** Build query *****/ switch (Scope) { - case Hie_Lvl_SYS: + case HieLvl_SYS: DB_BuildQuery (&Query, "SELECT %s" " FROM usr_data" @@ -5431,7 +5432,7 @@ static void Usr_GetGstsLst (Hie_Lvl_Level_t Scope) "UsrCod", QueryFields); break; - case Hie_Lvl_CTY: + case HieLvl_CTY: DB_BuildQuery (&Query, "SELECT %s" " FROM usr_data" @@ -5449,7 +5450,7 @@ static void Usr_GetGstsLst (Hie_Lvl_Level_t Scope) Gbl.Hierarchy.Cty.CtyCod, Gbl.Hierarchy.Cty.CtyCod); break; - case Hie_Lvl_INS: + case HieLvl_INS: DB_BuildQuery (&Query, "SELECT %s" " FROM usr_data" @@ -5464,7 +5465,7 @@ static void Usr_GetGstsLst (Hie_Lvl_Level_t Scope) QueryFields, Gbl.Hierarchy.Ins.InsCod); break; - case Hie_Lvl_CTR: + case HieLvl_CTR: DB_BuildQuery (&Query, "SELECT %s" " FROM usr_data" @@ -5519,7 +5520,7 @@ void Usr_GetUnorderedStdsCodesInDeg (long DegCod) (unsigned) Rol_STD); /***** Get list of students from database *****/ - Usr_GetListUsrsFromQuery (Query,Rol_STD,Hie_Lvl_DEG); + Usr_GetListUsrsFromQuery (Query,Rol_STD,HieLvl_DEG); /***** Free query string *****/ free (Query); @@ -5529,7 +5530,7 @@ void Usr_GetUnorderedStdsCodesInDeg (long DegCod) /********************** Get list of users from database **********************/ /*****************************************************************************/ -static void Usr_GetListUsrsFromQuery (char *Query,Rol_Role_t Role,Hie_Lvl_Level_t Scope) +static void Usr_GetListUsrsFromQuery (char *Query,Rol_Role_t Role,HieLvl_Level_t Scope) { extern const char *Txt_The_list_of_X_users_is_too_large_to_be_displayed; MYSQL_RES *mysql_res; @@ -5586,8 +5587,8 @@ static void Usr_GetListUsrsFromQuery (char *Query,Rol_Role_t Role,Hie_Lvl_Level_ row[ 8]: usr_data.PhotoVisibility row[ 9]: usr_data.CtyCod row[10]: usr_data.InsCod - row[11]: crs_users.Role (only if Scope == Hie_Lvl_CRS) - row[12]: crs_users.Accepted (only if Scope == Hie_Lvl_CRS) + row[11]: crs_users.Role (only if Scope == HieLvl_CRS) + row[12]: crs_users.Accepted (only if Scope == HieLvl_CRS) */ UsrInList = &Gbl.Usrs.LstUsrs[Role].Lst[NumUsr]; @@ -5618,16 +5619,16 @@ static void Usr_GetListUsrsFromQuery (char *Query,Rol_Role_t Role,Hie_Lvl_Level_ UsrInList->InsCod = Str_ConvertStrCodToLongCod (row[10]); /* Get user's role and acceptance of enrolment in course(s) - (row[11], row[12] if Scope == Hie_Lvl_CRS) */ + (row[11], row[12] if Scope == HieLvl_CRS) */ switch (Role) { case Rol_UNK: // Here Rol_UNK means any user switch (Scope) { - case Hie_Lvl_UNK: // Unknown + case HieLvl_UNK: // Unknown Err_WrongScopeExit (); break; - case Hie_Lvl_SYS: // System + case HieLvl_SYS: // System // Query result has not a column with the acceptation UsrInList->RoleInCurrentCrsDB = Rol_UNK; if (Usr_GetNumCrssOfUsr (UsrInList->UsrCod)) @@ -5635,15 +5636,15 @@ static void Usr_GetListUsrsFromQuery (char *Query,Rol_Role_t Role,Hie_Lvl_Level_ else UsrInList->Accepted = false; break; - case Hie_Lvl_CTY: // Country - case Hie_Lvl_INS: // Institution - case Hie_Lvl_CTR: // Center - case Hie_Lvl_DEG: // Degree + case HieLvl_CTY: // Country + case HieLvl_INS: // Institution + case HieLvl_CTR: // Center + case HieLvl_DEG: // Degree // Query result has not a column with the acceptation UsrInList->RoleInCurrentCrsDB = Rol_UNK; UsrInList->Accepted = (Usr_GetNumCrssOfUsrNotAccepted (UsrInList->UsrCod) == 0); break; - case Hie_Lvl_CRS: // Course + case HieLvl_CRS: // Course // Query result has a column with the acceptation UsrInList->RoleInCurrentCrsDB = Rol_ConvertUnsignedStrToRole (row[11]); UsrInList->Accepted = (row[12][0] == 'Y'); @@ -5662,19 +5663,19 @@ static void Usr_GetListUsrsFromQuery (char *Query,Rol_Role_t Role,Hie_Lvl_Level_ case Rol_TCH: switch (Scope) { - case Hie_Lvl_UNK: // Unknown + case HieLvl_UNK: // Unknown Err_WrongScopeExit (); break; - case Hie_Lvl_SYS: // System - case Hie_Lvl_CTY: // Country - case Hie_Lvl_INS: // Institution - case Hie_Lvl_CTR: // Center - case Hie_Lvl_DEG: // Degree + case HieLvl_SYS: // System + case HieLvl_CTY: // Country + case HieLvl_INS: // Institution + case HieLvl_CTR: // Center + case HieLvl_DEG: // Degree // Query result has not a column with the acceptation UsrInList->RoleInCurrentCrsDB = Rol_UNK; UsrInList->Accepted = (Usr_GetNumCrssOfUsrWithARoleNotAccepted (UsrInList->UsrCod,Role) == 0); break; - case Hie_Lvl_CRS: // Course + case HieLvl_CRS: // Course // Query result has a column with the acceptation UsrInList->RoleInCurrentCrsDB = Rol_ConvertUnsignedStrToRole (row[11]); UsrInList->Accepted = (row[12][0] == 'Y'); @@ -6473,9 +6474,9 @@ void Usr_PutFormToSelectUsrsToGoToAct (struct SelectedUsrs *SelectedUsrs, 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); NumTotalUsrs = Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs + Gbl.Usrs.LstUsrs[Rol_NET].NumUsrs + Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs; @@ -7149,7 +7150,7 @@ void Usr_ListAllDataStds (void) Sco_GetScope ("ScopeUsr"); /***** If the scope is the current course... *****/ - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) { /* Get list of groups types and groups in current course This is necessary to show columns with group selection */ @@ -7164,13 +7165,13 @@ void Usr_ListAllDataStds (void) if (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs) { - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) /***** Get list of record fields in current course *****/ Rec_GetListRecordFieldsInCurrentCrs (); /***** Set number of columns *****/ NumColumnsCommonCard = Usr_NUM_ALL_FIELDS_DATA_STD; - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) { NumColumnsCardAndGroups = NumColumnsCommonCard + Gbl.Crs.Grps.GrpTypes.Num; NumColumnsTotal = NumColumnsCardAndGroups + Gbl.Crs.Records.LstFields.Num; @@ -7179,7 +7180,7 @@ void Usr_ListAllDataStds (void) NumColumnsTotal = NumColumnsCardAndGroups = NumColumnsCommonCard; /***** Allocate memory for the string with the list of group names where student belongs to *****/ - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) { Length = (Grp_MAX_BYTES_GROUP_NAME + 2) * Gbl.Crs.Grps.GrpTypes.NumGrpsTotal; if ((GroupNames = malloc (Length + 1)) == NULL) @@ -7209,7 +7210,7 @@ void Usr_ListAllDataStds (void) HTM_TH (1,1,"LM LIGHT_BLUE",FieldNames[NumCol]); /* 2. Columns for the groups */ - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) { if (Gbl.Crs.Grps.GrpTypes.Num) for (NumGrpTyp = 0; @@ -7284,7 +7285,7 @@ void Usr_ListAllDataStds (void) HTM_TABLE_End (); /***** Free memory used by the string with the list of group names where student belongs to *****/ - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) free (GroupNames); } else // Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs == 0 @@ -7386,28 +7387,28 @@ void Usr_ListAllDataTchs (void) Usr_GetAndUpdatePrefsAboutUsrList (); /***** 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 ("ScopeUsr"); /***** Get list of teachers *****/ Usr_GetListUsrs (Gbl.Scope.Current,Rol_NET); // Non-editing teachers Usr_GetListUsrs (Gbl.Scope.Current,Rol_TCH); // Teachers - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) NumUsrs = Gbl.Usrs.LstUsrs[Rol_NET].NumUsrs + Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs; else NumUsrs = Usr_GetNumUsrsInCrss (Gbl.Scope.Current, - (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 : + (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))))), 1 << Rol_NET | 1 << Rol_TCH); @@ -7656,12 +7657,12 @@ void Usr_ListDataAdms (void) Usr_GetAndUpdatePrefsAboutUsrList (); /***** 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; - Gbl.Scope.Default = Hie_Lvl_DEG; + Gbl.Scope.Allowed = 1 << HieLvl_SYS | + 1 << HieLvl_CTY | + 1 << HieLvl_INS | + 1 << HieLvl_CTR | + 1 << HieLvl_DEG; + Gbl.Scope.Default = HieLvl_DEG; Sco_GetScope ("ScopeUsr"); /***** Get list of administrators *****/ @@ -7932,7 +7933,7 @@ static void Usr_GetMyColsClassPhotoFromDB (void) /***** If user logged and course selected... *****/ if (Gbl.Usrs.Me.Logged && - Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected + Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected { /***** Get number of columns in class photo from database *****/ NumRows = (unsigned) @@ -7970,7 +7971,7 @@ static void Usr_GetMyColsClassPhotoFromDB (void) static void Usr_UpdateMyColsClassPhotoInDB (void) { if (Gbl.Usrs.Me.Logged && - Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected + Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected /***** Update number of colums in class photo for current course *****/ DB_QueryUPDATE ("can not update number of columns in class photo", "UPDATE crs_user_settings" @@ -8077,7 +8078,7 @@ void Usr_GetMyPrefAboutListWithPhotosFromDB (void) static void Usr_UpdateMyPrefAboutListWithPhotosPhotoInDB (void) { if (Gbl.Usrs.Me.Logged && - Gbl.Hierarchy.Level == Hie_Lvl_CRS) // Course selected + Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected /***** Update number of colums in class photo for current course *****/ DB_QueryUPDATE ("can not update your preference about photos in listing", "UPDATE crs_user_settings" @@ -8188,8 +8189,8 @@ void Usr_SeeGuests (void) /***** Draw a class photo with guests *****/ if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO) Lay_WriteHeaderClassPhoto (false,true, - (Gbl.Scope.Current == Hie_Lvl_CTR || - Gbl.Scope.Current == Hie_Lvl_INS) ? Gbl.Hierarchy.Ins.InsCod : + (Gbl.Scope.Current == HieLvl_CTR || + Gbl.Scope.Current == HieLvl_INS) ? Gbl.Hierarchy.Ins.InsCod : -1L, -1L, -1L); @@ -8269,7 +8270,7 @@ void Usr_SeeStudents (void) /***** Contextual menu *****/ Mnu_ContextMenuBegin (); Enr_PutLinkToAdminOneUsr (ActReqMdfOneStd); // Admin one student - if (Gbl.Hierarchy.Level == Hie_Lvl_CRS && // Course selected + if (Gbl.Hierarchy.Level == HieLvl_CRS && // Course selected Gbl.Usrs.Me.Role.Logged != Rol_STD) // Teacher or admin { Enr_PutLinkToAdminSeveralUsrs (Rol_STD); // Admin several students @@ -8291,7 +8292,7 @@ void Usr_SeeStudents (void) Sco_GetScope ("ScopeUsr"); /***** Get groups to show ******/ - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) Grp_GetParCodsSeveralGrpsToShowUsrs (); /***** Get list of students *****/ @@ -8324,7 +8325,7 @@ void Usr_SeeStudents (void) } /***** Form to select groups *****/ - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) Grp_ShowFormToSelectSeveralGroups (Sco_PutParamCurrentScope,&Gbl.Scope.Current, Grp_MY_GROUPS); @@ -8343,15 +8344,15 @@ void Usr_SeeStudents (void) /***** Draw a class photo with students of the course *****/ if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO) Lay_WriteHeaderClassPhoto (false,true, - (Gbl.Scope.Current == Hie_Lvl_CRS || - Gbl.Scope.Current == Hie_Lvl_DEG || - Gbl.Scope.Current == Hie_Lvl_CTR || - Gbl.Scope.Current == Hie_Lvl_INS) ? Gbl.Hierarchy.Ins.InsCod : + (Gbl.Scope.Current == HieLvl_CRS || + Gbl.Scope.Current == HieLvl_DEG || + Gbl.Scope.Current == HieLvl_CTR || + Gbl.Scope.Current == HieLvl_INS) ? Gbl.Hierarchy.Ins.InsCod : -1L, - (Gbl.Scope.Current == Hie_Lvl_CRS || - Gbl.Scope.Current == Hie_Lvl_DEG) ? Gbl.Hierarchy.Deg.DegCod : + (Gbl.Scope.Current == HieLvl_CRS || + Gbl.Scope.Current == HieLvl_DEG) ? Gbl.Hierarchy.Deg.DegCod : -1L, - Gbl.Scope.Current == Hie_Lvl_CRS ? Gbl.Hierarchy.Crs.CrsCod : + Gbl.Scope.Current == HieLvl_CRS ? Gbl.Hierarchy.Crs.CrsCod : -1L); /* Set options allowed */ @@ -8436,7 +8437,7 @@ void Usr_SeeTeachers (void) /***** Contextual menu *****/ Mnu_ContextMenuBegin (); Enr_PutLinkToAdminOneUsr (ActReqMdfOneTch); // Admin one teacher - if (Gbl.Hierarchy.Level == Hie_Lvl_CRS && // Course selected + if (Gbl.Hierarchy.Level == HieLvl_CRS && // Course selected Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM) // I am logged as admin { Enr_PutLinkToAdminSeveralUsrs (Rol_NET); // Admin several non-editing teachers @@ -8454,32 +8455,32 @@ void Usr_SeeTeachers (void) Usr_GetAndUpdatePrefsAboutUsrList (); /***** 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 ("ScopeUsr"); /***** Get groups to show ******/ - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) Grp_GetParCodsSeveralGrpsToShowUsrs (); /***** Get lists of teachers *****/ Usr_GetListUsrs (Gbl.Scope.Current,Rol_NET); // Non-editing teachers Usr_GetListUsrs (Gbl.Scope.Current,Rol_TCH); // Teachers - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) NumUsrs = Gbl.Usrs.LstUsrs[Rol_NET].NumUsrs + Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs; else NumUsrs = Usr_GetNumUsrsInCrss (Gbl.Scope.Current, - (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 : + (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))))), 1 << Rol_NET | 1 << Rol_TCH); @@ -8501,7 +8502,7 @@ void Usr_SeeTeachers (void) HTM_DIV_End (); /***** Form to select groups *****/ - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) Grp_ShowFormToSelectSeveralGroups (Sco_PutParamCurrentScope,&Gbl.Scope.Current, Grp_MY_GROUPS); @@ -8520,15 +8521,15 @@ void Usr_SeeTeachers (void) /***** Draw a class photo with teachers of the course *****/ if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO) Lay_WriteHeaderClassPhoto (false,true, - (Gbl.Scope.Current == Hie_Lvl_CRS || - Gbl.Scope.Current == Hie_Lvl_DEG || - Gbl.Scope.Current == Hie_Lvl_CTR || - Gbl.Scope.Current == Hie_Lvl_INS) ? Gbl.Hierarchy.Ins.InsCod : + (Gbl.Scope.Current == HieLvl_CRS || + Gbl.Scope.Current == HieLvl_DEG || + Gbl.Scope.Current == HieLvl_CTR || + Gbl.Scope.Current == HieLvl_INS) ? Gbl.Hierarchy.Ins.InsCod : -1L, - (Gbl.Scope.Current == Hie_Lvl_CRS || - Gbl.Scope.Current == Hie_Lvl_DEG) ? Gbl.Hierarchy.Deg.DegCod : + (Gbl.Scope.Current == HieLvl_CRS || + Gbl.Scope.Current == HieLvl_DEG) ? Gbl.Hierarchy.Deg.DegCod : -1L, - Gbl.Scope.Current == Hie_Lvl_CRS ? Gbl.Hierarchy.Crs.CrsCod : + Gbl.Scope.Current == HieLvl_CRS ? Gbl.Hierarchy.Crs.CrsCod : -1L); /* Set options allowed */ @@ -8627,7 +8628,7 @@ static bool Usr_SetOptionsListUsrsAllowed (Rol_Role_t UsrsRole, ICanChooseOption[Usr_OPTION_RECORDS] = ICanChooseOption[Usr_OPTION_MESSAGE] = ICanChooseOption[Usr_OPTION_FOLLOW] = - ICanChooseOption[Usr_OPTION_UNFOLLOW] = (Gbl.Scope.Current == Hie_Lvl_CRS && + ICanChooseOption[Usr_OPTION_UNFOLLOW] = (Gbl.Scope.Current == HieLvl_CRS && (Gbl.Usrs.Me.Role.Logged == Rol_STD || Gbl.Usrs.Me.Role.Logged == Rol_NET || Gbl.Usrs.Me.Role.Logged == Rol_TCH || @@ -8635,7 +8636,7 @@ static bool Usr_SetOptionsListUsrsAllowed (Rol_Role_t UsrsRole, ICanChooseOption[Usr_OPTION_HOMEWORK] = ICanChooseOption[Usr_OPTION_ATTENDANCE] = - ICanChooseOption[Usr_OPTION_EMAIL] = (Gbl.Scope.Current == Hie_Lvl_CRS && + ICanChooseOption[Usr_OPTION_EMAIL] = (Gbl.Scope.Current == HieLvl_CRS && (Gbl.Usrs.Me.Role.Logged == Rol_NET || Gbl.Usrs.Me.Role.Logged == Rol_TCH || Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)); @@ -8645,12 +8646,12 @@ static bool Usr_SetOptionsListUsrsAllowed (Rol_Role_t UsrsRole, ICanChooseOption[Usr_OPTION_MESSAGE] = ICanChooseOption[Usr_OPTION_EMAIL] = ICanChooseOption[Usr_OPTION_FOLLOW] = - ICanChooseOption[Usr_OPTION_UNFOLLOW] = (Gbl.Scope.Current == Hie_Lvl_CRS && + ICanChooseOption[Usr_OPTION_UNFOLLOW] = (Gbl.Scope.Current == HieLvl_CRS && (Gbl.Usrs.Me.Role.Logged == Rol_STD || Gbl.Usrs.Me.Role.Logged == Rol_NET || Gbl.Usrs.Me.Role.Logged == Rol_TCH || Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)); - ICanChooseOption[Usr_OPTION_HOMEWORK] = (Gbl.Scope.Current == Hie_Lvl_CRS && + ICanChooseOption[Usr_OPTION_HOMEWORK] = (Gbl.Scope.Current == HieLvl_CRS && (Gbl.Usrs.Me.Role.Logged == Rol_NET || Gbl.Usrs.Me.Role.Logged == Rol_TCH || Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)); @@ -9069,8 +9070,8 @@ void Usr_SeeGstClassPhotoPrn (void) { /***** Draw the guests' class photo *****/ Lay_WriteHeaderClassPhoto (true,true, - (Gbl.Scope.Current == Hie_Lvl_CTR || - Gbl.Scope.Current == Hie_Lvl_INS) ? Gbl.Hierarchy.Ins.InsCod : + (Gbl.Scope.Current == HieLvl_CTR || + Gbl.Scope.Current == HieLvl_INS) ? Gbl.Hierarchy.Ins.InsCod : -1L, -1L,-1L); HTM_TABLE_BeginWide (); @@ -9111,15 +9112,15 @@ void Usr_SeeStdClassPhotoPrn (void) { /***** Draw the students' class photo *****/ Lay_WriteHeaderClassPhoto (true,true, - (Gbl.Scope.Current == Hie_Lvl_CRS || - Gbl.Scope.Current == Hie_Lvl_DEG || - Gbl.Scope.Current == Hie_Lvl_CTR || - Gbl.Scope.Current == Hie_Lvl_INS) ? Gbl.Hierarchy.Ins.InsCod : + (Gbl.Scope.Current == HieLvl_CRS || + Gbl.Scope.Current == HieLvl_DEG || + Gbl.Scope.Current == HieLvl_CTR || + Gbl.Scope.Current == HieLvl_INS) ? Gbl.Hierarchy.Ins.InsCod : -1L, - (Gbl.Scope.Current == Hie_Lvl_CRS || - Gbl.Scope.Current == Hie_Lvl_DEG) ? Gbl.Hierarchy.Deg.DegCod : + (Gbl.Scope.Current == HieLvl_CRS || + Gbl.Scope.Current == HieLvl_DEG) ? Gbl.Hierarchy.Deg.DegCod : -1L, - Gbl.Scope.Current == Hie_Lvl_CRS ? Gbl.Hierarchy.Crs.CrsCod : + Gbl.Scope.Current == HieLvl_CRS ? Gbl.Hierarchy.Crs.CrsCod : -1L); HTM_TABLE_BeginWide (); Usr_DrawClassPhoto (Usr_CLASS_PHOTO_PRN, @@ -9151,13 +9152,13 @@ void Usr_SeeTchClassPhotoPrn (void) Usr_GetAndUpdatePrefsAboutUsrList (); /***** 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 ("ScopeUsr"); /****** Get groups to show ******/ @@ -9166,16 +9167,16 @@ void Usr_SeeTchClassPhotoPrn (void) /***** Get list of teachers *****/ Usr_GetListUsrs (Gbl.Scope.Current,Rol_NET); // Non-editing teachers Usr_GetListUsrs (Gbl.Scope.Current,Rol_TCH); // Teachers - if (Gbl.Scope.Current == Hie_Lvl_CRS) + if (Gbl.Scope.Current == HieLvl_CRS) NumUsrs = Gbl.Usrs.LstUsrs[Rol_NET].NumUsrs + Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs; else NumUsrs = Usr_GetNumUsrsInCrss (Gbl.Scope.Current, - (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 : + (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))))), 1 << Rol_NET | 1 << Rol_TCH); @@ -9184,15 +9185,15 @@ void Usr_SeeTchClassPhotoPrn (void) { /***** Draw the teachers' class photo *****/ Lay_WriteHeaderClassPhoto (true,true, - (Gbl.Scope.Current == Hie_Lvl_CRS || - Gbl.Scope.Current == Hie_Lvl_DEG || - Gbl.Scope.Current == Hie_Lvl_CTR || - Gbl.Scope.Current == Hie_Lvl_INS) ? Gbl.Hierarchy.Ins.InsCod : + (Gbl.Scope.Current == HieLvl_CRS || + Gbl.Scope.Current == HieLvl_DEG || + Gbl.Scope.Current == HieLvl_CTR || + Gbl.Scope.Current == HieLvl_INS) ? Gbl.Hierarchy.Ins.InsCod : -1L, - (Gbl.Scope.Current == Hie_Lvl_CRS || - Gbl.Scope.Current == Hie_Lvl_DEG) ? Gbl.Hierarchy.Deg.DegCod : + (Gbl.Scope.Current == HieLvl_CRS || + Gbl.Scope.Current == HieLvl_DEG) ? Gbl.Hierarchy.Deg.DegCod : -1L, - Gbl.Scope.Current == Hie_Lvl_CRS ? Gbl.Hierarchy.Crs.CrsCod : + Gbl.Scope.Current == HieLvl_CRS ? Gbl.Hierarchy.Crs.CrsCod : -1L); HTM_TABLE_BeginWide (); @@ -9419,7 +9420,7 @@ void Usr_ShowWarningNoUsersFound (Rol_Role_t Role) else if (Gbl.Usrs.ClassPhoto.AllGroups && // All groups selected Role == Rol_TCH && // No teachers found - Gbl.Hierarchy.Level == Hie_Lvl_CRS && // Course selected + Gbl.Hierarchy.Level == HieLvl_CRS && // Course selected Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM) // I am an administrator /***** Show alert and button to enrol students *****/ Ale_ShowAlertAndButton (ActReqMdfOneTch,NULL,NULL, @@ -9443,17 +9444,17 @@ unsigned Usr_GetTotalNumberOfUsers (void) /***** Get number of users with events from database *****/ switch (Gbl.Scope.Current) { - case Hie_Lvl_SYS: + case HieLvl_SYS: return (unsigned) DB_GetNumRowsTable ("usr_data"); // All users in platform - case Hie_Lvl_CTY: - case Hie_Lvl_INS: - case Hie_Lvl_CTR: - case Hie_Lvl_DEG: - case Hie_Lvl_CRS: - 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 : + case HieLvl_CTY: + case HieLvl_INS: + case HieLvl_CTR: + case HieLvl_DEG: + case HieLvl_CRS: + 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.Hierarchy.Crs.CrsCod)))); Roles = (1 << Rol_STD) | (1 << Rol_NET) | @@ -9471,7 +9472,7 @@ unsigned Usr_GetTotalNumberOfUsers (void) #define Usr_MAX_BYTES_SUBQUERY_ROLES (Rol_NUM_ROLES * (10 + 1) - 1) -unsigned Usr_GetNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles) +unsigned Usr_GetNumUsrsInCrss (HieLvl_Level_t Scope,long Cod,unsigned Roles) { char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1]; char SubQueryRoles[Usr_MAX_BYTES_SUBQUERY_ROLES + 1]; @@ -9548,7 +9549,7 @@ unsigned Usr_GetNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles) /***** Get number of users from database *****/ switch (Scope) { - case Hie_Lvl_SYS: + case HieLvl_SYS: if (AnyUserInCourses) // Any user NumUsrs = (unsigned) DB_QueryCOUNT ("can not get number of users", @@ -9563,7 +9564,7 @@ unsigned Usr_GetNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles) "%s", SubQueryRoles); break; - case Hie_Lvl_CTY: + case HieLvl_CTY: if (AnyUserInCourses) // Any user NumUsrs = (unsigned) DB_QueryCOUNT ("can not get number of users", @@ -9598,7 +9599,7 @@ unsigned Usr_GetNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles) Cod, SubQueryRoles); break; - case Hie_Lvl_INS: + case HieLvl_INS: if (AnyUserInCourses) // Any user NumUsrs = (unsigned) DB_QueryCOUNT ("can not get number of users", @@ -9629,7 +9630,7 @@ unsigned Usr_GetNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles) Cod, SubQueryRoles); break; - case Hie_Lvl_CTR: + case HieLvl_CTR: if (AnyUserInCourses) // Any user NumUsrs = (unsigned) DB_QueryCOUNT ("can not get number of users", @@ -9656,7 +9657,7 @@ unsigned Usr_GetNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles) Cod, SubQueryRoles); break; - case Hie_Lvl_DEG: + case HieLvl_DEG: if (AnyUserInCourses) // Any user NumUsrs = (unsigned) DB_QueryCOUNT ("can not get number of users", @@ -9677,7 +9678,7 @@ unsigned Usr_GetNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles) " AND crs_users.Role%s", Cod,SubQueryRoles); break; - case Hie_Lvl_CRS: + case HieLvl_CRS: if (AnyUserInCourses) // Any user NumUsrs = (unsigned) DB_QueryCOUNT ("can not get number of users", @@ -9707,7 +9708,7 @@ unsigned Usr_GetNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles) return NumUsrs; } -unsigned Usr_GetCachedNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles) +unsigned Usr_GetCachedNumUsrsInCrss (HieLvl_Level_t Scope,long Cod,unsigned Roles) { unsigned NumUsrsInCrss; @@ -9752,7 +9753,7 @@ unsigned Usr_GetCachedNumUsrsNotBelongingToAnyCrs (void) unsigned NumGsts; /***** Get number of guests from cache *****/ - if (!FigCch_GetFigureFromCache (FigCch_NUM_GSTS,Hie_Lvl_SYS,-1L, + if (!FigCch_GetFigureFromCache (FigCch_NUM_GSTS,HieLvl_SYS,-1L, FigCch_UNSIGNED,&NumGsts)) { /***** Get current number of guests from database and update cache *****/ @@ -9764,7 +9765,7 @@ unsigned Usr_GetCachedNumUsrsNotBelongingToAnyCrs (void) " WHERE UsrCod NOT IN" " (SELECT DISTINCT(UsrCod)" " FROM crs_users)"); - FigCch_UpdateFigureIntoCache (FigCch_NUM_GSTS,Hie_Lvl_SYS,-1L, + FigCch_UpdateFigureIntoCache (FigCch_NUM_GSTS,HieLvl_SYS,-1L, FigCch_UNSIGNED,&NumGsts); } @@ -9775,12 +9776,12 @@ unsigned Usr_GetCachedNumUsrsNotBelongingToAnyCrs (void) /************ Get average number of courses with users of a role *************/ /*****************************************************************************/ -static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Role) +static double Usr_GetNumCrssPerUsr (HieLvl_Level_t Scope,long Cod,Rol_Role_t Role) { /***** Get number of courses per user from database *****/ switch (Scope) { - case Hie_Lvl_SYS: + case HieLvl_SYS: if (Role == Rol_UNK) // Any user return DB_QuerySELECTDouble ("can not get number of courses per user", "SELECT AVG(NumCrss)" @@ -9795,7 +9796,7 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " WHERE Role=%u" " GROUP BY UsrCod) AS NumCrssTable", (unsigned) Role); - case Hie_Lvl_CTY: + case HieLvl_CTY: if (Role == Rol_UNK) // Any user return DB_QuerySELECTDouble ("can not get number of courses per user", "SELECT AVG(NumCrss)" @@ -9830,7 +9831,7 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " GROUP BY crs_users.UsrCod) AS NumCrssTable", Cod, (unsigned) Role); - case Hie_Lvl_INS: + case HieLvl_INS: if (Role == Rol_UNK) // Any user return DB_QuerySELECTDouble ("can not get number of courses per user", "SELECT AVG(NumCrss)" @@ -9861,7 +9862,7 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " GROUP BY crs_users.UsrCod) AS NumCrssTable", Cod, (unsigned) Role); - case Hie_Lvl_CTR: + case HieLvl_CTR: if (Role == Rol_UNK) // Any user return DB_QuerySELECTDouble ("can not get number of courses per user", "SELECT AVG(NumCrss)" @@ -9888,7 +9889,7 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " GROUP BY crs_users.UsrCod) AS NumCrssTable", Cod, (unsigned) Role); - case Hie_Lvl_DEG: + case HieLvl_DEG: if (Role == Rol_UNK) // Any user return DB_QuerySELECTDouble ("can not get number of courses per user", "SELECT AVG(NumCrss)" @@ -9911,7 +9912,7 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " GROUP BY crs_users.UsrCod) AS NumCrssTable", Cod, (unsigned) Role); - case Hie_Lvl_CRS: + case HieLvl_CRS: return 1.0; default: Err_WrongScopeExit (); @@ -9919,7 +9920,7 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro } } -double Usr_GetCachedNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Role) +double Usr_GetCachedNumCrssPerUsr (HieLvl_Level_t Scope,long Cod,Rol_Role_t Role) { static const FigCch_FigureCached_t FigureNumCrssPerUsr[Rol_NUM_ROLES] = { @@ -9947,12 +9948,12 @@ double Usr_GetCachedNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Rol /************ Get average number of courses with users of a type *************/ /*****************************************************************************/ -static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Role) +static double Usr_GetNumUsrsPerCrs (HieLvl_Level_t Scope,long Cod,Rol_Role_t Role) { /***** Get number of users per course from database *****/ switch (Scope) { - case Hie_Lvl_SYS: + case HieLvl_SYS: if (Role == Rol_UNK) // Any user return DB_QuerySELECTDouble ("can not get number of users per course", "SELECT AVG(NumUsrs)" @@ -9966,7 +9967,7 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " FROM crs_users" " WHERE Role=%u GROUP BY CrsCod) AS NumUsrsTable", (unsigned) Role); - case Hie_Lvl_CTY: + case HieLvl_CTY: if (Role == Rol_UNK) // Any user return DB_QuerySELECTDouble ("can not get number of users per course", "SELECT AVG(NumUsrs)" @@ -10001,7 +10002,7 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " GROUP BY crs_users.CrsCod) AS NumUsrsTable", Cod, (unsigned) Role); - case Hie_Lvl_INS: + case HieLvl_INS: if (Role == Rol_UNK) // Any user return DB_QuerySELECTDouble ("can not get number of users per course", "SELECT AVG(NumUsrs)" @@ -10032,7 +10033,7 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " GROUP BY crs_users.CrsCod) AS NumUsrsTable", Cod, (unsigned) Role); - case Hie_Lvl_CTR: + case HieLvl_CTR: if (Role == Rol_UNK) // Any user return DB_QuerySELECTDouble ("can not get number of users per course", "SELECT AVG(NumUsrs)" @@ -10059,7 +10060,7 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " GROUP BY crs_users.CrsCod) AS NumUsrsTable", Cod, (unsigned) Role); - case Hie_Lvl_DEG: + case HieLvl_DEG: if (Role == Rol_UNK) // Any user return DB_QuerySELECTDouble ("can not get number of users per course", "SELECT AVG(NumUsrs)" @@ -10082,8 +10083,8 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " GROUP BY crs_users.CrsCod) AS NumUsrsTable", Cod, (unsigned) Role); - case Hie_Lvl_CRS: - return (double) Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,Cod, + case HieLvl_CRS: + return (double) Usr_GetNumUsrsInCrss (HieLvl_CRS,Cod, Role == Rol_UNK ? 1 << Rol_STD | 1 << Rol_NET | 1 << Rol_TCH : // Any user @@ -10095,7 +10096,7 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro } } -double Usr_GetCachedNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Role) +double Usr_GetCachedNumUsrsPerCrs (HieLvl_Level_t Scope,long Cod,Rol_Role_t Role) { static const FigCch_FigureCached_t FigureNumUsrsPerCrs[Rol_NUM_ROLES] = { diff --git a/swad_user.h b/swad_user.h index 33e0878d..a02d06b1 100644 --- a/swad_user.h +++ b/swad_user.h @@ -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);