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 */