source: spip-zone/_plugins_/noizetier_layout/trunk/saisies/medias_selection.php

Last change on this file was 118189, checked in by Charles Razack, 7 months ago

Saisies : pour la vérification des valeurs acceptables, prendre en compte l'option , qui ajoute des valeurs possibles aux datas.

  • Property svn:eol-style set to native
File size: 1.7 KB
Line 
1<?php
2/**
3 * Fonctions spécifiques à une saisie
4 *
5 * @package SPIP\Saisies\checkbox
6 */
7
8
9// Sécurité
10if (!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 */
22function 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}
Note: See TracBrowser for help on using the repository browser.