diff --git a/swad_API.c b/swad_API.c
index cbd1d513b..9d4bd5d96 100644
--- a/swad_API.c
+++ b/swad_API.c
@@ -1561,7 +1561,7 @@ int swad__getUsers (struct soap *soap,
API_Set_gSOAP_RuntimeEnv (soap);
Gbl.WebService.Function = API_getUsers;
Gbl.Hierarchy.Node[HieLvl_CRS].Cod = (courseCode > 0) ? (long) courseCode :
- -1L;
+ -1L;
/***** Check web service key *****/
if ((ReturnCode = API_CheckAPIKey (wsKey)) != SOAP_OK)
@@ -1642,7 +1642,7 @@ int swad__findUsers (struct soap *soap,
API_Set_gSOAP_RuntimeEnv (soap);
Gbl.WebService.Function = API_findUsers;
Gbl.Hierarchy.Node[HieLvl_CRS].Cod = (courseCode > 0) ? (long) courseCode :
- -1L;
+ -1L;
/***** Check web service key *****/
if ((ReturnCode = API_CheckAPIKey (wsKey)) != SOAP_OK)
@@ -2862,7 +2862,7 @@ int swad__getNotifications (struct soap *soap,
Ntf_NotifyEvent_t NotifyEvent;
long EventTime;
char PhotoURL[Cns_MAX_BYTES_WWW + 1];
- struct Hie_Hierarchy Hie;
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS];
long Cod;
struct For_Forum ForumSelected;
char ForumName[For_MAX_BYTES_FORUM_NAME + 1];
@@ -2929,13 +2929,13 @@ int swad__getNotifications (struct soap *soap,
getNotificationsOut->notificationsArray.__ptr[NumNotif].eventTime = EventTime;
/* Get course (row[7]) */
- Hie.Crs.Cod = Str_ConvertStrCodToLongCod (row[7]);
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = Str_ConvertStrCodToLongCod (row[7]);
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
/* Get user's code of the user who caused the event (row[3]) */
Gbl.Usrs.Other.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[3]);
- if (API_GetSomeUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,Hie.Crs.Cod)) // Get some user's data from database
+ if (API_GetSomeUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,Hie[HieLvl_CRS].Cod)) // Get some user's data from database
{
getNotificationsOut->notificationsArray.__ptr[NumNotif].userNickname =
soap_malloc (soap,Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1);
@@ -2977,16 +2977,16 @@ int swad__getNotifications (struct soap *soap,
}
/* Get institution (row[4]) */
- Hie.Ins.Cod = Str_ConvertStrCodToLongCod (row[4]);
- Ins_GetInstitDataByCod (&Hie.Ins);
+ Hie[HieLvl_INS].Cod = Str_ConvertStrCodToLongCod (row[4]);
+ Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
/* Get center (row[5]) */
- Hie.Ctr.Cod = Str_ConvertStrCodToLongCod (row[5]);
- Ctr_GetCenterDataByCod (&Hie.Ctr);
+ Hie[HieLvl_CTR].Cod = Str_ConvertStrCodToLongCod (row[5]);
+ Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
/* Get degree (row[6]) */
- Hie.Deg.Cod = Str_ConvertStrCodToLongCod (row[6]);
- Deg_GetDegreeDataByCod (&Hie.Deg);
+ Hie[HieLvl_DEG].Cod = Str_ConvertStrCodToLongCod (row[6]);
+ Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
/* Get message/post/... code (row[8]) */
Cod = Str_ConvertStrCodToLongCod (row[8]);
@@ -3005,18 +3005,18 @@ int swad__getNotifications (struct soap *soap,
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
Txt_Forum,ForumName);
}
- else if (Hie.Crs.Cod > 0)
+ else if (Hie[HieLvl_CRS].Cod > 0)
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
- Txt_Course,Hie.Crs.ShrtName);
- else if (Hie.Deg.Cod > 0)
+ Txt_Course,Hie[HieLvl_CRS].ShrtName);
+ else if (Hie[HieLvl_DEG].Cod > 0)
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
- Txt_Degree,Hie.Deg.ShrtName);
- else if (Hie.Ctr.Cod > 0)
+ Txt_Degree,Hie[HieLvl_DEG].ShrtName);
+ else if (Hie[HieLvl_CTR].Cod > 0)
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
- Txt_Center,Hie.Ctr.ShrtName);
- else if (Hie.Ins.Cod > 0)
+ Txt_Center,Hie[HieLvl_CTR].ShrtName);
+ else if (Hie[HieLvl_INS].Cod > 0)
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
- Txt_Institution,Hie.Ins.ShrtName);
+ Txt_Institution,Hie[HieLvl_INS].ShrtName);
else
Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"-",
Ntf_MAX_BYTES_NOTIFY_LOCATION);
@@ -3029,7 +3029,7 @@ int swad__getNotifications (struct soap *soap,
/* Get summary and content */
ContentStr = NULL;
Ntf_GetNotifSummaryAndContent (SummaryStr,&ContentStr,NotifyEvent,
- Cod,Hie.Crs.Cod,Gbl.Usrs.Me.UsrDat.UsrCod,
+ Cod,Hie[HieLvl_CRS].Cod,Gbl.Usrs.Me.UsrDat.UsrCod,
true);
Length = strlen (SummaryStr);
diff --git a/swad_admin_database.c b/swad_admin_database.c
index 996249cad..9024b0142 100644
--- a/swad_admin_database.c
+++ b/swad_admin_database.c
@@ -143,12 +143,12 @@ void Adm_DB_RemUsrAsAdmin (long UsrCod)
/********* Remove administrators of an institution, center or degree *********/
/*****************************************************************************/
-void Adm_DB_RemAdmins (HieLvl_Level_t Level)
+void Adm_DB_RemAdmins (HieLvl_Level_t Level,long Cod)
{
DB_QueryDELETE ("can not remove administrators",
"DELETE FROM usr_admins"
" WHERE Scope='%s'"
" AND Cod=%ld",
Hie_GetDBStrFromLevel (Level),
- Gbl.Hierarchy.Node[Level].Cod);
+ Cod);
}
diff --git a/swad_admin_database.h b/swad_admin_database.h
index e59a63765..81e3005aa 100644
--- a/swad_admin_database.h
+++ b/swad_admin_database.h
@@ -41,6 +41,6 @@ bool Adm_DB_CheckIfUsrIsSuperuser (long UsrCod);
void Adm_DB_RemAdmin (long UsrCod,HieLvl_Level_t Level);
void Adm_DB_RemUsrAsAdmin (long UsrCod);
-void Adm_DB_RemAdmins (HieLvl_Level_t Level);
+void Adm_DB_RemAdmins (HieLvl_Level_t Level,long Cod);
#endif
diff --git a/swad_browser.c b/swad_browser.c
index 32f6b275b..032c47680 100644
--- a/swad_browser.c
+++ b/swad_browser.c
@@ -5408,7 +5408,7 @@ static void Brw_WriteCurrentClipboard (void)
extern const char *Txt_folder;
extern const char *Txt_link;
extern const char *Txt_all_files_inside_the_root_folder;
- struct Hie_Hierarchy Hie;
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS];
struct GroupData GrpDat;
struct Prj_Project Prj;
struct Usr_Data UsrDat;
@@ -5430,131 +5430,131 @@ static void Brw_WriteCurrentClipboard (void)
switch (Gbl.FileBrowser.Clipboard.FileBrowser)
{
case Brw_ADMI_DOC_INS:
- Hie.Ins.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Ins_GetInstitDataByCod (&Hie.Ins);
+ Hie[HieLvl_INS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_documents_management_area,
- Txt_institution,Hie.Ins.ShrtName);
+ Txt_institution,Hie[HieLvl_INS].ShrtName);
break;
case Brw_ADMI_SHR_INS:
- Hie.Ins.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Ins_GetInstitDataByCod (&Hie.Ins);
+ Hie[HieLvl_INS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_shared_files_area,
- Txt_institution,Hie.Ins.ShrtName);
+ Txt_institution,Hie[HieLvl_INS].ShrtName);
break;
case Brw_ADMI_DOC_CTR:
- Hie.Ctr.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Ctr_GetCenterDataByCod (&Hie.Ctr);
+ Hie[HieLvl_CTR].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_documents_management_area,
- Txt_center,Hie.Ctr.ShrtName);
+ Txt_center,Hie[HieLvl_CTR].ShrtName);
break;
case Brw_ADMI_SHR_CTR:
- Hie.Ctr.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Ctr_GetCenterDataByCod (&Hie.Ctr);
+ Hie[HieLvl_CTR].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_shared_files_area,
- Txt_center,Hie.Ctr.ShrtName);
+ Txt_center,Hie[HieLvl_CTR].ShrtName);
break;
case Brw_ADMI_DOC_DEG:
- Hie.Deg.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Deg_GetDegreeDataByCod (&Hie.Deg);
+ Hie[HieLvl_DEG].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_documents_management_area,
- Txt_degree,Hie.Deg.ShrtName);
+ Txt_degree,Hie[HieLvl_DEG].ShrtName);
break;
case Brw_ADMI_SHR_DEG:
- Hie.Deg.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Deg_GetDegreeDataByCod (&Hie.Deg);
+ Hie[HieLvl_DEG].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_shared_files_area,
- Txt_degree,Hie.Deg.ShrtName);
+ Txt_degree,Hie[HieLvl_DEG].ShrtName);
break;
case Brw_ADMI_DOC_CRS:
- Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_documents_management_area,
- Txt_course,Hie.Crs.ShrtName);
+ Txt_course,Hie[HieLvl_CRS].ShrtName);
break;
case Brw_ADMI_DOC_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetGroupDataByCod (&GrpDat);
- Hie.Crs.Cod = GrpDat.CrsCod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = GrpDat.CrsCod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s %s",
Txt_documents_management_area,
- Txt_course,Hie.Crs.ShrtName,
+ Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_ADMI_TCH_CRS:
- Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_teachers_files_area,
- Txt_course,Hie.Crs.ShrtName);
+ Txt_course,Hie[HieLvl_CRS].ShrtName);
break;
case Brw_ADMI_TCH_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetGroupDataByCod (&GrpDat);
- Hie.Crs.Cod = GrpDat.CrsCod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = GrpDat.CrsCod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s %s",
Txt_teachers_files_area,
- Txt_course,Hie.Crs.ShrtName,
+ Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_ADMI_SHR_CRS:
- Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_shared_files_area,
- Txt_course,Hie.Crs.ShrtName);
+ Txt_course,Hie[HieLvl_CRS].ShrtName);
break;
case Brw_ADMI_SHR_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetGroupDataByCod (&GrpDat);
- Hie.Crs.Cod = GrpDat.CrsCod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = GrpDat.CrsCod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s %s",
Txt_shared_files_area,
- Txt_course,Hie.Crs.ShrtName,
+ Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_ADMI_ASG_USR:
- Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s",
Txt_assignments_area,
- Txt_course,Hie.Crs.ShrtName,
+ Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_user[Gbl.Usrs.Me.UsrDat.Sex],Gbl.Usrs.Me.UsrDat.FullName);
break;
case Brw_ADMI_WRK_USR:
- Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s",
Txt_works_area,
- Txt_course,Hie.Crs.ShrtName,
+ Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_user[Gbl.Usrs.Me.UsrDat.Sex],Gbl.Usrs.Me.UsrDat.FullName);
break;
case Brw_ADMI_ASG_CRS:
- Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
Usr_UsrDataConstructor (&UsrDat);
UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
Usr_GetAllUsrDataFromUsrCod (&UsrDat,
@@ -5563,13 +5563,13 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s",
Txt_assignments_area,
- Txt_course,Hie.Crs.ShrtName,
+ Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_user[UsrDat.Sex],UsrDat.FullName);
Usr_UsrDataDestructor (&UsrDat);
break;
case Brw_ADMI_WRK_CRS:
- Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
Usr_UsrDataConstructor (&UsrDat);
UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
Usr_GetAllUsrDataFromUsrCod (&UsrDat,
@@ -5578,7 +5578,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s",
Txt_works_area,
- Txt_course,Hie.Crs.ShrtName,
+ Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_user[UsrDat.Sex],UsrDat.FullName);
Usr_UsrDataDestructor (&UsrDat);
break;
@@ -5587,33 +5587,33 @@ static void Brw_WriteCurrentClipboard (void)
Prj_AllocMemProject (&Prj);
Prj.PrjCod = Gbl.FileBrowser.Clipboard.Cod;
Prj_GetProjectDataByCod (&Prj);
- Hie.Crs.Cod = Prj.CrsCod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = Prj.CrsCod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s",
Gbl.FileBrowser.Clipboard.FileBrowser == Brw_ADMI_DOC_PRJ ? Txt_project_documents :
Txt_project_assessment,
- Txt_course,Hie.Crs.ShrtName,
+ Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_project,Prj.Title);
Prj_FreeMemProject (&Prj);
break;
case Brw_ADMI_MRK_CRS:
- Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_marks_management_area,
- Txt_course,Hie.Crs.ShrtName);
+ Txt_course,Hie[HieLvl_CRS].ShrtName);
break;
case Brw_ADMI_MRK_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetGroupDataByCod (&GrpDat);
- Hie.Crs.Cod = GrpDat.CrsCod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = GrpDat.CrsCod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s %s",
Txt_marks_management_area,
- Txt_course,Hie.Crs.ShrtName,
+ Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_ADMI_BRF_USR:
@@ -5966,7 +5966,7 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
extern const char *Txt_Links_copied;
extern const char *Txt_Folders_copied;
extern const char *Txt_You_can_not_paste_file_or_folder_here;
- struct Hie_Hierarchy Hie;
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS];
struct GroupData GrpDat;
struct Usr_Data UsrDat;
long PrjCod;
@@ -5987,36 +5987,36 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
{
case Brw_ADMI_DOC_INS:
case Brw_ADMI_SHR_INS:
- Hie.Ins.Cod = Gbl.FileBrowser.Clipboard.Cod;
- if (Ins_GetInstitDataByCod (&Hie.Ins))
+ Hie[HieLvl_INS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ if (Ins_GetInstitDataByCod (&Hie[HieLvl_INS]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%02u/%u/%s",
Cfg_PATH_INS_PRIVATE,
- (unsigned) (Hie.Ins.Cod % 100),
- (unsigned) Hie.Ins.Cod,
+ (unsigned) (Hie[HieLvl_INS].Cod % 100),
+ (unsigned) Hie[HieLvl_INS].Cod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else
Err_WrongCopySrcExit ();
break;
case Brw_ADMI_DOC_CTR:
case Brw_ADMI_SHR_CTR:
- Hie.Ctr.Cod = Gbl.FileBrowser.Clipboard.Cod;
- if (Ctr_GetCenterDataByCod (&Hie.Ctr))
+ Hie[HieLvl_CTR].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ if (Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%02u/%u/%s",
Cfg_PATH_CTR_PRIVATE,
- (unsigned) (Hie.Ctr.Cod % 100),
- (unsigned) Hie.Ctr.Cod,
+ (unsigned) (Hie[HieLvl_CTR].Cod % 100),
+ (unsigned) Hie[HieLvl_CTR].Cod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else
Err_WrongCopySrcExit ();
break;
case Brw_ADMI_DOC_DEG:
case Brw_ADMI_SHR_DEG:
- Hie.Deg.Cod = Gbl.FileBrowser.Clipboard.Cod;
- if (Deg_GetDegreeDataByCod (&Hie.Deg))
+ Hie[HieLvl_DEG].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ if (Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%02u/%u/%s",
Cfg_PATH_DEG_PRIVATE,
- (unsigned) (Hie.Deg.Cod % 100),
- (unsigned) Hie.Deg.Cod,
+ (unsigned) (Hie[HieLvl_DEG].Cod % 100),
+ (unsigned) Hie[HieLvl_DEG].Cod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else
Err_WrongCopySrcExit ();
@@ -6025,10 +6025,10 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
case Brw_ADMI_TCH_CRS:
case Brw_ADMI_SHR_CRS:
case Brw_ADMI_MRK_CRS:
- Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
- if (Crs_GetCourseDataByCod (&Hie.Crs))
+ Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ if (Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s",
- Cfg_PATH_CRS_PRIVATE,Hie.Crs.Cod,
+ Cfg_PATH_CRS_PRIVATE,Hie[HieLvl_CRS].Cod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else
Err_WrongCopySrcExit ();
@@ -6039,10 +6039,10 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
case Brw_ADMI_MRK_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetGroupDataByCod (&GrpDat);
- Hie.Crs.Cod = GrpDat.CrsCod;
- if (Crs_GetCourseDataByCod (&Hie.Crs))
+ Hie[HieLvl_CRS].Cod = GrpDat.CrsCod;
+ if (Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%ld/%s",
- Cfg_PATH_CRS_PRIVATE,Hie.Crs.Cod,Cfg_FOLDER_GRP,
+ Cfg_PATH_CRS_PRIVATE,Hie[HieLvl_CRS].Cod,Cfg_FOLDER_GRP,
GrpDat.GrpCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else
@@ -6050,8 +6050,8 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
break;
case Brw_ADMI_ASG_CRS:
case Brw_ADMI_WRK_CRS:
- Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
- if (Crs_GetCourseDataByCod (&Hie.Crs))
+ Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ if (Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
{
Usr_UsrDataConstructor (&UsrDat);
if (Usr_DB_ChkIfUsrCodExists (Gbl.FileBrowser.Clipboard.WorksUsrCod))
@@ -6061,7 +6061,7 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CURRENT_CRS); // Check that user exists
snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%02u/%ld/%s",
- Cfg_PATH_CRS_PRIVATE,Hie.Crs.Cod,Cfg_FOLDER_USR,
+ Cfg_PATH_CRS_PRIVATE,Hie[HieLvl_CRS].Cod,Cfg_FOLDER_USR,
(unsigned) (Gbl.FileBrowser.Clipboard.WorksUsrCod % 100),
Gbl.FileBrowser.Clipboard.WorksUsrCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
@@ -6072,10 +6072,10 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
break;
case Brw_ADMI_ASG_USR:
case Brw_ADMI_WRK_USR:
- Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
- if (Crs_GetCourseDataByCod (&Hie.Crs))
+ Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
+ if (Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%02u/%ld/%s",
- Cfg_PATH_CRS_PRIVATE,Hie.Crs.Cod,Cfg_FOLDER_USR,
+ Cfg_PATH_CRS_PRIVATE,Hie[HieLvl_CRS].Cod,Cfg_FOLDER_USR,
(unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100),
Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
@@ -6085,10 +6085,10 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
case Brw_ADMI_DOC_PRJ:
case Brw_ADMI_ASS_PRJ:
PrjCod = Gbl.FileBrowser.Clipboard.Cod;
- Hie.Crs.Cod = Prj_DB_GetCrsOfPrj (PrjCod);
- if (Crs_GetCourseDataByCod (&Hie.Crs))
+ Hie[HieLvl_CRS].Cod = Prj_DB_GetCrsOfPrj (PrjCod);
+ if (Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%02u/%ld/%s",
- Cfg_PATH_CRS_PRIVATE,Hie.Crs.Cod,Cfg_FOLDER_PRJ,
+ Cfg_PATH_CRS_PRIVATE,Hie[HieLvl_CRS].Cod,Cfg_FOLDER_PRJ,
(unsigned) (PrjCod % 100),
PrjCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
@@ -9542,7 +9542,10 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (InsShortName),
"class=\"LT BT_LINK\"");
Str_FreeGoToTitle ();
- Lgo_DrawLogo (HieLvl_INS,InsCod,InsShortName,20,"BT_LINK LT");
+ Lgo_DrawLogo (HieLvl_INS,
+ InsCod,
+ InsShortName,
+ 20,"BT_LINK LT");
HTM_TxtF (" %s",InsShortName);
HTM_BUTTON_End ();
Frm_EndForm ();
@@ -9559,7 +9562,10 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (CtrShortName),
"class=\"LT BT_LINK\"");
Str_FreeGoToTitle ();
- Lgo_DrawLogo (HieLvl_CTR,CtrCod,CtrShortName,20,"LT");
+ Lgo_DrawLogo (HieLvl_CTR,
+ CtrCod,
+ CtrShortName,
+ 20,"LT");
HTM_TxtF (" %s",CtrShortName);
HTM_BUTTON_End ();
Frm_EndForm ();
@@ -9576,7 +9582,10 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (DegShortName),
"class=\"LT BT_LINK\"");
Str_FreeGoToTitle ();
- Lgo_DrawLogo (HieLvl_DEG,DegCod,DegShortName,20,"LT");
+ Lgo_DrawLogo (HieLvl_DEG,
+ DegCod,
+ DegShortName,
+ 20,"LT");
HTM_TxtF (" %s",DegShortName);
HTM_BUTTON_End ();
Frm_EndForm ();
diff --git a/swad_call_for_exam.c b/swad_call_for_exam.c
index dbb488baf..1abdcdf76 100644
--- a/swad_call_for_exam.c
+++ b/swad_call_for_exam.c
@@ -956,7 +956,10 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams,
if (TypeViewCallForExam == Cfe_NORMAL_VIEW)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"EXAM_TIT_%s\"",
Ins.WWW,The_GetSuffix ());
- Lgo_DrawLogo (HieLvl_INS,Ins.Cod,Ins.FullName,64,NULL);
+ Lgo_DrawLogo (HieLvl_INS,
+ Ins.Cod,
+ Ins.FullName,
+ 64,NULL);
HTM_BR ();
HTM_Txt (Ins.FullName);
if (TypeViewCallForExam == Cfe_NORMAL_VIEW)
@@ -1609,20 +1612,20 @@ static void Cfe_GetNotifContentCallForExam (const struct Cfe_CallsForExams *Call
extern const char *Txt_CALL_FOR_EXAM_Material_allowed;
extern const char *Txt_CALL_FOR_EXAM_Other_information;
extern const char *Txt_hours_ABBREVIATION;
- struct Hie_Hierarchy Hie;
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS];
char StrExamDate[Cns_MAX_BYTES_DATE + 1];
/***** Get data of course *****/
- Hie.Crs.Cod = CallsForExams->CallForExam.CrsCod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = CallsForExams->CallForExam.CrsCod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
/***** Get data of degree *****/
- Hie.Deg.Cod = Hie.Crs.PrtCod;
- Deg_GetDegreeDataByCod (&Hie.Deg);
+ Hie[HieLvl_DEG].Cod = Hie[HieLvl_CRS].PrtCod;
+ Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
/***** Get data of institution *****/
- Hie.Ins.Cod = Deg_DB_GetInsCodOfDegreeByCod (Hie.Deg.Cod);
- Ins_GetInstitDataByCod (&Hie.Ins);
+ Hie[HieLvl_INS].Cod = Deg_DB_GetInsCodOfDegreeByCod (Hie[HieLvl_DEG].Cod);
+ Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
/***** Convert struct date to a date string *****/
Dat_ConvDateToDateStr (&CallsForExams->CallForExam.ExamDate,StrExamDate);
@@ -1643,8 +1646,8 @@ static void Cfe_GetNotifContentCallForExam (const struct Cfe_CallsForExams *Call
"%s: %s
"
"%s: %s
"
"%s: %s",
- Txt_Institution,Hie.Ins.FullName,
- Txt_Degree,Hie.Deg.FullName,
+ Txt_Institution,Hie[HieLvl_INS].FullName,
+ Txt_Degree,Hie[HieLvl_DEG].FullName,
Txt_CALL_FOR_EXAM_Course,CallsForExams->CallForExam.CrsFullName,
Txt_CALL_FOR_EXAM_Year_or_semester,Txt_YEAR_OF_DEGREE[CallsForExams->CallForExam.Year],
Txt_CALL_FOR_EXAM_Session,CallsForExams->CallForExam.Session,
diff --git a/swad_center.c b/swad_center.c
index 0ff3231f2..3f31db8ab 100644
--- a/swad_center.c
+++ b/swad_center.c
@@ -201,7 +201,10 @@ void Ctr_DrawCenterLogoAndNameWithLink (struct Hie_Node *Ctr,Act_Action_t Action
Str_FreeGoToTitle ();
/***** Center logo and name *****/
- Lgo_DrawLogo (HieLvl_CTR,Ctr->Cod,Ctr->ShrtName,16,ClassLogo);
+ Lgo_DrawLogo (HieLvl_CTR,
+ Ctr->Cod,
+ Ctr->ShrtName,
+ 16,ClassLogo);
HTM_TxtF (" %s",Ctr->FullName);
/***** End link *****/
@@ -797,7 +800,10 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
/* Center logo */
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ctr->FullName);
- Lgo_DrawLogo (HieLvl_CTR,Ctr->Cod,Ctr->ShrtName,20,NULL);
+ Lgo_DrawLogo (HieLvl_CTR,
+ Ctr->Cod,
+ Ctr->ShrtName,
+ 20,NULL);
HTM_TD_End ();
/* Place */
@@ -1295,7 +1301,10 @@ static void Ctr_PutFormToCreateCenter (const struct Plc_Places *Places)
/***** Center logo *****/
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ctr_EditingCtr->FullName);
- Lgo_DrawLogo (HieLvl_CTR,-1L,"",20,NULL);
+ Lgo_DrawLogo (HieLvl_CTR,
+ -1L,
+ "",
+ 20,NULL);
HTM_TD_End ();
/***** Place *****/
diff --git a/swad_changelog.h b/swad_changelog.h
index 41048eb5f..084876a95 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -632,10 +632,11 @@ TODO: Francisco Javier Fern
Me sale este error, no sé si por no recordar yo la sintaxis apropiada para mandar a varios destinatarios. ¿No era así?
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
*/
-#define Log_PLATFORM_VERSION "SWAD 23.9.1 (2023-09-19)"
+#define Log_PLATFORM_VERSION "SWAD 23.9.2 (2023-09-19)"
#define CSS_FILE "swad22.120.4.css"
#define JS_FILE "swad22.49.js"
/*
+ Version 23.9.2: Sep 19, 2023 Code refactoring in hierarchy. (337600 lines)
Version 23.9.1: Sep 19, 2023 Code refactoring in hierarchy and admins. (337521 lines)
Version 23.9: Sep 19, 2023 Code refactoring in hierarchy. (337589 lines)
Version 23.8: Sep 18, 2023 Code refactoring in hierarchy. (337625 lines)
diff --git a/swad_chat.c b/swad_chat.c
index 1a0be0833..06387bff1 100644
--- a/swad_chat.c
+++ b/swad_chat.c
@@ -187,7 +187,10 @@ void Cht_ShowListOfAvailableChatRooms (void)
snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),"%s %s",
Txt_Degree,Deg.ShrtName);
Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShrtName,ThisRoomFullName,1,IsLastItemInLevel);
- Lgo_DrawLogo (HieLvl_DEG,Deg.Cod,Deg.ShrtName,16,NULL);
+ Lgo_DrawLogo (HieLvl_DEG,
+ Deg.Cod,
+ Deg.ShrtName,
+ 16,NULL);
Cht_WriteLinkToChat2 (ThisRoomCode,ThisRoomFullName);
/* Get my courses in this degree from database */
diff --git a/swad_course.c b/swad_course.c
index ae20380a7..a8cebb6be 100644
--- a/swad_course.c
+++ b/swad_course.c
@@ -153,7 +153,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
extern const char *Hlp_PROFILE_Courses;
extern const char *Txt_My_courses;
extern const char *Txt_System;
- struct Hie_Hierarchy Hie;
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS];
bool IsLastItemInLevel[1 + 6];
bool Highlight; // Highlight because degree, course, etc. is selected
MYSQL_RES *mysql_resCty;
@@ -208,24 +208,24 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resCty);
/***** Get data of this institution *****/
- Hie.Cty.Cod = Str_ConvertStrCodToLongCod (row[0]);
- if (!Cty_GetBasicCountryDataByCod (&Hie.Cty))
+ Hie[HieLvl_CTY].Cod = Str_ConvertStrCodToLongCod (row[0]);
+ if (!Cty_GetBasicCountryDataByCod (&Hie[HieLvl_CTY]))
Err_WrongCountrExit ();
/***** Write link to country *****/
Highlight = (Gbl.Hierarchy.Node[HieLvl_INS].Cod <= 0 &&
- Gbl.Hierarchy.Node[HieLvl_CTY].Cod == Hie.Cty.Cod);
+ Gbl.Hierarchy.Node[HieLvl_CTY].Cod == Hie[HieLvl_CTY].Cod);
HTM_LI_Begin (Highlight ? "class=\"BG_HIGHLIGHT\"" :
NULL);
IsLastItemInLevel[2] = (NumCty == NumCtys - 1);
Lay_IndentDependingOnLevel (2,IsLastItemInLevel);
Frm_BeginForm (ActMyCrs);
- ParCod_PutPar (ParCod_Cty,Hie.Cty.Cod);
+ ParCod_PutPar (ParCod_Cty,Hie[HieLvl_CTY].Cod);
HTM_BUTTON_Submit_Begin (Act_GetActionText (ActSeeCtyInf),
"class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ());
- Cty_DrawCountryMap (&Hie.Cty,"ICO16x16");
- HTM_TxtF (" %s",Hie.Cty.FullName);
+ Cty_DrawCountryMap (&Hie[HieLvl_CTY],"ICO16x16");
+ HTM_TxtF (" %s",Hie[HieLvl_CTY].FullName);
HTM_BUTTON_End ();
Frm_EndForm ();
HTM_LI_End ();
@@ -233,7 +233,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get my institutions in this country *****/
NumInss = Ins_DB_GetInssFromUsr (&mysql_resIns,
Gbl.Usrs.Me.UsrDat.UsrCod,
- Hie.Cty.Cod);
+ Hie[HieLvl_CTY].Cod);
for (NumIns = 0;
NumIns < NumInss;
NumIns++)
@@ -242,24 +242,27 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resIns);
/***** Get data of this institution *****/
- Hie.Ins.Cod = Str_ConvertStrCodToLongCod (row[0]);
- if (!Ins_GetInstitDataByCod (&Hie.Ins))
+ Hie[HieLvl_INS].Cod = Str_ConvertStrCodToLongCod (row[0]);
+ if (!Ins_GetInstitDataByCod (&Hie[HieLvl_INS]))
Err_WrongInstitExit ();
/***** Write link to institution *****/
Highlight = (Gbl.Hierarchy.Node[HieLvl_CTR].Cod <= 0 &&
- Gbl.Hierarchy.Node[HieLvl_INS].Cod == Hie.Ins.Cod);
+ Gbl.Hierarchy.Node[HieLvl_INS].Cod == Hie[HieLvl_INS].Cod);
HTM_LI_Begin (Highlight ? "class=\"BG_HIGHLIGHT\"" :
NULL);
IsLastItemInLevel[3] = (NumIns == NumInss - 1);
Lay_IndentDependingOnLevel (3,IsLastItemInLevel);
Frm_BeginForm (ActMyCrs);
- ParCod_PutPar (ParCod_Ins,Hie.Ins.Cod);
+ ParCod_PutPar (ParCod_Ins,Hie[HieLvl_INS].Cod);
HTM_BUTTON_Submit_Begin (Act_GetActionText (ActSeeInsInf),
"class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ());
- Lgo_DrawLogo (HieLvl_INS,Hie.Ins.Cod,Hie.Ins.ShrtName,16,NULL);
- HTM_TxtF (" %s",Hie.Ins.ShrtName);
+ Lgo_DrawLogo (HieLvl_INS,
+ Hie[HieLvl_INS].Cod,
+ Hie[HieLvl_INS].ShrtName,
+ 16,NULL);
+ HTM_TxtF (" %s",Hie[HieLvl_INS].ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
HTM_LI_End ();
@@ -267,7 +270,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get my centers in this institution *****/
NumCtrs = Ctr_DB_GetCtrsFromUsr (&mysql_resCtr,
Gbl.Usrs.Me.UsrDat.UsrCod,
- Hie.Ins.Cod);
+ Hie[HieLvl_INS].Cod);
for (NumCtr = 0;
NumCtr < NumCtrs;
NumCtr++)
@@ -276,24 +279,27 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resCtr);
/***** Get data of this center *****/
- Hie.Ctr.Cod = Str_ConvertStrCodToLongCod (row[0]);
- if (!Ctr_GetCenterDataByCod (&Hie.Ctr))
+ Hie[HieLvl_CTR].Cod = Str_ConvertStrCodToLongCod (row[0]);
+ if (!Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]))
Err_WrongCenterExit ();
/***** Write link to center *****/
Highlight = (Gbl.Hierarchy.Level == HieLvl_CTR &&
- Gbl.Hierarchy.Node[HieLvl_CTR].Cod == Hie.Ctr.Cod);
+ Gbl.Hierarchy.Node[HieLvl_CTR].Cod == Hie[HieLvl_CTR].Cod);
HTM_LI_Begin (Highlight ? "class=\"BG_HIGHLIGHT\"" :
NULL);
IsLastItemInLevel[4] = (NumCtr == NumCtrs - 1);
Lay_IndentDependingOnLevel (4,IsLastItemInLevel);
Frm_BeginForm (ActMyCrs);
- ParCod_PutPar (ParCod_Ctr,Hie.Ctr.Cod);
+ ParCod_PutPar (ParCod_Ctr,Hie[HieLvl_CTR].Cod);
HTM_BUTTON_Submit_Begin (Act_GetActionText (ActSeeCtrInf),
"class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ());
- Lgo_DrawLogo (HieLvl_CTR,Hie.Ctr.Cod,Hie.Ctr.ShrtName,16,NULL);
- HTM_TxtF (" %s",Hie.Ctr.ShrtName);
+ Lgo_DrawLogo (HieLvl_CTR,
+ Hie[HieLvl_CTR].Cod,
+ Hie[HieLvl_CTR].ShrtName,
+ 16,NULL);
+ HTM_TxtF (" %s",Hie[HieLvl_CTR].ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
HTM_LI_End ();
@@ -301,7 +307,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get my degrees in this center *****/
NumDegs = Deg_DB_GetDegsFromUsr (&mysql_resDeg,
Gbl.Usrs.Me.UsrDat.UsrCod,
- Hie.Ctr.Cod);
+ Hie[HieLvl_CTR].Cod);
for (NumDeg = 0;
NumDeg < NumDegs;
NumDeg++)
@@ -310,24 +316,27 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resDeg);
/***** Get data of this degree *****/
- Hie.Deg.Cod = Str_ConvertStrCodToLongCod (row[0]);
- if (!Deg_GetDegreeDataByCod (&Hie.Deg))
+ Hie[HieLvl_DEG].Cod = Str_ConvertStrCodToLongCod (row[0]);
+ if (!Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]))
Err_WrongDegreeExit ();
/***** Write link to degree *****/
Highlight = (Gbl.Hierarchy.Level == HieLvl_DEG &&
- Gbl.Hierarchy.Node[HieLvl_DEG].Cod == Hie.Deg.Cod);
+ Gbl.Hierarchy.Node[HieLvl_DEG].Cod == Hie[HieLvl_DEG].Cod);
HTM_LI_Begin (Highlight ? "class=\"BG_HIGHLIGHT\"" :
NULL);
IsLastItemInLevel[5] = (NumDeg == NumDegs - 1);
Lay_IndentDependingOnLevel (5,IsLastItemInLevel);
Frm_BeginForm (ActMyCrs);
- ParCod_PutPar (ParCod_Deg,Hie.Deg.Cod);
+ ParCod_PutPar (ParCod_Deg,Hie[HieLvl_DEG].Cod);
HTM_BUTTON_Submit_Begin (Act_GetActionText (ActSeeDegInf),
"class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ());
- Lgo_DrawLogo (HieLvl_DEG,Hie.Deg.Cod,Hie.Deg.ShrtName,16,NULL);
- HTM_TxtF (" %s",Hie.Deg.ShrtName);
+ Lgo_DrawLogo (HieLvl_DEG,
+ Hie[HieLvl_DEG].Cod,
+ Hie[HieLvl_DEG].ShrtName,
+ 16,NULL);
+ HTM_TxtF (" %s",Hie[HieLvl_DEG].ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
HTM_LI_End ();
@@ -335,7 +344,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get my courses in this degree *****/
NumCrss = Crs_DB_GetCrssFromUsr (&mysql_resCrs,
Gbl.Usrs.Me.UsrDat.UsrCod,
- Hie.Deg.Cod);
+ Hie[HieLvl_DEG].Cod);
for (NumCrs = 0;
NumCrs < NumCrss;
NumCrs++)
@@ -344,30 +353,30 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resCrs);
/***** Get data of this course *****/
- Hie.Crs.Cod = Str_ConvertStrCodToLongCod (row[0]);
- if (!Crs_GetCourseDataByCod (&Hie.Crs))
+ Hie[HieLvl_CRS].Cod = Str_ConvertStrCodToLongCod (row[0]);
+ if (!Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
Err_WrongCourseExit ();
/***** Write link to course *****/
Highlight = (Gbl.Hierarchy.Level == HieLvl_CRS &&
- Gbl.Hierarchy.Node[HieLvl_CRS].Cod == Hie.Crs.Cod);
+ Gbl.Hierarchy.Node[HieLvl_CRS].Cod == Hie[HieLvl_CRS].Cod);
HTM_LI_Begin (Highlight ? "class=\"BG_HIGHLIGHT\"" :
NULL);
IsLastItemInLevel[6] = (NumCrs == NumCrss - 1);
Lay_IndentDependingOnLevel (6,IsLastItemInLevel);
Frm_BeginForm (ActMyCrs);
- ParCod_PutPar (ParCod_Crs,Hie.Crs.Cod);
- HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (Hie.Crs.ShrtName),
+ ParCod_PutPar (ParCod_Crs,Hie[HieLvl_CRS].Cod);
+ HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (Hie[HieLvl_CRS].ShrtName),
"class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ());
Str_FreeGoToTitle ();
- Ico_PutIcon ("chalkboard-teacher.svg",Ico_BLACK,Hie.Crs.FullName,"ICO16x16");
- HTM_TxtF (" %s",Hie.Crs.ShrtName);
+ Ico_PutIcon ("chalkboard-teacher.svg",Ico_BLACK,Hie[HieLvl_CRS].FullName,"ICO16x16");
+ HTM_TxtF (" %s",Hie[HieLvl_CRS].ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
/***** Put link to register students *****/
- Enr_PutButtonInlineToRegisterStds (Hie.Crs.Cod);
+ Enr_PutButtonInlineToRegisterStds (Hie[HieLvl_CRS].Cod);
HTM_LI_End ();
}
@@ -2419,7 +2428,10 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (row[2]),
"class=\"LT BT_LINK\"");
Str_FreeGoToTitle ();
- Lgo_DrawLogo (HieLvl_DEG,Deg.Cod,Deg.ShrtName,20,"CT");
+ Lgo_DrawLogo (HieLvl_DEG,
+ Deg.Cod,
+ Deg.ShrtName,
+ 20,"CT");
HTM_TxtF (" %s (%s)",row[2],row[6]);
HTM_BUTTON_End ();
Frm_EndForm ();
diff --git a/swad_degree.c b/swad_degree.c
index 9eaca6fd7..533d5b9ae 100644
--- a/swad_degree.c
+++ b/swad_degree.c
@@ -203,7 +203,10 @@ void Deg_DrawDegreeLogoAndNameWithLink (struct Hie_Node *Deg,Act_Action_t Action
Str_FreeGoToTitle ();
/***** Degree logo and name *****/
- Lgo_DrawLogo (HieLvl_DEG,Deg->Cod,Deg->ShrtName,16,ClassLogo);
+ Lgo_DrawLogo (HieLvl_DEG,
+ Deg->Cod,
+ Deg->ShrtName,
+ 16,ClassLogo);
HTM_TxtF (" %s",Deg->FullName);
/***** End link *****/
@@ -367,7 +370,10 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes)
/* Degree logo */
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",DegInLst->FullName);
- Lgo_DrawLogo (HieLvl_DEG,DegInLst->Cod,DegInLst->ShrtName,20,NULL);
+ Lgo_DrawLogo (HieLvl_DEG,
+ DegInLst->Cod,
+ DegInLst->ShrtName
+ ,20,NULL);
HTM_TD_End ();
/* Degree short name */
@@ -546,7 +552,10 @@ static void Deg_PutFormToCreateDegree (const struct DegTyp_DegTypes *DegTypes)
/***** Degree logo *****/
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Deg_EditingDeg->FullName);
- Lgo_DrawLogo (HieLvl_DEG,-1L,"",20,NULL);
+ Lgo_DrawLogo (HieLvl_DEG,
+ -1L,
+ "",
+ 20,NULL);
HTM_TD_End ();
/***** Degree short name *****/
diff --git a/swad_forum.c b/swad_forum.c
index 339e49154..65f800fcc 100644
--- a/swad_forum.c
+++ b/swad_forum.c
@@ -1775,15 +1775,24 @@ static void For_WriteLinkToForum (const struct For_Forums *Forums,
break;
case For_FORUM_INSTIT_USRS:
case For_FORUM_INSTIT_TCHS:
- Lgo_DrawLogo (HieLvl_INS,Forum->HieCod,ForumName,16,NULL);
+ Lgo_DrawLogo (HieLvl_INS,
+ Forum->HieCod,
+ ForumName,
+ 16,NULL);
break;
case For_FORUM_CENTER_USRS:
case For_FORUM_CENTER_TCHS:
- Lgo_DrawLogo (HieLvl_CTR,Forum->HieCod,ForumName,16,NULL);
+ Lgo_DrawLogo (HieLvl_CTR,
+ Forum->HieCod,
+ ForumName,
+ 16,NULL);
break;
case For_FORUM_DEGREE_USRS:
case For_FORUM_DEGREE_TCHS:
- Lgo_DrawLogo (HieLvl_DEG,Forum->HieCod,ForumName,16,NULL);
+ Lgo_DrawLogo (HieLvl_DEG,
+ Forum->HieCod,
+ ForumName,
+ 16,NULL);
break;
case For_FORUM_COURSE_USRS:
case For_FORUM_COURSE_TCHS:
@@ -1823,7 +1832,7 @@ void For_SetForumName (const struct For_Forum *Forum,
extern const char *Txt_only_teachers;
extern const char *Txt_only_teachers_NO_HTML[1 + Lan_NUM_LANGUAGES];
extern const char *Txt_Unknown_FORUM;
- struct Hie_Hierarchy Hie;
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS];
switch (Forum->Type)
{
@@ -1849,62 +1858,62 @@ void For_SetForumName (const struct For_Forum *Forum,
Txt_only_teachers_NO_HTML[Language]);
break;
case For_FORUM_INSTIT_USRS:
- Hie.Ins.Cod = Forum->HieCod;
- if (!Ins_GetInstitDataByCod (&Hie.Ins))
+ Hie[HieLvl_INS].Cod = Forum->HieCod;
+ if (!Ins_GetInstitDataByCod (&Hie[HieLvl_INS]))
Err_WrongInstitExit ();
- Str_Copy (ForumName,Hie.Ins.ShrtName,For_MAX_BYTES_FORUM_NAME);
+ Str_Copy (ForumName,Hie[HieLvl_INS].ShrtName,For_MAX_BYTES_FORUM_NAME);
break;
case For_FORUM_INSTIT_TCHS:
- Hie.Ins.Cod = Forum->HieCod;
- if (!Ins_GetInstitDataByCod (&Hie.Ins))
+ Hie[HieLvl_INS].Cod = Forum->HieCod;
+ if (!Ins_GetInstitDataByCod (&Hie[HieLvl_INS]))
Err_WrongInstitExit ();
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s",
- Hie.Ins.ShrtName,
+ Hie[HieLvl_INS].ShrtName,
UseHTMLEntities ? Txt_only_teachers :
Txt_only_teachers_NO_HTML[Language]);
break;
case For_FORUM_CENTER_USRS:
- Hie.Ctr.Cod = Forum->HieCod;
- if (!Ctr_GetCenterDataByCod (&Hie.Ctr))
+ Hie[HieLvl_CTR].Cod = Forum->HieCod;
+ if (!Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]))
Err_WrongCenterExit ();
- Str_Copy (ForumName,Hie.Ctr.ShrtName,For_MAX_BYTES_FORUM_NAME);
+ Str_Copy (ForumName,Hie[HieLvl_CTR].ShrtName,For_MAX_BYTES_FORUM_NAME);
break;
case For_FORUM_CENTER_TCHS:
- Hie.Ctr.Cod = Forum->HieCod;
- if (!Ctr_GetCenterDataByCod (&Hie.Ctr))
+ Hie[HieLvl_CTR].Cod = Forum->HieCod;
+ if (!Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]))
Err_WrongCenterExit ();
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s",
- Hie.Ctr.ShrtName,
+ Hie[HieLvl_CTR].ShrtName,
UseHTMLEntities ? Txt_only_teachers :
Txt_only_teachers_NO_HTML[Language]);
break;
case For_FORUM_DEGREE_USRS:
- Hie.Deg.Cod = Forum->HieCod;
- if (!Deg_GetDegreeDataByCod (&Hie.Deg))
+ Hie[HieLvl_DEG].Cod = Forum->HieCod;
+ if (!Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]))
Err_WrongDegreeExit ();
- Str_Copy (ForumName,Hie.Deg.ShrtName,For_MAX_BYTES_FORUM_NAME);
+ Str_Copy (ForumName,Hie[HieLvl_DEG].ShrtName,For_MAX_BYTES_FORUM_NAME);
break;
case For_FORUM_DEGREE_TCHS:
- Hie.Deg.Cod = Forum->HieCod;
- if (!Deg_GetDegreeDataByCod (&Hie.Deg))
+ Hie[HieLvl_DEG].Cod = Forum->HieCod;
+ if (!Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]))
Err_WrongDegreeExit ();
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s",
- Hie.Deg.ShrtName,
+ Hie[HieLvl_DEG].ShrtName,
UseHTMLEntities ? Txt_only_teachers :
Txt_only_teachers_NO_HTML[Language]);
break;
case For_FORUM_COURSE_USRS:
- Hie.Crs.Cod = Forum->HieCod;
- if (!Crs_GetCourseDataByCod (&Hie.Crs))
+ Hie[HieLvl_CRS].Cod = Forum->HieCod;
+ if (!Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
Err_WrongCourseExit ();
- Str_Copy (ForumName,Hie.Crs.ShrtName,For_MAX_BYTES_FORUM_NAME);
+ Str_Copy (ForumName,Hie[HieLvl_CRS].ShrtName,For_MAX_BYTES_FORUM_NAME);
break;
case For_FORUM_COURSE_TCHS:
- Hie.Crs.Cod = Forum->HieCod;
- if (!Crs_GetCourseDataByCod (&Hie.Crs))
+ Hie[HieLvl_CRS].Cod = Forum->HieCod;
+ if (!Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
Err_WrongCourseExit ();
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s",
- Hie.Crs.ShrtName,
+ Hie[HieLvl_CRS].ShrtName,
UseHTMLEntities ? Txt_only_teachers :
Txt_only_teachers_NO_HTML[Language]);
break;
diff --git a/swad_hierarchy.c b/swad_hierarchy.c
index e8716c632..bd26a5f88 100644
--- a/swad_hierarchy.c
+++ b/swad_hierarchy.c
@@ -508,7 +508,8 @@ static void Hie_DrawLogo (const char *ShrtText)
default:
Lgo_DrawLogo (LogoScope[Gbl.Hierarchy.Level],
*LogoCode[Gbl.Hierarchy.Level],
- ShrtText,40,"TOP_LOGO");
+ ShrtText,
+ 40,"TOP_LOGO");
break;
}
}
@@ -676,7 +677,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
MYSQL_ROW row;
unsigned NumRow;
unsigned NumRows;
- struct Hie_Hierarchy Hie;
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS];
/***** Get institutions, centers, degrees admin by user from database *****/
NumRows = Hie_DB_GetInsCtrDegAdminBy (&mysql_res,UsrCod);
@@ -713,33 +714,33 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
HTM_TxtF (" %s",Txt_all_degrees);
break;
case HieLvl_INS: // Institution
- if ((Hie.Ins.Cod = Str_ConvertStrCodToLongCod (row[1])) > 0)
+ if ((Hie[HieLvl_INS].Cod = Str_ConvertStrCodToLongCod (row[1])) > 0)
{
/* Get data of institution */
- Ins_GetInstitDataByCod (&Hie.Ins);
+ Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
/* Write institution logo and name */
- Ins_DrawInstitLogoAndNameWithLink (&Hie.Ins,ActSeeInsInf,"LT");
+ Ins_DrawInstitLogoAndNameWithLink (&Hie[HieLvl_INS],ActSeeInsInf,"LT");
}
break;
case HieLvl_CTR: // Center
- if ((Hie.Ctr.Cod = Str_ConvertStrCodToLongCod (row[1])) > 0)
+ if ((Hie[HieLvl_CTR].Cod = Str_ConvertStrCodToLongCod (row[1])) > 0)
{
/* Get data of center */
- Ctr_GetCenterDataByCod (&Hie.Ctr);
+ Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
/* Write center logo and name */
- Ctr_DrawCenterLogoAndNameWithLink (&Hie.Ctr,ActSeeCtrInf,"LT");
+ Ctr_DrawCenterLogoAndNameWithLink (&Hie[HieLvl_CTR],ActSeeCtrInf,"LT");
}
break;
case HieLvl_DEG: // Degree
- if ((Hie.Deg.Cod = Str_ConvertStrCodToLongCod (row[1])) > 0)
+ if ((Hie[HieLvl_DEG].Cod = Str_ConvertStrCodToLongCod (row[1])) > 0)
{
/* Get data of degree */
- Deg_GetDegreeDataByCod (&Hie.Deg);
+ Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
/* Write degree logo and name */
- Deg_DrawDegreeLogoAndNameWithLink (&Hie.Deg,ActSeeDegInf,"LT");
+ Deg_DrawDegreeLogoAndNameWithLink (&Hie[HieLvl_DEG],ActSeeDegInf,"LT");
}
break;
default: // There are no administrators in other scopes
diff --git a/swad_hierarchy.h b/swad_hierarchy.h
index af305d6cf..d155a4bd2 100644
--- a/swad_hierarchy.h
+++ b/swad_hierarchy.h
@@ -33,19 +33,6 @@
#include "swad_degree.h"
#include "swad_institution.h"
-/*****************************************************************************/
-/******************************* Public types ********************************/
-/*****************************************************************************/
-
-struct Hie_Hierarchy
- {
- struct Hie_Node Cty;
- struct Hie_Node Ins;
- struct Hie_Node Ctr;
- struct Hie_Node Deg;
- struct Hie_Node Crs;
- };
-
/*****************************************************************************/
/***************************** Public prototypes *****************************/
/*****************************************************************************/
diff --git a/swad_hierarchy_config.c b/swad_hierarchy_config.c
index 5f6eb6929..11961342e 100644
--- a/swad_hierarchy_config.c
+++ b/swad_hierarchy_config.c
@@ -67,7 +67,10 @@ void HieCfg_Title (bool PutLink,
LogoWWW,LogoFullName,The_GetSuffix ());
/* Logo and name */
- Lgo_DrawLogo (LogoScope,LogoCod,LogoShrtName,64,NULL);
+ Lgo_DrawLogo (LogoScope,
+ LogoCod,
+ LogoShrtName,
+ 64,NULL);
HTM_BR ();
HTM_Txt (TextFullName);
diff --git a/swad_institution.c b/swad_institution.c
index 8466de6ca..ed61a2965 100644
--- a/swad_institution.c
+++ b/swad_institution.c
@@ -215,7 +215,10 @@ void Ins_DrawInstitutionLogoWithLink (struct Hie_Node *Ins,unsigned Size)
ParCod_PutPar (ParCod_Ins,Ins->Cod);
HTM_BUTTON_Submit_Begin (Ins->FullName,"class=\"BT_LINK\"");
}
- Lgo_DrawLogo (HieLvl_INS,Ins->Cod,Ins->FullName,Size,NULL);
+ Lgo_DrawLogo (HieLvl_INS,
+ Ins->Cod,
+ Ins->FullName,
+ Size,NULL);
if (PutLink)
{
HTM_BUTTON_End ();
@@ -240,7 +243,10 @@ void Ins_DrawInstitLogoAndNameWithLink (struct Hie_Node *Ins,Act_Action_t Action
Str_FreeGoToTitle ();
/***** Institution logo and name *****/
- Lgo_DrawLogo (HieLvl_INS,Ins->Cod,Ins->ShrtName,16,ClassLogo);
+ Lgo_DrawLogo (HieLvl_INS,
+ Ins->Cod,
+ Ins->ShrtName,
+ 16,ClassLogo);
HTM_TxtF (" %s",Ins->FullName);
/***** End link *****/
@@ -935,7 +941,10 @@ static void Ins_ListInstitutionsForEdition (void)
/* Institution logo */
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ins->FullName);
- Lgo_DrawLogo (HieLvl_INS,Ins->Cod,Ins->ShrtName,20,NULL);
+ Lgo_DrawLogo (HieLvl_INS,
+ Ins->Cod,
+ Ins->ShrtName,
+ 20,NULL);
HTM_TD_End ();
/* Institution short name */
@@ -1380,7 +1389,10 @@ static void Ins_PutFormToCreateInstitution (void)
/***** Institution logo *****/
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ins_EditingIns->FullName);
- Lgo_DrawLogo (HieLvl_INS,-1L,"",20,NULL);
+ Lgo_DrawLogo (HieLvl_INS,
+ -1L,
+ "",
+ 20,NULL);
HTM_TD_End ();
/***** Institution short name *****/
@@ -2253,7 +2265,9 @@ static void Ins_ShowInss (MYSQL_RES **mysql_res,unsigned NumInss,
"class=\"LM BT_LINK\"");
if (Gbl.Usrs.Listing.WithPhotos)
{
- Lgo_DrawLogo (HieLvl_INS,Ins.Cod,Ins.ShrtName,
+ Lgo_DrawLogo (HieLvl_INS,
+ Ins.Cod,
+ Ins.ShrtName,
40,NULL);
HTM_NBSP ();
}
diff --git a/swad_layout.c b/swad_layout.c
index eae456afb..e8753d3a8 100644
--- a/swad_layout.c
+++ b/swad_layout.c
@@ -1466,19 +1466,19 @@ static void Lay_WriteFootFromHTMLFile (void)
void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
long InsCod,long DegCod,long CrsCod)
{
- struct Hie_Hierarchy Hie;
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS];
/***** Get data of institution *****/
- Hie.Ins.Cod = InsCod;
- Ins_GetInstitDataByCod (&Hie.Ins);
+ Hie[HieLvl_INS].Cod = InsCod;
+ Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
/***** Get data of degree *****/
- Hie.Deg.Cod = DegCod;
- Deg_GetDegreeDataByCod (&Hie.Deg);
+ Hie[HieLvl_DEG].Cod = DegCod;
+ Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
/***** Get data of course *****/
- Hie.Crs.Cod = CrsCod;
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = CrsCod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
/***** Begin table *****/
HTM_TABLE_BeginWidePadding (10);
@@ -1490,8 +1490,11 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
if (InsCod > 0)
{
if (!PrintView)
- HTM_A_Begin ("href=\"%s\" target=\"_blank\"",Hie.Ins.WWW);
- Lgo_DrawLogo (HieLvl_INS,Hie.Ins.Cod,Hie.Ins.ShrtName,40,NULL);
+ HTM_A_Begin ("href=\"%s\" target=\"_blank\"",Hie[HieLvl_INS].WWW);
+ Lgo_DrawLogo (HieLvl_INS,
+ Hie[HieLvl_INS].Cod,
+ Hie[HieLvl_INS].ShrtName,
+ 40,NULL);
if (!PrintView)
HTM_A_End ();
}
@@ -1505,27 +1508,27 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\""
" class=\"CLASSPHOTO_TITLE CLASSPHOTO_%s\"",
- Hie.Ins.WWW,The_GetSuffix ());
- HTM_Txt (Hie.Ins.FullName);
+ Hie[HieLvl_INS].WWW,The_GetSuffix ());
+ HTM_Txt (Hie[HieLvl_INS].FullName);
if (!PrintView)
HTM_A_End ();
}
if (DegCod > 0)
{
- if (Hie.Ins.Cod > 0)
+ if (Hie[HieLvl_INS].Cod > 0)
HTM_Txt (" - ");
if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\""
" class=\"CLASSPHOTO_TITLE CLASSPHOTO_%s\"",
- Hie.Deg.WWW,The_GetSuffix ());
- HTM_Txt (Hie.Deg.FullName);
+ Hie[HieLvl_DEG].WWW,The_GetSuffix ());
+ HTM_Txt (Hie[HieLvl_DEG].FullName);
if (!PrintView)
HTM_A_End ();
}
HTM_BR ();
if (CrsCod > 0)
{
- HTM_Txt (Hie.Crs.FullName);
+ HTM_Txt (Hie[HieLvl_CRS].FullName);
if (DrawingClassPhoto && !Gbl.Usrs.ClassPhoto.AllGroups)
{
HTM_BR ();
@@ -1541,8 +1544,11 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\""
" class=\"CLASSPHOTO_TITLE CLASSPHOTO_%s\"",
- Hie.Deg.WWW,The_GetSuffix ());
- Lgo_DrawLogo (HieLvl_DEG,Hie.Deg.Cod,Hie.Deg.ShrtName,40,NULL);
+ Hie[HieLvl_DEG].WWW,The_GetSuffix ());
+ Lgo_DrawLogo (HieLvl_DEG,
+ Hie[HieLvl_DEG].Cod,
+ Hie[HieLvl_DEG].ShrtName,
+ 40,NULL);
if (!PrintView)
HTM_A_End ();
}
diff --git a/swad_log.c b/swad_log.c
index 7e3b42d3b..643f6aec1 100644
--- a/swad_log.c
+++ b/swad_log.c
@@ -204,7 +204,7 @@ void Log_GetAndShowLastClicks (void)
Act_Action_t Action;
const char *ClassRow;
time_t TimeDiff;
- struct Hie_Hierarchy Hie;
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS];
/***** Get last clicks from database *****/
NumClicks = Log_DB_GetLastClicks (&mysql_res);
@@ -247,19 +247,19 @@ void Log_GetAndShowLastClicks (void)
TimeDiff = (time_t) 0;
/* Get country code (row[4]) */
- Hie.Cty.Cod = Str_ConvertStrCodToLongCod (row[4]);
- Cty_GetCountryNameInLanguage (Hie.Cty.Cod,Gbl.Prefs.Language,
- Hie.Cty.FullName);
+ Hie[HieLvl_CTY].Cod = Str_ConvertStrCodToLongCod (row[4]);
+ Cty_GetCountryNameInLanguage (Hie[HieLvl_CTY].Cod,Gbl.Prefs.Language,
+ Hie[HieLvl_CTY].FullName);
/* Get institution code (row[5]),
center code (row[6])
and degree code (row[7]) */
- Hie.Ins.Cod = Str_ConvertStrCodToLongCod (row[5]);
- Hie.Ctr.Cod = Str_ConvertStrCodToLongCod (row[6]);
- Hie.Deg.Cod = Str_ConvertStrCodToLongCod (row[7]);
- Ins_DB_GetInsShrtName (Hie.Ins.Cod,Hie.Ins.ShrtName);
- Ctr_DB_GetShortNameOfCenterByCod (Hie.Ctr.Cod,Hie.Ctr.ShrtName);
- Deg_DB_GetShortNameOfDegreeByCod (Hie.Deg.Cod,Hie.Deg.ShrtName);
+ Hie[HieLvl_INS].Cod = Str_ConvertStrCodToLongCod (row[5]);
+ Hie[HieLvl_CTR].Cod = Str_ConvertStrCodToLongCod (row[6]);
+ Hie[HieLvl_DEG].Cod = Str_ConvertStrCodToLongCod (row[7]);
+ Ins_DB_GetInsShrtName (Hie[HieLvl_INS].Cod,Hie[HieLvl_INS].ShrtName);
+ Ctr_DB_GetShortNameOfCenterByCod (Hie[HieLvl_CTR].Cod,Hie[HieLvl_CTR].ShrtName);
+ Deg_DB_GetShortNameOfDegreeByCod (Hie[HieLvl_DEG].Cod,Hie[HieLvl_DEG].ShrtName);
/* Print table row */
HTM_TR_Begin (NULL);
@@ -281,22 +281,22 @@ void Log_GetAndShowLastClicks (void)
HTM_TD_Begin ("class=\"LC_CTY %s_%s\"",
ClassRow,The_GetSuffix ());
- HTM_Txt (Hie.Cty.FullName); // Country
+ HTM_Txt (Hie[HieLvl_CTY].FullName); // Country
HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_INS %s_%s\"",
ClassRow,The_GetSuffix ());
- HTM_Txt (Hie.Ins.ShrtName); // Institution
+ HTM_Txt (Hie[HieLvl_INS].ShrtName); // Institution
HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_CTR %s_%s\"",
ClassRow,The_GetSuffix ());
- HTM_Txt (Hie.Ctr.ShrtName); // Center
+ HTM_Txt (Hie[HieLvl_CTR].ShrtName); // Center
HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_DEG %s_%s\"",
ClassRow,The_GetSuffix ());
- HTM_Txt (Hie.Deg.ShrtName); // Degree
+ HTM_Txt (Hie[HieLvl_DEG].ShrtName); // Degree
HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_ACT %s_%s\"",
diff --git a/swad_logo.c b/swad_logo.c
index 0ea708269..3cca73719 100644
--- a/swad_logo.c
+++ b/swad_logo.c
@@ -62,7 +62,9 @@ static void Lgo_PutIconToRemoveLogo (Act_Action_t ActionRem);
/***************** Draw institution, center or degree logo *******************/
/*****************************************************************************/
-void Lgo_DrawLogo (HieLvl_Level_t Level,long HieCod,const char *AltText,
+void Lgo_DrawLogo (HieLvl_Level_t Level,
+ long HieCod,
+ const char *AltText,
unsigned Size,const char *Class)
{
static const char *HieIcon[HieLvl_NUM_LEVELS] =
diff --git a/swad_logo.h b/swad_logo.h
index 3160d9a5f..0f4f2cb22 100644
--- a/swad_logo.h
+++ b/swad_logo.h
@@ -27,7 +27,9 @@
/***************************** Public prototypes *****************************/
/*****************************************************************************/
-void Lgo_DrawLogo (HieLvl_Level_t Level,long HieCod,const char *AltText,
+void Lgo_DrawLogo (HieLvl_Level_t Level,
+ long HieCod,
+ const char *AltText,
unsigned Size,const char *Class);
void Lgo_PutIconToChangeLogo (HieLvl_Level_t Level);
void Lgo_RequestLogo (HieLvl_Level_t Level);
diff --git a/swad_notification.c b/swad_notification.c
index e10888f25..b64b5249d 100644
--- a/swad_notification.c
+++ b/swad_notification.c
@@ -340,7 +340,7 @@ void Ntf_ShowMyNotifications (void)
bool AllNotifications;
Ntf_NotifyEvent_t NotifyEvent = (Ntf_NotifyEvent_t) 0; // Initialized to avoid warning
struct Usr_Data UsrDat;
- struct Hie_Hierarchy Hie;
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS];
long Cod;
struct For_Forums Forums;
char ForumName[For_MAX_BYTES_FORUM_NAME + 1];
@@ -419,20 +419,20 @@ void Ntf_ShowMyNotifications (void)
Usr_DONT_GET_ROLE_IN_CURRENT_CRS);
/* Get institution code (row[2]) */
- Hie.Ins.Cod = Str_ConvertStrCodToLongCod (row[2]);
- Ins_GetInstitDataByCod (&Hie.Ins);
+ Hie[HieLvl_INS].Cod = Str_ConvertStrCodToLongCod (row[2]);
+ Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
/* Get center code (row[3]) */
- Hie.Ctr.Cod = Str_ConvertStrCodToLongCod (row[3]);
- Ctr_GetCenterDataByCod (&Hie.Ctr);
+ Hie[HieLvl_CTR].Cod = Str_ConvertStrCodToLongCod (row[3]);
+ Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
/* Get degree code (row[4]) */
- Hie.Deg.Cod = Str_ConvertStrCodToLongCod (row[4]);
- Deg_GetDegreeDataByCod (&Hie.Deg);
+ Hie[HieLvl_DEG].Cod = Str_ConvertStrCodToLongCod (row[4]);
+ Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
/* Get course code (row[5]) */
- Hie.Crs.Cod = Str_ConvertStrCodToLongCod (row[5]);
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Hie[HieLvl_CRS].Cod = Str_ConvertStrCodToLongCod (row[5]);
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
/* Get message/post/... code (row[6]) */
Cod = Str_ConvertStrCodToLongCod (row[6]);
@@ -488,7 +488,7 @@ void Ntf_ShowMyNotifications (void)
ClassBg,The_GetSuffix ());
if (PutLink)
{
- Action = Ntf_StartFormGoToAction (NotifyEvent,Hie.Crs.Cod,&UsrDat,Cod,&Forums);
+ Action = Ntf_StartFormGoToAction (NotifyEvent,Hie[HieLvl_CRS].Cod,&UsrDat,Cod,&Forums);
PutLink = Frm_CheckIfInside ();
}
@@ -506,7 +506,7 @@ void Ntf_ShowMyNotifications (void)
HTM_TD_Begin ("class=\"LT %s_%s\"",ClassBg,The_GetSuffix ());
if (PutLink)
{
- Action = Ntf_StartFormGoToAction (NotifyEvent,Hie.Crs.Cod,&UsrDat,Cod,&Forums);
+ Action = Ntf_StartFormGoToAction (NotifyEvent,Hie[HieLvl_CRS].Cod,&UsrDat,Cod,&Forums);
PutLink = Frm_CheckIfInside ();
HTM_BUTTON_Submit_Begin (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent],
@@ -539,7 +539,7 @@ void Ntf_ShowMyNotifications (void)
{
if (PutLink)
{
- Action = Ntf_StartFormGoToAction (NotifyEvent,Hie.Crs.Cod,&UsrDat,Cod,&Forums);
+ Action = Ntf_StartFormGoToAction (NotifyEvent,Hie[HieLvl_CRS].Cod,&UsrDat,Cod,&Forums);
PutLink = Frm_CheckIfInside ();
}
@@ -563,7 +563,7 @@ void Ntf_ShowMyNotifications (void)
{
if (PutLink)
{
- Action = Ntf_StartFormGoToAction (NotifyEvent,Hie.Crs.Cod,&UsrDat,Cod,&Forums);
+ Action = Ntf_StartFormGoToAction (NotifyEvent,Hie[HieLvl_CRS].Cod,&UsrDat,Cod,&Forums);
PutLink = Frm_CheckIfInside ();
}
@@ -575,14 +575,14 @@ void Ntf_ShowMyNotifications (void)
HTM_SPAN_Begin ("class=\"%s_%s\"",
ClassTxt,The_GetSuffix ());
- if (Hie.Crs.Cod > 0)
- HTM_TxtF ("%s: %s",Txt_Course,Hie.Crs.ShrtName);
- else if (Hie.Deg.Cod > 0)
- HTM_TxtF ("%s: %s",Txt_Degree,Hie.Deg.ShrtName);
- else if (Hie.Ctr.Cod > 0)
- HTM_TxtF ("%s: %s",Txt_Center,Hie.Ctr.ShrtName);
- else if (Hie.Ins.Cod > 0)
- HTM_TxtF ("%s: %s",Txt_Institution,Hie.Ins.ShrtName);
+ if (Hie[HieLvl_CRS].Cod > 0)
+ HTM_TxtF ("%s: %s",Txt_Course,Hie[HieLvl_CRS].ShrtName);
+ else if (Hie[HieLvl_DEG].Cod > 0)
+ HTM_TxtF ("%s: %s",Txt_Degree,Hie[HieLvl_DEG].ShrtName);
+ else if (Hie[HieLvl_CTR].Cod > 0)
+ HTM_TxtF ("%s: %s",Txt_Center,Hie[HieLvl_CTR].ShrtName);
+ else if (Hie[HieLvl_INS].Cod > 0)
+ HTM_TxtF ("%s: %s",Txt_Institution,Hie[HieLvl_INS].ShrtName);
else
HTM_Hyphen ();
@@ -614,7 +614,7 @@ void Ntf_ShowMyNotifications (void)
ContentStr = NULL;
Ntf_GetNotifSummaryAndContent (SummaryStr,&ContentStr,NotifyEvent,
- Cod,Hie.Crs.Cod,Gbl.Usrs.Me.UsrDat.UsrCod,
+ Cod,Hie[HieLvl_CRS].Cod,Gbl.Usrs.Me.UsrDat.UsrCod,
false);
HTM_TR_Begin (NULL);
@@ -1272,7 +1272,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (const struct Usr_Data *ToUsrDat
Lan_Language_t ToUsrLanguage;
struct Usr_Data FromUsrDat;
Ntf_NotifyEvent_t NotifyEvent = (Ntf_NotifyEvent_t) 0; // Initialized to avoid warning
- struct Hie_Hierarchy Hie;
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS];
long Cod;
struct For_Forum ForumSelected;
char ForumName[For_MAX_BYTES_FORUM_NAME + 1];
@@ -1339,16 +1339,16 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (const struct Usr_Data *ToUsrDat
center code (row[3]),
degree code (row[4]),
course code (row[5]) */
- Hie.Ins.Cod = Str_ConvertStrCodToLongCod (row[2]);
- Hie.Ctr.Cod = Str_ConvertStrCodToLongCod (row[3]);
- Hie.Deg.Cod = Str_ConvertStrCodToLongCod (row[4]);
- Hie.Crs.Cod = Str_ConvertStrCodToLongCod (row[5]);
+ Hie[HieLvl_INS].Cod = Str_ConvertStrCodToLongCod (row[2]);
+ Hie[HieLvl_CTR].Cod = Str_ConvertStrCodToLongCod (row[3]);
+ Hie[HieLvl_DEG].Cod = Str_ConvertStrCodToLongCod (row[4]);
+ Hie[HieLvl_CRS].Cod = Str_ConvertStrCodToLongCod (row[5]);
/* Get data of institution, center, degree and course */
- Ins_GetInstitDataByCod (&Hie.Ins);
- Ctr_GetCenterDataByCod (&Hie.Ctr);
- Deg_GetDegreeDataByCod (&Hie.Deg);
- Crs_GetCourseDataByCod (&Hie.Crs);
+ Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
+ Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
+ Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
/* Get message/post/... code (row[6]) */
Cod = Str_ConvertStrCodToLongCod (row[6]);
@@ -1386,10 +1386,10 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (const struct Usr_Data *ToUsrDat
case Ntf_EVENT_NOTICE:
case Ntf_EVENT_MESSAGE:
case Ntf_EVENT_SURVEY:
- if (Hie.Crs.Cod > 0)
+ if (Hie[HieLvl_CRS].Cod > 0)
fprintf (FileMail,"%s: %s\n",
Txt_Course_NO_HTML[ToUsrLanguage],
- Hie.Crs.FullName);
+ Hie[HieLvl_CRS].FullName);
break;
case Ntf_EVENT_FORUM_POST_COURSE:
case Ntf_EVENT_FORUM_REPLY:
@@ -1440,7 +1440,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (const struct Usr_Data *ToUsrDat
*NumMails = 1;
/* Update statistics about notifications */
- Ntf_UpdateNumNotifSent (Hie.Deg.Cod,Hie.Crs.Cod,NotifyEvent,
+ Ntf_UpdateNumNotifSent (Hie[HieLvl_DEG].Cod,Hie[HieLvl_CRS].Cod,NotifyEvent,
*NumNotif,*NumMails);
}
diff --git a/swad_photo.c b/swad_photo.c
index 1bcb2fa26..99ad6ca24 100644
--- a/swad_photo.c
+++ b/swad_photo.c
@@ -2261,7 +2261,10 @@ static void Pho_ShowOrPrintListDegrees (struct Pho_DegPhotos *DegPhotos,
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeDegInf,"CT");
else // Pho_DEGREES_PRINT
{
- Lgo_DrawLogo (HieLvl_DEG,Deg.Cod,Deg.ShrtName,20,"CT");
+ Lgo_DrawLogo (HieLvl_DEG,
+ Deg.Cod,
+ Deg.ShrtName,
+ 20,"CT");
HTM_TxtF (" %s",Deg.FullName);
}
HTM_TD_End ();
diff --git a/swad_record.c b/swad_record.c
index fded8dcb3..57da32729 100644
--- a/swad_record.c
+++ b/swad_record.c
@@ -1655,8 +1655,10 @@ 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 (HieLvl_DEG,Gbl.Hierarchy.Node[HieLvl_DEG].Cod,
- Gbl.Hierarchy.Node[HieLvl_DEG].ShrtName,Rec_DEGREE_LOGO_SIZE,NULL);
+ Lgo_DrawLogo (HieLvl_DEG,
+ Gbl.Hierarchy.Node[HieLvl_DEG].Cod,
+ Gbl.Hierarchy.Node[HieLvl_DEG].ShrtName,
+ Rec_DEGREE_LOGO_SIZE,NULL);
HTM_TD_End ();
HTM_TD_Begin ("class=\"REC_HEAD CM\"");
@@ -2535,7 +2537,9 @@ static void Rec_ShowInstitutionInHead (struct Hie_Node *Ins,bool PutFormLinks)
ParCod_PutPar (ParCod_Ins,Ins->Cod);
HTM_BUTTON_Submit_Begin (Ins->FullName,"class=\"BT_LINK\"");
}
- Lgo_DrawLogo (HieLvl_INS,Ins->Cod,Ins->ShrtName,
+ Lgo_DrawLogo (HieLvl_INS,
+ Ins->Cod,
+ Ins->ShrtName,
Rec_INSTITUTION_LOGO_SIZE,NULL);
if (PutFormLinks)
{
diff --git a/swad_timeline_note.c b/swad_timeline_note.c
index 2faabd66a..982eb4742 100644
--- a/swad_timeline_note.c
+++ b/swad_timeline_note.c
@@ -85,11 +85,11 @@ static void TmlNot_WriteAuthorTimeAndContent (const struct TmlNot_Note *Not,
static void TmlNot_WriteContent (const struct TmlNot_Note *Not);
static void TmlNot_GetAndWriteNoPost (const struct TmlNot_Note *Not);
static void TmlNot_GetLocationInHierarchy (const struct TmlNot_Note *Not,
- struct Hie_Hierarchy *Hie,
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS],
struct For_Forum *Forum,
char ForumName[For_MAX_BYTES_FORUM_NAME + 1]);
static void TmlNot_WriteLocationInHierarchy (const struct TmlNot_Note *Not,
- const struct Hie_Hierarchy *Hie,
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS],
const char ForumName[For_MAX_BYTES_FORUM_NAME + 1]);
static void TmlNot_PutFormGoToAction (const struct TmlNot_Note *Not,
@@ -390,7 +390,7 @@ static void TmlNot_WriteContent (const struct TmlNot_Note *Not)
static void TmlNot_GetAndWriteNoPost (const struct TmlNot_Note *Not)
{
- struct Hie_Hierarchy Hie;
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS];
struct For_Forums Forums;
char ForumName[For_MAX_BYTES_FORUM_NAME + 1];
char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1];
@@ -400,14 +400,14 @@ static void TmlNot_GetAndWriteNoPost (const struct TmlNot_Note *Not)
/***** Get location in hierarchy *****/
if (!Not->Unavailable)
- TmlNot_GetLocationInHierarchy (Not,&Hie,&Forums.Forum,ForumName);
+ TmlNot_GetLocationInHierarchy (Not,Hie,&Forums.Forum,ForumName);
/***** Write note type *****/
TmlNot_PutFormGoToAction (Not,&Forums);
/***** Write location in hierarchy *****/
if (!Not->Unavailable)
- TmlNot_WriteLocationInHierarchy (Not,&Hie,ForumName);
+ TmlNot_WriteLocationInHierarchy (Not,Hie,ForumName);
/***** Get and write note summary *****/
/* Get note summary */
@@ -424,16 +424,16 @@ static void TmlNot_GetAndWriteNoPost (const struct TmlNot_Note *Not)
/*****************************************************************************/
static void TmlNot_GetLocationInHierarchy (const struct TmlNot_Note *Not,
- struct Hie_Hierarchy *Hie,
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS],
struct For_Forum *Forum,
char ForumName[For_MAX_BYTES_FORUM_NAME + 1])
{
/***** Initialize location in hierarchy *****/
- Hie->Cty.Cod =
- Hie->Ins.Cod =
- Hie->Ctr.Cod =
- Hie->Deg.Cod =
- Hie->Crs.Cod = -1L;
+ Hie[HieLvl_CTY].Cod =
+ Hie[HieLvl_INS].Cod =
+ Hie[HieLvl_CTR].Cod =
+ Hie[HieLvl_DEG].Cod =
+ Hie[HieLvl_CRS].Cod = -1L;
/***** Get location in hierarchy *****/
switch (Not->Type)
@@ -441,28 +441,28 @@ static void TmlNot_GetLocationInHierarchy (const struct TmlNot_Note *Not,
case TmlNot_INS_DOC_PUB_FILE:
case TmlNot_INS_SHA_PUB_FILE:
/* Get institution data */
- Hie->Ins.Cod = Not->HieCod;
- Ins_GetInstitDataByCod (&Hie->Ins);
+ Hie[HieLvl_INS].Cod = Not->HieCod;
+ Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
break;
case TmlNot_CTR_DOC_PUB_FILE:
case TmlNot_CTR_SHA_PUB_FILE:
/* Get center data */
- Hie->Ctr.Cod = Not->HieCod;
- Ctr_GetCenterDataByCod (&Hie->Ctr);
+ Hie[HieLvl_CTR].Cod = Not->HieCod;
+ Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
break;
case TmlNot_DEG_DOC_PUB_FILE:
case TmlNot_DEG_SHA_PUB_FILE:
/* Get degree data */
- Hie->Deg.Cod = Not->HieCod;
- Deg_GetDegreeDataByCod (&Hie->Deg);
+ Hie[HieLvl_DEG].Cod = Not->HieCod;
+ Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
break;
case TmlNot_CRS_DOC_PUB_FILE:
case TmlNot_CRS_SHA_PUB_FILE:
case TmlNot_CALL_FOR_EXAM:
case TmlNot_NOTICE:
/* Get course data */
- Hie->Crs.Cod = Not->HieCod;
- Crs_GetCourseDataByCod (&Hie->Crs);
+ Hie[HieLvl_CRS].Cod = Not->HieCod;
+ Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
break;
case TmlNot_FORUM_POST:
/* Get forum type of the post */
@@ -481,7 +481,7 @@ static void TmlNot_GetLocationInHierarchy (const struct TmlNot_Note *Not,
/*****************************************************************************/
static void TmlNot_WriteLocationInHierarchy (const struct TmlNot_Note *Not,
- const struct Hie_Hierarchy *Hie,
+ struct Hie_Node Hie[HieLvl_NUM_LEVELS],
const char ForumName[For_MAX_BYTES_FORUM_NAME + 1])
{
extern const char *Txt_Institution;
@@ -501,21 +501,21 @@ static void TmlNot_WriteLocationInHierarchy (const struct TmlNot_Note *Not,
/* Write location (institution) in hierarchy */
HTM_TxtF ("%s: %s",
Txt_Institution,
- Hie->Ins.ShrtName);
+ Hie[HieLvl_INS].ShrtName);
break;
case TmlNot_CTR_DOC_PUB_FILE:
case TmlNot_CTR_SHA_PUB_FILE:
/* Write location (center) in hierarchy */
HTM_TxtF ("%s: %s",
Txt_Center,
- Hie->Ctr.ShrtName);
+ Hie[HieLvl_CTR].ShrtName);
break;
case TmlNot_DEG_DOC_PUB_FILE:
case TmlNot_DEG_SHA_PUB_FILE:
/* Write location (degree) in hierarchy */
HTM_TxtF ("%s: %s",
Txt_Degree,
- Hie->Deg.ShrtName);
+ Hie[HieLvl_DEG].ShrtName);
break;
case TmlNot_CRS_DOC_PUB_FILE:
case TmlNot_CRS_SHA_PUB_FILE:
@@ -524,7 +524,7 @@ static void TmlNot_WriteLocationInHierarchy (const struct TmlNot_Note *Not,
/* Write location (course) in hierarchy */
HTM_TxtF ("%s: %s",
Txt_Course,
- Hie->Crs.ShrtName);
+ Hie[HieLvl_CRS].ShrtName);
break;
case TmlNot_FORUM_POST:
/* Write forum name */