Ignore:
Timestamp:
Oct 17, 2019, 11:31:10 PM (9 months ago)
Author:
Charles Razack
Message:

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

Location:
_plugins_/noizetier_layout/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/noizetier_layout/trunk

    • Property subgit:lock:a9a242b1e7b5b7eb008acaa911e0ec9118c48857 deleted
    • Property subgit:lock:225580721580a21740a8afb4161b391682a5bcd4 set to 2019-10-18T01:33:52.257
  • _plugins_/noizetier_layout/trunk/saisies/medias_selection.php

    r118170 r118189  
    11<?php
    2 
    32/**
    43 * Fonctions spécifiques à une saisie
    54 *
    65 * @package SPIP\Saisies\checkbox
    7 **/
     6 */
    87
    98
     
    1716 * Vérifie que la valeur postée
    1817 * correspond aux valeurs proposées lors de la config de valeur
    19  * @param string $valeur la valeur postée
     18 * @param string|array $valeur la valeur postée
    2019 * @param array $description la description de la saisie
    2120 * @return bool true si valeur ok, false sinon,
    2221 */
    2322function medias_selection_valeurs_acceptables($valeur, $description) {
    24         include_spip('saisies/selection');
    25         return 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;
    2662}
Note: See TracChangeset for help on using the changeset viewer.