source: spip-zone/_plugins_/reservation_evenement/trunk/reservation_evenement_pipelines.php @ 103056

Last change on this file since 103056 was 103056, checked in by abelass@…, 3 years ago

enlever log test
commentaires

File size: 8.2 KB
Line 
1<?php
2/**
3 * Utilisations de pipelines par Réservation Evénements
4 *
5 * @plugin     Réservation événements
6 * @copyright  2013
7 * @author     Rainer Müller
8 * @licence    GNU/GPL
9 * @package    SPIP\Reservation_evenement\Pipelines
10 */
11if (! defined('_ECRIRE_INC_VERSION'))
12        return;
13
14        // Afficher les box infos et téléchargement des réservations
15function reservation_evenement_affiche_gauche($flux) {
16        include_spip('inc/presentation');
17        $exec = $flux['args']['exec'];
18        $objets_affichage = array (
19                'rubrique',
20                'article',
21                'evenement'
22        );
23
24        if (in_array($exec, $objets_affichage)) {
25                include_spip('inc/config');
26                include_spip('formulaires/selecteur/generique_fonctions');
27                include_spip('inc/reservation_evenements');
28
29                $config = lire_config('reservation_evenement/rubrique_reservation');
30                $contexte = array ();
31                $contexte['id_article'] = intval($flux['args']['id_article']) ? $flux['args']['id_article'] : '';
32                $contexte['id_rubrique'] = intval($flux['args']['id_rubrique']) ? $flux['args']['id_rubrique'] : '';
33                $contexte['id_evenement'] = intval($flux['args']['id_evenement']) ? $flux['args']['id_evenement'] : '';
34                $id = $contexte['id_' . $exec];
35                $rubrique_reservation = picker_selected($config, 'rubrique');
36                $zone = rubrique_reservation($id, $exec, $rubrique_reservation);
37
38                // Si l'objet se trouve dans la zone Reservation Evénement, on affiche
39                if ($zone) {
40                        $flux['data'] .= recuperer_fond('inclure/reservations', $contexte);
41                }
42        }
43        return $flux;
44}
45
46/**
47 * Ajout de liste sur la vue d'un auteur
48 *
49 * @pipeline affiche_auteurs_interventions
50 *
51 * @param array $flux
52 *              Données du pipeline
53 * @return array Données du pipeline
54 */
55function reservation_evenement_affiche_auteurs_interventions($flux) {
56        if ($id_auteur = intval($flux['args']['id_auteur'])) {
57                $flux['data'] .= '<br class="nettoyeur"/>' . recuperer_fond('prive/objets/liste/reservations', array (
58                        'id_auteur' => $id_auteur,
59                        'titre' => _T('reservation:info_reservations_auteur')
60                ), array (
61                        'ajax' => true
62                ));
63        }
64        return $flux;
65}
66function reservation_evenement_affiche_milieu($flux) {
67        $e = trouver_objet_exec($flux['args']['exec']);
68        // reservations sur les événements
69        if (! $e['edition'] and in_array($e['type'], array (
70                'evenement'
71        ))) {
72                $contexte = calculer_contexte();
73                $contexte['id_evenement'] = _request('id_evenement');
74                $contexte['par'] = 'id_evenement';
75                $texte .= recuperer_fond('prive/objets/liste/reservations_details', $contexte, array (
76                        'ajax' => 'oui'
77                ));
78                $flux['data'] .= $texte;
79        }
80        return $flux;
81}
82
83// Définitions des notifications pour https://github.com/abelass/notifications_archive
84function reservation_evenement_notifications_archive($flux) {
85        $flux = array_merge($flux, array (
86                'reservation_client' => array (
87                        'activer' => 'on',
88                        'duree' => '180'
89                ),
90                'reservation_vendeur' => array (
91                        'duree' => '180'
92                )
93        ));
94        return $flux;
95}
96
97/*
98 * Déclencher le cron si prévu dans la configuration
99 */
100function reservation_evenement_taches_generales_cron($taches) {
101        include_spip('inc/config');
102        $config = lire_config('reservation_evenement', array ());
103        if (isset($config['cron'])) {
104                // La périodicité
105                if (isset($config['periodicite_cron']) and $config['periodicite_cron'] >= 600)
106                        $periodicite = $config['periodicite_cron'];
107                else
108                        $periodicite = 24 * 3600;
109
110                $taches['reservation_evenement_cloture'] = $periodicite;
111        }
112        return $taches;
113}
114function reservation_evenement_formulaire_charger($flux) {
115        $form = $flux['args']['form'];
116        $forms = array (
117                'editer_article',
118                'editer_evenement'
119        );
120        $contexte = $flux['data'];
121
122        // Charger les valeurs par défaut
123        if (in_array($form, $forms)) {
124                $action_cloture = $contexte['action_cloture'];
125                $id_evenement = isset($contexte['id_evenement']) ? $contexte['id_evenement'] : '0';
126                if ($form == $forms[1] and (! $action_cloture or $action_cloture == 0) and $form == 'editer_evenement' and intval($contexte['id_parent'])) {
127                        $action_cloture = sql_getfetsel('action_cloture', 'spip_articles', 'id_article=' . $contexte['id_parent']);
128                }
129                if ($action_cloture)
130                        $flux['data']['action_cloture'] = $action_cloture;
131        }
132        return $flux;
133}
134function reservation_evenement_formulaire_traiter($flux) {
135        $form = $flux['args']['form'];
136        $forms = array (
137                'editer_article',
138                'editer_evenement'
139        );
140        if (in_array($form, $forms)) {
141                list ($edit, $objet) = explode('_', $form);
142                sql_updateq('spip_' . $objet . 's', array (
143                        'action_cloture' => _request('action_cloture')
144                ), 'id_' . $objet . '=' . $flux['data']['id_' . $objet]);
145        }
146        return $flux;
147}
148function reservation_evenement_recuperer_fond($flux) {
149        $fond = $flux['args']['fond'];
150
151        $contexte = $flux['data']['contexte'];
152        $fonds = array (
153                'formulaires/editer_article' => 'article',
154                'formulaires/editer_evenement' => 'evenement'
155        );
156        // Ajouter le champ action_cloture
157        if (isset($fonds[$fond])) {
158
159                include_spip('inc/config');
160                include_spip('formulaires/selecteur/generique_fonctions');
161                include_spip('inc/reservation_evenements');
162                $config = lire_config('reservation_evenement', array ());
163
164                $type = $fonds[$fond];
165                $rubrique_reservation = isset($config['rubrique_reservation']) ? picker_selected($config['rubrique_reservation'], 'rubrique') : '';
166                $id = _request('id_' . $type);
167                $zone = rubrique_reservation($id, $type, $rubrique_reservation);
168                $cron = isset($config['cron']) ? $config['cron'] : '';
169
170                // Si cron activé et l'objet se trouve dans la zone Reservation Evénement, on affiche
171                if ($cron and $zone) {
172                        $action_cloture = '<ul>' . recuperer_fond('formulaires/inc-action_cloture', $contexte) . '</ul>';
173                        $flux['data']['texte'] = str_replace('<!--extra-->', $action_cloture . '<!--extra-->', $flux['data']['texte']);
174                }
175        }
176        return $flux;
177}
178
179// ajouter le champ action_cloture
180function reservation_evenement_afficher_contenu_objet($flux) {
181        $type = $flux['args']['type'];
182        $types = array (
183                'article',
184                'evenement'
185        );
186
187        if (in_array($type, $types)) {
188                include_spip('inc/config');
189                include_spip('formulaires/selecteur/generique_fonctions');
190                include_spip('inc/reservation_evenements');
191
192                $config = lire_config('reservation_evenement', array ());
193                $rubrique_reservation = isset($config['rubrique_reservation']) ? picker_selected($config['rubrique_reservation'], 'rubrique') : '';
194                $id = _request('id_' . $type);
195                $zone = rubrique_reservation($id, $type, $rubrique_reservation);
196                $cron = isset($config['cron']) ? $config['cron'] : '';
197
198                // Si cron activé et l'objet se trouve dans la zone Reservation Evénement, on affiche
199                if ($cron and $zone) {
200                        $etats = array (
201                                1 => _T('item:oui'),
202                                2 => _T('item:non'),
203                                3 => _T('reservation:evenement_cloture')
204                        );
205                        $action_cloture = sql_getfetsel('action_cloture', 'spip_' . $type . 's', 'id_' . $type . '=' . $type = $flux['args']['id_objet']);
206                        if ($action_cloture != 0)
207                                $contexte['cloture_etat'] = $etats[$action_cloture];
208                        $action_cloture = recuperer_fond('prive/objets/contenu/inc-action_cloture', $contexte);
209                        $flux['data'] .= "\n" . $action_cloture;
210                }
211        }
212        return $flux;
213}
214
215/**
216 * Optimiser la base de donnée en supprimant toutes les reservations en cours qui sont trop vieilles
217 *
218 * Le délai de "péremption" est défini dans les options de configuration du plugin
219 *
220 * @pipeline optimiser_base_disparus
221 * @param  array $flux Données du pipeline
222 * @return array       Données du pipeline
223 */
224function reservation_evenement_optimiser_base_disparus($flux){
225        include_spip('inc/config');
226
227        // les config
228        $config_reservation = lire_config('reservation_evenement');
229        $heures = isset($config_reservation['duree_vie']) ? $config_reservation['duree_vie'] : 0;
230
231        if ($heures > 0) {
232                $statut_defaut = isset($config_reservation['statut_defaut']) ? $config_reservation['statut_defaut'] : 'encours';
233                $depuis = date('Y-m-d H:i:s', time() - 3600*intval($heures));
234
235                // On récupère les réservations trop vieilles
236                $reservations = sql_allfetsel(
237                                'id_reservation',
238                                'spip_reservations',
239                                'statut = '.sql_quote($statut_defaut).' and date<'.sql_quote($depuis)
240                                );
241
242                // S'il y a bien des réservations à supprimer
243                if ($reservations) {
244                        $reservations = array_map('reset', $reservations);
245                        include_spip('inc/reservation_evenements');
246                        reservations_supprimer($reservations);
247                        $flux['data'] += count($reservations);
248                }
249        }
250
251        return $flux;
252}
Note: See TracBrowser for help on using the repository browser.