1 | <?php |
---|
2 | /** |
---|
3 | * Fonctions spécifiques à une saisie |
---|
4 | * |
---|
5 | * @package SPIP\Saisies\checkbox |
---|
6 | */ |
---|
7 | |
---|
8 | |
---|
9 | // Sécurité |
---|
10 | if (!defined('_ECRIRE_INC_VERSION')) { |
---|
11 | return; |
---|
12 | } |
---|
13 | |
---|
14 | |
---|
15 | /** |
---|
16 | * Vérifie que la valeur postée |
---|
17 | * correspond aux valeurs proposées lors de la config de valeur |
---|
18 | * @param string|array $valeur la valeur postée |
---|
19 | * @param array $description la description de la saisie |
---|
20 | * @return bool true si valeur ok, false sinon, |
---|
21 | */ |
---|
22 | function medias_selection_valeurs_acceptables($valeur, $description) { |
---|
23 | |
---|
24 | $acceptable = false; |
---|
25 | $options = $description['options']; |
---|
26 | |
---|
27 | // La valeur peut être un tableau avec les valeurs pour chaque média. |
---|
28 | $valeurs = is_array($valeur) ? array_filter($valeur) : array($valeur); |
---|
29 | |
---|
30 | foreach ($valeurs as $k => $valeur) { |
---|
31 | if ($valeur == '' and !isset($options['obligatoire'])) { |
---|
32 | $acceptable = true; |
---|
33 | } |
---|
34 | if (saisies_verifier_gel_saisie($description) and isset($options['defaut'])) { |
---|
35 | $acceptable = ($valeur == $options['defaut']); |
---|
36 | } else { |
---|
37 | $data = saisies_trouver_data($description, true); |
---|
38 | $data = saisies_aplatir_tableau($data); |
---|
39 | $data = array_keys($data); |
---|
40 | // Ajouter les variantes médias aux datas |
---|
41 | if (!empty($description['options']['medias'])) { |
---|
42 | include_spip('inc/noizetier_layout'); |
---|
43 | $medias = array_filter(array_keys(noizetier_layout_decrire_grille('medias'))); |
---|
44 | foreach ($data as $classe) { |
---|
45 | foreach ($medias as $media) { |
---|
46 | $data[] = noizetier_layout_creer_classe_media($classe, $media); |
---|
47 | } |
---|
48 | } |
---|
49 | } |
---|
50 | if (isset($options['disable_choix'])) { |
---|
51 | $disable_choix = explode(',', $options['disable_choix']); |
---|
52 | $data = array_diff($data, $disable_choix); |
---|
53 | } |
---|
54 | $acceptable = (in_array($valeur, $data)); |
---|
55 | } |
---|
56 | if (!$acceptable) { |
---|
57 | break; |
---|
58 | } |
---|
59 | } |
---|
60 | |
---|
61 | return $acceptable; |
---|
62 | } |
---|