source: spip-zone/_plugins_/reservations_credits/trunk/reservations_credits_pipelines.php

Last change on this file was 122417, checked in by Rainer Müller, 5 months ago

maintenue

File size: 4.9 KB
Line 
1<?php
2/**
3 * Utilisations de pipelines par Réseŕvations Crédits
4 *
5 * @plugin     Réseŕvations Crédits
6 * @copyright  2015-20
7 * @author     Rainer Müller
8 * @licence    GNU/GPL
9 * @package    SPIP\Reservations_credits\Pipelines
10 */
11if (! defined('_ECRIRE_INC_VERSION'))
12        return;
13
14        /*
15 * Un fichier de pipelines permet de regrouper
16 * les fonctions de branchement de votre plugin
17 * sur des pipelines existants.
18 */
19
20/**
21 * Intervient après le changement de statut d'un objet
22 *
23 * @pipeline post_edition
24 *
25 * @param array $flux
26 *              Données du pipeline
27 * @return array Données du pipeline
28 */
29function reservations_credits_post_edition($flux) {
30        $table = $flux['args']['table'];
31
32        if ($table == 'spip_evenements') {
33                $statut_ancien = $flux['args']['statut_ancien'];
34                $statut = $flux['data']['statut'];
35                // Si un événement publié est annulé
36                if ($statut_ancien == 'publie' and $statut == 'annule')
37                        set_request('instituer_credit_mouvement', 'credit');
38
39                        // Ou si un événment annulé est republié
40                elseif ($statut_ancien == 'annule' and $statut == 'publie')
41                        set_request('instituer_credit_mouvement', 'debit');
42
43                        // On crée les crédits pour chaque détail de réservation payé
44                if ($type = _request('instituer_credit_mouvement')) {
45                        set_request('type', $type);
46                        $action = charger_fonction('editer_objet', 'action');
47                        if (test_plugin_actif('prix_objets'))
48                                $sql = sql_select(
49                                                'id_reservations_detail,
50                                                        id_auteur,
51                                                        email,
52                                                        spip_reservations_details.prix_ht,
53                                                        spip_reservations_details.prix,
54                                                        spip_reservations_details.taxe,
55                                                        descriptif,code_devise',
56                                                'spip_reservations_details
57                                                        LEFT JOIN spip_reservations USING (id_reservation)
58                                                        LEFT JOIN spip_prix_objets USING (id_prix_objet)',
59                                                'id_evenement=' . $flux['args']['id_objet'] . ' AND spip_reservations_details.statut="accepte"');
60                        else
61                                $sql = sql_select('id_reservations_detail, id_auteur, email, prix_ht, prix, taxe,descriptif', 'spip_reservations_details LEFT JOIN spip_reservations USING (id_reservation)', 'id_evenement=' . $flux['args']['id_objet'] . ' AND spip_reservations_details.statut="accepte"');
62
63                        $date = date('Y-m-d H:i:s');
64
65                        while ( $data = sql_fetch($sql) ) {
66                                if (! isset($data['id_auteur']) or ! $email = sql_getfetsel('email', 'spip_auteurs', 'id_auteur =' . $data['id_auteur']))
67                                        $email = $data['email'];
68
69                                if (isset($data['code_devise']))
70                                        set_request('devise', $data['code_devise']);
71                                set_request('email', $email);
72                                set_request('id_reservations_detail', $data['id_reservations_detail']);
73                                set_request('descriptif', _T('reservation_credit_mouvement:mouvement_evenement_' . $statut, array (
74                                        'titre' => $data['descriptif']
75                                )));
76
77                                // On établit le montant
78                                if ($data['prix'] > 0) {
79                                        set_request('montant', $data['prix']);
80                                } else {
81                                        $montant = $data['prix_ht'] + $data['taxe'];
82
83                                        set_request('montant', $montant);
84                                }
85                                set_request('date_creation', $date);
86
87                                // Création du crédit
88                                $action('new', 'reservation_credit_mouvement');
89                        }
90                }
91        }
92        return $flux;
93}
94
95/**
96 * Permet d’ajouter du contenu dans la colonne « gauche » des pages de l’espace privé.
97 *
98 * @pipeline affiche_gauche
99 *
100 * @param array $flux
101 *              Données du pipeline
102 * @return array Données du pipeline
103 */
104function reservations_credits_affiche_gauche($flux) {
105        $exec = $flux["args"]["exec"];
106        // reservations sur les evenements
107        if ($exec == 'client') {
108                $contexte = calculer_contexte();
109                $data .= recuperer_fond('prive/gauche/credit', $contexte);
110                $flux['data'] .= $data;
111        }
112        return $flux;
113}
114
115/**
116 * Permet d’ajouter du contenu dans le menu admin du plugin réservation.
117 *
118 * @pipeline affiche_gauche
119 *
120 * @param array $flux
121 *              Données du pipeline
122 * @return array Données du pipeline
123 */
124function reservations_credits_reservation_evenement_menu_admin($flux) {
125        // reservations sur les evenements
126        $contexte = calculer_contexte();
127        $data .= recuperer_fond('prive/gauche/menu_admin_credit', $contexte);
128        $flux['data'] .= $data;
129
130        return $flux;
131}
132
133/**
134 * Insertion de css.
135 *
136 * @pipeline header_prive
137 *
138 * @param array $flux
139 *              Données du pipeline
140 * @return array Données du pipeline
141 */
142function reservations_credits_header_prive($flux) {
143        $css = find_in_path('css/reservations_credits.css');
144        $flux .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n";
145        return $flux;
146}
147
148/**
149 * Ajouter une entré au menu de navigation de résrvation événement.
150 *
151 * @pipeline reservation_evenement_objets_navigation
152 *
153 * @param array $flux
154 *              Données du pipeline
155 * @return array Données du pipeline
156 */
157
158function reservations_credits_reservation_evenement_objets_navigation($flux) {
159
160        $flux['data']['reservation_credits'] = array(
161                        'label' => _T('reservation_credit:titre_reservation_credits'),
162                        'icone' => 'reservation_credit-16.png',
163                        'objets' => array('reservation_credit', 'reservation_credits')
164        );
165
166        return $flux;
167}
168
Note: See TracBrowser for help on using the repository browser.