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='&') {
$ajouts = array_flip(explode('|',$c));
$u = is_array($v) ? $v : rawurlencode($v);
$testv = (is_array($v)?count($v):strlen($v));
$v_read = null;
// lire les variables et agir
foreach ($url as $n => $val) {
if (preg_match($regexp, urldecode($val), $r)) {
$r = array_pad($r, 3, 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
elseif (!$testv) {
......@@ -453,7 +462,7 @@ function parametre_url($url, $c, $v=NULL, $sep='&') {
if ($v === NULL
AND $args = func_get_args()
AND count($args)==2) {
return $v;
return $v_read; // rien trouve ou un tableau
} elseif ($testv) {
foreach($ajouts as $k => $n) {
if (!is_array($v))
......
......@@ -925,6 +925,7 @@ function parametre_url(url,c,v,sep,force_vide){
var ajouts = [];
var u = (typeof(v)!=='object')?encodeURIComponent(v):v;
var na = [];
var v_read = null;
// lire les variables et agir
for(var n=0;n<args.length;n++){
var val = args[n];
......@@ -932,7 +933,15 @@ function parametre_url(url,c,v,sep,force_vide){
var r=val.match(regexp);
if (r && r.length){
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
else if (!v.length) {
......@@ -951,7 +960,7 @@ function parametre_url(url,c,v,sep,force_vide){
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
if (v || v.length || force_vide) {
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