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

Last change on this file since 115266 was 115266, checked in by abelass@…, 2 years ago
  • doc
  • liens vers doc
File size: 2.0 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) {
4        return;
5}
6
7/**
8 * Calcul l'utilisation de l'objet
9 *
10 * @param string $utilise_objet
11 *   L'objet pour le quel on calcul la disponibilité.
12 * @param array $contexte
13 *   Les données du contexte.
14 *   les optiosn suivants sont nécessaires:
15 *   - objet
16 *   - id_objet
17 *   - statuts
18 *
19 * @return array
20 *   Les dates utilisées.
21 */
22function disponibilites_objet_utilise_dist($utilise_objet, $contexte) {
23        include_spip('filtres/dates_outils');
24
25        $horaire = isset($contexte['horaire']) ? $contexte['horaire'] : _request('horaire');
26        $format = isset($contexte['format']) ? $contexte['format'] : _request('format');
27        $objet = $contexte['objet'];
28        $id_objet = $contexte['id_objet'];
29        $statuts = $contexte['utilise_statuts'];
30
31        if ($contexte['utilise_select']) {
32                $select = $contexte['utilise_select'];
33        }
34        else {
35                $select = 'date_debut,date_fin';
36        }
37
38        if ($contexte['utilise_where']) {
39                $where = $contexte['utilise_where'];
40        }
41        else {
42                if ($statuts) {
43                        if (!is_array($statuts)) {
44                                $statuts = explode(',', $statuts);
45                        }
46                        $statut = 'statut IN ("' . implode('","', $statuts) . '")';
47                }
48                else {
49                        $statut = 'statut NOT LIKE ' . sql_quote('poubelle');
50                }
51                $where = 'objet LIKE ' . sql_quote($objet) . ' AND id_objet=' . $id_objet . ' AND ' . $statut;
52        }
53        $dates = [];
54
55        if ($table = table_objet_sql($utilise_objet)) {
56
57        $utilisation = sql_allfetsel($select, $table , $where);
58
59        foreach($utilisation AS $donnees) {
60
61                $date_debut = $donnees['date_debut'];
62                $date_fin = $donnees['date_fin'];
63
64                if (isset($contexte['verifier']) AND $contexte['verifier']) {
65                        if (dates_difference($date_debut, $date_fin, 'jour') == 1) {
66                                $contexte['utilise_decalage_fin'] = 0;
67                        }
68                }
69
70                if ($date_debut != $date_fin) {
71
72                        $intervalle = dates_intervalle(
73                                $date_debut,
74                                $date_fin,
75                                $contexte['utilise_decalage_debut'],
76                                $contexte['utilise_decalage_fin'],
77                                $horaire,
78                                $format
79                        );
80
81                        $dates = array_merge($dates, $intervalle);
82                        }
83                }
84        }
85        return $dates;
86}
Note: See TracBrowser for help on using the repository browser.