Browse Source

Dans les fonction PHP d'évaluation des afficher_si, utiliser des noms de

variable plus clair, en ne confondant pas le champ (`input_1') et sa
valeur.
no_submit
Maïeul 10 months ago
parent
commit
90b4b9fc62
  1. 62
      inc/saisies_afficher_si_commun.php

62
inc/saisies_afficher_si_commun.php

@ -105,7 +105,7 @@ function saisies_afficher_si_evaluer_plugin($champ, $negation = '') {
/**
* Teste une condition d'afficher_si
* @param string|array champ le champ à tester. Cela peut être :
* @param string|array $valeur_champ la valeur du champ à tester. Cela peut être :
* - un string
* - un tableau
* - un tableau sérializé
@ -115,43 +115,43 @@ function saisies_afficher_si_evaluer_plugin($champ, $negation = '') {
* @param string $negation y-a-t-il un négation avant le test ? '!' si oui
* @return bool false / true selon la condition
**/
function saisies_tester_condition_afficher_si($champ, $total, $operateur='', $valeur='', $negation = '') {
function saisies_tester_condition_afficher_si($valeur_champ, $total, $operateur='', $valeur='', $negation = '') {
// Si pas operateur ni de valeur on test juste qu'un champ est cochée / validé
if (!$operateur and !$valeur) {
if ($negation) {
return !(isset($champ) and $champ);
return !(isset($valeur_champ) and $valeur_champ);
}
else {
return isset($champ) and $champ;
return isset($valeur_champ) and $valeur_champ;
}
}
if (is_null($champ)) {
$champ = '';
if (is_null($valeur_champ)) {
$valeur_champ = '';
}
//Si champ est de type string, tenter d'unserializer
if (!is_array($champ)) {
$tenter_unserialize = @unserialize($champ);
if (!is_array($valeur_champ)) {
$tenter_unserialize = @unserialize($valeur_champ);
if ($tenter_unserialize) {
$champ = $tenter_unserialize;
$valeur_champ = $tenter_unserialize;
}
}
// Transformation en tableau des valeurs et valeur_champ, si IN/!IN
if ($operateur === 'IN' or $operateur === '!IN') {
if (!is_array($champ)) {
if ($champ) {
$champ = array($champ);
if (!is_array($valeur_champ)) {
if ($valeur_champ) {
$valeur_champ = array($valeur_champ);
} else {
$champ = array();
$valeur_champ = array();
}
}
}
//Et maintenant appeler les sous fonctions qui vont bien
if (is_string($champ)) {
$retour = saisies_tester_condition_afficher_si_string($champ, $operateur, $valeur);
} elseif (is_array($champ)) {
$retour = saisies_tester_condition_afficher_si_array($champ, $total, $operateur, $valeur);
if (is_string($valeur_champ)) {
$retour = saisies_tester_condition_afficher_si_string($valeur_champ, $operateur, $valeur);
} elseif (is_array($valeur_champ)) {
$retour = saisies_tester_condition_afficher_si_array($valeur_champ, $total, $operateur, $valeur);
} else {
$retour = false;
}
@ -164,28 +164,28 @@ function saisies_tester_condition_afficher_si($champ, $total, $operateur='', $va
/**
* Teste un condition d'afficher_si lorsque la valeur envoyée par le formulaire est une chaîne
* @param string champ le champ à tester.
* @param string $valeur_champ la valeur du champ à tester.
* @param string $operateur : l'opérateur:
* @param string|int $valeur la valeur à tester.
* @return bool false / true selon la condition
**/
function saisies_tester_condition_afficher_si_string($champ, $operateur, $valeur) {
function saisies_tester_condition_afficher_si_string($valeur_champ, $operateur, $valeur) {
if ($operateur == "==") {
return $champ == $valeur;
return $valeur_champ == $valeur;
} elseif ($operateur == "!=") {
return $champ != $valeur;
return $valeur_champ != $valeur;
} elseif ($operateur == '<') {
return $champ < $valeur;
return $valeur_champ < $valeur;
} elseif ($operateur == '<=') {
return $champ <= $valeur;
return $valeur_champ <= $valeur;
} elseif ($operateur == '>') {
return $champ > $valeur;
return $valeur_champ > $valeur;
} elseif ($operateur == '>=') {
return $champ >= $valeur;
return $valeur_champ >= $valeur;
} elseif ($operateur == 'MATCH') {
return preg_match($valeur, $champ);
return preg_match($valeur, $valeur_champ);
} elseif ($operateur == '!MATCH') {
return !preg_match($valeur, $champ);
return !preg_match($valeur, $valeur_champ);
} else {//Si mauvaise operateur -> on annule
return false;
}
@ -193,17 +193,17 @@ function saisies_tester_condition_afficher_si_string($champ, $operateur, $valeur
/**
* Teste un condition d'afficher_si lorsque la valeur postée est un tableau
* @param array champ le champ à tester.
* @param array $valeur_champ la valeur du champ à tester.
* @param string $operateur : l'opérateur:
* @param string $valeur la valeur à tester pour un IN. Par exemple "23" ou encore "23,25"
* @return bool false / true selon la condition
**/
function saisies_tester_condition_afficher_si_array($champ, $total, $operateur, $valeur) {
function saisies_tester_condition_afficher_si_array($valeur_champ, $total, $operateur, $valeur) {
if ($total) {//Cas 1 : on demande à compter le nombre total de champ
return saisies_tester_condition_afficher_si_string(count($champ), $operateur, $valeur);
return saisies_tester_condition_afficher_si_string(count($valeur_champ), $operateur, $valeur);
} else {//Cas deux : on test une valeur
$valeur = explode(',', $valeur);
$intersection = array_intersect($champ, $valeur);
$intersection = array_intersect($valeur_champ, $valeur);
if ($operateur == "==" or $operateur == "IN") {
return count($intersection) > 0;
} else {

Loading…
Cancel
Save