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

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

v1.23.11 : permettre de cacher le liens vers les insciptions d'agenda
caché par défaut, affichage via config

File size: 8.8 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}
148
149/**
150 * permet de compléter ou modifier le résultat de la compilation d’un squelette donné.
151 *
152 * @pipeline recuperer_fond
153 *
154 * @param array $flux
155 *              Données du pipeline
156 * @return array Données du pipeline
157 */
158function reservation_evenement_recuperer_fond($flux) {
159        $fond = $flux['args']['fond'];
160
161        $contexte = $flux['data']['contexte'];
162        $fonds = array (
163                'formulaires/editer_article' => 'article',
164                'formulaires/editer_evenement' => 'evenement'
165        );
166        // Ajouter le champ action_cloture
167        if (isset($fonds[$fond])) {
168
169                include_spip('inc/config');
170                include_spip('formulaires/selecteur/generique_fonctions');
171                include_spip('inc/reservation_evenements');
172                $config = lire_config('reservation_evenement', array ());
173
174                $type = $fonds[$fond];
175                $rubrique_reservation = isset($config['rubrique_reservation']) ? picker_selected($config['rubrique_reservation'], 'rubrique') : '';
176                $id = _request('id_' . $type);
177                $zone = rubrique_reservation($id, $type, $rubrique_reservation);
178                $cron = isset($config['cron']) ? $config['cron'] : '';
179
180                // Si cron activé et l'objet se trouve dans la zone Reservation Evénement, on affiche
181                if ($cron and $zone) {
182                        $action_cloture = '<ul>' . recuperer_fond('formulaires/inc-action_cloture', $contexte) . '</ul>';
183                        $flux['data']['texte'] = str_replace('<!--extra-->', $action_cloture . '<!--extra-->', $flux['data']['texte']);
184                }
185        }
186
187        // Enlever le lien vers résultats de agenda.
188        if ($fond == 'prive/objets/contenu/evenement') {
189                include_spip('inc/config');
190                $afficher_inscription_agenda = lire_config('reservation_evenement/afficher_inscription_agenda', '');
191
192                if (!$afficher_inscription_agenda) {
193                        $flux['data']['texte'] = preg_replace(
194                                        '/(<div\sclass="champ contenu_places)([^<]|<.+>.*<\/.+>)+(<\/div>)/i',
195                                        '',
196                                        $flux['data']['texte']);
197                }
198        }
199        return $flux;
200}
201
202// ajouter le champ action_cloture
203function reservation_evenement_afficher_contenu_objet($flux) {
204        $type = $flux['args']['type'];
205        $types = array (
206                'article',
207                'evenement'
208        );
209
210        if (in_array($type, $types)) {
211                include_spip('inc/config');
212                include_spip('formulaires/selecteur/generique_fonctions');
213                include_spip('inc/reservation_evenements');
214
215                $config = lire_config('reservation_evenement', array ());
216                $rubrique_reservation = isset($config['rubrique_reservation']) ? picker_selected($config['rubrique_reservation'], 'rubrique') : '';
217                $id = _request('id_' . $type);
218                $zone = rubrique_reservation($id, $type, $rubrique_reservation);
219                $cron = isset($config['cron']) ? $config['cron'] : '';
220
221                // Si cron activé et l'objet se trouve dans la zone Reservation Evénement, on affiche
222                if ($cron and $zone) {
223                        $etats = array (
224                                1 => _T('item:oui'),
225                                2 => _T('item:non'),
226                                3 => _T('reservation:evenement_cloture')
227                        );
228                        $action_cloture = sql_getfetsel('action_cloture', 'spip_' . $type . 's', 'id_' . $type . '=' . $type = $flux['args']['id_objet']);
229                        if ($action_cloture != 0)
230                                $contexte['cloture_etat'] = $etats[$action_cloture];
231                        $action_cloture = recuperer_fond('prive/objets/contenu/inc-action_cloture', $contexte);
232                        $flux['data'] .= "\n" . $action_cloture;
233                }
234        }
235        return $flux;
236}
237
238/**
239 * Optimiser la base de donnée en supprimant toutes les reservations en cours qui sont trop vieilles
240 *
241 * Le délai de "péremption" est défini dans les options de configuration du plugin
242 *
243 * @pipeline optimiser_base_disparus
244 * @param  array $flux Données du pipeline
245 * @return array       Données du pipeline
246 */
247function reservation_evenement_optimiser_base_disparus($flux){
248        include_spip('inc/config');
249
250        // les config
251        $config_reservation = lire_config('reservation_evenement');
252        $heures = isset($config_reservation['duree_vie']) ? $config_reservation['duree_vie'] : 0;
253
254        if ($heures > 0) {
255                $statut_defaut = isset($config_reservation['statut_defaut']) ? $config_reservation['statut_defaut'] : 'encours';
256                $depuis = date('Y-m-d H:i:s', time() - 3600*intval($heures));
257
258                // On récupère les réservations trop vieilles
259                $reservations = sql_allfetsel(
260                                'id_reservation',
261                                'spip_reservations',
262                                'statut = '.sql_quote($statut_defaut).' and date<'.sql_quote($depuis)
263                                );
264
265                // S'il y a bien des réservations à supprimer
266                if ($reservations) {
267                        $reservations = array_map('reset', $reservations);
268                        include_spip('inc/reservation_evenements');
269                        reservations_supprimer($reservations);
270                        $flux['data'] += count($reservations);
271                }
272        }
273
274        return $flux;
275}
Note: See TracBrowser for help on using the repository browser.