From c5cda97c197dae1187be490c8810dc2c81e9e629 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 24 Jan 2021 14:31:29 +0100 Subject: [PATCH] FIX Generation of aliases (main alias and alt alias into subdirs) --- htdocs/core/lib/website2.lib.php | 25 +++++++++++++++++++++++-- htdocs/website/class/website.class.php | 16 +++++++++------- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/htdocs/core/lib/website2.lib.php b/htdocs/core/lib/website2.lib.php index e558e4ee545..004ac154aee 100644 --- a/htdocs/core/lib/website2.lib.php +++ b/htdocs/core/lib/website2.lib.php @@ -102,9 +102,30 @@ function dolSavePageAlias($filealias, $object, $objectpage) @chmod($filealias, octdec($conf->global->MAIN_UMASK)); } } - // Save also alias into all language subdirectories if it is a main language - // TODO + elseif (empty($objectpage->lang) || !in_array($objectpage->lang, explode(',', $object->otherlang))) { + if (empty($conf->global->WEBSITE_DISABLE_MAIN_LANGUAGE_INTO_LANGSUBDIR)) { + $dirname = dirname($filealias); + $filename = basename($filealias); + foreach (explode(',', $object->otherlang) as $sublang) { + $filealias = $dirname.'/'.$sublang.'/'.$filename; + + $aliascontent = 'id.'.tpl.php\'; '; + $aliascontent .= 'else require $dolibarr_main_data_root.\'/website/\'.$website->ref.\'/page'.$objectpage->id.'.tpl.php\';'."\n"; + $aliascontent .= '?>'."\n"; + $result = file_put_contents($filealias, $aliascontent); + if ($result === false) { + dol_syslog("Failed to write file ".$filealias, LOG_WARNING); + } + if (!empty($conf->global->MAIN_UMASK)) { + @chmod($filealias, octdec($conf->global->MAIN_UMASK)); + } + } + } + } return ($result ?true:false); } diff --git a/htdocs/website/class/website.class.php b/htdocs/website/class/website.class.php index 1f2212668f7..34cc78e9a05 100644 --- a/htdocs/website/class/website.class.php +++ b/htdocs/website/class/website.class.php @@ -1334,13 +1334,15 @@ class Website extends CommonObject $error++; } - // Regenerate aliases pages (pages with a natural name) - if (is_array($aliasesarray)) - { - foreach ($aliasesarray as $aliasshortcuttocreate) - { - if (trim($aliasshortcuttocreate)) - { + // Add main alias to list of alternative aliases + if (!empty($objectpagestatic->pageurl) && !in_array($objectpagestatic->pageurl, $aliasesarray)) { + $aliasesarray[] = $objectpagestatic->pageurl; + } + + // Regenerate all aliases pages (pages with a natural name) + if (is_array($aliasesarray)) { + foreach ($aliasesarray as $aliasshortcuttocreate) { + if (trim($aliasshortcuttocreate)) { $filealias = $conf->website->dir_output.'/'.$object->ref.'/'.trim($aliasshortcuttocreate).'.php'; $result = dolSavePageAlias($filealias, $object, $objectpagestatic); if (!$result) {