source: spip-zone/_plugins_/objets_disponibilites/branches/v1/verifier/dates_diponibles.php @ 114258

Last change on this file since 114258 was 114258, checked in by abelass@…, 7 months ago

v 1.2.1 Les utilisés, prendre en compte les statuts du contexte

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                        'utilise_objet' => '',
28                        'utilise_statuts' => '',
29                        'utilise_where' => '',
30                        'utilise_select' => '',
31                ];
32
33                $valeurs = [];
34                foreach ($valeurs_defaut AS $variable => $valeur_defaut) {
35                        $valeurs[$variable] = isset($options[$variable]) ? $options[$variable] : $valeur_defaut;
36                }
37
38                $intervalle = dates_intervalle($date_debut, $date_fin, 1, 0, $horaire, $format);
39
40
41                $disponible = dates_disponibles(array_merge(
42                                        $valeurs,
43                                        [
44                                                'objet' => $objet ,
45                                                'id_objet' => $id_objet,
46                                                'date_limite_debut' => $date_debut,
47                                                'date_limite_fin' => $date_fin,
48                                                'format' => $format,
49                                                'verifier' => TRUE,
50                                        ]
51                                )
52                        );
53
54
55                $difference = array_diff($intervalle, $disponible);
56
57                if (count($difference) > 0) {
58                        return _T('objets_location:erreur_jours_indisponible', array('jours' => implode(', ', $difference)));
59                }
60                else {
61                        return '';
62                }
63        }
64        else {
65                return 'Problèmes de variables, vérifiez votre fonction';
66        }
67
68}
Note: See TracBrowser for help on using the repository browser.