source: spip-zone/_plugins_/objets_disponibilites/branches/v1/objets_disponibilites_fonctions.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.8 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                if ($fonction = charger_fonction($utilise_objet . '_utilise', 'disponibilites', TRUE)) {
48                        $dates_utilisees = $fonction($contexte);;
49                }
50                else {
51                        $fonction = charger_fonction('objet_utilise', 'disponibilites');
52                        $dates_utilisees = $fonction($utilise_objet, $contexte);
53                }
54        }
55
56        // Les dates de l'objet encodés comme indisponibles
57        $dates_indisponibles = unserialize(recuperer_fond('disponibilites/indisponibles', $contexte));
58
59        /*
60         * Les disponibles
61         */
62        $dates_disponibles = unserialize(recuperer_fond('disponibilites/disponibles', $contexte));
63
64        /*
65         * Le décompte, les disponibles moins les indisponibles
66         */
67        return array_diff($dates_disponibles, $dates_indisponibles, $dates_utilisees);
68}
Note: See TracBrowser for help on using the repository browser.