Valider 562db477 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

decodage des urls : quand on appelle la fonction en dehor de assembler, il...

decodage des urls : quand on appelle la fonction en dehor de assembler, il faut prendre en compte l'url fournir telle quelle et ne pas essayer de la decouper en fonction de la profondeur de l'url courante qui n'a rien a voir (cas des urls arbos).
On vide et on fake la globale $profondeur_url le temps du decodage et on la retablit après.
parent 23609bd6
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+4 −3
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -46,7 +46,7 @@ function urls_decoder_url($url, $fond='', $contexte=array(), $assembler=false){
	static $current_base = null;
	// les anciennes fonctions modifient directement les globales
	// on les sauve avant l'appel, et on les retablit apres !
	$save = array(@$GLOBALS['fond'],@$GLOBALS['contexte'],@$_SERVER['REDIRECT_url_propre'],@$_ENV['url_propre']);
	$save = array(@$GLOBALS['fond'],@$GLOBALS['contexte'],@$_SERVER['REDIRECT_url_propre'],@$_ENV['url_propre'],$GLOBALS['profondeur_url']);
	if (is_null($current_base)){
		include_spip('inc/filtres_mini');
		// le decodage des urls se fait toujours par rapport au site public
@@ -61,11 +61,12 @@ function urls_decoder_url($url, $fond='', $contexte=array(), $assembler=false){
	if (!$assembler) {
		unset($_SERVER['REDIRECT_url_propre']);
		unset($_ENV['url_propre']);
		$GLOBALS['profondeur_url'] = count(explode('/',$url))-1;
	}

	
	$url_redirect = "";
	$renommer = generer_url_entite();
	$renommer = generer_url_entite('','','','',true);
	if (!$renommer AND !function_exists('recuperer_parametres_url'))
		$renommer = charger_fonction('page','urls'); // fallback pour decoder l'url
	if ($renommer) {
@@ -103,7 +104,7 @@ function urls_decoder_url($url, $fond='', $contexte=array(), $assembler=false){
	}

	// retablir les globales
	list($GLOBALS['fond'],$GLOBALS['contexte'],$_SERVER['REDIRECT_url_propre'],$_ENV['url_propre']) = $save;
	list($GLOBALS['fond'],$GLOBALS['contexte'],$_SERVER['REDIRECT_url_propre'],$_ENV['url_propre'],$GLOBALS['profondeur_url']) = $save;
	
	// vider les globales url propres qui ne doivent plus etre utilisees en cas
	// d'inversion url => objet