source: spip-zone/_plugins_/objets_disponibilites/trunk/verifier/dates_diponibles.php @ 114196

Last change on this file since 114196 was 114196, checked in by abelass@…, 7 months ago
  • le calucl des dates utilisés se fait dans une fonction surchargeable
  • lors d'une vérification, adapter le décalage afin qu'il détecte les périodes d'un jour
File size: 1.9 KB
Line 
1<?php
2
3function verifier_dates_diponibles_dist($valeur, $options=array()){
4                include_spip('filtres/dates_outils');
5        if (is_array($valeur)) {
6                $date_debut = isset($valeur['date_debut']) ? $valeur['date_debut'] : (isset($valeur[0]) ? $valeur[0] : '' );
7                $date_fin = isset($valeur['date_fin']) ? $valeur['date_fin'] : (isset($valeur[1]) ? $valeur[1] : $date_debut);
8        }
9        else {
10                $date_debut = $date_fin = $valeur;
11        }
12
13        $objet = isset($options['objet']) ? $options['objet'] : FALSE;
14        $id_objet = isset($options['id_objet']) ?  $options['id_objet'] : FALSE;
15
16        if ($date_debut and $date_fin and $objet and $id_objet) {
17                $horaire = isset($options['horaire']) ? $options['horaire'] : FALSE;
18                $format = isset($options['format']) ? $options['format'] : ($horaire ? 'd-m-Y H:i:s' : 'd-m-Y');
19
20                $valeurs_defaut = [
21                        'indisponible_decalage_debut' => -1,
22                        'indisponible_decalage_fin' => -1,
23                        'disponible_decalage_debut' => 1,
24                        'disponible_decalage_fin' => -1,
25                        'utilise_decalage_debut' => 1,
26                        'utilise_decalage_fin' => 1,
27                        'utilisation_objet' => '',
28
29                ];
30
31                $valeurs = [];
32                foreach ($valeurs_defaut AS $variable => $valeur_defaut) {
33                        $valeurs[$variable] = isset($options[$variable]) ? $options[$variable] : $valeur_defaut;
34                }
35
36                $intervalle = dates_intervalle($date_debut, $date_fin, 1, 0, $horaire, $format);
37
38
39                $disponible = dates_disponibles(array_merge(
40                                        $valeurs,
41                                        [
42                                                'objet' => $objet ,
43                                                'id_objet' => $id_objet,
44                                                'date_limite_debut' => $date_debut,
45                                                'date_limite_fin' => $date_fin,
46                                                'format' => $format,
47                                                'verifier' => TRUE,
48                                        ]
49                                )
50                        );
51
52
53                $difference = array_diff($intervalle, $disponible);
54
55                if (count($difference) > 0) {
56                        return _T('objets_location:erreur_jours_indisponible', array('jours' => implode(', ', $difference)));
57                }
58                else {
59                        return '';
60                }
61        }
62        else {
63                return 'Problèmes de variables, vérifiez votre fonction';
64        }
65
66}
Note: See TracBrowser for help on using the repository browser.