From acb33c224107aeca188eb42ccdf767c52fd258f3 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Thu, 8 Jun 2023 18:14:16 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20quand=20une=20URL=20de=20redirection=20c?= =?UTF-8?q?ontient=20une=20querystring=20avec=20des=20crochets,=20les=20en?= =?UTF-8?q?coder=20pour=20g=C3=A9n=C3=A9rer=20l'URL=20affich=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs #4697 --- ecrire/inc/filtres_ecrire.php | 15 ++++++++++++++- prive/formulaires/rediriger_article.php | 4 +++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ecrire/inc/filtres_ecrire.php b/ecrire/inc/filtres_ecrire.php index 5e111aba53..34207ab90c 100644 --- a/ecrire/inc/filtres_ecrire.php +++ b/ecrire/inc/filtres_ecrire.php @@ -422,7 +422,20 @@ function lien_article_virtuel($virtuel) { return ''; } - return propre('[->' . $virtuel . ']'); + $joli = $virtuel; + $parts = parse_url($virtuel); + if (!empty($parts['query']) and str_contains($parts['query'], ']')) { + $query = str_replace(['[', ']'], [urlencode('['), urlencode(']')], $parts['query']); + $virtuel = str_replace("?" . $parts['query'], "?$query", $virtuel); + } + if ($virtuel !== $joli) { + $joli = propre('[' . $joli . ' -> ' . $virtuel . ']'); + } + else { + $joli = propre('[->' . $virtuel . ']'); + } + + return $joli; } diff --git a/prive/formulaires/rediriger_article.php b/prive/formulaires/rediriger_article.php index dfd94ec9aa..12460893c7 100644 --- a/prive/formulaires/rediriger_article.php +++ b/prive/formulaires/rediriger_article.php @@ -36,10 +36,12 @@ function formulaires_rediriger_article_charger_dist($id_article, $retour = '') { include_spip('inc/texte'); + include_spip('inc/filtres_ecrire'); + $valeurs = [ 'redirection' => $redirection, 'id' => $id_article, - '_afficher_url' => ($redirection ? propre("[->$redirection]") : ''), + '_afficher_url' => ($redirection ? lien_article_virtuel($redirection) : ''), ]; return $valeurs; -- GitLab