From ae81b753131ef7bdd68837330467b2398be4fa5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Wed, 20 Mar 2019 01:36:36 +0100 Subject: [PATCH] Version18.83 --- swad_RSS.c | 10 ++-- swad_alert.c | 4 +- swad_banner.c | 8 +-- swad_centre.c | 47 ++++++---------- swad_changelog.h | 7 ++- swad_chat.c | 18 +++--- swad_config.h | 54 +++++++++++++++--- swad_connected.c | 2 +- swad_country.c | 12 ++-- swad_course.c | 18 +++--- swad_degree.c | 8 +-- swad_figure.c | 29 +++++----- swad_file.c | 12 +--- swad_file_browser.c | 133 +++++++++++++++++++------------------------- swad_follow.c | 10 ++-- swad_forum.c | 16 +++--- swad_game.c | 6 +- swad_global.c | 13 ++--- swad_global.h | 1 - swad_group.c | 4 +- swad_hierarchy.c | 14 ++--- swad_icon.c | 31 +++++------ swad_info.c | 28 +++++----- swad_institution.c | 4 +- swad_layout.c | 49 ++++++++++------ swad_logo.c | 14 ++--- swad_mail.c | 6 +- swad_mark.c | 36 +++--------- swad_media.c | 89 +++++++++++------------------ swad_message.c | 8 +-- swad_network.c | 6 +- swad_notice.c | 10 ++-- swad_parameter.c | 21 +++---- swad_photo.c | 131 ++++++++++++++++++------------------------- swad_plugin.c | 8 +-- swad_profile.c | 2 +- swad_project.c | 4 +- swad_record.c | 4 +- swad_report.c | 21 +++---- swad_statistic.c | 28 +++++----- swad_survey.c | 2 +- swad_syllabus.c | 8 +-- swad_test.c | 8 +-- swad_test_import.c | 26 ++++----- swad_theme.c | 5 +- swad_timeline.c | 14 ++--- swad_user.c | 36 +++++------- swad_web_service.c | 12 ++-- swad_zip.c | 57 +++++++------------ 49 files changed, 497 insertions(+), 597 deletions(-) diff --git a/swad_RSS.c b/swad_RSS.c index dda3bf2e..edf4c44e 100644 --- a/swad_RSS.c +++ b/swad_RSS.c @@ -66,8 +66,8 @@ void RSS_UpdateRSSFileForACrs (struct Course *Crs) /***** Create RSS directory if not exists *****/ snprintf (PathRelPublRSSDir,sizeof (PathRelPublRSSDir), - "%s/%s/%ld/%s", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CRS,Crs->CrsCod,Cfg_RSS_FOLDER); + "%s/%ld/%s", + Cfg_PATH_CRS_PUBLIC,Crs->CrsCod,Cfg_RSS_FOLDER); Fil_CreateDirIfNotExists (PathRelPublRSSDir); /***** Create RSS file *****/ @@ -101,7 +101,7 @@ void RSS_UpdateRSSFileForACrs (struct Course *Crs) fprintf (FileRSS,"\n"); fprintf (FileRSS,"%s/swad112x32.png\n", - Gbl.Prefs.URLIcons); + Cfg_URL_ICON_PUBLIC); fprintf (FileRSS,"%s: %s\n", Cfg_PLATFORM_SHORT_NAME,Crs->ShrtName); fprintf (FileRSS,"%s/?crs=%ld\n", @@ -324,6 +324,6 @@ static void RSS_WriteExamAnnouncements (FILE *FileRSS,struct Course *Crs) void RSS_WriteRSSLink (FILE *FileTgt,long CrsCod) { - fprintf (FileTgt,"%s/%s/%ld/%s/%s", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_CRS,CrsCod,Cfg_RSS_FOLDER,Cfg_RSS_FILE); + fprintf (FileTgt,"%s/%ld/%s/%s", + Cfg_URL_CRS_PUBLIC,CrsCod,Cfg_RSS_FOLDER,Cfg_RSS_FILE); } diff --git a/swad_alert.c b/swad_alert.c index 1e4522e3..58263d51 100644 --- a/swad_alert.c +++ b/swad_alert.c @@ -411,14 +411,14 @@ static void Ale_ShowFixAlertAndButton1 (Ale_AlertType_t AlertType,const char *Tx "" "", IdAlert, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Close,Txt_Close); /***** Write message *****/ fprintf (Gbl.F.Out,"
%s" "
", Txt); diff --git a/swad_banner.c b/swad_banner.c index 7b0602a2..6602a868 100644 --- a/swad_banner.c +++ b/swad_banner.c @@ -146,14 +146,14 @@ static void Ban_WriteListOfBanners (void) /* Write data of this banner */ fprintf (Gbl.F.Out,"
  • " "" - "\"%s\"" "" "
  • ", Gbl.Banners.Lst[NumBan].WWW, Gbl.Banners.Lst[NumBan].FullName, - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_BANNER, + Cfg_URL_BANNER_PUBLIC, Gbl.Banners.Lst[NumBan].Img, Gbl.Banners.Lst[NumBan].ShrtName, Gbl.Banners.Lst[NumBan].FullName); @@ -998,11 +998,11 @@ void Ban_WriteMenuWithBanners (void) Ban_PutParamBanCod (Gbl.Banners.Lst[NumBan].BanCod); Par_PutHiddenParamString ("URL",Gbl.Banners.Lst[NumBan].WWW); Frm_LinkFormSubmit (Gbl.Banners.Lst[NumBan].FullName,"BANNER",NULL); - fprintf (Gbl.F.Out,"\"%s\"" "", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_BANNER, + Cfg_URL_BANNER_PUBLIC, Gbl.Banners.Lst[NumBan].Img, Gbl.Banners.Lst[NumBan].ShrtName, Gbl.Banners.Lst[NumBan].FullName); diff --git a/swad_centre.c b/swad_centre.c index fa55d58e..fc4f771f 100644 --- a/swad_centre.c +++ b/swad_centre.c @@ -312,8 +312,8 @@ static void Ctr_Configuration (bool PrintView) { /***** Path to photo *****/ snprintf (PathPhoto,sizeof (PathPhoto), - "%s/%s/%02u/%u/%u.jpg", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR, + "%s/%02u/%u/%u.jpg", + Cfg_PATH_CTR_PUBLIC, (unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100), (unsigned) Gbl.CurrentCtr.Ctr.CtrCod, (unsigned) Gbl.CurrentCtr.Ctr.CtrCod); @@ -352,10 +352,10 @@ static void Ctr_Configuration (bool PrintView) if (PutLink) fprintf (Gbl.F.Out,"", Gbl.CurrentCtr.Ctr.WWW); - fprintf (Gbl.F.Out,"\"%s\"", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_CTR, + Cfg_URL_CTR_PUBLIC, (unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100), (unsigned) Gbl.CurrentCtr.Ctr.CtrCod, (unsigned) Gbl.CurrentCtr.Ctr.CtrCod, @@ -717,8 +717,8 @@ static void Ctr_PutIconToChangePhoto (void) /***** Link to upload photo of centre *****/ snprintf (PathPhoto,sizeof (PathPhoto), - "%s/%s/%02u/%u/%u.jpg", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR, + "%s/%02u/%u/%u.jpg", + Cfg_PATH_CTR_PUBLIC, (unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100), (unsigned) Gbl.CurrentCtr.Ctr.CtrCod, (unsigned) Gbl.CurrentCtr.Ctr.CtrCod); @@ -1781,8 +1781,8 @@ void Ctr_RemoveCentre (void) /***** Remove directories of the centre *****/ snprintf (PathCtr,sizeof (PathCtr), - "%s/%s/%02u/%u", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR, + "%s/%02u/%u", + Cfg_PATH_CTR_PUBLIC, (unsigned) (Ctr.CtrCod % 100), (unsigned) Ctr.CtrCod); Fil_RemoveTree (PathCtr); @@ -2335,8 +2335,6 @@ void Ctr_ReceivePhoto (void) char *PtrExtension; size_t LengthExtension; char MIMEType[Brw_MAX_BYTES_MIME_TYPE + 1]; - char PathImgPriv[PATH_MAX + 1]; - char PathImgPrivTmp[PATH_MAX + 1]; char PathFileImgTmp[PATH_MAX + 1]; // Full name (including path and .jpg) of the destination temporary file char PathFileImg[PATH_MAX + 1]; // Full name (including path and .jpg) of the destination file bool WrongType = false; @@ -2362,16 +2360,10 @@ void Ctr_ReceivePhoto (void) /***** Create private directories if not exist *****/ /* Create private directory for images if it does not exist */ - snprintf (PathImgPriv,sizeof (PathImgPriv), - "%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_MEDIA); - Fil_CreateDirIfNotExists (PathImgPriv); + Fil_CreateDirIfNotExists (Cfg_PATH_MEDIA_PRIVATE); /* Create temporary private directory for images if it does not exist */ - snprintf (PathImgPrivTmp,sizeof (PathImgPrivTmp), - "%s/%s", - PathImgPriv,Cfg_FOLDER_IMG_TMP); - Fil_CreateDirIfNotExists (PathImgPrivTmp); + Fil_CreateDirIfNotExists (Cfg_PATH_MEDIA_TMP_PRIVATE); /* Get filename extension */ if ((PtrExtension = strrchr (FileNameImgSrc,(int) '.')) == NULL) @@ -2390,7 +2382,7 @@ void Ctr_ReceivePhoto (void) /* End the reception of image in a temporary file */ snprintf (PathFileImgTmp,sizeof (PathFileImgTmp), "%s/%s.%s", - PathImgPrivTmp,Gbl.UniqueNameEncrypted,PtrExtension); + Cfg_PATH_MEDIA_TMP_PRIVATE,Gbl.UniqueNameEncrypted,PtrExtension); if (!Fil_EndReceptionOfFile (PathFileImgTmp,Param)) { Ale_ShowAlert (Ale_WARNING,"Error copying file."); @@ -2398,26 +2390,23 @@ void Ctr_ReceivePhoto (void) } /***** Creates public directories if not exist *****/ + Fil_CreateDirIfNotExists (Cfg_PATH_CTR_PUBLIC); snprintf (Path,sizeof (Path), - "%s/%s", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR); - Fil_CreateDirIfNotExists (Path); - snprintf (Path,sizeof (Path), - "%s/%s/%02u", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR, + "%s/%02u", + Cfg_PATH_CTR_PUBLIC, (unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100)); Fil_CreateDirIfNotExists (Path); snprintf (Path,sizeof (Path), - "%s/%s/%02u/%u", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR, + "%s/%02u/%u", + Cfg_PATH_CTR_PUBLIC, (unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100), (unsigned) Gbl.CurrentCtr.Ctr.CtrCod); Fil_CreateDirIfNotExists (Path); /***** Convert temporary file to public JPEG file *****/ snprintf (PathFileImg,sizeof (PathFileImg), - "%s/%s/%02u/%u/%u.jpg", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR, + "%s/%02u/%u/%u.jpg", + Cfg_PATH_CTR_PUBLIC, (unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100), (unsigned) Gbl.CurrentCtr.Ctr.CtrCod, (unsigned) Gbl.CurrentCtr.Ctr.CtrCod); diff --git a/swad_changelog.h b/swad_changelog.h index 808c99a6..b4471dea 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -438,6 +438,8 @@ Lo de mutear anuncios, en principio prefiero hacer una opci // TODO: Allow timeline posting only for users belonging to courses or admins to avoid user who create accounts only to post +// TODO: Ver cómo recibir un fichero desde el cliente (SWADroid) en gsoap + /*****************************************************************************/ /****************************** Public constants *****************************/ /*****************************************************************************/ @@ -457,10 +459,13 @@ En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 18.82 (2019-03-19)" +#define Log_PLATFORM_VERSION "SWAD 18.83 (2019-03-19)" #define CSS_FILE "swad18.80.css" #define JS_FILE "swad18.80.js" /* + Version 18.83: Mar 19, 2019 Important optimization on removing of temporary files to increase speed. + Code refactoring related to paths and URL. + Fixing in CSS to hide overflow in timeline. (240536 lines) Version 18.82: Mar 19, 2019 User preferences are retrieved from database only when they are needed. (240630 lines) Version 18.81.5: Mar 19, 2019 Code refactoring related to media. (240594 lines) Version 18.81.4: Mar 19, 2019 Code refactoring related to media. (240586 lines) diff --git a/swad_chat.c b/swad_chat.c index 65d0d148..163612db 100644 --- a/swad_chat.c +++ b/swad_chat.c @@ -134,7 +134,7 @@ void Cht_ShowListOfAvailableChatRooms (void) " class=\"ICO16x16\" />" " %s" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Chat_rooms, Txt_Chat_rooms, Txt_Chat_rooms); @@ -149,7 +149,7 @@ void Cht_ShowListOfAvailableChatRooms (void) fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, ThisRoomFullName, ThisRoomFullName); Cht_WriteLinkToChat2 ("GBL_USR",ThisRoomFullName); @@ -165,7 +165,7 @@ void Cht_ShowListOfAvailableChatRooms (void) fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, ThisRoomFullName,ThisRoomFullName); Cht_WriteLinkToChat2 ("GBL_STD",ThisRoomFullName); break; @@ -178,7 +178,7 @@ void Cht_ShowListOfAvailableChatRooms (void) fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, ThisRoomFullName,ThisRoomFullName); Cht_WriteLinkToChat2 ("GBL_TCH",ThisRoomFullName); break; @@ -241,7 +241,7 @@ void Cht_ShowListOfAvailableChatRooms (void) fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, ThisRoomFullName,ThisRoomFullName); Cht_WriteLinkToChat2 (ThisRoomCode,ThisRoomFullName); } @@ -624,10 +624,10 @@ void Cht_OpenChatWindow (void) fprintf (Gbl.F.Out,"\n", Cfg_PLATFORM_SERVER); fprintf (Gbl.F.Out,"\n"); - fprintf (Gbl.F.Out,"\n", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_PUBLIC_ICON); - fprintf (Gbl.F.Out,"\n", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,Gbl.Usrs.Me.UsrDat.Photo); + fprintf (Gbl.F.Out,"\n", + Cfg_URL_ICON_PUBLIC); + fprintf (Gbl.F.Out,"\n", + Cfg_URL_PHOTO_PUBLIC,Gbl.Usrs.Me.UsrDat.Photo); fprintf (Gbl.F.Out,"\n", ListRoomCodes); fprintf (Gbl.F.Out,"\n", diff --git a/swad_config.h b/swad_config.h index 6e55b39b..02d698f4 100644 --- a/swad_config.h +++ b/swad_config.h @@ -326,69 +326,108 @@ /* Folders for institutions, inside public and private swad directories */ #define Cfg_FOLDER_INS "ins" // If not exists, it should be created during installation inside swad private and public directory! +#define Cfg_PATH_INS_PRIVATE Cfg_PATH_SWAD_PRIVATE "/" Cfg_FOLDER_INS +#define Cfg_PATH_INS_PUBLIC Cfg_PATH_SWAD_PUBLIC "/" Cfg_FOLDER_INS /* Folders for centres, inside public and private swad directories */ #define Cfg_FOLDER_CTR "ctr" // If not exists, it should be created during installation inside swad private and public directory! +#define Cfg_PATH_CTR_PRIVATE Cfg_PATH_SWAD_PRIVATE "/" Cfg_FOLDER_CTR +#define Cfg_PATH_CTR_PUBLIC Cfg_PATH_SWAD_PUBLIC "/" Cfg_FOLDER_CTR +#define Cfg_URL_CTR_PUBLIC Cfg_URL_SWAD_PUBLIC "/" Cfg_FOLDER_CTR /* Folders for centres, inside public and private swad directories */ #define Cfg_FOLDER_DEG "deg" // If not exists, it should be created during installation inside swad private and public directory! +#define Cfg_PATH_DEG_PRIVATE Cfg_PATH_SWAD_PRIVATE "/" Cfg_FOLDER_DEG +#define Cfg_PATH_DEG_PUBLIC Cfg_PATH_SWAD_PUBLIC "/" Cfg_FOLDER_DEG /* Folders for courses, inside public and private swad directories */ #define Cfg_FOLDER_CRS "crs" // If not exists, it should be created during installation inside swad private and public directory! +#define Cfg_PATH_CRS_PRIVATE Cfg_PATH_SWAD_PRIVATE "/" Cfg_FOLDER_CRS +#define Cfg_PATH_CRS_PUBLIC Cfg_PATH_SWAD_PUBLIC "/" Cfg_FOLDER_CRS +#define Cfg_URL_CRS_PUBLIC Cfg_URL_SWAD_PUBLIC "/" Cfg_FOLDER_CRS /* Folders for groups, inside public and private swad directories */ #define Cfg_FOLDER_GRP "grp" // Created automatically the first time it is accessed /* Folder for users, inside private swad directory */ #define Cfg_FOLDER_USR "usr" // Created automatically the first time it is accessed +#define Cfg_PATH_USR_PRIVATE Cfg_PATH_SWAD_PRIVATE "/" Cfg_FOLDER_USR /* Folders for projects, inside public and private swad directories */ #define Cfg_FOLDER_PRJ "prj" // Created automatically the first time it is accessed /* Folder for temporary HTML output of this CGI, inside private swad directory */ #define Cfg_FOLDER_OUT "out" // Created automatically the first time it is accessed +#define Cfg_PATH_OUT_PRIVATE Cfg_PATH_SWAD_PRIVATE "/" Cfg_FOLDER_OUT /* Folder for temporary public links to file zones, used when displaying file browsers, inside public swad directory */ #define Cfg_FOLDER_FILE_BROWSER_TMP "tmp" // Created automatically the first time it is accessed +#define Cfg_PATH_FILE_BROWSER_TMP_PUBLIC Cfg_PATH_SWAD_PUBLIC "/" Cfg_FOLDER_FILE_BROWSER_TMP +#define Cfg_URL_FILE_BROWSER_TMP_PUBLIC Cfg_URL_SWAD_PUBLIC "/" Cfg_FOLDER_FILE_BROWSER_TMP /* Folder where temporary files are created for students' marks, inside private swad directory */ #define Cfg_FOLDER_MARK "mark" // Created automatically the first time it is accessed - -/* Folder where temporary files are created for passing parameters to commands, inside private swad directory */ -#define Cfg_FOLDER_PARAM "param" // Created automatically the first time it is accessed +#define Cfg_PATH_MARK_PRIVATE Cfg_PATH_SWAD_PRIVATE "/" Cfg_FOLDER_MARK /* Folder for temporary XML files received to import test questions, inside private swad directory */ #define Cfg_FOLDER_TEST "test" // Created automatically the first time it is accessed +#define Cfg_PATH_TEST_PRIVATE Cfg_PATH_SWAD_PRIVATE "/" Cfg_FOLDER_TEST /* Folder for compression of assignments and works into a zip files, inside private swad directory */ #define Cfg_FOLDER_ZIP "zip" // Created automatically the first time it is accessed +#define Cfg_PATH_ZIP_PRIVATE Cfg_PATH_SWAD_PRIVATE "/" Cfg_FOLDER_ZIP /* Folders for images/videos inside public and private swad directories */ #define Cfg_FOLDER_MEDIA "med" // Created automatically the first time it is accessed -/* Folders for temporary users' photos inside photos directories */ -#define Cfg_FOLDER_IMG_TMP "tmp" // Created automatically the first time it is accessed +#define Cfg_PATH_MEDIA_PRIVATE Cfg_PATH_SWAD_PRIVATE "/" Cfg_FOLDER_MEDIA +/* Folders for temporary images/videos inside media directories */ +#define Cfg_FOLDER_MEDIA_TMP "tmp" // Created automatically the first time it is accessed +#define Cfg_PATH_MEDIA_TMP_PRIVATE Cfg_PATH_MEDIA_PRIVATE "/" Cfg_FOLDER_MEDIA_TMP /* Folders for users' photos inside public and private swad directories */ #define Cfg_FOLDER_PHOTO "photo" // Created automatically the first time it is accessed +#define Cfg_PATH_PHOTO_PRIVATE Cfg_PATH_SWAD_PRIVATE "/" Cfg_FOLDER_PHOTO +#define Cfg_PATH_PHOTO_PUBLIC Cfg_PATH_SWAD_PUBLIC "/" Cfg_FOLDER_PHOTO +#define Cfg_URL_PHOTO_PUBLIC Cfg_URL_SWAD_PUBLIC "/" Cfg_FOLDER_PHOTO /* Folders for temporary users' photos inside photos directories */ #define Cfg_FOLDER_PHOTO_TMP "tmp" // Created automatically the first time it is accessed +#define Cfg_PATH_PHOTO_TMP_PRIVATE Cfg_PATH_PHOTO_PRIVATE "/" Cfg_FOLDER_PHOTO_TMP +#define Cfg_PATH_PHOTO_TMP_PUBLIC Cfg_PATH_PHOTO_PUBLIC "/" Cfg_FOLDER_PHOTO_TMP +#define Cfg_URL_PHOTO_TMP_PUBLIC Cfg_URL_PHOTO_PUBLIC "/" Cfg_FOLDER_PHOTO_TMP /* Folder for reports, inside public swad directory */ #define Cfg_FOLDER_REP "rep" // Created automatically the first time it is accessed +#define Cfg_PATH_REP_PUBLIC Cfg_PATH_SWAD_PUBLIC "/" Cfg_FOLDER_REP +#define Cfg_URL_REP_PUBLIC Cfg_URL_SWAD_PUBLIC "/" Cfg_FOLDER_REP /* Folder for banners, inside public swad directory */ #define Cfg_FOLDER_BANNER "banner" // If not exists, it should be created during installation inside swad public directory! +#define Cfg_URL_BANNER_PUBLIC Cfg_URL_SWAD_PUBLIC "/" Cfg_FOLDER_BANNER #define Cfg_FOLDER_DEGREE_PHOTO_MEDIAN "mdn_all" #define Cfg_FOLDER_DEGREE_PHOTO_AVERAGE "avg_all" /* Folders with icons. They should be created with icons during installation */ #define Cfg_FOLDER_PUBLIC_ICON "icon" +#define Cfg_PATH_ICON_PUBLIC Cfg_PATH_SWAD_PUBLIC "/" Cfg_FOLDER_PUBLIC_ICON +#define Cfg_URL_ICON_PUBLIC Cfg_URL_SWAD_PUBLIC "/" Cfg_FOLDER_PUBLIC_ICON + #define Cfg_ICON_FOLDER_THEMES "theme" // Directory with all the images for each theme -#define Cfg_ICON_FOLDER_ICON_SETS "iconset" // Directory with all the icons for each icon set +#define Cfg_URL_ICON_THEMES_PUBLIC Cfg_URL_ICON_PUBLIC "/" Cfg_ICON_FOLDER_THEMES + +#define Cfg_ICON_FOLDER_SETS "iconset" // Directory with all the icons for each icon set +#define Cfg_PATH_ICON_SETS_PUBLIC Cfg_PATH_ICON_PUBLIC "/" Cfg_ICON_FOLDER_SETS +#define Cfg_URL_ICON_SETS_PUBLIC Cfg_URL_ICON_PUBLIC "/" Cfg_ICON_FOLDER_SETS + #define Cfg_ICON_FOLDER_COUNTRIES "country" // Directory with icons for countries +#define Cfg_PATH_ICON_COUNTRIES_PUBLIC Cfg_PATH_ICON_PUBLIC "/" Cfg_ICON_FOLDER_COUNTRIES +#define Cfg_URL_ICON_COUNTRIES_PUBLIC Cfg_URL_ICON_PUBLIC "/" Cfg_ICON_FOLDER_COUNTRIES + #define Cfg_ICON_FOLDER_FILEXT "filext" // Directory with icons for file extensions +#define CfG_URL_ICON_FILEXT_PUBLIC Cfg_URL_ICON_PUBLIC "/" Cfg_ICON_FOLDER_FILEXT + #define Cfg_ICON_FOLDER_PLUGINS "plugin" // Directory with icons for plugins +#define Cfg_URL_ICON_PLUGINS_PUBLIC Cfg_URL_ICON_PUBLIC "/" Cfg_ICON_FOLDER_PLUGINS /* Folders and file used to store syllabus */ #define Cfg_SYLLABUS_FOLDER_LECTURES "lec" @@ -413,6 +452,7 @@ /* Data protection policy folder This folder, and an index.html file inside it, must be created during installation */ #define Cfg_DATA_PROTECTION_FOLDER "data_protection" +#define Cfg_URL_DATA_PROTECTION_PUBLIC Cfg_URL_SWAD_PUBLIC "/" Cfg_DATA_PROTECTION_FOLDER /* HTML file weitten at foot of page */ #define Cfg_PATH_AND_FILE_REL_HTML_PRIVATE "./foot.html" @@ -476,7 +516,7 @@ #define Cfg_TIME_TO_DELETE_PARAMS_TO_COMMANDS ((time_t)( 15UL * 60UL)) // Temporary files with params to commands are deleted after these seconds -#define Cfg_TIME_TO_DELETE_IMAGES_TMP_FILES ((time_t)( 2UL * 60UL * 60UL)) // Temporary files related to images after these seconds +#define Cfg_TIME_TO_DELETE_MEDIA_TMP_FILES ((time_t)( 2UL * 60UL * 60UL)) // Temporary files related to images after these seconds #define Cfg_TIME_TO_DELETE_PHOTOS_TMP_FILES ((time_t)( 2UL * 60UL * 60UL)) // Temporary files related to photos after these seconds #define Cfg_TIME_TO_DELETE_TEST_TMP_FILES ((time_t)( 2UL * 60UL * 60UL)) // Temporary files related to imported test questions after these seconds diff --git a/swad_connected.c b/swad_connected.c index 3fed785d..8f511d2f 100644 --- a/swad_connected.c +++ b/swad_connected.c @@ -414,7 +414,7 @@ static void Con_ShowConnectedUsrsWithARoleBelongingToCurrentCrsOnRightColumn (Ro fprintf (Gbl.F.Out,"\"%s\"" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Connected_users,Txt_Connected_users); Frm_EndForm (); fprintf (Gbl.F.Out,"" diff --git a/swad_country.c b/swad_country.c index 4a4e3997..0a2abd5a 100644 --- a/swad_country.c +++ b/swad_country.c @@ -841,13 +841,13 @@ void Cty_DrawCountryMap (struct Country *Cty,const char *Class) /***** Draw country map *****/ fprintf (Gbl.F.Out,"Alpha2, Cty->Alpha2); else fprintf (Gbl.F.Out,"%s/tr16x16.gif", // TODO: Change for a 1x1 image or a generic image - Gbl.Prefs.URLIcons); + Cfg_URL_ICON_PUBLIC); fprintf (Gbl.F.Out,"\" alt=\"%s\" title=\"%s\" class=\"%s\" />", Cty->Alpha2, Cty->Name[Gbl.Prefs.Language], @@ -863,10 +863,8 @@ bool Cty_CheckIfCountryMapExists (struct Country *Cty) char PathMap[PATH_MAX + 1]; snprintf (PathMap,sizeof (PathMap), - "%s/%s/%s/%s/%s.png", - Cfg_PATH_SWAD_PUBLIC, - Cfg_FOLDER_PUBLIC_ICON, - Cfg_ICON_FOLDER_COUNTRIES, + "%s/%s/%s.png", + Cfg_PATH_ICON_COUNTRIES_PUBLIC, Cty->Alpha2, Cty->Alpha2); return Fil_CheckIfPathExists (PathMap); diff --git a/swad_course.c b/swad_course.c index c76a151e..713d0ed9 100644 --- a/swad_course.c +++ b/swad_course.c @@ -461,7 +461,7 @@ static void Crs_Configuration (bool PrintView) "\"%s\""", Gbl.Title, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, (Indicators.NumIndicators == Ind_NUM_INDICATORS) ? "check-circle.svg" : "exclamation-triangle.svg", Gbl.Title); @@ -572,7 +572,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void) fprintf (Gbl.F.Out,"\"%s\" %s", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_System, Txt_System, Txt_System); @@ -607,10 +607,10 @@ static void Crs_WriteListMyCoursesToSelectOne (void) Highlight ? ClassHighlight : ClassNormal,NULL); /* Country map */ - fprintf (Gbl.F.Out,"\"%s\" %s", - Gbl.Prefs.URLIcons,Cfg_ICON_FOLDER_COUNTRIES, + Cfg_URL_ICON_COUNTRIES_PUBLIC, Cty.Alpha2, Cty.Alpha2, Cty.Alpha2, @@ -753,7 +753,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void) " class=\"ICO16x16\" />" " %s" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Crs.ShrtName, Crs.FullName, Crs.FullName); @@ -2289,12 +2289,12 @@ static void Crs_EmptyCourseCompletely (long CrsCod) /***** Remove directories of the course *****/ snprintf (PathRelCrs,sizeof (PathRelCrs), - "%s/%s/%ld", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,CrsCod); + "%s/%ld", + Cfg_PATH_CRS_PRIVATE,CrsCod); Fil_RemoveTree (PathRelCrs); snprintf (PathRelCrs,sizeof (PathRelCrs), - "%s/%s/%ld", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CRS,CrsCod); + "%s/%ld", + Cfg_PATH_CRS_PUBLIC,CrsCod); Fil_RemoveTree (PathRelCrs); } } diff --git a/swad_degree.c b/swad_degree.c index add1223c..654207e8 100644 --- a/swad_degree.c +++ b/swad_degree.c @@ -1881,8 +1881,8 @@ void Deg_RemoveDegreeCompletely (long DegCod) /***** Remove directories of the degree *****/ snprintf (PathDeg,sizeof (PathDeg), - "%s/%s/%02u/%u", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_DEG, + "%s/%02u/%u", + Cfg_PATH_DEG_PUBLIC, (unsigned) (DegCod % 100), (unsigned) DegCod); Fil_RemoveTree (PathDeg); @@ -2460,7 +2460,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan) " alt=\"\" title=\"\"" " class=\"ICO25x25\" />" "", - Gbl.RowEvenOdd,Gbl.Prefs.URLIcons, + Gbl.RowEvenOdd,Cfg_URL_ICON_PUBLIC, NumRow == NumRows ? "subend" : "submid"); @@ -2480,7 +2480,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan) " alt=\"%s\" title=\"%s\"" " class=\"ICO16x16\" />" " %s", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_all_degrees, Txt_all_degrees, Txt_all_degrees); diff --git a/swad_figure.c b/swad_figure.c index 214a0e34..2c0d872a 100644 --- a/swad_figure.c +++ b/swad_figure.c @@ -643,11 +643,11 @@ static void Fig_WriteHeadHierarchy (void) "%s" "" "", - Gbl.Prefs.URLIcons,Txt_Countries ,Txt_Countries ,Txt_Countries, - Gbl.Prefs.URLIcons,Txt_Institutions,Txt_Institutions,Txt_Institutions, - Gbl.Prefs.URLIcons,Txt_Centres ,Txt_Centres ,Txt_Centres, - Gbl.Prefs.URLIcons,Txt_Degrees ,Txt_Degrees ,Txt_Degrees, - Gbl.Prefs.URLIcons,Txt_Courses ,Txt_Courses ,Txt_Courses); + Cfg_URL_ICON_PUBLIC,Txt_Countries ,Txt_Countries ,Txt_Countries, + Cfg_URL_ICON_PUBLIC,Txt_Institutions,Txt_Institutions,Txt_Institutions, + Cfg_URL_ICON_PUBLIC,Txt_Centres ,Txt_Centres ,Txt_Centres, + Cfg_URL_ICON_PUBLIC,Txt_Degrees ,Txt_Degrees ,Txt_Degrees, + Cfg_URL_ICON_PUBLIC,Txt_Courses ,Txt_Courses ,Txt_Courses); } /*****************************************************************************/ @@ -3996,7 +3996,7 @@ static void Fig_GetAndShowForumStats (void) "%s" "" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Scope, Txt_Scope, Txt_Forums, @@ -4224,7 +4224,7 @@ static void Fig_WriteForumTitleAndStats (For_ForumType_t ForumType, "%.2f" "" "", - Gbl.Prefs.URLIcons,Icon, + Cfg_URL_ICON_PUBLIC,Icon, ForumName1,ForumName2, ForumName1,ForumName2, ForumName1,ForumName2, @@ -5138,7 +5138,7 @@ static void Fig_GetAndShowNumUsrsPerFirstDayOfWeek (void) "%5.2f%%" "" "", - Gbl.Prefs.URLIcons,FirstDayOfWeek, + Cfg_URL_ICON_PUBLIC,FirstDayOfWeek, Txt_DAYS_SMALL[FirstDayOfWeek], Txt_First_day_of_the_week,Txt_DAYS_SMALL[FirstDayOfWeek], NumUsrs[FirstDayOfWeek], @@ -5289,7 +5289,7 @@ static void Fig_GetAndShowNumUsrsPerIconSet (void) IconSet++) fprintf (Gbl.F.Out,"" "" - "\"%s\"" "" @@ -5300,8 +5300,7 @@ static void Fig_GetAndShowNumUsrsPerIconSet (void) "%5.2f%%" "" "", - Gbl.Prefs.URLIcons, - Cfg_ICON_FOLDER_ICON_SETS, + Cfg_URL_ICON_SETS_PUBLIC, Ico_IconSetId[IconSet], Ico_IconSetNames[IconSet], Ico_IconSetNames[IconSet], @@ -5385,7 +5384,7 @@ static void Fig_GetAndShowNumUsrsPerMenu (void) "%5.2f%%" "" "", - Gbl.Prefs.URLIcons,Mnu_MenuIcons[Menu], + Cfg_URL_ICON_PUBLIC,Mnu_MenuIcons[Menu], Txt_MENU_NAMES[Menu], Txt_MENU_NAMES[Menu], NumUsrs[Menu], @@ -5457,7 +5456,7 @@ static void Fig_GetAndShowNumUsrsPerTheme (void) Theme++) fprintf (Gbl.F.Out,"" "" - "\"%s\"" "" @@ -5468,7 +5467,7 @@ static void Fig_GetAndShowNumUsrsPerTheme (void) "%5.2f%%" "" "", - Gbl.Prefs.URLIcons,Cfg_ICON_FOLDER_THEMES,The_ThemeId[Theme], + Cfg_URL_ICON_THEMES_PUBLIC,The_ThemeId[Theme], The_ThemeNames[Theme], The_ThemeNames[Theme], NumUsrs[Theme], @@ -5550,7 +5549,7 @@ static void Fig_GetAndShowNumUsrsPerSideColumns (void) "%5.2f%%" "" "", - Gbl.Prefs.URLIcons,SideCols >> 1,SideCols & 1, + Cfg_URL_ICON_PUBLIC,SideCols >> 1,SideCols & 1, Txt_LAYOUT_SIDE_COLUMNS[SideCols], Txt_LAYOUT_SIDE_COLUMNS[SideCols], NumUsrs[SideCols], diff --git a/swad_file.c b/swad_file.c index cee718bf..a507c4e6 100644 --- a/swad_file.c +++ b/swad_file.c @@ -72,21 +72,13 @@ extern struct Globals Gbl; void Fil_CreateFileForHTMLOutput (void) { - char PathHTMLOutputPriv[PATH_MAX + 1]; - /***** Check if exists the directory for HTML output. If not exists, create it *****/ - snprintf (PathHTMLOutputPriv,sizeof (PathHTMLOutputPriv), - "%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_OUT); - Fil_CreateDirIfNotExists (PathHTMLOutputPriv); - - /***** Remove old files *****/ - Fil_RemoveOldTmpFiles (PathHTMLOutputPriv,Cfg_TIME_TO_DELETE_HTML_OUTPUT,false); + Fil_CreateDirIfNotExists (Cfg_PATH_OUT_PRIVATE); /***** Create a unique name for the file *****/ snprintf (Gbl.HTMLOutput.FileName,sizeof (Gbl.HTMLOutput.FileName), "%s/%s.html", - PathHTMLOutputPriv,Gbl.UniqueNameEncrypted); + Cfg_PATH_OUT_PRIVATE,Gbl.UniqueNameEncrypted); /***** Open file for writing and reading *****/ if ((Gbl.F.Out = fopen (Gbl.HTMLOutput.FileName,"w+t")) == NULL) diff --git a/swad_file_browser.c b/swad_file_browser.c index 2357fad3..dee822c2 100644 --- a/swad_file_browser.c +++ b/swad_file_browser.c @@ -2417,24 +2417,21 @@ static void Brw_SetPathFileBrowser (void) case Brw_ADMI_DOC_INS: case Brw_ADMI_SHR_INS: /* Create a directory for institutions */ - snprintf (Path,sizeof (Path), - "%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_INS); - Fil_CreateDirIfNotExists (Path); + Fil_CreateDirIfNotExists (Cfg_PATH_INS_PRIVATE); /* Create a directory for all institutions which codes end in institution-code mod 100 */ snprintf (Path,sizeof (Path), - "%s/%s/%02u", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_INS, + "%s/%02u", + Cfg_PATH_INS_PRIVATE, (unsigned) (Gbl.CurrentIns.Ins.InsCod % 100)); Fil_CreateDirIfNotExists (Path); /* Create path to the current institution */ snprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder, sizeof (Gbl.FileBrowser.Priv.PathAboveRootFolder), - "%s/%s/%02u/%u", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_INS, + "%s/%02u/%u", + Cfg_PATH_INS_PRIVATE, (unsigned) (Gbl.CurrentIns.Ins.InsCod % 100), (unsigned) Gbl.CurrentIns.Ins.InsCod); break; @@ -2442,24 +2439,21 @@ static void Brw_SetPathFileBrowser (void) case Brw_ADMI_DOC_CTR: case Brw_ADMI_SHR_CTR: /* Create a directory for centres */ - snprintf (Path,sizeof (Path), - "%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CTR); - Fil_CreateDirIfNotExists (Path); + Fil_CreateDirIfNotExists (Cfg_PATH_CTR_PRIVATE); /* Create a directory for all centres which codes end in centre-code mod 100 */ snprintf (Path,sizeof (Path), - "%s/%s/%02u", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CTR, + "%s/%02u", + Cfg_PATH_CTR_PRIVATE, (unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100)); Fil_CreateDirIfNotExists (Path); /* Create path to the current centre */ snprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder, sizeof (Gbl.FileBrowser.Priv.PathAboveRootFolder), - "%s/%s/%02u/%u", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CTR, + "%s/%02u/%u", + Cfg_PATH_CTR_PRIVATE, (unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100), (unsigned) Gbl.CurrentCtr.Ctr.CtrCod); break; @@ -2467,24 +2461,21 @@ static void Brw_SetPathFileBrowser (void) case Brw_ADMI_DOC_DEG: case Brw_ADMI_SHR_DEG: /* Create a directory for degrees */ - snprintf (Path,sizeof (Path), - "%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_DEG); - Fil_CreateDirIfNotExists (Path); + Fil_CreateDirIfNotExists (Cfg_PATH_DEG_PRIVATE); /* Create a directory for all degrees which codes end in degree-code mod 100 */ snprintf (Path,sizeof (Path), - "%s/%s/%02u", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_DEG, + "%s/%02u", + Cfg_PATH_DEG_PRIVATE, (unsigned) (Gbl.CurrentDeg.Deg.DegCod % 100)); Fil_CreateDirIfNotExists (Path); /* Create path to the current degree */ snprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder, sizeof (Gbl.FileBrowser.Priv.PathAboveRootFolder), - "%s/%s/%02u/%u", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_DEG, + "%s/%02u/%u", + Cfg_PATH_DEG_PRIVATE, (unsigned) (Gbl.CurrentDeg.Deg.DegCod % 100), (unsigned) Gbl.CurrentDeg.Deg.DegCod); break; @@ -3366,7 +3357,7 @@ static void Brw_FormToChangeCrsGrpZone (void) (IsGroupZone && GrpDat.GrpCod == Gbl.CurrentCrs.Grps.GrpCod) ? "BROWSER_TITLE" : "BROWSER_TITLE_LIGHT", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, NumGrp < LstMyGrps.NumGrps - 1 ? "submid" : "subend", GrpDat.GrpCod); @@ -5130,23 +5121,13 @@ void Brw_CreateDirDownloadTmp (void) { static unsigned NumDir = 0; // When this function is called several times in the same execution of the program, each time a new directory is created // This happens when the trees of assignments and works of several users are being listed - char PathFileBrowserTmpPubl[PATH_MAX + 1]; + // char PathFileBrowserTmpPubl[PATH_MAX + 1]; char PathPubDirTmp[PATH_MAX + 1]; /* Example: /var/www/html/swad/tmp/SSujCNWsy4ZOdmgMKYBe0sKPAJu6szaZOQlIlJs_QIY */ /***** If the public directory does not exist, create it *****/ - snprintf (PathFileBrowserTmpPubl,sizeof (PathFileBrowserTmpPubl), - "%s/%s", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_FILE_BROWSER_TMP); - Fil_CreateDirIfNotExists (PathFileBrowserTmpPubl); - - /***** First of all, we remove the oldest temporary directories. - Such temporary directories have been created by me or by other users. - This is a bit sloppy, but they must be removed by someone. - Here "oldest" means more than x time from their creation *****/ - if (NumDir == 0) // Only in the first call to this function - Fil_RemoveOldTmpFiles (PathFileBrowserTmpPubl,Cfg_TIME_TO_DELETE_BROWSER_TMP_FILES,false); + Fil_CreateDirIfNotExists (Cfg_PATH_FILE_BROWSER_TMP_PUBLIC); /***** Create a new temporary directory. Important: number of directories inside a directory is limited to 32K in Linux *****/ @@ -5159,7 +5140,7 @@ void Brw_CreateDirDownloadTmp (void) NAME_MAX); snprintf (PathPubDirTmp,sizeof (PathPubDirTmp), "%s/%s", - PathFileBrowserTmpPubl,Gbl.FileBrowser.TmpPubDir); + Cfg_PATH_FILE_BROWSER_TMP_PUBLIC,Gbl.FileBrowser.TmpPubDir); if (mkdir (PathPubDirTmp,(mode_t) 0xFFF)) Lay_ShowErrorAndExit ("Can not create a temporary folder for download."); NumDir++; @@ -5965,7 +5946,7 @@ static void Brw_IndentAndWriteIconExpandContract (unsigned Level, fprintf (Gbl.F.Out,"\"\"", - Gbl.Prefs.URLIcons); + Cfg_URL_ICON_PUBLIC); break; case Brw_ICON_TREE_EXPAND: /***** Visible icon to expand folder *****/ @@ -6014,7 +5995,7 @@ static void Brw_IndentDependingOnLevel (unsigned Level) " class=\"ICO20x20\" />" "", Gbl.RowEvenOdd, - Gbl.Prefs.URLIcons); + Cfg_URL_ICON_PUBLIC); } /*****************************************************************************/ @@ -6116,7 +6097,7 @@ static void Brw_PutIconShow (unsigned Level,const char *PathInTree,const char *F fprintf (Gbl.F.Out,"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Gbl.Title, Gbl.Title, Brw_CheckIfAnyUpperLevelIsHidden (Level) ? "ICO_HIDDEN" : @@ -6144,7 +6125,7 @@ static void Brw_PutIconHide (unsigned Level,const char *PathInTree,const char *F fprintf (Gbl.F.Out,"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Gbl.Title, Gbl.Title, Brw_CheckIfAnyUpperLevelIsHidden (Level) ? "ICO_HIDDEN" : @@ -6273,7 +6254,7 @@ static void Brw_PutIconFolderWithoutPlus (const char *FileBrowserId,const char * fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Open ? "folder-open-yellow.png" : "folder-yellow.png", Txt_Folder, @@ -6335,7 +6316,7 @@ static void Brw_PutIconNewFileOrFolder (void) " alt=\"%s\" title=\"%s\"" " class=\"ICO20x20\" />" "", - Gbl.RowEvenOdd,Gbl.Prefs.URLIcons, + Gbl.RowEvenOdd,Cfg_URL_ICON_PUBLIC, Txt_New_FILE_OR_FOLDER, Txt_New_FILE_OR_FOLDER); } @@ -6390,12 +6371,12 @@ static void Brw_PutIconFile (unsigned Size,Brw_FileType_t FileType,const char *F if (FileType == Brw_IS_LINK) fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Unknown_or_without_photo, Txt_Unknown_or_without_photo); @@ -8060,8 +8041,8 @@ static void Brw_PasteClipboard (void) Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod; if (Ins_GetDataOfInstitutionByCod (&Ins,false)) snprintf (PathOrg,sizeof (PathOrg), - "%s/%s/%02u/%u/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_INS, + "%s/%02u/%u/%s", + Cfg_PATH_INS_PRIVATE, (unsigned) (Ins.InsCod % 100), (unsigned) Ins.InsCod, Gbl.FileBrowser.Clipboard.Path); @@ -8073,8 +8054,8 @@ static void Brw_PasteClipboard (void) Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod; if (Ctr_GetDataOfCentreByCod (&Ctr)) snprintf (PathOrg,sizeof (PathOrg), - "%s/%s/%02u/%u/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CTR, + "%s/%02u/%u/%s", + Cfg_PATH_CTR_PRIVATE, (unsigned) (Ctr.CtrCod % 100), (unsigned) Ctr.CtrCod, Gbl.FileBrowser.Clipboard.Path); @@ -8086,8 +8067,8 @@ static void Brw_PasteClipboard (void) Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod; if (Deg_GetDataOfDegreeByCod (&Deg)) snprintf (PathOrg,sizeof (PathOrg), - "%s/%s/%02u/%u/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_DEG, + "%s/%02u/%u/%s", + Cfg_PATH_DEG_PRIVATE, (unsigned) (Deg.DegCod % 100), (unsigned) Deg.DegCod, Gbl.FileBrowser.Clipboard.Path); @@ -8101,8 +8082,8 @@ static void Brw_PasteClipboard (void) Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; if (Crs_GetDataOfCourseByCod (&Crs)) snprintf (PathOrg,sizeof (PathOrg), - "%s/%s/%ld/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs.CrsCod, + "%s/%ld/%s", + Cfg_PATH_CRS_PRIVATE,Crs.CrsCod, Gbl.FileBrowser.Clipboard.Path); else Lay_ShowErrorAndExit ("The copy source does not exist."); @@ -8116,8 +8097,8 @@ static void Brw_PasteClipboard (void) Crs.CrsCod = GrpDat.CrsCod; if (Crs_GetDataOfCourseByCod (&Crs)) snprintf (PathOrg,sizeof (PathOrg), - "%s/%s/%ld/%s/%ld/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs.CrsCod,Cfg_FOLDER_GRP, + "%s/%ld/%s/%ld/%s", + Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_GRP, GrpDat.GrpCod, Gbl.FileBrowser.Clipboard.Path); else @@ -8132,8 +8113,8 @@ static void Brw_PasteClipboard (void) UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod; Usr_GetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS); // Check that user exists snprintf (PathOrg,sizeof (PathOrg), - "%s/%s/%ld/%s/%02u/%ld/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs.CrsCod,Cfg_FOLDER_USR, + "%s/%ld/%s/%02u/%ld/%s", + Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_USR, (unsigned) (Gbl.FileBrowser.Clipboard.WorksUsrCod % 100), Gbl.FileBrowser.Clipboard.WorksUsrCod, Gbl.FileBrowser.Clipboard.Path); @@ -8147,8 +8128,8 @@ static void Brw_PasteClipboard (void) Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; if (Crs_GetDataOfCourseByCod (&Crs)) snprintf (PathOrg,sizeof (PathOrg), - "%s/%s/%ld/%s/%02u/%ld/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs.CrsCod,Cfg_FOLDER_USR, + "%s/%ld/%s/%02u/%ld/%s", + Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_USR, (unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100), Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.FileBrowser.Clipboard.Path); @@ -8161,8 +8142,8 @@ static void Brw_PasteClipboard (void) Crs.CrsCod = Prj_GetCourseOfProject (PrjCod); if (Crs_GetDataOfCourseByCod (&Crs)) snprintf (PathOrg,sizeof (PathOrg), - "%s/%s/%ld/%s/%02u/%ld/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs.CrsCod,Cfg_FOLDER_PRJ, + "%s/%ld/%s/%02u/%ld/%s", + Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_PRJ, (unsigned) (PrjCod % 100), PrjCod, Gbl.FileBrowser.Clipboard.Path); @@ -8617,7 +8598,7 @@ static void Brw_PutFormToUploadFilesUsingDropzone (const char *FileNameToShow) " background:url('%s/upload320x320.gif') no-repeat center;\">", Cfg_URL_SWAD_CGI, Lan_STR_LANG_ID[Gbl.Prefs.Language], - Gbl.Prefs.URLIcons); + Cfg_URL_ICON_PUBLIC); Par_PutHiddenParamLong ("act",Act_GetActCod (Brw_ActUploadFileDropzone[Gbl.FileBrowser.Type])); Par_PutHiddenParamString ("ses",Gbl.Session.Id); Brw_PutParamsFileBrowser (Brw_ActUploadFileDropzone[Gbl.FileBrowser.Type], @@ -10286,7 +10267,7 @@ static void Brw_WriteBigLinkToDownloadFile (const char *URL, " alt=\"%s\" title=\"%s\"" " class=\"ICO40x40\" />" "", - FileNameToShow,Gbl.Prefs.URLIcons, + FileNameToShow,Cfg_URL_ICON_PUBLIC, Gbl.Title,Gbl.Title); Frm_EndForm (); } @@ -10305,7 +10286,7 @@ static void Brw_WriteBigLinkToDownloadFile (const char *URL, " class=\"ICO40x40\" />" "", FileNameToShow, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Download,Txt_Download); } } @@ -10384,8 +10365,8 @@ void Brw_GetLinkToDownloadFile (const char *PathInTree,const char *FileName,char /***** Create URL pointing to symbolic link *****/ snprintf (URLWithSpaces,sizeof (URLWithSpaces), - "%s/%s/%s/%s", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_FILE_BROWSER_TMP, + "%s/%s/%s", + Cfg_URL_FILE_BROWSER_TMP_PUBLIC, Gbl.FileBrowser.TmpPubDir, FileName); } @@ -11916,8 +11897,8 @@ void Brw_RemoveGrpZones (long CrsCod,long GrpCod) /***** Remove group zones *****/ snprintf (PathGrpFileZones,sizeof (PathGrpFileZones), - "%s/%s/%ld/grp/%ld", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,CrsCod,GrpCod); + "%s/%ld/grp/%ld", + Cfg_PATH_CRS_PRIVATE,CrsCod,GrpCod); Fil_RemoveTree (PathGrpFileZones); } @@ -11934,8 +11915,8 @@ void Brw_RemoveUsrWorksInCrs (struct UsrData *UsrDat,struct Course *Crs) /***** Remove the folder for this user inside the course *****/ snprintf (PathUsrInCrs,sizeof (PathUsrInCrs), - "%s/%s/%ld/usr/%02u/%ld", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs->CrsCod, + "%s/%ld/usr/%02u/%ld", + Cfg_PATH_CRS_PRIVATE,Crs->CrsCod, (unsigned) (UsrDat->UsrCod % 100),UsrDat->UsrCod); Fil_RemoveTree (PathUsrInCrs); // If this was the last user in his/her subfolder ==> the subfolder will be empty @@ -12382,7 +12363,7 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row) fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Folder,Txt_Folder); else /* Icon with file type or link */ diff --git a/swad_follow.c b/swad_follow.c index 264e2bda..84114a12 100644 --- a/swad_follow.c +++ b/swad_follow.c @@ -566,7 +566,7 @@ void Fol_ShowFollowingAndFollowers (const struct UsrData *UsrDat, " class=\"ICO40x40\" />" "" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Unfollow,Txt_Following_unfollow); Frm_EndForm (); } @@ -582,7 +582,7 @@ void Fol_ShowFollowingAndFollowers (const struct UsrData *UsrDat, " class=\"ICO40x40\" />" "" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Follow,Txt_Follow); Frm_EndForm (); } @@ -966,7 +966,7 @@ static void Fol_PutInactiveIconToFollowUnfollow (void) " alt=\"\"" " class=\"ICO16x16\" />" "", - Gbl.Prefs.URLIcons); + Cfg_URL_ICON_PUBLIC); } /*****************************************************************************/ @@ -987,7 +987,7 @@ static void Fol_PutIconToFollow (struct UsrData *UsrDat) " class=\"ICO16x16\" />" "" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Follow,Txt_Follow); Frm_EndForm (); } @@ -1010,7 +1010,7 @@ static void Fol_PutIconToUnfollow (struct UsrData *UsrDat) " class=\"ICO16x16\" />" "" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Unfollow,Txt_Unfollow); Frm_EndForm (); } diff --git a/swad_forum.c b/swad_forum.c index 43cbf895..00e72dfc 100644 --- a/swad_forum.c +++ b/swad_forum.c @@ -1183,7 +1183,7 @@ static void For_ShowAForumPost (unsigned PstNum,long PstCod, "", NewPst ? "MSG_TIT_BG_NEW" : "MSG_TIT_BG", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, NewPst ? "envelope.svg" : "envelope-open-text.svg", NewPst ? Txt_MSG_New : @@ -1251,7 +1251,7 @@ static void For_ShowAForumPost (unsigned PstNum,long PstCod, " class=\"ICO_HIDDEN ICO16x16\" />" "", Gbl.Title, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Enabled ? "eye.svg" : "eye-slash.svg", Gbl.Title, @@ -2063,7 +2063,7 @@ static void For_WriteLinkToForum (struct Forum *Forum, fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Copy_not_allowed,Txt_Copy_not_allowed); else { @@ -2101,14 +2101,14 @@ static void For_WriteLinkToForum (struct Forum *Forum, fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons,ForumName,ForumName); + Cfg_URL_ICON_PUBLIC,ForumName,ForumName); break; case For_FORUM__SWAD__USRS: case For_FORUM__SWAD__TCHS: fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons,ForumName,ForumName); + Cfg_URL_ICON_PUBLIC,ForumName,ForumName); break; case For_FORUM_INSTIT_USRS: case For_FORUM_INSTIT_TCHS: @@ -2127,7 +2127,7 @@ static void For_WriteLinkToForum (struct Forum *Forum, fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons,ForumName,ForumName); + Cfg_URL_ICON_PUBLIC,ForumName,ForumName); break; default: break; @@ -3414,7 +3414,7 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE], Gbl.Usrs.Me.PhotoURL); else fprintf (Gbl.F.Out,"%s/usr_bl.jpg", - Gbl.Prefs.URLIcons); + Cfg_URL_ICON_PUBLIC); fprintf (Gbl.F.Out,"\" alt=\"%s\" title=\"", Txt_Thread_with_posts_from_you); if (Thr.NumMyPosts == 1) @@ -3432,7 +3432,7 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE], " alt=\"%s\" title=\"%s\"" " class=\"ICO16x16\" />", BgColor, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Thr.NumUnreadPosts ? "envelope.svg" : "envelope-open-text.svg", Thr.NumUnreadPosts ? Txt_There_are_new_posts : diff --git a/swad_game.c b/swad_game.c index 7aac49a5..9a272f07 100644 --- a/swad_game.c +++ b/swad_game.c @@ -3173,7 +3173,7 @@ static void Gam_DrawBarNumUsrs (unsigned NumUsrs,unsigned MaxUsrs) " class=\"LEFT_TOP\"" " style=\"width:%upx; height:20px;\" />" " ", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Gbl.Title, Gbl.Title, BarWidth); @@ -3482,7 +3482,7 @@ static void Gam_PutBigButtonToStartGame (long GamCod) fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons,Txt_Play,Txt_Play); + Cfg_URL_ICON_PUBLIC,Txt_Play,Txt_Play); fprintf (Gbl.F.Out,""); /***** End form *****/ @@ -3625,7 +3625,7 @@ static void Gam_PutBigButtonToContinue (Act_Action_t NextAction, " alt=\"%s\" title=\"%s\" class=\"ICO64x64\" />" "
    " "%s", - Gbl.Prefs.URLIcons,Txt_Continue,Txt_Continue, + Cfg_URL_ICON_PUBLIC,Txt_Continue,Txt_Continue, Txt_Continue); fprintf (Gbl.F.Out,""); diff --git a/swad_global.c b/swad_global.c index 1dc26210..ac11eccd 100644 --- a/swad_global.c +++ b/swad_global.c @@ -138,18 +138,13 @@ void Gbl_InitializeGlobals (void) Gbl.Prefs.Menu = Mnu_MENU_DEFAULT; // Default menu Gbl.Prefs.Theme = The_THEME_DEFAULT; // Default theme Gbl.Prefs.IconSet = Ico_ICON_SET_DEFAULT; // Default icon set - snprintf (Gbl.Prefs.URLIcons,sizeof (Gbl.Prefs.URLIcons), - "%s/%s", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_PUBLIC_ICON); snprintf (Gbl.Prefs.URLTheme,sizeof (Gbl.Prefs.URLTheme), - "%s/%s/%s/%s", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_PUBLIC_ICON, - Cfg_ICON_FOLDER_THEMES, + "%s/%s", + Cfg_URL_ICON_THEMES_PUBLIC, The_ThemeId[Gbl.Prefs.Theme]); snprintf (Gbl.Prefs.URLIconSet,sizeof (Gbl.Prefs.URLIconSet), - "%s/%s/%s/%s", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_PUBLIC_ICON, - Cfg_ICON_FOLDER_ICON_SETS, + "%s/%s", + Cfg_URL_ICON_SETS_PUBLIC, Ico_IconSetId[Gbl.Prefs.IconSet]); Gbl.Session.NumSessions = 0; diff --git a/swad_global.h b/swad_global.h index 80161942..5ec0f653 100644 --- a/swad_global.h +++ b/swad_global.h @@ -170,7 +170,6 @@ struct Globals unsigned SideCols; The_Theme_t Theme; Ico_IconSet_t IconSet; - char URLIcons[PATH_MAX + 1]; char URLTheme[PATH_MAX + 1]; char URLIconSet[PATH_MAX + 1]; } Prefs; diff --git a/swad_group.c b/swad_group.c index 452c74e4..b93d600e 100644 --- a/swad_group.c +++ b/swad_group.c @@ -1370,7 +1370,7 @@ static void Grp_ListGroupTypesForEdition (void) " class=\"%sCONTEXT_ICO_16x16\" />" "" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].MustBeOpened ? Txt_The_groups_will_automatically_open : Txt_The_groups_will_not_automatically_open, Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].MustBeOpened ? Txt_The_groups_will_automatically_open : @@ -2576,7 +2576,7 @@ static void Grp_PutFormToCreateGroupType (void) " class=\"%sCONTEXT_ICO_16x16\" />" "" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Gbl.CurrentCrs.Grps.GrpTyp.MustBeOpened ? Txt_The_groups_will_automatically_open : Txt_The_groups_will_not_automatically_open, Gbl.CurrentCrs.Grps.GrpTyp.MustBeOpened ? Txt_The_groups_will_automatically_open : diff --git a/swad_hierarchy.c b/swad_hierarchy.c index 6cb7c9c0..c6ef0728 100644 --- a/swad_hierarchy.c +++ b/swad_hierarchy.c @@ -407,7 +407,7 @@ void Hie_WriteBigNameCtyInsCtrDegCrs (void) fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Cfg_PLATFORM_SHORT_NAME,Cfg_PLATFORM_FULL_NAME); /***** Text *****/ @@ -545,14 +545,14 @@ void Hie_InitHierarchy (void) { /***** Paths of course directories *****/ snprintf (Gbl.CurrentCrs.PathPriv,sizeof (Gbl.CurrentCrs.PathPriv), - "%s/%s/%ld", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Gbl.CurrentCrs.Crs.CrsCod); + "%s/%ld", + Cfg_PATH_CRS_PRIVATE,Gbl.CurrentCrs.Crs.CrsCod); snprintf (Gbl.CurrentCrs.PathRelPubl,sizeof (Gbl.CurrentCrs.PathRelPubl), - "%s/%s/%ld", - Cfg_PATH_SWAD_PUBLIC ,Cfg_FOLDER_CRS,Gbl.CurrentCrs.Crs.CrsCod); + "%s/%ld", + Cfg_PATH_CRS_PUBLIC,Gbl.CurrentCrs.Crs.CrsCod); snprintf (Gbl.CurrentCrs.PathURLPubl,sizeof (Gbl.CurrentCrs.PathURLPubl), - "%s/%s/%ld", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_CRS,Gbl.CurrentCrs.Crs.CrsCod); + "%s/%ld", + Cfg_URL_CRS_PUBLIC,Gbl.CurrentCrs.Crs.CrsCod); /***** If any of the course directories does not exist, create it *****/ if (!Fil_CheckIfPathExists (Gbl.CurrentCrs.PathPriv)) diff --git a/swad_icon.c b/swad_icon.c index ba6cdf83..39173ffc 100644 --- a/swad_icon.c +++ b/swad_icon.c @@ -93,9 +93,9 @@ const char *Ico_GetIcon (const char *IconWithoutExtension) "%s.%s", IconWithoutExtension,Ico_IconExtensions[NumExt]); snprintf (PathIcon,sizeof (PathIcon), - "%s/%s/%s/%s/%s", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PUBLIC_ICON, - Cfg_ICON_FOLDER_ICON_SETS,Ico_IconSetId[Gbl.Prefs.IconSet], + "%s/%s/%s", + Cfg_PATH_ICON_SETS_PUBLIC, + Ico_IconSetId[Gbl.Prefs.IconSet], IconWithExtension); if (Fil_CheckIfPathExists (PathIcon)) return IconWithExtension; @@ -130,7 +130,7 @@ void Ico_PutIconsToSelectIconSet (void) Par_PutHiddenParamString ("IconSet",Ico_IconSetId[IconSet]); snprintf (Icon,sizeof (Icon), "%s/%s/cog.svg", - Cfg_ICON_FOLDER_ICON_SETS, + Cfg_ICON_FOLDER_SETS, Ico_IconSetId[IconSet]); Ico_PutPrefIconLink (Icon,Ico_IconSetNames[IconSet]); Frm_EndForm (); @@ -161,9 +161,8 @@ void Ico_ChangeIconSet (void) /***** Get param with icon set *****/ Gbl.Prefs.IconSet = Ico_GetParamIconSet (); snprintf (Gbl.Prefs.URLIconSet,sizeof (Gbl.Prefs.URLIconSet), - "%s/%s/%s/%s", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_PUBLIC_ICON, - Cfg_ICON_FOLDER_ICON_SETS, + "%s/%s", + Cfg_URL_ICON_SETS_PUBLIC, Ico_IconSetId[Gbl.Prefs.IconSet]); /***** Store icon set in database *****/ @@ -301,7 +300,7 @@ void Ico_PutDivIcon (const char *DivClass,const char *Icon,const char *Title) " class=\"CONTEXT_ICO_16x16\" />" "", DivClass, - Gbl.Prefs.URLIcons,Icon, + Cfg_URL_ICON_PUBLIC,Icon, Title,Title); } @@ -325,7 +324,7 @@ void Ico_PutIconLink (const char *Icon,const char *Title) fprintf (Gbl.F.Out,"", - Gbl.Prefs.URLIcons,Icon, + Cfg_URL_ICON_PUBLIC,Icon, Title,Title); } @@ -341,7 +340,7 @@ void Ico_PutIconTextLink (const char *Icon,const char *Text) " class=\"CONTEXT_ICO_x16\" />" " %s" "", - Gbl.Prefs.URLIcons,Icon,Text,Text, + Cfg_URL_ICON_PUBLIC,Icon,Text,Text, Text); } @@ -354,7 +353,7 @@ void Ico_PutPrefIconLink (const char *Icon,const char *Title) fprintf (Gbl.F.Out,"", - Gbl.Prefs.URLIcons,Icon, + Cfg_URL_ICON_PUBLIC,Icon, Title,Title); } @@ -366,7 +365,7 @@ void Ico_PutIconOff (const char *Icon,const char *Title) { fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons,Icon,Title,Title); + Cfg_URL_ICON_PUBLIC,Icon,Title,Title); } /*****************************************************************************/ @@ -385,8 +384,8 @@ void Ico_PutCalculateIcon (const char *Title) " class=\"CONTEXT_ICO_16x16\" style=\"display:none;\" />" // Animated icon hidden "" "", - Gbl.Form.Num,Gbl.Prefs.URLIcons,Title,Title, - Gbl.Form.Num,Gbl.Prefs.URLIcons,Title,Title); + Gbl.Form.Num,Cfg_URL_ICON_PUBLIC,Title,Title, + Gbl.Form.Num,Cfg_URL_ICON_PUBLIC,Title,Title); } /*****************************************************************************/ @@ -407,8 +406,8 @@ void Ico_PutCalculateIconWithText (const char *Text) " %s" "" "", - Gbl.Form.Num,Gbl.Prefs.URLIcons,Text,Text, - Gbl.Form.Num,Gbl.Prefs.URLIcons,Text,Text, + Gbl.Form.Num,Cfg_URL_ICON_PUBLIC,Text,Text, + Gbl.Form.Num,Cfg_URL_ICON_PUBLIC,Text,Text, Text); } diff --git a/swad_info.c b/swad_info.c index 0010608c..c1fc79b2 100644 --- a/swad_info.c +++ b/swad_info.c @@ -805,8 +805,8 @@ static bool Inf_CheckAndShowPage (void) if (Fil_CheckIfPathExists (PathRelFileHTML)) // TODO: Check if not empty? { snprintf (URL,sizeof (URL), - "%s/%s/%ld/%s/index.html", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_CRS,Gbl.CurrentCrs.Crs.CrsCod, + "%s/%ld/%s/index.html", + Cfg_URL_CRS_PUBLIC,Gbl.CurrentCrs.Crs.CrsCod, Inf_FileNamesForInfoType[Gbl.CurrentCrs.Info.Type]); Inf_ShowPage (URL); @@ -820,8 +820,8 @@ static bool Inf_CheckAndShowPage (void) if (Fil_CheckIfPathExists (PathRelFileHTML)) // TODO: Check if not empty? { snprintf (URL,sizeof (URL), - "%s/%s/%ld/%s/index.htm", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_CRS,Gbl.CurrentCrs.Crs.CrsCod, + "%s/%ld/%s/index.htm", + Cfg_URL_CRS_PUBLIC,Gbl.CurrentCrs.Crs.CrsCod, Inf_FileNamesForInfoType[Gbl.CurrentCrs.Info.Type]); Inf_ShowPage (URL); @@ -838,8 +838,8 @@ static bool Inf_CheckAndShowPage (void) static void Inf_BuildPathPage (long CrsCod,Inf_InfoType_t InfoType,char PathDir[PATH_MAX + 1]) { snprintf (PathDir,PATH_MAX + 1, - "%s/%s/%ld/%s", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CRS,CrsCod, + "%s/%ld/%s", + Cfg_PATH_CRS_PUBLIC,CrsCod, Inf_FileNamesForInfoType[InfoType]); } @@ -985,8 +985,8 @@ static void Inf_BuildPathURL (long CrsCod,Inf_InfoType_t InfoType, char PathFile[PATH_MAX + 1]) { snprintf (PathFile,PATH_MAX + 1, - "%s/%s/%ld/%s.url", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,CrsCod, + "%s/%ld/%s.url", + Cfg_PATH_CRS_PRIVATE,CrsCod, Inf_FileNamesForInfoType[InfoType]); } @@ -1885,11 +1885,11 @@ static bool Inf_CheckAndShowRichTxt (void) // TODO: change to another directory? /* Create a unique name for the .md file */ snprintf (PathFileMD,sizeof (PathFileMD), - "%s/%s/%s.md", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_OUT,Gbl.UniqueNameEncrypted); + "%s/%s.md", + Cfg_PATH_OUT_PRIVATE,Gbl.UniqueNameEncrypted); snprintf (PathFileHTML,sizeof (PathFileHTML), - "%s/%s/%s.md.html", // Do not use only .html because that is the output temporary file - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_OUT,Gbl.UniqueNameEncrypted); + "%s/%s.md.html", // Do not use only .html because that is the output temporary file + Cfg_PATH_OUT_PRIVATE,Gbl.UniqueNameEncrypted); /* Open Markdown file for writing */ if ((FileMD = fopen (PathFileMD,"wb")) == NULL) @@ -1976,8 +1976,8 @@ int Inf_WritePlainTextIntoHTMLBuffer (char **HTMLBuffer) { /***** Create a unique name for the file *****/ snprintf (FileNameHTMLTmp,sizeof (FileNameHTMLTmp), - "%s/%s/%s_info.html", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_OUT,Gbl.UniqueNameEncrypted); + "%s/%s_info.html", + Cfg_PATH_OUT_PRIVATE,Gbl.UniqueNameEncrypted); /***** Create a new temporary file for writing and reading *****/ if ((FileHTMLTmp = fopen (FileNameHTMLTmp,"w+b")) == NULL) diff --git a/swad_institution.c b/swad_institution.c index c949bf1c..0e261087 100644 --- a/swad_institution.c +++ b/swad_institution.c @@ -1746,8 +1746,8 @@ void Ins_RemoveInstitution (void) /***** Remove directories of the institution *****/ snprintf (PathIns,sizeof (PathIns), - "%s/%s/%02u/%u", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_INS, + "%s/%02u/%u", + Cfg_PATH_INS_PUBLIC, (unsigned) (Ins.InsCod % 100), (unsigned) Ins.InsCod); Fil_RemoveTree (PathIns); diff --git a/swad_layout.c b/swad_layout.c index 69396420..4a1ebd41 100644 --- a/swad_layout.c +++ b/swad_layout.c @@ -190,8 +190,8 @@ void Lay_WriteStartOfPage (void) /* Favicon */ fprintf (Gbl.F.Out,"\n" "\n", - Gbl.Prefs.URLIcons, - Gbl.Prefs.URLIcons); + Cfg_URL_ICON_PUBLIC, + Cfg_URL_ICON_PUBLIC); /* Style sheet for SWAD */ fprintf (Gbl.F.Out,"\n", @@ -261,7 +261,7 @@ void Lay_WriteStartOfPage (void) "
    " "
    " "", - Gbl.Prefs.URLIcons); + Cfg_URL_ICON_PUBLIC); else { fprintf (Gbl.F.Out,"\n"); @@ -852,7 +852,7 @@ static void Lay_WritePageTopHeading (void) " class=\"CENTER_MIDDLE\"" " style=\"width:%upx; height:%upx;\" />" "", // head_row_1_logo_small - Gbl.Prefs.URLIcons,Cfg_PLATFORM_LOGO_SMALL_FILENAME, + Cfg_URL_ICON_PUBLIC,Cfg_PLATFORM_LOGO_SMALL_FILENAME, Cfg_PLATFORM_SHORT_NAME,Cfg_PLATFORM_FULL_NAME, Cfg_PLATFORM_LOGO_SMALL_WIDTH,Cfg_PLATFORM_LOGO_SMALL_HEIGHT); fprintf (Gbl.F.Out,"" @@ -862,7 +862,7 @@ static void Lay_WritePageTopHeading (void) " class=\"CENTER_MIDDLE\"" " style=\"width:%upx; height:%upx;\" />" "", // head_row_1_logo_big - Gbl.Prefs.URLIcons,Cfg_PLATFORM_LOGO_BIG_FILENAME, + Cfg_URL_ICON_PUBLIC,Cfg_PLATFORM_LOGO_BIG_FILENAME, Cfg_PLATFORM_SHORT_NAME,Cfg_PLATFORM_FULL_NAME, Cfg_PLATFORM_LOGO_BIG_WIDTH,Cfg_PLATFORM_LOGO_BIG_HEIGHT); fprintf (Gbl.F.Out,"" @@ -1061,7 +1061,7 @@ static void Lay_ShowRightColumn (void) "" "", Txt_If_you_have_an_Android_device_try_SWADroid, - Gbl.Prefs.URLIcons); + Cfg_URL_ICON_PUBLIC); } /*****************************************************************************/ @@ -1355,7 +1355,7 @@ static void Lay_WriteAboutZone (void) "
    %s
    " "", Cfg_ABOUT_URL, - Gbl.Prefs.URLIcons,Cfg_ABOUT_LOGO, + Cfg_URL_ICON_PUBLIC,Cfg_ABOUT_LOGO, Cfg_ABOUT_NAME,Cfg_ABOUT_NAME, Cfg_ABOUT_LOGO_WIDTH,Cfg_ABOUT_LOGO_HEIGHT, Cfg_ABOUT_NAME); @@ -1399,16 +1399,33 @@ void Lay_RefreshNotifsAndConnected (void) /***** Sometimes, someone must do this work, so who best than processes that refresh via AJAX? *****/ - if (!(Gbl.PID % 11)) // Do this only one of 11 times ( 11 is prime) + // We use (PID % prime-number) to do only one action as much + if (!(Gbl.PID % 11)) Ntf_SendPendingNotifByEMailToAllUsrs (); // Send pending notifications by email - else if (!(Gbl.PID % 19)) // Do this only one of 19 times ( 19 is prime) - FW_PurgeFirewall (); - else if (!(Gbl.PID % 1013)) // Do this only one of 1013 times (1013 is prime) + else if (!(Gbl.PID % 19)) + FW_PurgeFirewall (); // Remove old clicks from firewall + else if (!(Gbl.PID % 101)) Brw_RemoveExpiredExpandedFolders (); // Remove old expanded folders (from all users) - else if (!(Gbl.PID % 1019)) // Do this only one of 1019 times (1019 is prime) + else if (!(Gbl.PID % 103)) Pre_RemoveOldPrefsFromIP (); // Remove old preferences from IP - else if (!(Gbl.PID % 1021)) // Do this only one of 1021 times (1021 is prime) + else if (!(Gbl.PID % 107)) Sta_RemoveOldEntriesRecentLog (); // Remove old entries in recent log table, it's a slow query + else if (!(Gbl.PID % 109)) + Fil_RemoveOldTmpFiles (Cfg_PATH_OUT_PRIVATE ,Cfg_TIME_TO_DELETE_HTML_OUTPUT ,false); + else if (!(Gbl.PID % 113)) + Fil_RemoveOldTmpFiles (Cfg_PATH_FILE_BROWSER_TMP_PUBLIC ,Cfg_TIME_TO_DELETE_BROWSER_TMP_FILES ,false); // Remove the oldest temporary public directories used for downloading + else if (!(Gbl.PID % 127)) + Fil_RemoveOldTmpFiles (Cfg_PATH_PHOTO_TMP_PUBLIC ,Cfg_TIME_TO_DELETE_PHOTOS_TMP_FILES ,false); + else if (!(Gbl.PID % 131)) + Fil_RemoveOldTmpFiles (Cfg_PATH_PHOTO_TMP_PRIVATE ,Cfg_TIME_TO_DELETE_PHOTOS_TMP_FILES ,false); + else if (!(Gbl.PID % 137)) + Fil_RemoveOldTmpFiles (Cfg_PATH_MEDIA_TMP_PRIVATE ,Cfg_TIME_TO_DELETE_MEDIA_TMP_FILES ,false); + else if (!(Gbl.PID % 139)) + Fil_RemoveOldTmpFiles (Cfg_PATH_ZIP_PRIVATE ,Cfg_TIME_TO_DELETE_BROWSER_ZIP_FILES ,false); + else if (!(Gbl.PID % 149)) + Fil_RemoveOldTmpFiles (Cfg_PATH_MARK_PRIVATE ,Cfg_TIME_TO_DELETE_MARKS_TMP_FILES ,false); + else if (!(Gbl.PID % 151)) + Fil_RemoveOldTmpFiles (Cfg_PATH_TEST_PRIVATE ,Cfg_TIME_TO_DELETE_TEST_TMP_FILES ,false); /***** Send, before the HTML, the refresh time *****/ fprintf (Gbl.F.Out,"%lu|",Gbl.Usrs.Connected.TimeToRefreshInMs); @@ -1601,7 +1618,7 @@ void Lay_AdvertisementMobile (void) "" "", Txt_Stay_connected_with_SWADroid, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Stay_connected_with_SWADroid); /***** End table and box *****/ @@ -1627,7 +1644,7 @@ void Lay_IndentDependingOnLevel (unsigned Level,bool IsLastItemInLevel[]) fprintf (Gbl.F.Out,"\"\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, IsLastItemInLevel[i] ? "tr" : "subleft"); @@ -1636,7 +1653,7 @@ void Lay_IndentDependingOnLevel (unsigned Level,bool IsLastItemInLevel[]) fprintf (Gbl.F.Out,"\"\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, IsLastItemInLevel[Level] ? "subend" : "submid"); } diff --git a/swad_logo.c b/swad_logo.c index 990db172..2e918a74 100644 --- a/swad_logo.c +++ b/swad_logo.c @@ -95,8 +95,8 @@ void Log_DrawLogo (Sco_Scope_t Scope,long Cod,const char *AltText, Folder = Cfg_FOLDER_DEG; DegCod = Cod; snprintf (PathLogo,sizeof (PathLogo), - "%s/%s/%02u/%u/logo/%u.png", - Cfg_PATH_SWAD_PUBLIC,Folder, + "%s/%02u/%u/logo/%u.png", + Cfg_PATH_DEG_PRIVATE, (unsigned) (DegCod % 100), (unsigned) DegCod, (unsigned) DegCod); @@ -114,8 +114,8 @@ void Log_DrawLogo (Sco_Scope_t Scope,long Cod,const char *AltText, else CtrCod = Cod; snprintf (PathLogo,sizeof (PathLogo), - "%s/%s/%02u/%u/logo/%u.png", - Cfg_PATH_SWAD_PUBLIC,Folder, + "%s/%02u/%u/logo/%u.png", + Cfg_PATH_CTR_PUBLIC, (unsigned) (CtrCod % 100), (unsigned) CtrCod, (unsigned) CtrCod); @@ -135,8 +135,8 @@ void Log_DrawLogo (Sco_Scope_t Scope,long Cod,const char *AltText, else InsCod = Cod; snprintf (PathLogo,sizeof (PathLogo), - "%s/%s/%02u/%u/logo/%u.png", - Cfg_PATH_SWAD_PUBLIC,Folder, + "%s/%02u/%u/logo/%u.png", + Cfg_PATH_INS_PUBLIC, (unsigned) (InsCod % 100), (unsigned) InsCod, (unsigned) InsCod); @@ -157,7 +157,7 @@ void Log_DrawLogo (Sco_Scope_t Scope,long Cod,const char *AltText, (unsigned) Cod); else if (Icon[Scope]) fprintf (Gbl.F.Out,"%s/%s", - Gbl.Prefs.URLIcons,Icon[Scope]); + Cfg_URL_ICON_PUBLIC,Icon[Scope]); fprintf (Gbl.F.Out,"\"" " alt=\"%s\" title=\"%s\"" " class=\"ICO%ux%u", diff --git a/swad_mail.c b/swad_mail.c index c208435d..5f52c5f6 100644 --- a/swad_mail.c +++ b/swad_mail.c @@ -1297,7 +1297,7 @@ static void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe, fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Gbl.Title,Gbl.Title); } @@ -1805,8 +1805,8 @@ void Mai_ConfirmEmail (void) void Mai_CreateFileNameMail (void) { snprintf (Gbl.Msg.FileNameMail,sizeof (Gbl.Msg.FileNameMail), - "%s/%s/%s_mail.txt", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_OUT,Gbl.UniqueNameEncrypted); + "%s/%s_mail.txt", + Cfg_PATH_OUT_PRIVATE,Gbl.UniqueNameEncrypted); if ((Gbl.Msg.FileMail = fopen (Gbl.Msg.FileNameMail,"wb")) == NULL) Lay_ShowErrorAndExit ("Can not open file to send email."); } diff --git a/swad_mark.c b/swad_mark.c index a79d0832..33c54cc5 100644 --- a/swad_mark.c +++ b/swad_mark.c @@ -606,7 +606,6 @@ void Mrk_ShowMyMarks (void) struct MarksProperties Marks; char FileNameUsrMarks[PATH_MAX + 1]; FILE *FileUsrMarks; - char PathMarksPriv[PATH_MAX + 1]; char PathPrivate[PATH_MAX + 1 + PATH_MAX + 1]; struct UsrData *UsrDat; @@ -661,21 +660,12 @@ void Mrk_ShowMyMarks (void) /***** Create temporal file to store my marks (in HTML) *****/ /* If the private directory does not exist, create it */ - snprintf (PathMarksPriv,sizeof (PathMarksPriv), - "%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_MARK); - Fil_CreateDirIfNotExists (PathMarksPriv); - - /* First of all, we remove the oldest temporary files. - Such temporary files have been created by me or by other users. - This is a bit sloppy, but they must be removed by someone. - Here "oldest" means more than x time from their creation */ - Fil_RemoveOldTmpFiles (PathMarksPriv,Cfg_TIME_TO_DELETE_MARKS_TMP_FILES,false); + Fil_CreateDirIfNotExists (Cfg_PATH_MARK_PRIVATE); /* Create a new temporary file *****/ snprintf (FileNameUsrMarks,sizeof (FileNameUsrMarks), "%s/%s.html", - PathMarksPriv,Gbl.UniqueNameEncrypted); + Cfg_PATH_MARK_PRIVATE,Gbl.UniqueNameEncrypted); if ((FileUsrMarks = fopen (FileNameUsrMarks,"wb")) == NULL) Lay_ShowErrorAndExit ("Can not open file for my marks."); @@ -736,7 +726,6 @@ void Mrk_GetNotifMyMarks (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1], char FullPathInTreeFromDBMarksTable[PATH_MAX + 1]; char PathUntilFileName[PATH_MAX + 1]; char FileName[NAME_MAX + 1]; - char PathMarksPriv[PATH_MAX + 1]; char PathMarks[PATH_MAX + 1]; char FileNameUsrMarks[PATH_MAX + 1]; FILE *FileUsrMarks; @@ -802,32 +791,23 @@ void Mrk_GetNotifMyMarks (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1], { if (GrpCod > 0) snprintf (PathMarks,sizeof (PathMarks), - "%s/%s/%ld/grp/%ld/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,CrsCod,GrpCod, + "%s/%ld/grp/%ld/%s", + Cfg_PATH_CRS_PRIVATE,CrsCod,GrpCod, FullPathInTreeFromDBMarksTable); else snprintf (PathMarks,sizeof (PathMarks), - "%s/%s/%ld/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,CrsCod, + "%s/%ld/%s", + Cfg_PATH_CRS_PRIVATE,CrsCod, FullPathInTreeFromDBMarksTable); /***** Create temporal file to store my marks (in HTML) *****/ /* If the private directory does not exist, create it */ - snprintf (PathMarksPriv,sizeof (PathMarksPriv), - "%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_MARK); - Fil_CreateDirIfNotExists (PathMarksPriv); - - /* First of all, we remove the oldest temporary files. - Such temporary files have been created by me or by other users. - This is a bit sloppy, but they must be removed by someone. - Here "oldest" means more than x time from their creation */ - Fil_RemoveOldTmpFiles (PathMarksPriv,Cfg_TIME_TO_DELETE_MARKS_TMP_FILES,false); + Fil_CreateDirIfNotExists (Cfg_PATH_MARK_PRIVATE); /* Create a new temporary file *****/ snprintf (FileNameUsrMarks,sizeof (FileNameUsrMarks), "%s/%s.html", - PathMarksPriv,Gbl.UniqueNameEncrypted); + Cfg_PATH_MARK_PRIVATE,Gbl.UniqueNameEncrypted); if ((FileUsrMarks = fopen (FileNameUsrMarks,"wb"))) { /***** Get user's marks *****/ diff --git a/swad_media.c b/swad_media.c index 17ecc71b..019ad9e4 100644 --- a/swad_media.c +++ b/swad_media.c @@ -116,17 +116,13 @@ static void Usr_GetTitleFromForm (const char *ParamName,struct Media *Media); static void Med_GetAndProcessFileFromForm (const char *ParamFile, struct Media *Media); static bool Med_DetectIfAnimated (struct Media *Media, - const char PathMedPrivTmp[PATH_MAX + 1], const char PathFileOrg[PATH_MAX + 1]); static void Med_ProcessJPG (struct Media *Media, - const char PathMedPrivTmp[PATH_MAX + 1], const char PathFileOrg[PATH_MAX + 1]); static void Med_ProcessGIF (struct Media *Media, - const char PathMedPrivTmp[PATH_MAX + 1], const char PathFileOrg[PATH_MAX + 1]); static void Med_ProcessVideo (struct Media *Media, - const char PathMedPrivTmp[PATH_MAX + 1], const char PathFileOrg[PATH_MAX + 1]); static int Med_ResizeImage (struct Media *Media, @@ -139,7 +135,6 @@ static void Med_GetAndProcessEmbedFromForm (const char *ParamURL, struct Media *Media); static bool Med_MoveTmpFileToDefDir (struct Media *Media, - const char PathMedPrivTmp[PATH_MAX + 1], const char PathMedPriv[PATH_MAX + 1], const char *Extension); @@ -353,7 +348,7 @@ void Med_PutMediaUploader (int NumMediaInForm,const char *ClassInput) " onclick=\"mediaClickOnActivateUpload('%s');\" />" "", // _ico_upl Id, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Image_video,Txt_Image_video, Id); @@ -374,7 +369,7 @@ void Med_PutMediaUploader (int NumMediaInForm,const char *ClassInput) " onclick=\"mediaClickOnActivateEmbed('%s');\" />" "", // _ico_emb Id, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, "YouTube","YouTube", Id); @@ -650,8 +645,6 @@ static void Med_GetAndProcessFileFromForm (const char *ParamFile, char *PtrExtension; size_t LengthExtension; char MIMEType[Brw_MAX_BYTES_MIME_TYPE + 1]; - char PathMedPriv[PATH_MAX + 1]; - char PathMedPrivTmp[PATH_MAX + 1]; char PathFileOrg[PATH_MAX + 1]; // Full name of original uploaded file /***** Set media status *****/ @@ -685,47 +678,38 @@ static void Med_GetAndProcessFileFromForm (const char *ParamFile, /***** Create private directories if not exist *****/ /* Create private directory for images/videos if it does not exist */ - snprintf (PathMedPriv,sizeof (PathMedPriv), - "%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_MEDIA); - Fil_CreateDirIfNotExists (PathMedPriv); + Fil_CreateDirIfNotExists (Cfg_PATH_MEDIA_PRIVATE); /* Create temporary private directory for images/videos if it does not exist */ - snprintf (PathMedPrivTmp,sizeof (PathMedPrivTmp), - "%s/%s", - PathMedPriv,Cfg_FOLDER_IMG_TMP); - Fil_CreateDirIfNotExists (PathMedPrivTmp); - - /***** Remove old temporary private files *****/ - Fil_RemoveOldTmpFiles (PathMedPrivTmp,Cfg_TIME_TO_DELETE_IMAGES_TMP_FILES,false); + Fil_CreateDirIfNotExists (Cfg_PATH_MEDIA_TMP_PRIVATE); /***** End the reception of original not processed media (it may be very big) into a temporary file *****/ Media->Status = Med_STATUS_NONE; snprintf (PathFileOrg,sizeof (PathFileOrg), "%s/%s_original.%s", - PathMedPrivTmp,Media->Name,PtrExtension); + Cfg_PATH_MEDIA_TMP_PRIVATE,Media->Name,PtrExtension); if (Fil_EndReceptionOfFile (PathFileOrg,Param)) // Success { /***** Detect if animated GIF *****/ if (Media->Type == Med_GIF) - if (!Med_DetectIfAnimated (Media,PathMedPrivTmp,PathFileOrg)) + if (!Med_DetectIfAnimated (Media,PathFileOrg)) Media->Type = Med_JPG; /***** Process media depending on the media file extension *****/ switch (Media->Type) { case Med_JPG: - Med_ProcessJPG (Media,PathMedPrivTmp,PathFileOrg); + Med_ProcessJPG (Media,PathFileOrg); break; case Med_GIF: - Med_ProcessGIF (Media,PathMedPrivTmp,PathFileOrg); + Med_ProcessGIF (Media,PathFileOrg); break; case Med_MP4: case Med_WEBM: case Med_OGG: - Med_ProcessVideo (Media,PathMedPrivTmp,PathFileOrg); + Med_ProcessVideo (Media,PathFileOrg); break; default: break; @@ -744,7 +728,6 @@ static void Med_GetAndProcessFileFromForm (const char *ParamFile, // Return false if static or error static bool Med_DetectIfAnimated (struct Media *Media, - const char PathMedPrivTmp[PATH_MAX + 1], const char PathFileOrg[PATH_MAX + 1]) { char PathFileTxtTmp[PATH_MAX + 1]; @@ -756,7 +739,7 @@ static bool Med_DetectIfAnimated (struct Media *Media, /***** Build path to temporary text file *****/ snprintf (PathFileTxtTmp,sizeof (PathFileTxtTmp), "%s/%s.txt", - PathMedPrivTmp,Media->Name); + Cfg_PATH_MEDIA_TMP_PRIVATE,Media->Name); /***** Execute system command to get number of frames in GIF *****/ snprintf (Command,sizeof (Command), @@ -787,7 +770,6 @@ static bool Med_DetectIfAnimated (struct Media *Media, /*****************************************************************************/ static void Med_ProcessJPG (struct Media *Media, - const char PathMedPrivTmp[PATH_MAX + 1], const char PathFileOrg[PATH_MAX + 1]) { extern const char *Txt_The_file_could_not_be_processed_successfully; @@ -797,7 +779,7 @@ static void Med_ProcessJPG (struct Media *Media, by calling to program that makes the conversion *****/ snprintf (PathFileJPGTmp,sizeof (PathFileJPGTmp), "%s/%s.%s", - PathMedPrivTmp,Media->Name,Med_Extensions[Med_JPG]); + Cfg_PATH_MEDIA_TMP_PRIVATE,Media->Name,Med_Extensions[Med_JPG]); if (Med_ResizeImage (Media,PathFileOrg,PathFileJPGTmp) == 0) // On success ==> 0 is returned /* Success */ Media->Status = Med_PROCESSED; @@ -817,7 +799,6 @@ static void Med_ProcessJPG (struct Media *Media, /*****************************************************************************/ static void Med_ProcessGIF (struct Media *Media, - const char PathMedPrivTmp[PATH_MAX + 1], const char PathFileOrg[PATH_MAX + 1]) { extern const char *Txt_The_file_could_not_be_processed_successfully; @@ -838,14 +819,14 @@ static void Med_ProcessGIF (struct Media *Media, and save it on temporary PNG file */ snprintf (PathFilePNGTmp,sizeof (PathFilePNGTmp), "%s/%s.png", - PathMedPrivTmp,Media->Name); + Cfg_PATH_MEDIA_TMP_PRIVATE,Media->Name); if (Med_GetFirstFrame (PathFileOrg,PathFilePNGTmp) == 0) // On success ==> 0 is returned { /* Success */ /***** Move original GIF file to temporary GIF file *****/ snprintf (PathFileGIFTmp,sizeof (PathFileGIFTmp), "%s/%s.%s", - PathMedPrivTmp,Media->Name,Med_Extensions[Med_GIF]); + Cfg_PATH_MEDIA_TMP_PRIVATE,Media->Name,Med_Extensions[Med_GIF]); if (rename (PathFileOrg,PathFileGIFTmp)) // Fail { /* Remove temporary PNG file */ @@ -887,7 +868,6 @@ static void Med_ProcessGIF (struct Media *Media, /*****************************************************************************/ static void Med_ProcessVideo (struct Media *Media, - const char PathMedPrivTmp[PATH_MAX + 1], const char PathFileOrg[PATH_MAX + 1]) { extern const char *Txt_The_file_could_not_be_processed_successfully; @@ -906,7 +886,7 @@ static void Med_ProcessVideo (struct Media *Media, /***** Move original video file to temporary MP4 file *****/ snprintf (PathFileTmp,sizeof (PathFileTmp), "%s/%s.%s", - PathMedPrivTmp,Media->Name,Med_Extensions[Media->Type]); + Cfg_PATH_MEDIA_TMP_PRIVATE,Media->Name,Med_Extensions[Media->Type]); if (rename (PathFileOrg,PathFileTmp)) // Fail /* Show error alert */ Ale_ShowAlert (Ale_ERROR,Txt_The_file_could_not_be_processed_successfully); @@ -1187,7 +1167,6 @@ void Med_RemoveKeepOrStoreMedia (long CurrentMedCodInDB,struct Media *Media) void Med_MoveMediaToDefinitiveDir (struct Media *Media) { - char PathMedPrivTmp[PATH_MAX + 1]; char PathMedPriv[PATH_MAX + 1]; /***** Check trivial case *****/ @@ -1198,15 +1177,10 @@ void Med_MoveMediaToDefinitiveDir (struct Media *Media) Media->Status = Med_MOVED; // Success else { - /***** Build temporary path *****/ - snprintf (PathMedPrivTmp,sizeof (PathMedPrivTmp), - "%s/%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_MEDIA,Cfg_FOLDER_IMG_TMP); - /***** Create private subdirectory for media if it does not exist *****/ snprintf (PathMedPriv,sizeof (PathMedPriv), - "%s/%s/%c%c", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_MEDIA, + "%s/%c%c", + Cfg_PATH_MEDIA_PRIVATE, Media->Name[0], Media->Name[1]); Fil_CreateDirIfNotExists (PathMedPriv); @@ -1216,16 +1190,16 @@ void Med_MoveMediaToDefinitiveDir (struct Media *Media) { case Med_JPG: /* Move JPG */ - if (Med_MoveTmpFileToDefDir (Media,PathMedPrivTmp,PathMedPriv, + if (Med_MoveTmpFileToDefDir (Media,PathMedPriv, Med_Extensions[Med_JPG])) Media->Status = Med_MOVED; // Success break; case Med_GIF: /* Move PNG */ - if (Med_MoveTmpFileToDefDir (Media,PathMedPrivTmp,PathMedPriv, + if (Med_MoveTmpFileToDefDir (Media,PathMedPriv, "png")) /* Move GIF */ - if (Med_MoveTmpFileToDefDir (Media,PathMedPrivTmp,PathMedPriv, + if (Med_MoveTmpFileToDefDir (Media,PathMedPriv, Med_Extensions[Med_GIF])) Media->Status = Med_MOVED; // Success break; @@ -1233,7 +1207,7 @@ void Med_MoveMediaToDefinitiveDir (struct Media *Media) case Med_WEBM: case Med_OGG: /* Move MP4 or WEBM or OGG */ - if (Med_MoveTmpFileToDefDir (Media,PathMedPrivTmp,PathMedPriv, + if (Med_MoveTmpFileToDefDir (Media,PathMedPriv, Med_Extensions[Media->Type])) Media->Status = Med_MOVED; // Success break; @@ -1256,7 +1230,6 @@ void Med_MoveMediaToDefinitiveDir (struct Media *Media) // Return false on error static bool Med_MoveTmpFileToDefDir (struct Media *Media, - const char PathMedPrivTmp[PATH_MAX + 1], const char PathMedPriv[PATH_MAX + 1], const char *Extension) { @@ -1266,7 +1239,7 @@ static bool Med_MoveTmpFileToDefDir (struct Media *Media, /***** Temporary processed media file *****/ snprintf (PathFileTmp,sizeof (PathFileTmp), "%s/%s.%s", - PathMedPrivTmp,Media->Name,Extension); + Cfg_PATH_MEDIA_TMP_PRIVATE,Media->Name,Extension); /***** Definitive processed media file *****/ snprintf (PathFile,sizeof (PathFile), @@ -1352,8 +1325,8 @@ void Med_ShowMedia (struct Media *Media, /***** Build path to private directory with the media *****/ snprintf (PathMedPriv,sizeof (PathMedPriv), - "%s/%s/%c%c", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_MEDIA, + "%s/%c%c", + Cfg_PATH_MEDIA_PRIVATE, Media->Name[0], Media->Name[1]); @@ -1415,8 +1388,8 @@ static void Med_ShowJPG (struct Media *Media, /***** Build temporary public URL *****/ snprintf (URLTmp,sizeof (URLTmp), - "%s/%s/%s", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_FILE_BROWSER_TMP, + "%s/%s", + Cfg_URL_FILE_BROWSER_TMP_PUBLIC, Gbl.FileBrowser.TmpPubDir); /***** Create URL pointing to symbolic link *****/ @@ -1467,8 +1440,8 @@ static void Med_ShowGIF (struct Media *Media, /***** Build temporary public URL *****/ snprintf (URLTmp,sizeof (URLTmp), - "%s/%s/%s", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_FILE_BROWSER_TMP, + "%s/%s", + Cfg_URL_FILE_BROWSER_TMP_PUBLIC, Gbl.FileBrowser.TmpPubDir); /***** Create URL pointing to symbolic link *****/ @@ -1558,8 +1531,8 @@ static void Med_ShowVideo (struct Media *Media, /***** Build temporary public URL *****/ snprintf (URLTmp,sizeof (URLTmp), - "%s/%s/%s", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_FILE_BROWSER_TMP, + "%s/%s", + Cfg_URL_FILE_BROWSER_TMP_PUBLIC, Gbl.FileBrowser.TmpPubDir); /***** Create URL pointing to symbolic link *****/ @@ -1690,8 +1663,8 @@ void Med_RemoveMedia (long MedCod) { /***** Build path to private directory with the media *****/ snprintf (PathMedPriv,sizeof (PathMedPriv), - "%s/%s/%c%c", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_MEDIA, + "%s/%c%c", + Cfg_PATH_MEDIA_PRIVATE, Media.Name[0], Media.Name[1]); diff --git a/swad_message.c b/swad_message.c index 47f84a72..ccd73d0c 100644 --- a/swad_message.c +++ b/swad_message.c @@ -2936,7 +2936,7 @@ static void Msg_ShowASentOrReceivedMessage (long MsgNum,long MsgCod) "BG_MSG_GREEN") : "BG_MSG_BLUE", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Gbl.Msg.TypeOfMessages == Msg_MESSAGES_RECEIVED ? (Open ? (Replied ? "reply.svg" : "envelope-open-text.svg") : "envelope.svg") : @@ -3206,7 +3206,7 @@ void Msg_WriteMsgAuthor (struct UsrData *UsrDat,bool Enabled,const char *BgColor " class=\"PHOTO30x40\" />" "" "" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Deleted ? "share-red.svg" : "share.svg", Deleted ? Txt_MSG_Sent_and_deleted : @@ -3493,7 +3493,7 @@ static void Msg_WriteMsgTo (long MsgCod) " alt=\"%s\" title=\"%s\"" " class=\"ICO16x16\" />" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, OpenByDst ? (Deleted ? "envelope-open-text-red.svg" : "envelope-open-text.svg") : (Deleted ? "envelope-red.svg" : diff --git a/swad_network.c b/swad_network.c index 8468a013..4c84c556 100644 --- a/swad_network.c +++ b/swad_network.c @@ -260,7 +260,7 @@ static void Net_ShowAWebOrSocialNet (const char *URL, "" "", URL,Title, - Gbl.Prefs.URLIcons,Icon, + Cfg_URL_ICON_PUBLIC,Icon, Title,Title); } @@ -343,7 +343,7 @@ void Net_ShowFormMyWebsAndSocialNets (void) "", (unsigned) NumURL,The_ClassFormInBox[Gbl.Prefs.Theme], - Gbl.Prefs.URLIcons,Net_WebsAndSocialNetworksIcons[NumURL], + Cfg_URL_ICON_PUBLIC,Net_WebsAndSocialNetworksIcons[NumURL], Net_WebsAndSocialNetworksTitle[NumURL], Net_WebsAndSocialNetworksTitle[NumURL], Net_WebsAndSocialNetworksTitle[NumURL], @@ -606,7 +606,7 @@ void Net_ShowWebAndSocialNetworksStats (void) "%.2f%%" "" "", - Gbl.Prefs.URLIcons,Net_WebsAndSocialNetworksIcons[Web], + Cfg_URL_ICON_PUBLIC,Net_WebsAndSocialNetworksIcons[Web], Net_WebsAndSocialNetworksTitle[Web], Net_WebsAndSocialNetworksTitle[Web], Net_WebsAndSocialNetworksTitle[Web], diff --git a/swad_notice.c b/swad_notice.c index 28ad4bf2..b165983b 100644 --- a/swad_notice.c +++ b/swad_notice.c @@ -446,8 +446,8 @@ void Not_ShowNotices (Not_Listing_t TypeNoticesListing) /***** Link to RSS file *****/ /* Create RSS file if not exists */ snprintf (PathRelRSSFile,sizeof (PathRelRSSFile), - "%s/%s/%ld/%s/%s", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CRS, + "%s/%ld/%s/%s", + Cfg_PATH_CRS_PUBLIC, Gbl.CurrentCrs.Crs.CrsCod,Cfg_RSS_FOLDER,Cfg_RSS_FILE); if (!Fil_CheckIfPathExists (PathRelRSSFile)) RSS_UpdateRSSFileForACrs (&Gbl.CurrentCrs.Crs); @@ -462,7 +462,7 @@ void Not_ShowNotices (Not_Listing_t TypeNoticesListing) " class=\"ICO16x16\" />" "" "", - Gbl.Prefs.URLIcons); + Cfg_URL_ICON_PUBLIC); break; case Not_LIST_FULL_NOTICES: /***** Button to add new notice *****/ @@ -671,7 +671,7 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing, " class=\"ICO_HIDDEN ICO16x16\" />" "", Txt_NOTICE_Active_SINGULAR, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_NOTICE_Active_SINGULAR, Txt_NOTICE_Active_SINGULAR); break; @@ -682,7 +682,7 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing, " class=\"ICO_HIDDEN ICO16x16\" />" "", Txt_NOTICE_Obsolete_SINGULAR, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_NOTICE_Obsolete_SINGULAR, Txt_NOTICE_Obsolete_SINGULAR); break; diff --git a/swad_parameter.c b/swad_parameter.c index 769539fa..afd96cc3 100644 --- a/swad_parameter.c +++ b/swad_parameter.c @@ -658,9 +658,7 @@ void Par_GetMainParameters (void) extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS]; long ActCod; char Nickname[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1]; - char Path[PATH_MAX + 1 + - NAME_MAX + 1 + - NAME_MAX + 2]; + char URL[PATH_MAX + 1]; char LongStr[1 + 10 + 1]; /***** Reset codes of country, institution, centre, degree and course *****/ @@ -806,18 +804,17 @@ void Par_GetMainParameters (void) Gbl.Prefs.Theme = The_THEME_DEFAULT; /***** Set path of theme *****/ - snprintf (Path,sizeof (Path), - "%s/%s/%s", - Gbl.Prefs.URLIcons,Cfg_ICON_FOLDER_THEMES,The_ThemeId[Gbl.Prefs.Theme]); - Str_Copy (Gbl.Prefs.URLTheme,Path, + snprintf (URL,sizeof (URL), + "%s/%s", + Cfg_URL_ICON_THEMES_PUBLIC,The_ThemeId[Gbl.Prefs.Theme]); + Str_Copy (Gbl.Prefs.URLTheme,URL, PATH_MAX); /***** Set path of icon set *****/ - snprintf (Path,sizeof (Path), - "%s/%s/%s", - Gbl.Prefs.URLIcons,Cfg_ICON_FOLDER_ICON_SETS, - Ico_IconSetId[Gbl.Prefs.IconSet]); - Str_Copy (Gbl.Prefs.URLIconSet,Path, + snprintf (URL,sizeof (URL), + "%s/%s", + Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet]); + Str_Copy (Gbl.Prefs.URLIconSet,URL, PATH_MAX); } diff --git a/swad_photo.c b/swad_photo.c index 5569a4a8..df8062f3 100644 --- a/swad_photo.c +++ b/swad_photo.c @@ -574,7 +574,6 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr extern const char *Txt_X_faces_have_been_detected_in_front_position_Y_Z_; extern const char *Txt_Faces_detected; char PathPhotosPriv[PATH_MAX + 1]; - char PathPhotosPubl[PATH_MAX + 1]; struct Param *Param; char FileNamePhotoSrc[PATH_MAX + 1]; char FileNamePhotoTmp[PATH_MAX + 1]; // Full name (including path and .jpg) of the destination temporary file @@ -601,32 +600,20 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr char ErrorTxt[256]; /***** Creates directories if not exist *****/ + Fil_CreateDirIfNotExists (Cfg_PATH_PHOTO_PRIVATE); snprintf (PathPhotosPriv,sizeof (PathPhotosPriv), - "%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_PHOTO); - Fil_CreateDirIfNotExists (PathPhotosPriv); - snprintf (PathPhotosPriv,sizeof (PathPhotosPriv), - "%s/%s/%02u", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_PHOTO, + "%s/%02u", + Cfg_PATH_PHOTO_PRIVATE, (unsigned) (UsrDat->UsrCod % 100)); Fil_CreateDirIfNotExists (PathPhotosPriv); /***** Create directories if not exists and remove old temporary files *****/ /* Create public directory for photos */ - snprintf (PathPhotosPubl,sizeof (PathPhotosPubl), - "%s/%s", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PHOTO); - Fil_CreateDirIfNotExists (PathPhotosPubl); + Fil_CreateDirIfNotExists (Cfg_PATH_PHOTO_PUBLIC); /* Create temporary directory for photos */ - snprintf (PathPhotosPubl,sizeof (PathPhotosPubl), - "%s/%s/%s", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,Cfg_FOLDER_PHOTO_TMP); - Fil_CreateDirIfNotExists (PathPhotosPubl); - - /* Remove old temporary files */ - Fil_RemoveOldTmpFiles (PathPhotosPubl,Cfg_TIME_TO_DELETE_PHOTOS_TMP_FILES,false); + Fil_CreateDirIfNotExists (Cfg_PATH_PHOTO_TMP_PUBLIC); /***** First of all, copy in disk the file received from stdin (really from Gbl.F.Tmp) *****/ Param = Fil_StartReceptionOfFile (Fil_NAME_OF_PARAM_FILENAME_ORG, @@ -648,9 +635,9 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr /* End the reception of photo in a temporary file */ snprintf (FileNamePhotoTmp,sizeof (FileNamePhotoTmp), - "%s/%s/%s/%s.jpg", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PHOTO, - Cfg_FOLDER_PHOTO_TMP,Gbl.UniqueNameEncrypted); + "%s/%s.jpg", + Cfg_PATH_PHOTO_TMP_PUBLIC, + Gbl.UniqueNameEncrypted); if (!Fil_EndReceptionOfFile (FileNamePhotoTmp,Param)) { Ale_ShowAlert (Ale_ERROR,"Error copying file."); @@ -660,8 +647,8 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr /* Copy the original photo received to private directory. The purpose of this copy is only to have a backup used for researching better methods to detect faces in images */ snprintf (PathRelPhoto,sizeof (PathRelPhoto), - "%s/%s/%02u/%ld_original.jpg", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_PHOTO, + "%s/%02u/%ld_original.jpg", + Cfg_PATH_PHOTO_PRIVATE, (unsigned) (UsrDat->UsrCod % 100),UsrDat->UsrCod); Fil_FastCopyOfFiles (FileNamePhotoTmp,PathRelPhoto); @@ -680,9 +667,9 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr case 0: // Faces detected /***** Open text file with text for image map *****/ snprintf (FileNameTxtMap,sizeof (FileNameTxtMap), - "%s/%s/%s/%s_map.txt", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PHOTO, - Cfg_FOLDER_PHOTO_TMP,Gbl.UniqueNameEncrypted); + "%s/%s_map.txt", + Cfg_PATH_PHOTO_TMP_PUBLIC, + Gbl.UniqueNameEncrypted); if ((FileTxtMap = fopen (FileNameTxtMap,"rb")) == NULL) Lay_ShowErrorAndExit ("Can not read text file with coordinates of detected faces."); @@ -794,15 +781,15 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr /***** Show map photo *****/ snprintf (FileNamePhotoMap,sizeof (FileNamePhotoMap), - "%s/%s/%s/%s_map.jpg", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,Cfg_FOLDER_PHOTO_TMP, + "%s/%s_map.jpg", + Cfg_PATH_PHOTO_TMP_PUBLIC, Gbl.UniqueNameEncrypted); fprintf (Gbl.F.Out,"
    " - "\"%s\"" "
    ", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,Cfg_FOLDER_PHOTO_TMP, + Cfg_URL_PHOTO_TMP_PUBLIC, Gbl.UniqueNameEncrypted, Txt_Faces_detected,Txt_Faces_detected); @@ -869,14 +856,15 @@ static void Pho_UpdatePhoto1 (struct UsrData *UsrDat) /***** Convert the temporary photo resulting of the processing to the current photo of the user *****/ snprintf (PathPhotoTmp,sizeof (PathPhotoTmp), - "%s/%s/%s/%s_paso3.jpg", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,Cfg_FOLDER_PHOTO_TMP,Gbl.Usrs.FileNamePhoto); + "%s/%s_paso3.jpg", + Cfg_PATH_PHOTO_TMP_PUBLIC, + Gbl.Usrs.FileNamePhoto); if (Fil_CheckIfPathExists (PathPhotoTmp)) // The file with the selected photo exists { /* Copy the temporary file of the third (last) step resulting of the processing to the directory of private photos */ snprintf (PathRelPhoto,sizeof (PathRelPhoto), - "%s/%s/%02u/%ld.jpg", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_PHOTO, + "%s/%02u/%ld.jpg", + Cfg_PATH_PHOTO_PRIVATE, (unsigned) (UsrDat->UsrCod % 100),UsrDat->UsrCod); Fil_FastCopyOfFiles (PathPhotoTmp,PathRelPhoto); @@ -909,12 +897,12 @@ static void Pho_UpdatePhoto2 (void) NumPhoto < 3; NumPhoto++) fprintf (Gbl.F.Out,"" - "\"%s\"" "
    %s" "", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,Cfg_FOLDER_PHOTO_TMP, + Cfg_URL_PHOTO_TMP_PUBLIC, Gbl.Usrs.FileNamePhoto,NumPhoto + 1, Txt_PHOTO_PROCESSING_CAPTIONS[NumPhoto], Txt_PHOTO_PROCESSING_CAPTIONS[NumPhoto], @@ -1025,13 +1013,13 @@ bool Pho_BuildLinkToPhoto (const struct UsrData *UsrDat,char PhotoURL[PATH_MAX + { /***** Make path to public photo *****/ snprintf (PathPublPhoto,sizeof (PathPublPhoto), - "%s/%s/%s.jpg", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,UsrDat->Photo); + "%s/%s.jpg", + Cfg_PATH_PHOTO_PUBLIC,UsrDat->Photo); /***** Make path to private photo from public directory *****/ snprintf (PathPrivPhoto,sizeof (PathPrivPhoto), - "%s/%s/%02u/%ld.jpg", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_PHOTO, + "%s/%02u/%ld.jpg", + Cfg_PATH_PHOTO_PRIVATE, (unsigned) (UsrDat->UsrCod % 100),UsrDat->UsrCod); /***** Create a symbolic link to the private photo, if not exists *****/ @@ -1042,8 +1030,8 @@ bool Pho_BuildLinkToPhoto (const struct UsrData *UsrDat,char PhotoURL[PATH_MAX + /***** Create the public URL of the photo *****/ snprintf (PhotoURL,PATH_MAX + 1, - "%s/%s/%s.jpg", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,UsrDat->Photo); + "%s/%s.jpg", + Cfg_URL_PHOTO_PUBLIC,UsrDat->Photo); return true; } @@ -1064,8 +1052,8 @@ bool Pho_CheckIfPrivPhotoExists (long UsrCod,char PathPrivRelPhoto[PATH_MAX + 1] { /***** Make path to private photo *****/ snprintf (PathPrivRelPhoto,PATH_MAX + 1, - "%s/%s/%02u/%ld.jpg", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_PHOTO, + "%s/%02u/%ld.jpg", + Cfg_PATH_PHOTO_PRIVATE, (unsigned) (UsrCod % 100),UsrCod); return Fil_CheckIfPathExists (PathPrivRelPhoto); @@ -1090,16 +1078,16 @@ bool Pho_RemovePhoto (struct UsrData *UsrDat) /***** Remove public link *****/ snprintf (PathPublPhoto,sizeof (PathPublPhoto), - "%s/%s/%s.jpg", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,UsrDat->Photo); + "%s/%s.jpg", + Cfg_PATH_PHOTO_PUBLIC,UsrDat->Photo); if (Fil_CheckIfPathExists (PathPublPhoto)) // Public link exists if (unlink (PathPublPhoto)) // Remove public link NumErrors++; /***** Remove photo *****/ snprintf (PathPrivRelPhoto,sizeof (PathPrivRelPhoto), - "%s/%s/%02u/%ld.jpg", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_PHOTO, + "%s/%02u/%ld.jpg", + Cfg_PATH_PHOTO_PRIVATE, (unsigned) (UsrDat->UsrCod % 100),UsrDat->UsrCod); if (Fil_CheckIfPathExists (PathPrivRelPhoto)) // Photo exists { @@ -1109,8 +1097,8 @@ bool Pho_RemovePhoto (struct UsrData *UsrDat) /***** Remove original photo *****/ snprintf (PathPrivRelPhoto,sizeof (PathPrivRelPhoto), - "%s/%s/%02u/%ld_original.jpg", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_PHOTO, + "%s/%02u/%ld_original.jpg", + Cfg_PATH_PHOTO_PRIVATE, (unsigned) (UsrDat->UsrCod % 100),UsrDat->UsrCod); if (Fil_CheckIfPathExists (PathPrivRelPhoto)) // Original photo exists if (unlink (PathPrivRelPhoto)) // Remove original photo @@ -1161,8 +1149,8 @@ void Pho_UpdatePhotoName (struct UsrData *UsrDat) /***** Remove the old symbolic link to photo *****/ snprintf (PathPublPhoto,sizeof (PathPublPhoto), - "%s/%s/%s.jpg", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,UsrDat->Photo); + "%s/%s.jpg", + Cfg_PATH_PHOTO_PUBLIC,UsrDat->Photo); unlink (PathPublPhoto); // Remove public link /***** Update photo name in user's data *****/ @@ -1255,7 +1243,7 @@ void Pho_ShowUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL, "%s" "" "", - Gbl.Prefs.URLIcons,Rol_Icons[MaxRole], + Cfg_URL_ICON_PUBLIC,Rol_Icons[MaxRole], MainDegreeShrtName); /* Following and followers */ @@ -1284,7 +1272,7 @@ void Pho_ShowUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL, if (PhotoExists) fprintf (Gbl.F.Out,"%s",PhotoURL); else - fprintf (Gbl.F.Out,"%s/usr_bl.jpg",Gbl.Prefs.URLIcons); + fprintf (Gbl.F.Out,"%s/usr_bl.jpg",Cfg_URL_ICON_PUBLIC); fprintf (Gbl.F.Out,"\" alt=\"%s\" title=\"%s\"" " class=\"%s\"", UsrDat->FullName,UsrDat->FullName, @@ -1297,7 +1285,7 @@ void Pho_ShowUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL, if (PhotoExists) fprintf (Gbl.F.Out,"%s",PhotoURL); else - fprintf (Gbl.F.Out,"%s/usr_bl.jpg",Gbl.Prefs.URLIcons); + fprintf (Gbl.F.Out,"%s/usr_bl.jpg",Cfg_URL_ICON_PUBLIC); fprintf (Gbl.F.Out,"','%s');\" onmouseout=\"noZoom();\"", IdCaption); } @@ -1340,8 +1328,6 @@ void Pho_ChangePhotoVisibility (void) void Pho_CalcPhotoDegree (void) { - char PathPhotosPublic[PATH_MAX + 1]; - char PathPhotosTmpPriv[PATH_MAX + 1]; Pho_AvgPhotoTypeOfAverage_t TypeOfAverage; long DegCod = -1L; char DirAvgPhotosRelPath[Pho_NUM_AVERAGE_PHOTO_TYPES][PATH_MAX + 1]; @@ -1353,29 +1339,20 @@ void Pho_CalcPhotoDegree (void) Gbl.Stat.DegPhotos.TypeOfAverage = Pho_GetPhotoAvgTypeFromForm (); /***** Create public directories for average photos if not exist *****/ - snprintf (PathPhotosPublic,sizeof (PathPhotosPublic), - "%s/%s", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PHOTO); - Fil_CreateDirIfNotExists (PathPhotosPublic); + Fil_CreateDirIfNotExists (Cfg_PATH_PHOTO_PUBLIC); for (TypeOfAverage = (Pho_AvgPhotoTypeOfAverage_t) 0; TypeOfAverage < Pho_NUM_AVERAGE_PHOTO_TYPES; TypeOfAverage++) { snprintf (DirAvgPhotosRelPath[TypeOfAverage], sizeof (DirAvgPhotosRelPath[TypeOfAverage]), - "%s/%s/%s", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,Pho_StrAvgPhotoDirs[TypeOfAverage]); + "%s/%s", + Cfg_PATH_PHOTO_PUBLIC,Pho_StrAvgPhotoDirs[TypeOfAverage]); Fil_CreateDirIfNotExists (DirAvgPhotosRelPath[TypeOfAverage]); } /***** Creates private directory for lists of users' photos if not exists *****/ - snprintf (PathPhotosTmpPriv,sizeof (PathPhotosTmpPriv), - "%s/%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_PHOTO,Cfg_FOLDER_PHOTO_TMP); - Fil_CreateDirIfNotExists (PathPhotosTmpPriv); - - /***** Remove old private files used for lists *****/ - Fil_RemoveOldTmpFiles (PathPhotosTmpPriv,Cfg_TIME_TO_DELETE_PHOTOS_TMP_FILES,false); + Fil_CreateDirIfNotExists (Cfg_PATH_PHOTO_TMP_PRIVATE); /***** Get the degree which photo will be computed *****/ DegCod = Deg_GetAndCheckParamOtherDegCod (1); @@ -1627,8 +1604,8 @@ static void Pho_ComputeAveragePhoto (long DegCod,Usr_Sex_t Sex,Rol_Role_t Role, /***** Build names for text file with photo paths *****/ snprintf (FileNamePhotoNames,sizeof (FileNamePhotoNames), - "%s/%s/%s/%ld.txt", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_PHOTO,Cfg_FOLDER_PHOTO_TMP,DegCod); + "%s/%ld.txt", + Cfg_PATH_PHOTO_TMP_PRIVATE,DegCod); if ((FilePhotoNames = fopen (FileNamePhotoNames,"wb")) == NULL) Lay_ShowErrorAndExit ("Can not open file to compute average photo."); @@ -2469,15 +2446,15 @@ static void Pho_ShowDegreeAvgPhotoAndStat (struct Degree *Deg, if (ShowDegPhoto) { snprintf (PathRelAvgPhoto,sizeof (PathRelAvgPhoto), - "%s/%s/%s/%ld_%s.jpg", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PHOTO, + "%s/%s/%ld_%s.jpg", + Cfg_PATH_PHOTO_PUBLIC, Pho_StrAvgPhotoDirs[Gbl.Stat.DegPhotos.TypeOfAverage], Deg->DegCod,Usr_StringsSexDB[Sex]); if (Fil_CheckIfPathExists (PathRelAvgPhoto)) { snprintf (PhotoURL,sizeof (PhotoURL), - "%s/%s/%s/%ld_%s.jpg", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_PHOTO, + "%s/%s/%ld_%s.jpg", + Cfg_URL_PHOTO_PUBLIC, Pho_StrAvgPhotoDirs[Gbl.Stat.DegPhotos.TypeOfAverage], Deg->DegCod,Usr_StringsSexDB[Sex]); if (SeeOrPrint == Pho_DEGREES_SEE) @@ -2514,7 +2491,7 @@ static void Pho_ShowDegreeAvgPhotoAndStat (struct Degree *Deg, PhotoURL,IdCaption); } else - fprintf (Gbl.F.Out,"%s/usr_bl.jpg\"",Gbl.Prefs.URLIcons); + fprintf (Gbl.F.Out,"%s/usr_bl.jpg\"",Cfg_URL_ICON_PUBLIC); fprintf (Gbl.F.Out," alt=\"%s\"" " style=\"width:%upx; height:%upx;\" />", Deg->ShrtName, diff --git a/swad_plugin.c b/swad_plugin.c index 0d0024ac..89cb09bf 100644 --- a/swad_plugin.c +++ b/swad_plugin.c @@ -124,7 +124,7 @@ void Plg_ListPlugins (void) fprintf (Gbl.F.Out,"" "" "" - "\"%s\"" "" @@ -136,7 +136,7 @@ void Plg_ListPlugins (void) "" "", URL,Plg->Name, - Gbl.Prefs.URLIcons,Cfg_ICON_FOLDER_PLUGINS,Gbl.Plugins.Lst[NumPlg].Logo, + Cfg_URL_ICON_PLUGINS_PUBLIC,Gbl.Plugins.Lst[NumPlg].Logo, Plg->Name,Plg->Name, URL,Plg->Name, Plg->Name); @@ -378,11 +378,11 @@ static void Plg_ListPluginsForEdition (void) /* Plugin logo */ // TODO: Change plugin icons to 32x32 fprintf (Gbl.F.Out,"" - "\"%s\"" "", - Gbl.Prefs.URLIcons,Cfg_ICON_FOLDER_PLUGINS, + Cfg_URL_ICON_PLUGINS_PUBLIC, Gbl.Plugins.Lst[NumPlg].Logo, Gbl.Plugins.Lst[NumPlg].Name, Gbl.Plugins.Lst[NumPlg].Name); diff --git a/swad_profile.c b/swad_profile.c index 2adf4b0d..a31578cd 100644 --- a/swad_profile.c +++ b/swad_profile.c @@ -763,7 +763,7 @@ static void Prf_StartListItem (const char *Title,const char *Icon) fprintf (Gbl.F.Out,"
  • ", Title, - Gbl.Prefs.URLIcons,Icon); + Cfg_URL_ICON_PUBLIC,Icon); } static void Prf_EndListItem (void) diff --git a/swad_project.c b/swad_project.c index 00a1655f..967840a9 100644 --- a/swad_project.c +++ b/swad_project.c @@ -2739,8 +2739,8 @@ void Prj_RemoveProject (void) /***** Remove directory of the project *****/ snprintf (PathRelPrj,sizeof (PathRelPrj), - "%s/%s/%ld/%s/%02u/%ld", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Prj.CrsCod,Cfg_FOLDER_PRJ, + "%s/%ld/%s/%02u/%ld", + Cfg_PATH_CRS_PRIVATE,Prj.CrsCod,Cfg_FOLDER_PRJ, (unsigned) (Prj.PrjCod % 100),Prj.PrjCod); Fil_RemoveTree (PathRelPrj); diff --git a/swad_record.c b/swad_record.c index e6cd96be..d9dbccbf 100644 --- a/swad_record.c +++ b/swad_record.c @@ -3719,9 +3719,9 @@ static void Rec_WriteLinkToDataProtectionClause (void) extern const char *Txt_DATA_PROTECTION_CLAUSE; fprintf (Gbl.F.Out,"
    " - "%s" + "%s" "
    ", - Cfg_URL_SWAD_PUBLIC,Cfg_DATA_PROTECTION_FOLDER, + Cfg_URL_DATA_PROTECTION_PUBLIC, Txt_DATA_PROTECTION_CLAUSE); } diff --git a/swad_report.c b/swad_report.c index 083a61f3..29f7c389 100644 --- a/swad_report.c +++ b/swad_report.c @@ -283,7 +283,7 @@ static void Rep_PutLinkToMyUsageReport (struct Rep_Report *Report) "", Report->Permalink, Txt_Report, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Report, Report->FilenameReport); fprintf (Gbl.F.Out,"
    %s
    ", @@ -367,7 +367,6 @@ static void Rep_GetCurrentDateTimeUTC (struct Rep_Report *Report) static void Rep_CreateNewReportFile (struct Rep_Report *Report) { - char PathReports[PATH_MAX + 1]; char PathUniqueDirL[PATH_MAX + 1]; char PathUniqueDirR[PATH_MAX + 1]; char PathFileReport[PATH_MAX + 1]; @@ -376,16 +375,13 @@ static void Rep_CreateNewReportFile (struct Rep_Report *Report) NAME_MAX]; /***** Path for reports *****/ - snprintf (PathReports,sizeof (PathReports), - "%s/%s", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_REP); - Fil_CreateDirIfNotExists (PathReports); + Fil_CreateDirIfNotExists (Cfg_PATH_REP_PUBLIC); /***** Unique directory for the file with the report *****/ /* 1. Create a directory using the leftmost 2 chars of a unique name */ snprintf (PathUniqueDirL,sizeof (PathUniqueDirL), - "%s/%s/%c%c", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_REP, + "%s/%c%c", + Cfg_PATH_REP_PUBLIC, Gbl.UniqueNameEncrypted[0], Gbl.UniqueNameEncrypted[1]); Fil_CreateDirIfNotExists (PathUniqueDirL); @@ -410,9 +406,8 @@ static void Rep_CreateNewReportFile (struct Rep_Report *Report) /***** Permalink *****/ snprintf (Permalink,sizeof (Permalink), - "%s/%s/%c%c/%s/%s", - Cfg_URL_SWAD_PUBLIC, - Cfg_FOLDER_REP, + "%s/%c%c/%s/%s", + Cfg_URL_REP_PUBLIC, Gbl.UniqueNameEncrypted[0], Gbl.UniqueNameEncrypted[1], &Gbl.UniqueNameEncrypted[2], @@ -1424,8 +1419,8 @@ static void Rep_RemoveUsrReportsFiles (long UsrCod) /* Remove report directory and file */ snprintf (PathUniqueDirReport,sizeof (PathUniqueDirReport), - "%s/%s/%s/%s", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_REP,row[0],row[1]); + "%s/%s/%s", + Cfg_PATH_REP_PUBLIC,row[0],row[1]); Fil_RemoveTree (PathUniqueDirReport); } diff --git a/swad_statistic.c b/swad_statistic.c index 0130b3a1..63d86d4b 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -1909,7 +1909,7 @@ static void Sta_ShowNumHitsPerUsr (unsigned long NumRows,MYSQL_RES *mysql_res) " class=\"LEFT_TOP\"" " style=\"width:%upx; height:10px; padding-top:4px;\" />" " ", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, UsrDat.Roles.InCurrentCrs.Role == Rol_STD ? 'o' : // Student 'r', // Non-editing teacher or teacher BarWidth); @@ -2409,7 +2409,7 @@ static void Sta_DrawBarColors (Sta_ColorType_t ColorType,float HitsMax) "\"\"" "", - R,G,B,Gbl.Prefs.URLIcons); + R,G,B,Cfg_URL_ICON_PUBLIC); } fprintf (Gbl.F.Out,""); Tbl_EndTable (); @@ -2907,7 +2907,7 @@ static void Sta_WriteAccessHour (unsigned Hour,struct Sta_Hits *Hits,unsigned Co fprintf (Gbl.F.Out,"\"\"", - Gbl.Prefs.URLIcons,BarHeight); + Cfg_URL_ICON_PUBLIC,BarHeight); } else fprintf (Gbl.F.Out,"0%%
    0"); @@ -3009,7 +3009,7 @@ static void Sta_ShowAverageAccessesPerMinute (unsigned long NumRows,MYSQL_RES *m " alt=\"\" title=\"\"" " style=\"display:block; width:%upx; height:1px;\" />" "", - Sta_WIDTH_SEMIDIVISION_GRAPHIC,Gbl.Prefs.URLIcons, + Sta_WIDTH_SEMIDIVISION_GRAPHIC,Cfg_URL_ICON_PUBLIC, Sta_WIDTH_SEMIDIVISION_GRAPHIC); /* All the intermediate divisions */ for (i = 0; @@ -3021,7 +3021,7 @@ static void Sta_ShowAverageAccessesPerMinute (unsigned long NumRows,MYSQL_RES *m " style=\"display:block;" " width:%upx; height:1px;\" />" "", - Sta_WIDTH_SEMIDIVISION_GRAPHIC,Gbl.Prefs.URLIcons, + Sta_WIDTH_SEMIDIVISION_GRAPHIC,Cfg_URL_ICON_PUBLIC, Sta_WIDTH_SEMIDIVISION_GRAPHIC); /* Last division (right) */ fprintf (Gbl.F.Out,"" @@ -3030,7 +3030,7 @@ static void Sta_ShowAverageAccessesPerMinute (unsigned long NumRows,MYSQL_RES *m " style=\"display:block; width:%upx; height:1px;\" />" "" "", - Sta_WIDTH_SEMIDIVISION_GRAPHIC,Gbl.Prefs.URLIcons, + Sta_WIDTH_SEMIDIVISION_GRAPHIC,Cfg_URL_ICON_PUBLIC, Sta_WIDTH_SEMIDIVISION_GRAPHIC); /***** Write again the labels of the X axis *****/ @@ -3086,7 +3086,7 @@ static void Sta_WriteAccessMinute (unsigned Minute,float HitsNum,float MaxX) " background-repeat:repeat;\">" "00h" "", - Sta_WIDTH_SEMIDIVISION_GRAPHIC,Gbl.Prefs.URLIcons); + Sta_WIDTH_SEMIDIVISION_GRAPHIC,Cfg_URL_ICON_PUBLIC); else if (Minute == (Sta_NUM_MINUTES_PER_DAY - 30)) // If 23:30 fprintf (Gbl.F.Out,"" "24h" "", - Sta_WIDTH_SEMIDIVISION_GRAPHIC,Gbl.Prefs.URLIcons); + Sta_WIDTH_SEMIDIVISION_GRAPHIC,Cfg_URL_ICON_PUBLIC); else if (!(Minute % 30) && (Minute % 60)) // If minute is multiple of 30 but not of 60 (i.e.: 30, 90, 150...) fprintf (Gbl.F.Out,"" "%02uh" "", - Sta_WIDTH_SEMIDIVISION_GRAPHIC,Gbl.Prefs.URLIcons,(Minute + 30) / 60); + Sta_WIDTH_SEMIDIVISION_GRAPHIC,Cfg_URL_ICON_PUBLIC,(Minute + 30) / 60); /***** Start cell for the graphic *****/ fprintf (Gbl.F.Out,"", - Sta_NUM_DIVISIONS_X * 2,Sta_WIDTH_GRAPHIC,Gbl.Prefs.URLIcons, + Sta_NUM_DIVISIONS_X * 2,Sta_WIDTH_GRAPHIC,Cfg_URL_ICON_PUBLIC, (Minute % 60) == 0 ? 'v' : 'h'); @@ -3125,7 +3125,7 @@ static void Sta_WriteAccessMinute (unsigned Minute,float HitsNum,float MaxX) " alt=\"\" title=\"\"" " style=\"display:block;" " width:%upx; height:1px;\" />", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, (Minute % 60) == 0 ? 'r' : // red background 'o', // orange background BarWidth); @@ -3360,14 +3360,14 @@ static void Sta_ShowNumHitsPerBanner (unsigned long NumRows, fprintf (Gbl.F.Out,"" "" "" - "\"%s\"" "", Ban.WWW, Ban.FullName, - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_BANNER, + Cfg_URL_BANNER_PUBLIC, Ban.Img, Ban.ShrtName, Ban.FullName); @@ -3926,7 +3926,7 @@ static void Sta_DrawBarNumHits (char Color, " class=\"LEFT_MIDDLE\"" " style=\"width:%upx; height:10px;\" />" " ", - Gbl.Prefs.URLIcons,Color,BarWidth); + Cfg_URL_ICON_PUBLIC,Color,BarWidth); /***** Write the number of hits *****/ Str_WriteFloatNum (Gbl.F.Out,HitsNum); diff --git a/swad_survey.c b/swad_survey.c index 1ef69ccf..acc28273 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -3493,7 +3493,7 @@ static void Svy_DrawBarNumUsrs (unsigned NumUsrs,unsigned MaxUsrs) " class=\"LEFT_TOP\"" " style=\"width:%upx; height:20px;\" />" " ", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Gbl.Title, Gbl.Title, BarWidth); diff --git a/swad_syllabus.c b/swad_syllabus.c index 51617c9b..c8097acd 100644 --- a/swad_syllabus.c +++ b/swad_syllabus.c @@ -353,8 +353,8 @@ void Syl_LoadListItemsSyllabusIntoMemory (long CrsCod) /* Path of the private directory for the XML file with the syllabus */ snprintf (Gbl.Syllabus.PathDir,sizeof (Gbl.Syllabus.PathDir), - "%s/%s/%ld/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,CrsCod, + "%s/%ld/%s", + Cfg_PATH_CRS_PRIVATE,CrsCod, Gbl.Syllabus.WhichSyllabus == Syl_LECTURES ? Cfg_SYLLABUS_FOLDER_LECTURES : Cfg_SYLLABUS_FOLDER_PRACTICALS); @@ -752,8 +752,8 @@ int Syl_WriteSyllabusIntoHTMLBuffer (char **HTMLBuffer) { /***** Create a unique name for the file *****/ snprintf (FileNameHTMLTmp,sizeof (FileNameHTMLTmp), - "%s/%s/%s_syllabus.html", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_OUT,Gbl.UniqueNameEncrypted); + "%s/%s_syllabus.html", + Cfg_PATH_OUT_PRIVATE,Gbl.UniqueNameEncrypted); /***** Create a new temporary file for writing and reading *****/ if ((FileHTMLTmp = fopen (FileNameHTMLTmp,"w+b")) == NULL) diff --git a/swad_test.c b/swad_test.c index 5e34f3e6..fbf1ebbf 100644 --- a/swad_test.c +++ b/swad_test.c @@ -1743,7 +1743,7 @@ static void Tst_ShowFormSelTags (unsigned long NumRows,MYSQL_RES *mysql_res, TagHidden = (row[2][0] == 'Y'); fprintf (Gbl.F.Out,"" "\"%s\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_TST_Answer_given_by_the_teachers, Txt_TST_Answer_given_by_the_teachers); fprintf (Gbl.F.Out,""); @@ -5234,7 +5234,7 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1], "\"%s\"" "", - NumOpt,Gbl.Prefs.URLIcons, + NumOpt,Cfg_URL_ICON_PUBLIC, Gbl.Title,Gbl.Title); /* Icon to contract (hide the answer) */ @@ -5248,7 +5248,7 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1], "\"%s\"" "", - NumOpt,Gbl.Prefs.URLIcons, + NumOpt,Cfg_URL_ICON_PUBLIC, Gbl.Title,Gbl.Title); fprintf (Gbl.F.Out,""); diff --git a/swad_test_import.c b/swad_test_import.c index 52050be9..3f2042da 100644 --- a/swad_test_import.c +++ b/swad_test_import.c @@ -177,8 +177,8 @@ void TsI_CreateXML (unsigned long NumRows,MYSQL_RES *mysql_res) /***** Create public XML file with the questions *****/ snprintf (PathPubFile,sizeof (PathPubFile), - "%s/%s/%s/test.xml", - Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_FILE_BROWSER_TMP, + "%s/%s/test.xml", + Cfg_PATH_FILE_BROWSER_TMP_PUBLIC, Gbl.FileBrowser.TmpPubDir); if ((Gbl.Test.XML.FileXML = fopen (PathPubFile,"wb")) == NULL) Lay_ShowErrorAndExit ("Can not open target file."); @@ -256,8 +256,9 @@ void TsI_CreateXML (unsigned long NumRows,MYSQL_RES *mysql_res) mysql_data_seek (mysql_res,0); /***** Write the link to XML file *****/ - fprintf (Gbl.F.Out,"", - Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_FILE_BROWSER_TMP, + fprintf (Gbl.F.Out,"", + Cfg_URL_FILE_BROWSER_TMP_PUBLIC, Gbl.FileBrowser.TmpPubDir, The_ClassFormOutBoxBold[Gbl.Prefs.Theme]); Ico_PutIconTextLink ("file.svg", @@ -393,7 +394,6 @@ static void TsI_WriteAnswersOfAQstXML (long QstCod) void TsI_ImportQstsFromXML (void) { extern const char *Txt_The_file_is_not_X; - char PathTestPriv[PATH_MAX + 1]; struct Param *Param; char FileNameXMLSrc[PATH_MAX + 1]; char FileNameXMLTmp[PATH_MAX + 1]; // Full name (including path and .xml) of the destination temporary file @@ -401,13 +401,7 @@ void TsI_ImportQstsFromXML (void) bool WrongType = false; /***** Creates directory if not exists *****/ - snprintf (PathTestPriv,sizeof (PathTestPriv), - "%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_TEST); - Fil_CreateDirIfNotExists (PathTestPriv); - - /***** Remove old files *****/ - Fil_RemoveOldTmpFiles (PathTestPriv,Cfg_TIME_TO_DELETE_TEST_TMP_FILES,false); + Fil_CreateDirIfNotExists (Cfg_PATH_TEST_PRIVATE); /***** First of all, copy in disk the file received from stdin (really from Gbl.F.Tmp) *****/ Param = Fil_StartReceptionOfFile (Fil_NAME_OF_PARAM_FILENAME_ORG, @@ -429,7 +423,7 @@ void TsI_ImportQstsFromXML (void) /* End the reception of XML in a temporary file */ snprintf (FileNameXMLTmp,sizeof (FileNameXMLTmp), "%s/%s.xml", - PathTestPriv,Gbl.UniqueNameEncrypted); + Cfg_PATH_TEST_PRIVATE,Gbl.UniqueNameEncrypted); if (Fil_EndReceptionOfFile (FileNameXMLTmp,Param)) /***** Get questions from XML file and store them in database *****/ TsI_ReadQuestionsFromXMLFileAndStoreInDB (FileNameXMLTmp); @@ -1023,7 +1017,7 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem, " class=\"CONTEXT_ICO_16x16\" />" "", Gbl.RowEvenOdd, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, QuestionExists ? "tr16x16.gif" : "check-circle.svg", QuestionExists ? Txt_Existing_question : @@ -1083,7 +1077,7 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem, fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_TST_Answer_given_by_the_teachers, Txt_TST_Answer_given_by_the_teachers, QuestionExists ? "ICO_HIDDEN " : @@ -1153,7 +1147,7 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem, fprintf (Gbl.F.Out,"\"%s\"", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_TST_Answer_given_by_the_teachers, Txt_TST_Answer_given_by_the_teachers, QuestionExists ? "ICO_HIDDEN " : diff --git a/swad_theme.c b/swad_theme.c index 0f317c8d..2bdb56bb 100644 --- a/swad_theme.c +++ b/swad_theme.c @@ -316,9 +316,8 @@ void The_ChangeTheme (void) /***** Get param theme *****/ Gbl.Prefs.Theme = The_GetParamTheme (); snprintf (Path,sizeof (Path), - "%s/%s/%s", - Gbl.Prefs.URLIcons, - Cfg_ICON_FOLDER_THEMES, + "%s/%s", + Cfg_URL_ICON_THEMES_PUBLIC, The_ThemeId[Gbl.Prefs.Theme]); Str_Copy (Gbl.Prefs.URLTheme,Path, PATH_MAX); diff --git a/swad_timeline.c b/swad_timeline.c index f712a70f..73b2c20a 100644 --- a/swad_timeline.c +++ b/swad_timeline.c @@ -697,6 +697,7 @@ static void TL_BuildQueryToGetTimeline (char **Query, " GROUP BY NotCod ORDER BY NewestPubCod DESC LIMIT ..." but this query is slow (several seconds) with a big table. */ + for (NumPub = 0; NumPub < MaxPubsToGet[WhatToGetFromTimeline]; NumPub++) @@ -981,7 +982,6 @@ static void TL_ShowTimeline (char *Query, NumPubsGot = DB_QuerySELECT (&mysql_res,"can not get timeline", "%s", Query); - /***** Start box *****/ Box_StartBox (NULL,Title,TL_PutIconsTimeline, Hlp_START_Timeline,Box_NOT_CLOSABLE); @@ -1402,8 +1402,8 @@ static void TL_PutLinkToViewOldPublications (void) "" "", The_ClassFormInBoxBold[Gbl.Prefs.Theme], - Gbl.Prefs.URLIcons,Txt_See_more,Txt_See_more, - Gbl.Prefs.URLIcons,Txt_See_more,Txt_See_more, + Cfg_URL_ICON_PUBLIC,Txt_See_more,Txt_See_more, + Cfg_URL_ICON_PUBLIC,Txt_See_more,Txt_See_more, Txt_See_more); } @@ -2039,7 +2039,7 @@ static void TL_PutFormGoToAction (const struct TL_Note *SocNot) " class=\"CONTEXT_ICO_x16\" />" " %s" "", - Gbl.Prefs.URLIcons,TL_Icons[SocNot->NoteType], + Cfg_URL_ICON_PUBLIC,TL_Icons[SocNot->NoteType], Txt_TIMELINE_NOTE[SocNot->NoteType], Txt_TIMELINE_NOTE[SocNot->NoteType], Txt_TIMELINE_NOTE[SocNot->NoteType]); @@ -2519,7 +2519,7 @@ static void TL_PutIconToToggleCommentNote (const char UniqueId[Frm_MAX_BYTES_ID "" "", UniqueId, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Comment,Txt_Comment); } @@ -2537,7 +2537,7 @@ static void TL_PutIconCommentDisabled (void) " alt=\"%s\" title=\"%s\"" " class=\"ICO16x16\" />" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Comment,Txt_Comment); } @@ -4578,7 +4578,7 @@ static void TL_ShowSharersOrFavers (MYSQL_RES **mysql_res, " alt=\"%u\" title=\"%u\"" " class=\"ICO16x16\" />" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, NumUsrs - NumUsrsShown, NumUsrs - NumUsrsShown); } diff --git a/swad_user.c b/swad_user.c index a3d38bc7..da084dfe 100644 --- a/swad_user.c +++ b/swad_user.c @@ -2538,7 +2538,7 @@ void Usr_WriteFormLogin (Act_Action_t NextAction,void (*FuncParams) ()) " value=\"%s\"" " autofocus=\"autofocus\" required=\"required\" />" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_User[Usr_SEX_UNKNOWN], Txt_User[Usr_SEX_UNKNOWN], Cns_MAX_CHARS_EMAIL_ADDRESS, @@ -2554,7 +2554,7 @@ void Usr_WriteFormLogin (Act_Action_t NextAction,void (*FuncParams) ()) "" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Password, Txt_Password, Pwd_MAX_CHARS_PLAIN_PASSWORD, @@ -3317,9 +3317,7 @@ static void Usr_SetMyPrefsAndRoles (void) { extern const char *The_ThemeId[The_NUM_THEMES]; extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS]; - char Path[PATH_MAX + 1 + - NAME_MAX + 1 + - NAME_MAX + 1]; + char URL[PATH_MAX + 1]; // In this point I am logged @@ -3334,19 +3332,17 @@ static void Usr_SetMyPrefsAndRoles (void) Gbl.Prefs.SideCols = Gbl.Usrs.Me.UsrDat.Prefs.SideCols; Gbl.Prefs.Theme = Gbl.Usrs.Me.UsrDat.Prefs.Theme; - snprintf (Path,sizeof (Path), - "%s/%s/%s", - Gbl.Prefs.URLIcons,Cfg_ICON_FOLDER_THEMES, - The_ThemeId[Gbl.Prefs.Theme]); - Str_Copy (Gbl.Prefs.URLTheme,Path, + snprintf (URL,sizeof (URL), + "%s/%s", + Cfg_URL_ICON_THEMES_PUBLIC,The_ThemeId[Gbl.Prefs.Theme]); + Str_Copy (Gbl.Prefs.URLTheme,URL, PATH_MAX); Gbl.Prefs.IconSet = Gbl.Usrs.Me.UsrDat.Prefs.IconSet; - snprintf (Path,sizeof (Path), - "%s/%s/%s", - Gbl.Prefs.URLIcons,Cfg_ICON_FOLDER_ICON_SETS, - Ico_IconSetId[Gbl.Prefs.IconSet]); - Str_Copy (Gbl.Prefs.URLIconSet,Path, + snprintf (URL,sizeof (URL), + "%s/%s", + Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet]); + Str_Copy (Gbl.Prefs.URLIconSet,URL, PATH_MAX); /***** Construct the path to my directory *****/ @@ -6011,7 +6007,7 @@ static void Usr_FormToSelectUsrListType (Act_Action_t NextAction,Usr_ShowUsrsTyp " alt=\"%s\" title=\"%s\"" " class=\"ICO20x20\" />" " %s", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Usr_IconsClassPhotoOrList[ListType], Txt_USR_LIST_TYPES[ListType], Txt_USR_LIST_TYPES[ListType], @@ -8828,19 +8824,15 @@ void Usr_PutSelectorNumColsClassPhoto (void) void Usr_ConstructPathUsr (long UsrCod,char PathUsr[PATH_MAX + 1]) { - char PathUsrs[PATH_MAX + 1]; char PathAboveUsr[PATH_MAX + 1]; /***** Path for users *****/ - snprintf (PathUsrs,sizeof (PathUsrs), - "%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_USR); - Fil_CreateDirIfNotExists (PathUsrs); + Fil_CreateDirIfNotExists (Cfg_PATH_USR_PRIVATE); /***** Path above user's ID *****/ snprintf (PathAboveUsr,sizeof (PathAboveUsr), "%s/%02u", - PathUsrs,(unsigned) (UsrCod % 100)); + Cfg_PATH_USR_PRIVATE,(unsigned) (UsrCod % 100)); Fil_CreateDirIfNotExists (PathAboveUsr); /***** Path for user *****/ diff --git a/swad_web_service.c b/swad_web_service.c index d5b9f3ca..ad5482f3 100644 --- a/swad_web_service.c +++ b/swad_web_service.c @@ -4324,7 +4324,6 @@ int swad__getDirectoryTree (struct soap *soap, { extern const char *Brw_RootFolderInternalNames[Brw_NUM_TYPES_FILE_BROWSER]; int ReturnCode; - char PathXMLPriv[PATH_MAX + 1]; char XMLFileName[PATH_MAX + 1]; unsigned long FileSize; unsigned long NumBytesRead; @@ -4418,21 +4417,18 @@ int swad__getDirectoryTree (struct soap *soap, -1L; snprintf (Gbl.CurrentCrs.PathPriv,sizeof (Gbl.CurrentCrs.PathPriv), - "%s/%s/%ld", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Gbl.CurrentCrs.Crs.CrsCod); + "%s/%ld", + Cfg_PATH_CRS_PRIVATE,Gbl.CurrentCrs.Crs.CrsCod); Brw_InitializeFileBrowser (); Brw_SetFullPathInTree (Brw_RootFolderInternalNames[Gbl.FileBrowser.Type],"."); /* Check if exists the directory for HTML output. If not exists, create it */ - snprintf (PathXMLPriv,sizeof (PathXMLPriv), - "%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_OUT); - Fil_CreateDirIfNotExists (PathXMLPriv); + Fil_CreateDirIfNotExists (Cfg_PATH_OUT_PRIVATE); /* Create a unique name for the file */ snprintf (XMLFileName,sizeof (XMLFileName), "%s/%s.xml", - PathXMLPriv,Gbl.UniqueNameEncrypted); + Cfg_PATH_OUT_PRIVATE,Gbl.UniqueNameEncrypted); /* Open file for writing and reading */ if ((Gbl.F.XML = fopen (XMLFileName,"w+t")) == NULL) diff --git a/swad_zip.c b/swad_zip.c index 8c8b225f..9a428375 100644 --- a/swad_zip.c +++ b/swad_zip.c @@ -202,9 +202,8 @@ void ZIP_CreateZIPAsgWrk (void) /***** Relative path of the directory with the works to compress *****/ snprintf (Path,sizeof (Path), - "%s/%s/%s", - Cfg_PATH_SWAD_PRIVATE, - Cfg_FOLDER_ZIP, + "%s/%s", + Cfg_PATH_ZIP_PRIVATE, Gbl.FileBrowser.ZIP.TmpDir); /***** Change to directory of the assignments and works @@ -217,9 +216,8 @@ void ZIP_CreateZIPAsgWrk (void) "%s.zip", Txt_works_ZIP_FILE_NAME); snprintf (PathFileZIP,sizeof (PathFileZIP), - "%s/%s/%s/%s", - Cfg_PATH_SWAD_PUBLIC, - Cfg_FOLDER_FILE_BROWSER_TMP, + "%s/%s/%s", + Cfg_PATH_FILE_BROWSER_TMP_PUBLIC, Gbl.FileBrowser.TmpPubDir, FileNameZIP); snprintf (StrZip,sizeof (StrZip), @@ -241,9 +239,8 @@ void ZIP_CreateZIPAsgWrk (void) { /***** Create URL pointing to ZIP file *****/ snprintf (URLWithSpaces,sizeof (URLWithSpaces), - "%s/%s/%s/%s", - Cfg_URL_SWAD_PUBLIC, - Cfg_FOLDER_FILE_BROWSER_TMP, + "%s/%s/%s", + Cfg_URL_FILE_BROWSER_TMP_PUBLIC, Gbl.FileBrowser.TmpPubDir, FileNameZIP); Str_CopyStrChangingSpaces (URLWithSpaces,URL,PATH_MAX); // In HTML, URL must have no spaces @@ -265,27 +262,17 @@ void ZIP_CreateZIPAsgWrk (void) static void ZIP_CreateTmpDirForCompression (void) { - char PathZipPriv[PATH_MAX + 1]; char PathDirTmp[PATH_MAX + 1]; /***** If the private directory does not exist, create it *****/ - snprintf (PathZipPriv,sizeof (PathZipPriv), - "%s/%s", - Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_ZIP); - Fil_CreateDirIfNotExists (PathZipPriv); - - /***** First of all, we remove the oldest temporary directories. - Such temporary directories have been created by me or by other users. - This is a bit sloppy, but they must be removed by someone. - Here "oldest" means more than x time from their creation *****/ - Fil_RemoveOldTmpFiles (PathZipPriv,Cfg_TIME_TO_DELETE_BROWSER_ZIP_FILES,false); + Fil_CreateDirIfNotExists (Cfg_PATH_ZIP_PRIVATE); /***** Create a new temporary directory *****/ Str_Copy (Gbl.FileBrowser.ZIP.TmpDir,Gbl.UniqueNameEncrypted, NAME_MAX); snprintf (PathDirTmp,sizeof (PathDirTmp), "%s/%s", - PathZipPriv,Gbl.FileBrowser.ZIP.TmpDir); + Cfg_PATH_ZIP_PRIVATE,Gbl.FileBrowser.ZIP.TmpDir); if (mkdir (PathDirTmp,(mode_t) 0xFFF)) Lay_ShowErrorAndExit ("Can not create temporary folder for compression."); } @@ -341,9 +328,8 @@ static void ZIP_CreateDirCompressionUsr (struct UsrData *UsrDat) (unsigned) (UsrDat->UsrCod % 100), UsrDat->UsrCod); snprintf (LinkTmpUsr,sizeof (LinkTmpUsr), - "%s/%s/%s/%s", - Cfg_PATH_SWAD_PRIVATE, - Cfg_FOLDER_ZIP, + "%s/%s/%s", + Cfg_PATH_ZIP_PRIVATE, Gbl.FileBrowser.ZIP.TmpDir, FullNameAndUsrID); @@ -386,7 +372,7 @@ void ZIP_PutButtonToDownloadZIPOfAFolder (const char *PathInTree,const char *Fil " alt=\"%s\" title=\"%s\"" " class=\"ICO16x16\" />" "", - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Create_ZIP_file, Txt_Create_ZIP_file); Frm_EndForm (); @@ -446,9 +432,8 @@ static void ZIP_CompressFolderIntoZIP (void) Gbl.FileBrowser.Priv.PathAboveRootFolder, Gbl.FileBrowser.Priv.FullPathInTree); snprintf (PathCompression,sizeof (PathCompression), - "%s/%s/%s", - Cfg_PATH_SWAD_PRIVATE, - Cfg_FOLDER_ZIP, + "%s/%s", + Cfg_PATH_ZIP_PRIVATE, Gbl.FileBrowser.ZIP.TmpDir); // Example: /var/www/swad/zip/ UncompressedSize = ZIP_CloneDir (Path,PathCompression,Gbl.FileBrowser.Priv.FullPathInTree); @@ -470,9 +455,8 @@ static void ZIP_CompressFolderIntoZIP (void) strcmp (Gbl.FileBrowser.FilFolLnkName,".") ? Gbl.FileBrowser.FilFolLnkName : Txt_ROOT_FOLDER_EXTERNAL_NAMES[Gbl.FileBrowser.Type]); snprintf (PathFileZIP,sizeof (PathFileZIP), - "%s/%s/%s/%s", - Cfg_PATH_SWAD_PUBLIC, - Cfg_FOLDER_FILE_BROWSER_TMP, + "%s/%s/%s", + Cfg_PATH_FILE_BROWSER_TMP_PUBLIC, Gbl.FileBrowser.TmpPubDir, FileNameZIP); snprintf (StrZip,sizeof (StrZip), @@ -494,9 +478,8 @@ static void ZIP_CompressFolderIntoZIP (void) { /***** Create URL pointing to ZIP file *****/ snprintf (URLWithSpaces,sizeof (URLWithSpaces), - "%s/%s/%s/%s", - Cfg_URL_SWAD_PUBLIC, - Cfg_FOLDER_FILE_BROWSER_TMP, + "%s/%s/%s", + Cfg_URL_FILE_BROWSER_TMP_PUBLIC, Gbl.FileBrowser.TmpPubDir, FileNameZIP); Str_CopyStrChangingSpaces (URLWithSpaces,URL,PATH_MAX); // In HTML, URL must have no spaces @@ -640,7 +623,7 @@ static void ZIP_ShowLinkToDownloadZIP (const char *FileName,const char *URL, fprintf (Gbl.F.Out,"" "" "" - "\"%s\"" " %s " @@ -651,11 +634,11 @@ static void ZIP_ShowLinkToDownloadZIP (const char *FileName,const char *URL, "" "", URL,FileName, - Gbl.Prefs.URLIcons,Cfg_ICON_FOLDER_FILEXT, + CfG_URL_ICON_FILEXT_PUBLIC, Txt_ZIP_file, Txt_ZIP_file, FileName, - Gbl.Prefs.URLIcons, + Cfg_URL_ICON_PUBLIC, Txt_Download, Txt_Download);