Ignore:
Timestamp:
Oct 17, 2019, 11:31:10 PM (11 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_checkbox.php

    r118170 r118189  
    11<?php
    2 
    32/**
    43 * Fonctions spécifiques à une saisie
    54 *
    65 * @package SPIP\Saisies\checkbox
    7 **/
     6 */
    87
    98
     
    2221 */
    2322function medias_checkbox_valeurs_acceptables($valeur, $description) {
    24         include_spip('saisies/selection_multiple');
    25         return selection_multiple_valeurs_acceptables($valeur, $description);
     23
     24        $acceptable = true;
     25
     26        if (!is_array($valeur)) {
     27                if ($valeur) {
     28                        $valeur = explode(' ', $valeur);
     29                } else {
     30                        $valeur = array();
     31                }
     32        } else {
     33                $valeur = array_values($valeur);
     34        }
     35        if (isset($valeur['choix_alternatif']) and isset($description['options']['choix_alternatif']) and $description['options']['choix_alternatif'] == 'on') {
     36                unset ($valeur['choix_alternatif']);
     37        }
     38        if (saisies_verifier_gel_saisie($description) and isset($description['options']['defaut'])) {
     39                // Si valeur gelée, on vérifie qu'il n'y ni plus ni moins dans ce qui a été postée
     40                $defaut = saisies_valeur2tableau($description['options']['defaut']);
     41                $intersection = array_intersect($defaut, $valeur);
     42                // L'intersection doit avoir le même nombre de valeur que le défaut. S'il a moins, c'est qu'on supprimé des valeurs, ou renommé
     43                // L'intersection doit avoir le même nombre de valeur que posté. S'il y en a moins, c'est qu'on a posté de nouvelle valeur
     44                // Sinon c'est bon
     45                if (count($intersection) != count($defaut)) {
     46                        $acceptable = false;
     47                } elseif (count($intersection) != count($valeur)) {
     48                        $acceptable = false;
     49                } else {
     50                        $acceptable = true;
     51                }
     52        } else {
     53                // A-t-on essayé des poster des valeurs supplémentaires?
     54                // Ajouter les variantes médias aux datas
     55                $data = saisies_aplatir_tableau(saisies_trouver_data($description, true));
     56                if (!empty($description['options']['medias'])) {
     57                        include_spip('inc/noizetier_layout');
     58                        $medias = array_filter(array_keys(noizetier_layout_decrire_grille('medias')));
     59                        foreach ($data as $classe => $label) {
     60                                foreach ($medias as $media) {
     61                                        $classe_media = noizetier_layout_creer_classe_media($classe, $media);
     62                                        $data[$classe_media] = $label;
     63                                }
     64                        }
     65                }
     66                $choix_possibles = array_keys($data, true);
     67                if (isset($description['options']['disable_choix'])) {
     68                        $disable_choix = explode(',', $description['options']['disable_choix']);
     69                        $choix_possibles = array_diff($choix_possibles, $disable_choix);
     70                }
     71                $diff = array_diff($valeur, $choix_possibles);
     72                if (count($diff)) {
     73                        $acceptable = false;
     74                        // var_dump($valeur);
     75                }
     76        }
     77
     78        return $acceptable;
    2679}
Note: See TracChangeset for help on using the changeset viewer.