From 2649ed77426c76efbf5bd33d034fa0cb6c2f738a Mon Sep 17 00:00:00 2001 From: RastaPopoulos <rastapopoulos@spip.org> Date: Tue, 24 Nov 2015 12:11:38 +0000 Subject: [PATCH] =?UTF-8?q?On=20ajoute=20un=20fallback=20a=20la=20fonction?= =?UTF-8?q?=20url=5Fde=5Fbase()=20avec=20d'utiliser=20adresse=5Fsite=20en?= =?UTF-8?q?=20dernier=20recours.=20Cela=20permet=20d'avoir=20une=20URL=20d?= =?UTF-8?q?e=20site=20dans=20tous=20les=20cas,=20m=C3=AAme=20quand=20on=20?= =?UTF-8?q?ne=20navigue=20pas=20avec=20un=20client=20web=20classique=20(pa?= =?UTF-8?q?r=20exemple=20en=20CLI,=20mais=20=C3=A7a=20peut=20=C3=AAtre=20d?= =?UTF-8?q?'autres=20types=20d'appel).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc/utils.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 70fb0705c8..98f778f167 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -1524,8 +1524,9 @@ function test_valeur_serveur($truc) { /** * Calcule l'url de base du site * - * Calcule l'URL de base du site, sans se fier à la méta (adresse_site) qui - * peut être fausse (sites avec plusieurs noms d’hôtes, déplacements, erreurs) + * Calcule l'URL de base du site, en priorité sans se fier à la méta (adresse_site) qui + * peut être fausse (sites avec plusieurs noms d’hôtes, déplacements, erreurs). + * En dernier recours, lorsqu'on ne trouve rien, on utilise adresse_site comme fallback. * * @note * La globale `$profondeur_url` doit être initialisée de manière à @@ -1561,8 +1562,16 @@ function url_de_base($profondeur = null) { $host = strtr($_SERVER['HTTP_X_FORWARDED_HOST'], "<>?\"' \r\n", '________'); } else { - # note : HTTP_HOST contient le :port si necessaire + // note : HTTP_HOST contient le :port si necessaire $host = $_SERVER['HTTP_HOST']; + // si on n'a pas trouvé d'hôte du tout, en dernier recours on utilise adresse_site comme fallback + if (is_null($host) and isset($GLOBALS['meta']['adresse_site'])) { + $host = $GLOBALS['meta']['adresse_site']; + if ($scheme = parse_url($host, PHP_URL_SCHEME)) { + $http = $scheme; + $host = str_replace("{$scheme}://", '', $host); + } + } if (isset($_SERVER['SERVER_PORT']) AND $port=$_SERVER['SERVER_PORT'] AND strpos($host,":")==false){ -- GitLab