source: spip-zone/_plugins_/objets_disponibilites/trunk/objets_disponibilites_fonctions.php @ 115266

Last change on this file since 115266 was 115266, checked in by abelass@…, 2 years ago
  • doc
  • liens vers doc
File size: 1.9 KB
Line 
1<?php
2/**
3 * Fonctions utiles au plugin Disponibilites objets
4 *
5 * @plugin     Disponibilites objets
6 * @copyright  2018 - 2019
7 * @author     Rainer Müller
8 * @licence    GNU/GPL v3
9 * @package    SPIP\Objets_disponibilites\Fonctions
10 */
11if (!defined('_ECRIRE_INC_VERSION')) {
12        return;
13}
14
15// Les fonctions de dates_outils.
16include_spip('filtres/dates_outils');
17include_spip('filtres/inc_agenda_filtres');
18
19// Les critères de dates_outils.
20include_spip('criteres/inc_agenda_filtres');
21include_spip('criteres/public_agenda');
22
23/**
24 * Calcule les dates disponibles d'un objet donnée.
25 *
26 * @param array $options
27 *              Des options passées surchargeant le contexte.
28 * @param mixed $contexte
29 *          Les variables du contexte
30 * @return array
31 *          Les dates disponibles.
32 */
33function dates_disponibles($options, $contexte = array()) {
34
35        if (!is_array($contexte)) {
36                $contexte = unserialize($contexte);
37        }
38        $contexte = array_merge($contexte, $options);
39
40        /*
41         * Les indisponibles
42         */
43        // Les dates considérés comme utilisées
44        $dates_utilisees = [];
45        if (isset($contexte['utilise_objet'])) {
46                $utilise_objet = $contexte['utilise_objet'];
47                // On regarde si on trouve un fonction spécifique pour l'objet
48                if ($fonction = charger_fonction($utilise_objet . '_utilise', 'disponibilites', TRUE)) {
49                        $dates_utilisees = $fonction($contexte);;
50                }
51                else {
52                        $fonction = charger_fonction('objet_utilise', 'disponibilites');
53                        $dates_utilisees = $fonction($utilise_objet, $contexte);
54                }
55        }
56
57        // Les dates de l'objet encodés comme indisponibles
58        $dates_indisponibles = unserialize(recuperer_fond('disponibilites/indisponibles', $contexte));
59
60        /*
61         * Les disponibles
62         */
63        $dates_disponibles = unserialize(recuperer_fond('disponibilites/disponibles', $contexte));
64
65        /*
66         * Le décompte, les disponibles moins les indisponibles
67         */
68        return array_diff($dates_disponibles, $dates_indisponibles, $dates_utilisees);
69}
Note: See TracBrowser for help on using the repository browser.