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

Fix #3249 : lecture d'une valeur tableau dans une url avec parametre_url()...

Fix #3249 : lecture d'une valeur tableau dans une url avec parametre_url() (satisfait le test http://zone.spip.org/trac/spip-zone/changeset/85118 )
parent eaf421d4
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -424,12 +424,21 @@ function parametre_url($url, $c, $v=NULL, $sep='&') { ...@@ -424,12 +424,21 @@ function parametre_url($url, $c, $v=NULL, $sep='&') {
$ajouts = array_flip(explode('|',$c)); $ajouts = array_flip(explode('|',$c));
$u = is_array($v) ? $v : rawurlencode($v); $u = is_array($v) ? $v : rawurlencode($v);
$testv = (is_array($v)?count($v):strlen($v)); $testv = (is_array($v)?count($v):strlen($v));
$v_read = null;
// lire les variables et agir // lire les variables et agir
foreach ($url as $n => $val) { foreach ($url as $n => $val) {
if (preg_match($regexp, urldecode($val), $r)) { if (preg_match($regexp, urldecode($val), $r)) {
$r = array_pad($r, 3, null); $r = array_pad($r, 3, null);
if ($v === NULL) { if ($v === NULL) {
return $r[2]?substr($r[2],1):''; // c'est un tableau, on memorise les valeurs
if (substr($r[1],-2)=="[]"){
if (!$v_read) $v_read = array();
$v_read[] = $r[2]?substr($r[2],1):'';
}
// c'est un scalaire, on retourne direct
else {
return $r[2]?substr($r[2],1):'';
}
} }
// suppression // suppression
elseif (!$testv) { elseif (!$testv) {
...@@ -453,7 +462,7 @@ function parametre_url($url, $c, $v=NULL, $sep='&') { ...@@ -453,7 +462,7 @@ function parametre_url($url, $c, $v=NULL, $sep='&') {
if ($v === NULL if ($v === NULL
AND $args = func_get_args() AND $args = func_get_args()
AND count($args)==2) { AND count($args)==2) {
return $v; return $v_read; // rien trouve ou un tableau
} elseif ($testv) { } elseif ($testv) {
foreach($ajouts as $k => $n) { foreach($ajouts as $k => $n) {
if (!is_array($v)) if (!is_array($v))
......
...@@ -925,6 +925,7 @@ function parametre_url(url,c,v,sep,force_vide){ ...@@ -925,6 +925,7 @@ function parametre_url(url,c,v,sep,force_vide){
var ajouts = []; var ajouts = [];
var u = (typeof(v)!=='object')?encodeURIComponent(v):v; var u = (typeof(v)!=='object')?encodeURIComponent(v):v;
var na = []; var na = [];
var v_read = null;
// lire les variables et agir // lire les variables et agir
for(var n=0;n<args.length;n++){ for(var n=0;n<args.length;n++){
var val = args[n]; var val = args[n];
...@@ -932,7 +933,15 @@ function parametre_url(url,c,v,sep,force_vide){ ...@@ -932,7 +933,15 @@ function parametre_url(url,c,v,sep,force_vide){
var r=val.match(regexp); var r=val.match(regexp);
if (r && r.length){ if (r && r.length){
if (v==null){ if (v==null){
return (r.length>2 && typeof r[2]!=='undefined')?r[2].substring(1):''; // c'est un tableau, on memorise les valeurs
if (r[1].substr(-2) == '[]') {
if (!v_read) v_read = [];
v_read.push((r.length>2 && typeof r[2]!=='undefined')?r[2].substring(1):'');
}
// c'est un scalaire, on retourne direct
else {
return (r.length>2 && typeof r[2]!=='undefined')?r[2].substring(1):'';
}
} }
// suppression // suppression
else if (!v.length) { else if (!v.length) {
...@@ -951,7 +960,7 @@ function parametre_url(url,c,v,sep,force_vide){ ...@@ -951,7 +960,7 @@ function parametre_url(url,c,v,sep,force_vide){
na.push(args[n]); na.push(args[n]);
} }
if (v==null) return v; // rien de trouve if (v==null) return v_read; // rien de trouve ou un tableau
// traiter les parametres pas encore trouves // traiter les parametres pas encore trouves
if (v || v.length || force_vide) { if (v || v.length || force_vide) {
ajouts = "="+ajouts.join("=")+"="; ajouts = "="+ajouts.join("=")+"=";
......
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