source: spip-zone/_plugins_/info_sites/trunk/info_sites_autorisations.php @ 106340

Last change on this file since 106340 was 106340, checked in by teddy.spip@…, 22 months ago

Un soucis sur les autorisations d'info sites. Up de z

  • Property svn:eol-style set to LF
  • Property svn:executable set to *
File size: 39.5 KB
Line 
1<?php
2/**
3 * Définit les autorisations du plugin Info Sites
4 *
5 * @plugin     Info Sites
6 * @copyright  2014-2016
7 * @author     Teddy Payet
8 * @licence    GNU/GPL
9 * @package    SPIP\Info_Sites\Autorisations
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15include_spip('inc/autoriser');
16
17/**
18 * Fonction d'appel pour le pipeline
19 *
20 * @pipeline autoriser
21 */
22function info_sites_autoriser() {
23}
24
25/**
26 * Autorisation d'accès è l'espace privé ?
27 * Surcharge de autoriser_ecrire_dist() > ecrire/inc/autoriser.php
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 l'objet
32 * @param  array $qui    Description de l'auteur demandant l'autorisation
33 * @param  array $opt    Options de cette autorisation
34 *
35 * @return bool          true s'il a le droit, false sinon
36 **/
37function autoriser_ecrire($faire, $type, $id, $qui, $opt) {
38        return $qui['statut'] == '0minirezo' and !$qui['restreint'];
39}
40
41/**
42 * Autorisation de créer un contenu
43 *
44 * Accordée par defaut ceux qui accèdent à l'espace privé,
45 * peut-être surchargée au cas par cas
46 *
47 * @param  string $faire Action demandée
48 * @param  string $type  Type d'objet sur lequel appliquer l'action
49 * @param  int $id       Identifiant de l'objet
50 * @param  array $qui    Description de l'auteur demandant l'autorisation
51 * @param  array $opt    Options de cette autorisation
52 *
53 * @return bool          true s'il a le droit, false sinon
54 **/
55function autoriser_creer($faire, $type, $id, $qui, $opt) {
56        return autoriser('infositescreer', $type, $id, $qui, $opt);
57}
58
59/**
60 * Autorisation de joindre un document
61 *
62 * On ne peut joindre un document qu'a un objet qu'on a le droit d'editer
63 * mais il faut prevoir le cas d'une *creation* par un redacteur, qui correspond
64 * au hack id_objet = 0-id_auteur
65 *
66 * Il faut aussi que les documents aient ete actives sur les objets concernes
67 * ou que ce soit un article, sur lequel on peut toujours uploader des images
68 *
69 * @param  string $faire Action demandée
70 * @param  string $type  Type d'objet sur lequel appliquer l'action
71 * @param  int $id       Identifiant de l'objet
72 * @param  array $qui    Description de l'auteur demandant l'autorisation
73 * @param  array $opt    Options de cette autorisation
74 *
75 * @return bool          true s'il a le droit, false sinon
76 */
77function autoriser_joindredocument($faire, $type, $id, $qui, $opt) {
78        include_spip('inc/config');
79
80        // objet autorisé en upload ?
81        if ($type == 'article' or in_array(table_objet_sql($type), explode(',', lire_config('documents_objets', '')))) {
82                // sur un objet existant
83                if ($id > 0) {
84                        /* On indique directement l'utilisation de l'autorisation infositesmodifier
85                         * pour aller plus vite sur le formulaire d'ajout de document.
86                         * Il faudrait voir peut-être par la suite s'il n'y a pas une autre source de lenteur.
87                         */
88                        return autoriser('infositesmodifier', $type, $id, $qui, $opt);
89                } // sur un nouvel objet
90                elseif ($id < 0 and (abs($id) == $qui['id_auteur'])) {
91                        return autoriser('ecrire', $type, $id, $qui, $opt);
92                }
93        }
94
95        return false;
96}
97
98// *****************************
99// Autorisation par défaut
100// *****************************
101
102/**
103 * Autorisation de créer
104 *
105 * @param  string $faire Action demandée
106 * @param  string $type  Type d'objet sur lequel appliquer l'action
107 * @param  int $id       Identifiant de l'objet
108 * @param  array $qui    Description de l'auteur demandant l'autorisation
109 * @param  array $opt    Options de cette autorisation
110 *
111 * @return bool          true s'il a le droit, false sinon
112 **/
113function autoriser_infositescreer_dist($faire, $type, $id, $qui, $opt) {
114        return in_array($qui['statut'], array(
115                '0minirezo',
116                '1comite',
117        ));
118}
119
120/**
121 * Autorisation de voir
122 *
123 * @param  string $faire Action demandée
124 * @param  string $type  Type d'objet sur lequel appliquer l'action
125 * @param  int $id       Identifiant de l'objet
126 * @param  array $qui    Description de l'auteur demandant l'autorisation
127 * @param  array $opt    Options de cette autorisation
128 *
129 * @return bool          true s'il a le droit, false sinon
130 **/
131function autoriser_infositesvoir_dist($faire, $type, $id, $qui, $opt) {
132        return in_array($qui['statut'], array(
133                '0minirezo',
134                '1comite',
135        ));
136}
137
138/**
139 * Autorisation de 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 l'objet
144 * @param  array $qui    Description de l'auteur demandant l'autorisation
145 * @param  array $opt    Options de cette autorisation
146 *
147 * @return bool          true s'il a le droit, false sinon
148 **/
149function autoriser_infositesmodifier_dist($faire, $type, $id, $qui, $opt) {
150
151        if ($type === 'auteur') {
152                include_spip('inc/autoriser');
153
154                return autoriser_auteur_modifier_dist($faire, $type, $id, $qui, $opt);
155        }
156
157        return in_array($qui['statut'], array(
158                '0minirezo',
159                '1comite',
160        ));
161}
162
163/**
164 * Autorisation de supprimer
165 *
166 * @param  string $faire Action demandée
167 * @param  string $type  Type d'objet sur lequel appliquer l'action
168 * @param  int $id       Identifiant de l'objet
169 * @param  array $qui    Description de l'auteur demandant l'autorisation
170 * @param  array $opt    Options de cette autorisation
171 *
172 * @return bool          true s'il a le droit, false sinon
173 **/
174function autoriser_infositessupprimer_dist($faire, $type, $id, $qui, $opt) {
175        return $qui['statut'] == '0minirezo' and !$qui['restreint'];
176}
177
178/**
179 * Autorisation de mise à jour
180 *
181 * @param  string $faire Action demandée
182 * @param  string $type  Type d'objet sur lequel appliquer l'action
183 * @param  int $id       Identifiant de l'objet
184 * @param  array $qui    Description de l'auteur demandant l'autorisation
185 * @param  array $opt    Options de cette autorisation
186 *
187 * @return bool          true s'il a le droit, false sinon
188 **/
189function autoriser_infositesmaj_dist($faire, $type, $id, $qui, $opt) {
190        return in_array($qui['statut'], array(
191                '0minirezo',
192                '1comite',
193        ));
194}
195
196/**
197 * Autorisation de changer le statut
198 *
199 * @param  string $faire Action demandée
200 * @param  string $type  Type d'objet sur lequel appliquer l'action
201 * @param  int $id       Identifiant de l'objet
202 * @param  array $qui    Description de l'auteur demandant l'autorisation
203 * @param  array $opt    Options de cette autorisation
204 *
205 * @return bool          true s'il a le droit, false sinon
206 **/
207function autoriser_infositesinstituer_dist($faire, $type, $id, $qui, $opt) {
208        return in_array($qui['statut'], array(
209                '0minirezo',
210                '1comite',
211        ));
212}
213
214/**
215 * Autorisation d'association
216 *
217 * @param  string $faire Action demandée
218 * @param  string $type  Type d'objet sur lequel appliquer l'action
219 * @param  int $id       Identifiant de l'objet
220 * @param  array $qui    Description de l'auteur demandant l'autorisation
221 * @param  array $opt    Options de cette autorisation
222 *
223 * @return bool          true s'il a le droit, false sinon
224 **/
225function autoriser_infositesassocier_dist($faire, $type, $id, $qui, $opt) {
226        if (is_array($opt) and isset($opt['projet'])) {
227                $confirm = confirmer_roles_auteurs_projets($qui, $opt['projet']);
228
229                return $confirm;
230        }
231
232        return in_array($qui['statut'], array(
233                '0minirezo',
234                '1comite',
235        ));
236}
237
238// *****************************
239// Auteurs
240// *****************************
241
242/**
243 * Autorisation d'association (auteurs)
244 *
245 * @param  string $faire Action demandée
246 * @param  string $type  Type d'objet sur lequel appliquer l'action
247 * @param  int $id       Identifiant de l'objet
248 * @param  array $qui    Description de l'auteur demandant l'autorisation
249 * @param  array $opt    Options de cette autorisation
250 *
251 * @return bool          true s'il a le droit, false sinon
252 **/
253function autoriser_auteurs_infositesassocier_dist($faire, $type, $id, $qui, $opt) {
254        if (is_array($opt) and isset($opt['projet'])) {
255                $confirm = confirmer_roles_auteurs_projets($qui, $opt['projet']);
256
257                return $confirm;
258        }
259
260        return in_array($qui['statut'], array(
261                '0minirezo',
262                '1comite',
263        ));
264}
265
266// *****************************
267// Les sites de projets (projetssite)
268// *****************************
269
270/**
271 * Surcharge d'autorisation de créer (projetssite)
272 *
273 * @param  string $faire Action demandée
274 * @param  string $type  Type d'objet sur lequel appliquer l'action
275 * @param  int $id       Identifiant de l'objet
276 * @param  array $qui    Description de l'auteur demandant l'autorisation
277 * @param  array $opt    Options de cette autorisation
278 *
279 * @return bool          true s'il a le droit, false sinon
280 **/
281function autoriser_projetssite_creer($faire, $type, $id, $qui, $opt) {
282        return autoriser('infositescreer', 'projetssite', $id, $qui, $opt);
283}
284
285/**
286 * Autorisation de créer (projetssite)
287 *
288 * @param  string $faire Action demandée
289 * @param  string $type  Type d'objet sur lequel appliquer l'action
290 * @param  int $id       Identifiant de l'objet
291 * @param  array $qui    Description de l'auteur demandant l'autorisation
292 * @param  array $opt    Options de cette autorisation
293 *
294 * @return bool          true s'il a le droit, false sinon
295 **/
296function autoriser_projetssite_infositescreer_dist($faire, $type, $id, $qui, $opt) {
297
298        if (is_array($opt) and isset($opt['projet'])) {
299                $confirm = confirmer_roles_auteurs_projets($qui, $opt['projet']);
300
301                return $confirm;
302        }
303
304        return in_array($qui['statut'], array(
305                '0minirezo',
306                '1comite',
307        ));
308}
309
310/**
311 * Autorisation de voir (projetssite)
312 *
313 * @param  string $faire Action demandée
314 * @param  string $type  Type d'objet sur lequel appliquer l'action
315 * @param  int $id       Identifiant de l'objet
316 * @param  array $qui    Description de l'auteur demandant l'autorisation
317 * @param  array $opt    Options de cette autorisation
318 *
319 * @return bool          true s'il a le droit, false sinon
320 **/
321function autoriser_projetssite_infositesvoir_dist($faire, $type, $id, $qui, $opt) {
322        return true;
323}
324
325/**
326 * Surcharge d'autorisation de modifier (projetssite)
327 *
328 * @param  string $faire Action demandée
329 * @param  string $type  Type d'objet sur lequel appliquer l'action
330 * @param  int $id       Identifiant de l'objet
331 * @param  array $qui    Description de l'auteur demandant l'autorisation
332 * @param  array $opt    Options de cette autorisation
333 *
334 * @return bool          true s'il a le droit, false sinon
335 **/
336function autoriser_projetssite_modifier($faire, $type, $id, $qui, $opt) {
337        return autoriser('infositesmodifier', 'projetssite', $id, $qui, $opt);
338}
339
340/**
341 * Autorisation de modifier (projetssite)
342 *
343 * @param  string $faire Action demandée
344 * @param  string $type  Type d'objet sur lequel appliquer l'action
345 * @param  int $id       Identifiant de l'objet
346 * @param  array $qui    Description de l'auteur demandant l'autorisation
347 * @param  array $opt    Options de cette autorisation
348 *
349 * @return bool          true s'il a le droit, false sinon
350 **/
351function autoriser_projetssite_infositesmodifier_dist($faire, $type, $id, $qui, $opt) {
352        if (is_array($opt) and isset($opt['projet'])) {
353                $confirm = confirmer_roles_auteurs_projets($qui, $opt['projet']);
354
355                return $confirm;
356        }
357
358        return in_array($qui['statut'], array(
359                '0minirezo',
360                '1comite',
361        ));
362}
363
364/**
365 * Autorisation de supprimer (projetssite)
366 *
367 * @param  string $faire Action demandée
368 * @param  string $type  Type d'objet sur lequel appliquer l'action
369 * @param  int $id       Identifiant de l'objet
370 * @param  array $qui    Description de l'auteur demandant l'autorisation
371 * @param  array $opt    Options de cette autorisation
372 *
373 * @return bool          true s'il a le droit, false sinon
374 **/
375function autoriser_projetssite_infositessupprimer_dist($faire, $type, $id, $qui, $opt) {
376        if (is_array($opt) and isset($opt['projet'])) {
377                $confirm = confirmer_roles_auteurs_projets($qui, $opt['projet']);
378
379                return $confirm;
380        }
381
382        return $qui['statut'] == '0minirezo' and !$qui['restreint'];
383}
384
385/**
386 * Autorisation de mise à jour (projetssite)
387 *
388 * @param  string $faire Action demandée
389 * @param  string $type  Type d'objet sur lequel appliquer l'action
390 * @param  int $id       Identifiant de l'objet
391 * @param  array $qui    Description de l'auteur demandant l'autorisation
392 * @param  array $opt    Options de cette autorisation
393 *
394 * @return bool          true s'il a le droit, false sinon
395 **/
396function autoriser_projetssite_infositesmaj_dist($faire, $type, $id, $qui, $opt) {
397        if (is_array($opt) and isset($opt['projet'])) {
398                $confirm = confirmer_roles_auteurs_projets($qui, $opt['projet']);
399
400                return $confirm;
401        }
402
403        return in_array($qui['statut'], array(
404                '0minirezo',
405                '1comite',
406        ));
407}
408
409/**
410 * Surcharge d'autorisation d'association (projetssites)
411 *
412 * @param  string $faire Action demandée
413 * @param  string $type  Type d'objet sur lequel appliquer l'action
414 * @param  int $id       Identifiant de l'objet
415 * @param  array $qui    Description de l'auteur demandant l'autorisation
416 * @param  array $opt    Options de cette autorisation
417 *
418 * @return bool          true s'il a le droit, false sinon
419 **/
420function autoriser_associerprojets_sites($faire, $type, $id, $qui, $opt) {
421        return autoriser('infositesassocier', 'projetssites', $id, $qui, $opt);
422}
423
424/**
425 * Autorisation d'association (projetssite)
426 *
427 * @param  string $faire Action demandée
428 * @param  string $type  Type d'objet sur lequel appliquer l'action
429 * @param  int $id       Identifiant de l'objet
430 * @param  array $qui    Description de l'auteur demandant l'autorisation
431 * @param  array $opt    Options de cette autorisation
432 *
433 * @return bool          true s'il a le droit, false sinon
434 **/
435function autoriser_projetssites_infositesassocier_dist($faire, $type, $id, $qui, $opt) {
436        if (is_array($opt) and isset($opt['projet'])) {
437                $confirm = confirmer_roles_auteurs_projets($qui, $opt['projet']);
438
439                return $confirm;
440        }
441
442        return in_array($qui['statut'], array(
443                '0minirezo',
444                '1comite',
445        ));
446}
447
448/**
449 * Autorisation de voir les données sensibles (projetssite)
450 *
451 * @param  string $faire Action demandée
452 * @param  string $type  Type d'objet sur lequel appliquer l'action
453 * @param  int $id       Identifiant de l'objet
454 * @param  array $qui    Description de l'auteur demandant l'autorisation
455 * @param  array $opt    Options de cette autorisation
456 *
457 * @return bool          true s'il a le droit, false sinon
458 **/
459function autoriser_projetssitesecurite_voir($faire, $type, $id, $qui, $opt) {
460        include_spip('base/abstract_sql');
461        $auteurs = sql_fetsel("role", "spip_auteurs_liens",
462                "objet='projet' AND id_objet IN (SELECT id_objet FROM spip_projets_sites_liens WHERE objet='projet' AND id_projets_site=" . $id . ") AND id_auteur=" . $qui['id_auteur']);
463
464        if (isset($auteurs['role'])) {
465                // Pour le moment, quelque soit le rôle de l'auteur, il peut voir les éléments sécurisés
466                // En effet, l'auteur a été ajouté au projet du site, donc, il fait parti de l'équipe.
467                return true;
468        }
469
470        // Si l'auteur ne fait pas parti de l'équipe, on prend en compte son statut.
471        return $qui['statut'] == '0minirezo';
472}
473
474// *****************************
475// Les projets
476// *****************************
477
478/**
479 * Surcharge d'autorisation de créer (projet)
480 *
481 * @param  string $faire Action demandée
482 * @param  string $type  Type d'objet sur lequel appliquer l'action
483 * @param  int $id       Identifiant de l'objet
484 * @param  array $qui    Description de l'auteur demandant l'autorisation
485 * @param  array $opt    Options de cette autorisation
486 *
487 * @return bool          true s'il a le droit, false sinon
488 **/
489function autoriser_projet_creer($faire, $type, $id, $qui, $opt) {
490        return autoriser('infositescreer', 'projet', $id, $qui, $opt);
491}
492
493/**
494 * Surcharge d'autorisation de modifier (projet)
495 *
496 * @param  string $faire Action demandée
497 * @param  string $type  Type d'objet sur lequel appliquer l'action
498 * @param  int $id       Identifiant de l'objet
499 * @param  array $qui    Description de l'auteur demandant l'autorisation
500 * @param  array $opt    Options de cette autorisation
501 *
502 * @return bool          true s'il a le droit, false sinon
503 **/
504function autoriser_projet_modifier($faire, $type, $id, $qui, $opt) {
505        return autoriser('infositesmodifier', 'projet', $id, $qui, $opt);
506}
507
508/**
509 * Autorisation de créer (projet)
510 *
511 * @param  string $faire Action demandée
512 * @param  string $type  Type d'objet sur lequel appliquer l'action
513 * @param  int $id       Identifiant de l'objet
514 * @param  array $qui    Description de l'auteur demandant l'autorisation
515 * @param  array $opt    Options de cette autorisation
516 *
517 * @return bool          true s'il a le droit, false sinon
518 **/
519function autoriser_projet_infositescreer_dist($faire, $type, $id, $qui, $opt) {
520        return in_array($qui['statut'], array(
521                '0minirezo',
522                '1comite',
523        ));
524}
525
526/**
527 * Autorisation de voir (projet)
528 *
529 * @param  string $faire Action demandée
530 * @param  string $type  Type d'objet sur lequel appliquer l'action
531 * @param  int $id       Identifiant de l'objet
532 * @param  array $qui    Description de l'auteur demandant l'autorisation
533 * @param  array $opt    Options de cette autorisation
534 *
535 * @return bool          true s'il a le droit, false sinon
536 **/
537function autoriser_projet_infositesvoir_dist($faire, $type, $id, $qui, $opt) {
538        return true;
539}
540
541/**
542 * Autorisation de modifier (projet)
543 *
544 * @param  string $faire Action demandée
545 * @param  string $type  Type d'objet sur lequel appliquer l'action
546 * @param  int $id       Identifiant de l'objet
547 * @param  array $qui    Description de l'auteur demandant l'autorisation
548 * @param  array $opt    Options de cette autorisation
549 *
550 * @return bool          true s'il a le droit, false sinon
551 **/
552function autoriser_projet_infositesmodifier_dist($faire, $type, $id, $qui, $opt) {
553
554        if (in_array($qui['statut'], array('0minirezo',))) {
555                return true;
556        }
557
558        return confirmer_roles_auteurs_projets($qui, $id);
559}
560
561/**
562 * Autorisation de supprimer (projet)
563 *
564 * @param  string $faire Action demandée
565 * @param  string $type  Type d'objet sur lequel appliquer l'action
566 * @param  int $id       Identifiant de l'objet
567 * @param  array $qui    Description de l'auteur demandant l'autorisation
568 * @param  array $opt    Options de cette autorisation
569 *
570 * @return bool          true s'il a le droit, false sinon
571 **/
572function autoriser_projet_infositessupprimer_dist($faire, $type, $id, $qui, $opt) {
573        return $qui['statut'] == '0minirezo' and !$qui['restreint'];
574}
575
576/**
577 * Autorisation de mise à jour (projet)
578 *
579 * @param  string $faire Action demandée
580 * @param  string $type  Type d'objet sur lequel appliquer l'action
581 * @param  int $id       Identifiant de l'objet
582 * @param  array $qui    Description de l'auteur demandant l'autorisation
583 * @param  array $opt    Options de cette autorisation
584 *
585 * @return bool          true s'il a le droit, false sinon
586 **/
587function autoriser_projet_infositesmaj_dist($faire, $type, $id, $qui, $opt) {
588        return in_array($qui['statut'], array(
589                '0minirezo',
590                '1comite',
591        ));
592}
593
594/**
595 * Surcharge d'autorisation d'association (projet)
596 *
597 * @param  string $faire Action demandée
598 * @param  string $type  Type d'objet sur lequel appliquer l'action
599 * @param  int $id       Identifiant de l'objet
600 * @param  array $qui    Description de l'auteur demandant l'autorisation
601 * @param  array $opt    Options de cette autorisation
602 *
603 * @return bool          true s'il a le droit, false sinon
604 **/
605function autoriser_associerprojets($faire, $type, $id, $qui, $opt) {
606        return autoriser('infositesassocier', 'projets', $id, $qui, $opt);
607}
608
609/**
610 * Autorisation d'association (projet)
611 *
612 * @param  string $faire Action demandée
613 * @param  string $type  Type d'objet sur lequel appliquer l'action
614 * @param  int $id       Identifiant de l'objet
615 * @param  array $qui    Description de l'auteur demandant l'autorisation
616 * @param  array $opt    Options de cette autorisation
617 *
618 * @return bool          true s'il a le droit, false sinon
619 **/
620function autoriser_projets_infositesassocier_dist($faire, $type, $id, $qui, $opt) {
621        return in_array($qui['statut'], array(
622                '0minirezo',
623                '1comite',
624        ));
625}
626
627// *****************************
628// Les cadres de projets
629// *****************************
630
631/**
632 * Autorisation de voir (projetscadre)
633 *
634 * @param  string $faire Action demandée
635 * @param  string $type  Type d'objet sur lequel appliquer l'action
636 * @param  int $id       Identifiant de l'objet
637 * @param  array $qui    Description de l'auteur demandant l'autorisation
638 * @param  array $opt    Options de cette autorisation
639 *
640 * @return bool          true s'il a le droit, false sinon
641 **/
642function autoriser_projetscadre_infositesvoir_dist($faire, $type, $id, $qui, $opt) {
643        return true;
644}
645
646/**
647 * Surcharge d'autorisation d'association (projetscadres)
648 *
649 * @param  string $faire Action demandée
650 * @param  string $type  Type d'objet sur lequel appliquer l'action
651 * @param  int $id       Identifiant de l'objet
652 * @param  array $qui    Description de l'auteur demandant l'autorisation
653 * @param  array $opt    Options de cette autorisation
654 *
655 * @return bool          true s'il a le droit, false sinon
656 **/
657function autoriser_associerprojets_cadres($faire, $type, $id, $qui, $opt) {
658        return autoriser('infositesassocier', 'projetscadres', $id, $qui, $opt);
659}
660
661/**
662 * Autorisation de creer un cadre de projet
663 *
664 * @param  string $faire Action demandée
665 * @param  string $type  Type d'objet sur lequel appliquer l'action
666 * @param  int $id       Identifiant de l'objet
667 * @param  array $qui    Description de l'auteur demandant l'autorisation
668 * @param  array $opt    Options de cette autorisation
669 *
670 * @return bool          true s'il a le droit, false sinon
671 **/
672function autoriser_projetscadre_creer($faire, $type, $id, $qui, $opt) {
673        return autoriser('infositescreer', 'projetscadre', $id, $qui, $opt);
674}
675
676/**
677 * Autorisation de modifier une cadre de projet
678 *
679 * @param  string $faire Action demandée
680 * @param  string $type  Type d'objet sur lequel appliquer l'action
681 * @param  int $id       Identifiant de l'objet
682 * @param  array $qui    Description de l'auteur demandant l'autorisation
683 * @param  array $opt    Options de cette autorisation
684 *
685 * @return bool          true s'il a le droit, false sinon
686 **/
687function autoriser_projetscadre_modifier($faire, $type, $id, $qui, $opt) {
688        return autoriser('infositesmodifier', 'projetscadre', $id, $qui, $opt);
689}
690
691/**
692 * Autorisation de suppression d'un cadre de projet
693 *
694 * @param  string $faire Action demandée
695 * @param  string $type  Type d'objet sur lequel appliquer l'action
696 * @param  int $id       Identifiant de l'objet
697 * @param  array $qui    Description de l'auteur demandant l'autorisation
698 * @param  array $opt    Options de cette autorisation
699 *
700 * @return bool          true s'il a le droit, false sinon
701 **/
702function autoriser_projetscadre_supprimer($faire, $type, $id, $qui, $opt) {
703        return autoriser('infositessupprimer', 'projetscadre', $id, $qui, $opt);
704}
705
706// *****************************
707// Les organisations
708// *****************************
709
710/**
711 * Surcharge d'autorisation d'association (organisations)
712 *
713 * @param  string $faire Action demandée
714 * @param  string $type  Type d'objet sur lequel appliquer l'action
715 * @param  int $id       Identifiant de l'objet
716 * @param  array $qui    Description de l'auteur demandant l'autorisation
717 * @param  array $opt    Options de cette autorisation
718 *
719 * @return bool          true s'il a le droit, false sinon
720 **/
721function autoriser_associerorganisations($faire, $type, $id, $qui, $opt) {
722        return autoriser('infositesassocier', 'organisations', $id, $qui, $opt);
723}
724
725/**
726 * Autorisation de creer une organisation
727 *
728 * @param  string $faire Action demandée
729 * @param  string $type  Type d'objet sur lequel appliquer l'action
730 * @param  int $id       Identifiant de l'objet
731 * @param  array $qui    Description de l'auteur demandant l'autorisation
732 * @param  array $opt    Options de cette autorisation
733 *
734 * @return bool          true s'il a le droit, false sinon
735 **/
736function autoriser_organisation_creer($faire, $type, $id, $qui, $opt) {
737        return autoriser('infositescreer', 'organisation', $id, $qui, $opt);
738}
739
740/**
741 * Autorisation de modifier une organisation
742 *
743 * @param  string $faire Action demandée
744 * @param  string $type  Type d'objet sur lequel appliquer l'action
745 * @param  int $id       Identifiant de l'objet
746 * @param  array $qui    Description de l'auteur demandant l'autorisation
747 * @param  array $opt    Options de cette autorisation
748 *
749 * @return bool          true s'il a le droit, false sinon
750 **/
751function autoriser_organisation_modifier($faire, $type, $id, $qui, $opt) {
752        return autoriser('infositesmodifier', 'organisation', $id, $qui, $opt);
753}
754
755/**
756 * Autorisation de suppression d'une organisation
757 *
758 * @param  string $faire Action demandée
759 * @param  string $type  Type d'objet sur lequel appliquer l'action
760 * @param  int $id       Identifiant de l'objet
761 * @param  array $qui    Description de l'auteur demandant l'autorisation
762 * @param  array $opt    Options de cette autorisation
763 *
764 * @return bool          true s'il a le droit, false sinon
765 **/
766function autoriser_organisation_supprimer($faire, $type, $id, $qui, $opt) {
767        return autoriser('infositessupprimer', 'organisation', $id, $qui, $opt);
768}
769
770/**
771 * Autorisation de voir (organisation)
772 *
773 * @param  string $faire Action demandée
774 * @param  string $type  Type d'objet sur lequel appliquer l'action
775 * @param  int $id       Identifiant de l'objet
776 * @param  array $qui    Description de l'auteur demandant l'autorisation
777 * @param  array $opt    Options de cette autorisation
778 *
779 * @return bool          true s'il a le droit, false sinon
780 **/
781function autoriser_organisation_infositesvoir_dist($faire, $type, $id, $qui, $opt) {
782        return true;
783}
784
785/**
786 * Autorisation de voir (organisations)
787 *
788 * @param  string $faire Action demandée
789 * @param  string $type  Type d'objet sur lequel appliquer l'action
790 * @param  int $id       Identifiant de l'objet
791 * @param  array $qui    Description de l'auteur demandant l'autorisation
792 * @param  array $opt    Options de cette autorisation
793 *
794 * @return bool          true s'il a le droit, false sinon
795 **/
796function autoriser_organisations_infositesvoir_dist($faire, $type, $id, $qui, $opt) {
797        return true;
798}
799
800// *****************************
801// Les contacts
802// *****************************
803
804/**
805 * Surcharge d'autorisation d'association (contact)
806 *
807 * @param  string $faire Action demandée
808 * @param  string $type  Type d'objet sur lequel appliquer l'action
809 * @param  int $id       Identifiant de l'objet
810 * @param  array $qui    Description de l'auteur demandant l'autorisation
811 * @param  array $opt    Options de cette autorisation
812 *
813 * @return bool          true s'il a le droit, false sinon
814 **/
815function autoriser_associercontacts($faire, $type, $id, $qui, $opt) {
816        return autoriser('infositesassocier', 'contacts', $id, $qui, $opt);
817}
818
819/**
820 * Autorisation de creer une contact
821 *
822 * @param  string $faire Action demandée
823 * @param  string $type  Type d'objet sur lequel appliquer l'action
824 * @param  int $id       Identifiant de l'objet
825 * @param  array $qui    Description de l'auteur demandant l'autorisation
826 * @param  array $opt    Options de cette autorisation
827 *
828 * @return bool          true s'il a le droit, false sinon
829 **/
830function autoriser_contact_creer($faire, $type, $id, $qui, $opt) {
831        return autoriser('infositescreer', 'contact', $id, $qui, $opt);
832}
833
834/**
835 * Autorisation de modifier une contact
836 *
837 * @param  string $faire Action demandée
838 * @param  string $type  Type d'objet sur lequel appliquer l'action
839 * @param  int $id       Identifiant de l'objet
840 * @param  array $qui    Description de l'auteur demandant l'autorisation
841 * @param  array $opt    Options de cette autorisation
842 *
843 * @return bool          true s'il a le droit, false sinon
844 **/
845function autoriser_contact_modifier($faire, $type, $id, $qui, $opt) {
846        return autoriser('infositesmodifier', 'contact', $id, $qui, $opt);
847}
848
849/**
850 * Autorisation de suppression d'une contact
851 *
852 * @param  string $faire Action demandée
853 * @param  string $type  Type d'objet sur lequel appliquer l'action
854 * @param  int $id       Identifiant de l'objet
855 * @param  array $qui    Description de l'auteur demandant l'autorisation
856 * @param  array $opt    Options de cette autorisation
857 *
858 * @return bool          true s'il a le droit, false sinon
859 **/
860function autoriser_contact_supprimer($faire, $type, $id, $qui, $opt) {
861        return autoriser('infositessupprimer', 'contact', $id, $qui, $opt);
862}
863
864/**
865 * Autorisation de modifier une contact (infositesmodifier)
866 *
867 * @param  string $faire Action demandée
868 * @param  string $type  Type d'objet sur lequel appliquer l'action
869 * @param  int $id       Identifiant de l'objet
870 * @param  array $qui    Description de l'auteur demandant l'autorisation
871 * @param  array $opt    Options de cette autorisation
872 *
873 * @return bool          true s'il a le droit, false sinon
874 **/
875function autoriser_contact_infositesmodifier_dist($faire, $type, $id, $qui, $opt) {
876        return in_array($qui['statut'], array(
877                        '0minirezo',
878                        '1comite',
879                )) or (
880                        $id_auteur = sql_getfetsel('id_auteur', 'spip_contacts', 'id_contact = ' . intval($id))
881                        and $id_auteur > 0
882                        and $id_auteur == $qui['id_auteur']
883                );
884}
885
886/**
887 * Autorisation de suppression d'une contact (infositessupprimer)
888 *
889 * @param  string $faire Action demandée
890 * @param  string $type  Type d'objet sur lequel appliquer l'action
891 * @param  int $id       Identifiant de l'objet
892 * @param  array $qui    Description de l'auteur demandant l'autorisation
893 * @param  array $opt    Options de cette autorisation
894 *
895 * @return bool          true s'il a le droit, false sinon
896 **/
897function autoriser_contact_infositessupprimer_dist($faire, $type, $id, $qui, $opt) {
898        // On prend les statuts par défaut
899        return in_array($qui['statut'], array(
900                        '0minirezo',
901                        '1comite',
902                )) or (
903                        $id_auteur = sql_getfetsel('id_auteur', 'spip_contacts', 'id_contact = ' . intval($id))
904                        and $id_auteur > 0
905                        and $id_auteur == $qui['id_auteur']
906                );
907}
908
909/**
910 * Autorisation de voir (contact)
911 *
912 * @param  string $faire Action demandée
913 * @param  string $type  Type d'objet sur lequel appliquer l'action
914 * @param  int $id       Identifiant de l'objet
915 * @param  array $qui    Description de l'auteur demandant l'autorisation
916 * @param  array $opt    Options de cette autorisation
917 *
918 * @return bool          true s'il a le droit, false sinon
919 **/
920function autoriser_contact_infositesvoir_dist($faire, $type, $id, $qui, $opt) {
921        return true;
922}
923
924// *****************************
925// Les coordonnées
926// *****************************
927
928
929// --------------
930// Objet Adresses
931
932/**
933 * Autorisation de creer (adresse)
934 *
935 * @param  string $faire Action demandée
936 * @param  string $type  Type d'objet sur lequel appliquer l'action
937 * @param  int $id       Identifiant de l'objet
938 * @param  array $qui    Description de l'auteur demandant l'autorisation
939 * @param  array $opt    Options de cette autorisation
940 *
941 * @return bool          true s'il a le droit, false sinon
942 **/
943function autoriser_adresse_creer($faire, $type, $id, $qui, $opt) {
944        return autoriser('infositescreer', 'adresse', $id, $qui, $opt);
945}
946
947/**
948 * Autorisation de voir (adresse)
949 *
950 * @param  string $faire Action demandée
951 * @param  string $type  Type d'objet sur lequel appliquer l'action
952 * @param  int $id       Identifiant de l'objet
953 * @param  array $qui    Description de l'auteur demandant l'autorisation
954 * @param  array $opt    Options de cette autorisation
955 *
956 * @return bool          true s'il a le droit, false sinon
957 **/
958function autoriser_adresse_voir($faire, $type, $id, $qui, $opt) {
959        return autoriser('infositesvoir', 'adresse', $id, $qui, $opt);
960}
961
962/**
963 * Autorisation de modifier (adresse)
964 *
965 * @param  string $faire Action demandée
966 * @param  string $type  Type d'objet sur lequel appliquer l'action
967 * @param  int $id       Identifiant de l'objet
968 * @param  array $qui    Description de l'auteur demandant l'autorisation
969 * @param  array $opt    Options de cette autorisation
970 *
971 * @return bool          true s'il a le droit, false sinon
972 **/
973function autoriser_adresse_modifier($faire, $type, $id, $qui, $opt) {
974        return autoriser('infositesmodifier', 'adresse', $id, $qui, $opt);
975}
976
977/**
978 * Autorisation de supprimer (adresse)
979 *
980 * @param  string $faire Action demandée
981 * @param  string $type  Type d'objet sur lequel appliquer l'action
982 * @param  int $id       Identifiant de l'objet
983 * @param  array $qui    Description de l'auteur demandant l'autorisation
984 * @param  array $opt    Options de cette autorisation
985 *
986 * @return bool          true s'il a le droit, false sinon
987 **/
988function autoriser_adresse_supprimer($faire, $type, $id, $qui, $opt) {
989        return autoriser('infositessupprimer', 'adresse', $id, $qui, $opt);
990}
991
992/**
993 * Autorisation d'associer (adresse)
994 *
995 * @param  string $faire Action demandée
996 * @param  string $type  Type d'objet sur lequel appliquer l'action
997 * @param  int $id       Identifiant de l'objet
998 * @param  array $qui    Description de l'auteur demandant l'autorisation
999 * @param  array $opt    Options de cette autorisation
1000 *
1001 * @return bool          true s'il a le droit, false sinon
1002 **/
1003function autoriser_associeradresses($faire, $type, $id, $qui, $opt) {
1004        return autoriser('infositesassocier', 'adresses', $id, $qui, $opt);
1005}
1006
1007// --------------
1008// Objet numeros
1009
1010/**
1011 * Autorisation de creer (numéro)
1012 *
1013 * @param  string $faire Action demandée
1014 * @param  string $type  Type d'objet sur lequel appliquer l'action
1015 * @param  int $id       Identifiant de l'objet
1016 * @param  array $qui    Description de l'auteur demandant l'autorisation
1017 * @param  array $opt    Options de cette autorisation
1018 *
1019 * @return bool          true s'il a le droit, false sinon
1020 **/
1021function autoriser_numero_creer($faire, $type, $id, $qui, $opt) {
1022        return autoriser('infositescreer', 'numero', $id, $qui, $opt);
1023}
1024
1025/**
1026 * Autorisation de voir (numéro)
1027 *
1028 * @param  string $faire Action demandée
1029 * @param  string $type  Type d'objet sur lequel appliquer l'action
1030 * @param  int $id       Identifiant de l'objet
1031 * @param  array $qui    Description de l'auteur demandant l'autorisation
1032 * @param  array $opt    Options de cette autorisation
1033 *
1034 * @return bool          true s'il a le droit, false sinon
1035 **/
1036function autoriser_numero_voir($faire, $type, $id, $qui, $opt) {
1037        return autoriser('infositesvoir', 'numero', $id, $qui, $opt);
1038}
1039
1040/**
1041 * Autorisation de modifier (numéro)
1042 *
1043 * @param  string $faire Action demandée
1044 * @param  string $type  Type d'objet sur lequel appliquer l'action
1045 * @param  int $id       Identifiant de l'objet
1046 * @param  array $qui    Description de l'auteur demandant l'autorisation
1047 * @param  array $opt    Options de cette autorisation
1048 *
1049 * @return bool          true s'il a le droit, false sinon
1050 **/
1051function autoriser_numero_modifier($faire, $type, $id, $qui, $opt) {
1052        return autoriser('infositesmodifier', 'numero', $id, $qui, $opt);
1053}
1054
1055/**
1056 * Autorisation de supprimer (numéro)
1057 *
1058 * @param  string $faire Action demandée
1059 * @param  string $type  Type d'objet sur lequel appliquer l'action
1060 * @param  int $id       Identifiant de l'objet
1061 * @param  array $qui    Description de l'auteur demandant l'autorisation
1062 * @param  array $opt    Options de cette autorisation
1063 *
1064 * @return bool          true s'il a le droit, false sinon
1065 **/
1066function autoriser_numero_supprimer($faire, $type, $id, $qui, $opt) {
1067        return autoriser('infositessupprimer', 'numero', $id, $qui, $opt);
1068}
1069
1070/**
1071 * Autorisation d'associer (numéro)
1072 *
1073 * @param  string $faire Action demandée
1074 * @param  string $type  Type d'objet sur lequel appliquer l'action
1075 * @param  int $id       Identifiant de l'objet
1076 * @param  array $qui    Description de l'auteur demandant l'autorisation
1077 * @param  array $opt    Options de cette autorisation
1078 *
1079 * @return bool          true s'il a le droit, false sinon
1080 **/
1081function autoriser_associernumeros($faire, $type, $id, $qui, $opt) {
1082        return autoriser('infositesassocier', 'numeros', $id, $qui, $opt);
1083}
1084
1085
1086// ------------
1087// Objet emails
1088
1089/**
1090 * Autorisation de creer (email)
1091 *
1092 * @param  string $faire Action demandée
1093 * @param  string $type  Type d'objet sur lequel appliquer l'action
1094 * @param  int $id       Identifiant de l'objet
1095 * @param  array $qui    Description de l'auteur demandant l'autorisation
1096 * @param  array $opt    Options de cette autorisation
1097 *
1098 * @return bool          true s'il a le droit, false sinon
1099 **/
1100function autoriser_email_creer($faire, $type, $id, $qui, $opt) {
1101        return autoriser('infositescreer', 'email', $id, $qui, $opt);
1102}
1103
1104/**
1105 * Autorisation de voir (email)
1106 *
1107 * @param  string $faire Action demandée
1108 * @param  string $type  Type d'objet sur lequel appliquer l'action
1109 * @param  int $id       Identifiant de l'objet
1110 * @param  array $qui    Description de l'auteur demandant l'autorisation
1111 * @param  array $opt    Options de cette autorisation
1112 *
1113 * @return bool          true s'il a le droit, false sinon
1114 **/
1115function autoriser_email_voir($faire, $type, $id, $qui, $opt) {
1116        return autoriser('infositesvoir', 'email', $id, $qui, $opt);
1117}
1118
1119/**
1120 * Autorisation de modifier (email)
1121 *
1122 * @param  string $faire Action demandée
1123 * @param  string $type  Type d'objet sur lequel appliquer l'action
1124 * @param  int $id       Identifiant de l'objet
1125 * @param  array $qui    Description de l'auteur demandant l'autorisation
1126 * @param  array $opt    Options de cette autorisation
1127 *
1128 * @return bool          true s'il a le droit, false sinon
1129 **/
1130function autoriser_email_modifier($faire, $type, $id, $qui, $opt) {
1131        return autoriser('infositesmodifier', 'email', $id, $qui, $opt);
1132}
1133
1134/**
1135 * Autorisation de supprimer (email)
1136 *
1137 * @param  string $faire Action demandée
1138 * @param  string $type  Type d'objet sur lequel appliquer l'action
1139 * @param  int $id       Identifiant de l'objet
1140 * @param  array $qui    Description de l'auteur demandant l'autorisation
1141 * @param  array $opt    Options de cette autorisation
1142 *
1143 * @return bool          true s'il a le droit, false sinon
1144 **/
1145function autoriser_email_supprimer($faire, $type, $id, $qui, $opt) {
1146        return autoriser('infositessupprimer', 'email', $id, $qui, $opt);
1147}
1148
1149
1150/**
1151 * Autorisation d'associer (email)
1152 *
1153 * @param  string $faire Action demandée
1154 * @param  string $type  Type d'objet sur lequel appliquer l'action
1155 * @param  int $id       Identifiant de l'objet
1156 * @param  array $qui    Description de l'auteur demandant l'autorisation
1157 * @param  array $opt    Options de cette autorisation
1158 *
1159 * @return bool          true s'il a le droit, false sinon
1160 **/
1161function autoriser_associeremails($faire, $type, $id, $qui, $opt) {
1162        return autoriser('infositesassocier', 'emails', $id, $qui, $opt);
1163}
1164
1165
1166/**
1167 * Récupérer les rôles d'un auteur sur un projet et ainsi s'avoir s'il a droit à certaines actions.
1168 *
1169 * @param array $qui
1170 * @param int $id_projet
1171 * @param array $role_creation
1172 *
1173 * @return bool|array
1174 */
1175function confirmer_roles_auteurs_projets($qui, $id_projet = 0, $role_creation = array()) {
1176        include_spip('base/abstract_sql');
1177        $roles = array();
1178        $auteur_roles = sql_allfetsel('role', 'spip_auteurs_liens',
1179                'objet=' . sql_quote('projet') . ' AND id_auteur=' . $qui['id_auteur'] . ' AND id_objet=' . $id_projet);
1180        if (is_array($auteur_roles) and count($auteur_roles) > 0) {
1181                foreach ($auteur_roles as $auteur_role) {
1182                        $roles[] = $auteur_role['role'];
1183                }
1184        }
1185        // Liste des rôles pouvant créer des sites sur un projet.
1186        if (is_string($role_creation)) {
1187                // Si on passe un string en 3ème paramètre le rôle tel que 'developpeur', on le reformate en tableau.
1188                // Pas de séparateur/serialize prévu pour le moment.
1189                $role_creation = array($role_creation);
1190        }
1191        // On revoit le contenu du tableau $role_creation par sécu
1192        if (is_array($role_creation) and count($role_creation) == 0) {
1193                // par défaut
1194                $role_creation = array(
1195                        'dir_projets',
1196                        'chef_projets',
1197                        'ref_tech',
1198                        'architecte',
1199                        'lead_developpeur',
1200                        'developpeur',
1201                );
1202        }
1203        // Si on est administrateur, pas de soucis.
1204        if (in_array($qui['statut'], array('0minirezo'))) {
1205                return true;
1206        }
1207        $roles_autorises = array_intersect($roles, $role_creation);
1208        // roles_autorises est toujours un array et s'il est vide,
1209        // c'est que l'auteur n'a pas le rôle adéquate.
1210        if (is_array($roles_autorises) and count($roles_autorises) > 0) {
1211                return true;
1212        }
1213
1214        // On prend les statuts par défaut
1215        return false;
1216}
Note: See TracBrowser for help on using the repository browser.