source: spip-zone/_plugins_/commandes/trunk/commandes_autorisations.php @ 90506

Last change on this file since 90506 was 88175, checked in by rastapopoulos@…, 5 years ago

Pas de empty d'une fonction sinon fatal error sur certain système (enfin je crois que c'est ça).

File size: 7.2 KB
Line 
1<?php
2/**
3 * Définit les autorisations du plugin Commandes
4 *
5 * @plugin     Commandes
6 * @copyright  2014
7 * @author     Ateliers CYM, Matthieu Marcillaud, Les Développements Durables
8 * @licence    GPL 3
9 * @package    SPIP\Commandes\Autorisations
10 */
11
12// Sécurité
13if (!defined('_ECRIRE_INC_VERSION')) return;
14
15/**
16 * Fonction d'appel pour le pipeline
17 * @pipeline autoriser
18 */
19function commandes_autoriser(){}
20
21
22/**
23 * Autorisation à passer une commande
24 *
25 * - un client (auteur+contact)
26 * Nécessite le plugin Contacts et organisations
27 * Todo : autoriser en absence du plugin
28 *
29 * @param  string $faire Action demandée
30 * @param  string $type  Type d'objet sur lequel appliquer l'action
31 * @param  int    $id    Identifiant de la commande
32 * @param  array  $qui   Description de l'auteur demandant l'autorisation
33 * @param  array  $opts  Options de cette autorisation
34 * @return bool          true s'il a le droit, false sinon
35**/ 
36function autoriser_commander_dist($faire, $type, $id, $qui, $opts){
37        if (
38                $id_auteur = $qui['id_auteur'] > 0
39                and $contact = sql_getfetsel('id_contact', 'spip_contacts_liens', 'objet = '.sql_quote('auteur').' and id_objet = '.sql_quote($id_auteur))
40        )
41                return true;
42        else
43                return false;
44}
45
46
47/**
48 * Autorisation à voir une commande
49 *
50 * - l'auteur de la commande
51 * - admin (mais pas restreint)
52 *
53 * @param  string $faire Action demandée
54 * @param  string $type  Type d'objet sur lequel appliquer l'action
55 * @param  int    $id    Identifiant de la commande
56 * @param  array  $qui   Description de l'auteur demandant l'autorisation
57 * @param  array  $opts  Options de cette autorisation
58 * @return bool          true s'il a le droit, false sinon
59**/ 
60function autoriser_commande_voir_dist($faire, $type, $id, $qui, $opts) {
61        return
62                $qui['id_auteur'] == sql_getfetsel('id_auteur', 'spip_commandes', 'id_commande = '.sql_quote($id)) OR 
63                        ( $qui['statut'] == '0minirezo'
64                         AND !$qui['restreint'] );
65}
66
67
68/**
69 * Autorisation à supprimer une commande
70 *
71 * - statut `encours`
72 * - admin (mais pas restreint) ou auteur de la commande
73 *
74 * @param  string $faire Action demandée
75 * @param  string $type  Type d'objet sur lequel appliquer l'action
76 * @param  int    $id    Identifiant de la commande
77 * @param  array  $qui   Description de l'auteur demandant l'autorisation
78 * @param  array  $opts  Options de cette autorisation
79 * @return bool          true s'il a le droit, false sinon
80**/ 
81function autoriser_commande_supprimer_dist($faire, $type, $id, $qui, $opts) {
82        return
83                sql_getfetsel('statut', table_objet_sql('commande'), "id_commande=".intval($id)) == 'encours'
84                AND (( $qui['statut'] == '0minirezo' AND !$qui['restreint'] )
85                  OR $qui['id_auteur'] == sql_getfetsel('id_auteur', table_objet_sql('commande'), "id_commande=".intval($id)));
86}
87
88
89/**
90 * Autorisation à supprimer un détail d'une commande
91 *
92 * - par défaut la même chose que pour modifier la commande
93 *
94 * @param  string $faire Action demandée
95 * @param  string $type  Type d'objet sur lequel appliquer l'action
96 * @param  int    $id    Identifiant de la commande
97 * @param  array  $qui   Description de l'auteur demandant l'autorisation
98 * @param  array  $opts  Options de cette autorisation
99 * @return bool          true s'il a le droit, false sinon
100**/ 
101function autoriser_commande_supprimerdetail_dist($faire, $type, $id, $qui, $opts) {
102        return autoriser('modifier', 'commande', $id, $qui, $opts);
103}
104
105
106/**
107 * Autorisation à modifier une commande
108 *
109 * - l'auteur de la commande si celle-ci est encore "encours"
110 * - sinon admin (mais pas restreint)
111 *
112 * @param  string $faire Action demandée
113 * @param  string $type  Type d'objet sur lequel appliquer l'action
114 * @param  int    $id    Identifiant de la commande
115 * @param  array  $qui   Description de l'auteur demandant l'autorisation
116 * @param  array  $opts  Options de cette autorisation
117 * @return bool          true s'il a le droit, false sinon
118**/ 
119function autoriser_commande_modifier_dist($faire, $type, $id, $qui, $opts) {
120        $infos_commande = sql_fetsel('id_auteur, statut', table_objet_sql('commande'), "id_commande=".intval($id));
121       
122        if (
123                $infos_commande
124                and (
125                        ($infos_commande['statut'] == 'encours' and $qui['id_auteur'] == $infos_commande['id_auteur'])
126                        or
127                        ($qui['statut'] == '0minirezo' and !$qui['restreint'])
128                )
129        ) {
130                return true;
131        }
132       
133        return false;
134}
135
136/**
137 * Autorisation à dater une commande
138 *
139 * Idem autorisation modifier
140 *
141 * @param  string $faire Action demandée
142 * @param  string $type  Type d'objet sur lequel appliquer l'action
143 * @param  int    $id    Identifiant de la commande
144 * @param  array  $qui   Description de l'auteur demandant l'autorisation
145 * @param  array  $opts  Options de cette autorisation
146 * @return bool          true s'il a le droit, false sinon
147**/ 
148function autoriser_commande_dater_dist($faire, $type, $id, $qui, $opts) {
149        return autoriser('modifier', 'commande', $id, $qui, $opts);
150}
151
152/**
153 * Autorisation à voir la facture liée à une commande
154 *
155 * Celleux qui peuvent voir la commande + que l'URL ne soit pas vide
156 *
157 * @param  string $faire Action demandée
158 * @param  string $type  Type d'objet sur lequel appliquer l'action
159 * @param  int    $id    Identifiant de la commande
160 * @param  array  $qui   Description de l'auteur demandant l'autorisation
161 * @param  array  $opts  Options de cette autorisation
162
163 * @return bool          true s'il a le droit, false sinon
164**/ 
165function autoriser_commande_voir_facture_dist($faire, $type, $id, $qui, $opts) {
166        include_spip('inc/filtres');
167        $url_facture = filtrer('generer_url_commande_facture', $id);
168        return autoriser('voir', 'commande', $id, $qui, $opts) and !empty($url_facture);
169}
170
171
172/**
173 * Autorisation à modifier un détail de commande
174 *
175 * Pouvoir modifier la commande
176 *
177 * @param  string $faire Action demandée
178 * @param  string $type  Type d'objet sur lequel appliquer l'action
179 * @param  int    $id    Identifiant de la commande
180 * @param  array  $qui   Description de l'auteur demandant l'autorisation
181 * @param  array  $opts  Options de cette autorisation
182 * @return bool          true s'il a le droit, false sinon
183**/ 
184function autoriser_commandesdetail_modifier_dist($faire, $type, $id, $qui, $opts) {
185        if ($id_commande = sql_getfetsel('id_commande', 'spip_commandes_details', 'id_commandes_detail = '.intval($id))) {
186                return autoriser('modifier', 'commande', $id_commande, $qui, $opts);
187        }
188       
189        return false;
190}
191
192/**
193 * Autorisation à supprimer un détail de commande
194 *
195 * Pouvoir modifier la commande
196 *
197 * @param  string $faire Action demandée
198 * @param  string $type  Type d'objet sur lequel appliquer l'action
199 * @param  int    $id    Identifiant de la commande
200 * @param  array  $qui   Description de l'auteur demandant l'autorisation
201 * @param  array  $opts  Options de cette autorisation
202 * @return bool          true s'il a le droit, false sinon
203**/ 
204function autoriser_commandesdetail_supprimer_dist($faire, $type, $id, $qui, $opts) {
205        if ($id_commande = sql_getfetsel('id_commande', 'spip_commandes_details', 'id_commandes_detail = '.intval($id))) {
206                return autoriser('modifier', 'commande', $id_commande, $qui, $opts);
207        }
208       
209        return false;
210}
211
212?>
Note: See TracBrowser for help on using the repository browser.