|
|
|
@ -447,6 +447,57 @@ function saisies_saisie_est_tabulaire($saisie) {
|
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Cherche une saisie par son id, son nom ou son chemin et renvoie soit la saisie, soit son chemin |
|
|
|
|
* |
|
|
|
|
* @param array $saisies Un tableau décrivant les saisies |
|
|
|
|
* @param unknown_type $id_ou_nom_ou_chemin L'identifiant ou le nom de la saisie à chercher ou le chemin sous forme d'une liste de clés |
|
|
|
|
* @param bool $retourner_chemin Indique si on retourne non pas la saisie mais son chemin |
|
|
|
|
* @return array Retourne soit la saisie, soit son chemin, soit null |
|
|
|
|
*/ |
|
|
|
|
function saisies_chercher($saisies, $id_ou_nom_ou_chemin, $retourner_chemin = false) { |
|
|
|
|
if (is_array($saisies) and $id_ou_nom_ou_chemin) { |
|
|
|
|
if (is_string($id_ou_nom_ou_chemin)) { |
|
|
|
|
$nom = $id_ou_nom_ou_chemin; |
|
|
|
|
// identifiant ? premier caractere @ |
|
|
|
|
$id = ($nom[0] == '@'); |
|
|
|
|
|
|
|
|
|
foreach ($saisies as $cle => $saisie) { |
|
|
|
|
$chemin = array($cle); |
|
|
|
|
// notre saisie est la bonne ? |
|
|
|
|
if ($nom == ($id ? $saisie['identifiant'] : $saisie['options']['nom'])) { |
|
|
|
|
return $retourner_chemin ? $chemin : $saisie; |
|
|
|
|
// sinon a telle des enfants ? et si c'est le cas, cherchons dedans |
|
|
|
|
} elseif (isset($saisie['saisies']) and is_array($saisie['saisies']) and $saisie['saisies'] |
|
|
|
|
and ($retour = saisies_chercher($saisie['saisies'], $nom, $retourner_chemin))) { |
|
|
|
|
return $retourner_chemin ? array_merge($chemin, array('saisies'), $retour) : $retour; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
elseif (is_array($id_ou_nom_ou_chemin)) { |
|
|
|
|
$chemin = $id_ou_nom_ou_chemin; |
|
|
|
|
$saisie = $saisies; |
|
|
|
|
|
|
|
|
|
// On vérifie l'existence quand même |
|
|
|
|
foreach ($chemin as $cle) { |
|
|
|
|
if (isset($saisie[$cle])) { |
|
|
|
|
$saisie = $saisie[$cle]; |
|
|
|
|
} else { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Si c'est une vraie saisie |
|
|
|
|
if ($saisie['saisie'] and $saisie['options']['nom']) { |
|
|
|
|
return $retourner_chemin ? $chemin : $saisie; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Indique si une saisie à sa valeur gelée |
|
|
|
|
* - soit par option disabled avec envoi cachée |
|
|
|
|