From b38d7eec423c9fe31e43459812ef120a9969f2c8 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Mon, 28 Feb 2022 12:07:42 +0100
Subject: [PATCH] =?UTF-8?q?Fix=20#5067=20:=20ne=20pas=20se=20rabattre=20su?=
 =?UTF-8?q?r=20les=20urls=20pages=20si=20un=20type=20d'url=20a=20=C3=A9t?=
 =?UTF-8?q?=C3=A9=20demand=C3=A9=20explicitement=20(appel=20depuis=20urls?=
 =?UTF-8?q?=5Ftransition=5Fretrouver=5Fanciennes=5Furl=5Fpropres())=20nota?=
 =?UTF-8?q?mment?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/inc/utils.php | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index ac64ab17d8..fb8309844b 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -1789,17 +1789,18 @@ function charger_fonction_url(string $quoi, string $type = '') {
 		return '';
 	}
 
-	if (!$type) {
-		$type = $GLOBALS['type_urls'] ?? $GLOBALS['meta']['type_urls'] ?? 'page'; // sinon type "page" par défaut
+	$url_type = $type;
+	if (!$url_type) {
+		$url_type = $GLOBALS['type_urls'] ?? $GLOBALS['meta']['type_urls'] ?? 'page'; // sinon type "page" par défaut
 	}
 
 	// inclure le module d'url
-	include_spip('urls/' . $type);
+	include_spip('urls/' . $url_type);
 
 	switch ($quoi) {
 		case 'page':
 			if (
-				 function_exists($f = "urls_{$type}_generer_url_page")
+				 function_exists($f = "urls_{$url_type}_generer_url_page")
 				or function_exists($f .= '_dist')
 				// ou une fonction custom utilisateur independante du type d'url
 				or function_exists($f = 'generer_url_page')
@@ -1814,18 +1815,18 @@ function charger_fonction_url(string $quoi, string $type = '') {
 		default:
 			$fquoi = ($quoi === 'objet' ? 'generer_url_objet' : 'decoder_url');
 			if (
-				function_exists($f = "urls_{$type}_{$fquoi}")
+				function_exists($f = "urls_{$url_type}_{$fquoi}")
 				or function_exists($f .= '_dist')
 			) {
 				return $f;
 			}
 			// est-ce qu'on a une ancienne fonction urls_xxx_dist() ?
 			// c'est un ancien module d'url, on appelle l'ancienne fonction qui fait tout
-			if ($f = charger_fonction($type, 'urls', true)) {
+			if ($f = charger_fonction($url_type, 'urls', true)) {
 				return $f;
 			}
-			// sinon on se rabat sur les urls page
-			if ($type !== 'page') {
+			// sinon on se rabat sur les urls page si ce n'est pas un type demande explicitement
+			if (!$type and $url_type !== 'page'){
 				return charger_fonction_url($quoi, 'page');
 			}
 			return '';
-- 
GitLab