Skip to content
Extraits de code Groupes Projets
Valider 850075fa rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Report de r16745

parent 084372dc
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -282,16 +282,23 @@ function traiter_raccourci_liens($t) {
return preg_replace_callback(_EXTRAIRE_LIENS, 'traiter_autoliens', $t);
}
// Fonction pour les champs chapo commencant par =, redirection qui peut etre:
// 1. un raccourci Spip habituel (premier If) [texte->TYPEnnn]
// 2. un ultra raccourci TYPEnnn voire nnn (article) (deuxieme If)
// 3. une URL std
// renvoie une tableau structure comme ci-dessus mais sans calcul d'URL
// (cf fusion de sauvegardes)
define('_RACCOURCI_CHAPO', '/^(\W*)(\W*)(\w*\d+([?#].*)?)$/');
// http://doc.spip.org/@chapo_redirige
/**
* Fonction pour les champs chapo commencant par =, redirection qui peut etre:
* 1. un raccourci Spip habituel (premier If) [texte->TYPEnnn]
* 2. un ultra raccourci TYPEnnn voire nnn (article) (deuxieme If)
* 3. une URL std
*
* renvoie l'url reelle de redirection si le $url=true,
* l'url brute contenue dans le chapo sinon
*
* http://doc.spip.org/@chapo_redirige
*
* @param string $chapo
* @param bool $url
* @return string
*/
function chapo_redirige($chapo, $url=false)
{
if (!preg_match(_RACCOURCI_LIEN, $chapo, $m))
......
......@@ -177,11 +177,18 @@ function public_parametrer_dist($fond, $contexte='', $cache='', $connect='') {
}
// si le champ chapo commence par '=' c'est une redirection.
// avec un eventuel raccourci Spip
// si le raccourci a un titre il sera pris comme corps du 302
// http://doc.spip.org/@tester_redirection
/**
* si le champ chapo commence par '=' c'est une redirection.
* avec un eventuel raccourci Spip
* si le raccourci a un titre il sera pris comme corps du 302
*
* http://doc.spip.org/@tester_redirection
*
* @param string $fond
* @param array $contexte
* @param string $connect
* @return array|bool
*/
function tester_redirection($fond, $contexte, $connect)
{
if ($fond == 'article'
......@@ -190,14 +197,23 @@ function tester_redirection($fond, $contexte, $connect)
if ($m[0]=='=') {
include_spip('inc/texte');
// les navigateurs pataugent si l'URL est vide
if ($url = chapo_redirige(substr($m,1), true))
if ($url = chapo_redirige(substr($m,1), true)){
// passer en url absolue car cette redirection pourra
// etre utilisee dans un contexte d'url qui change
// y compris url arbo
if (!preg_match(',^\w+:,', $url)) {
include_spip('inc/filtres_mini');
$url = url_absolue($url);
}
$url = str_replace('&', '&', $url);
return array('texte' => "<"
. "?php header('Location: "
. texte_script(str_replace('&amp;', '&', $url))
. texte_script($url)
. "'); echo '"
. addslashes($m[1])
. "'?" . ">",
. addslashes($url)
. "'.\"\n\"?" . ">",
'process_ins' => 'php');
}
}
}
return false;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter