source: spip-zone/_plugins_/formidable/trunk/formidable_autorisations.php @ 65580

Last change on this file since 65580 was 65580, checked in by marcimat@…, 8 years ago

Un peu plus de migration de Formidable vers SPIP 3 :

  • paquet.xml et administration nouvelle mode
  • un peu de phpdoc.
File size: 2.8 KB
Line 
1<?php
2
3// Sécurité
4if (!defined("_ECRIRE_INC_VERSION")) return;
5
6// Juste pour l'appel du pipeline
7function formidable_autoriser(){}
8
9// Seuls les admins peuvent éditer les formulaires
10function autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $options){
11        if (isset($qui['statut']) and $qui['statut'] <= '0minirezo' and !$qui['restreint']) return true;
12        else return false;
13}
14
15// Admins et rédacteurs peuvent voir les formulaires existants
16function autoriser_formulaires_bouton_dist($faire, $type, $id, $qui, $options){
17        if (isset($qui['statut']) and $qui['statut'] <= '1comite') return true;
18        else return false;
19}
20function autoriser_formulaires21_bouton_dist($faire, $type, $id, $qui, $options){
21        return autoriser('bouton', 'formulaires', $id, $qui, $options);
22}
23
24// On peut répondre à un formulaire si :
25// - c'est un formulaire classique
26// - on enregistre et que multiple = oui
27// - on enregistre et que multiple = non et que la personne n'a pas répondu encore
28// - on enregistre et que multiple = non et que modifiable = oui
29function autoriser_formulaire_repondre_dist($faire, $type, $id, $qui, $options){
30        // On regarde si il y a déjà le formulaire dans les options
31        if (isset($options['formulaire']))
32                $formulaire = $options['formulaire'];
33        // Sinon on va le chercher
34        else{
35                $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id);
36        }
37       
38        $traitements = unserialize($formulaire['traitements']);
39       
40        // S'il n'y a pas d'enregistrement, c'est forcément bon
41        if (!($options = $traitements['enregistrement']))
42                return true;
43        // Sinon faut voir les options
44        else{
45                // Si multiple = oui c'est bon
46                if ($options['multiple'])
47                        return true;
48                else{
49                        // Si c'est modifiable, c'est bon
50                        if ($options['modifiable'])
51                                return true;
52                        else{
53                                include_spip('inc/formidable');
54                                // Si la personne n'a jamais répondu, c'est bon
55                                if (!formidable_verifier_reponse_formulaire($id, $options['identification']))
56                                        return true;
57                                else
58                                        return false;
59                        }
60                }
61        }
62}
63
64// On peut modérer une réponse si on est admin
65function autoriser_formulaires_reponse_instituer_dist($faire, $type, $id, $qui, $options){
66        if (isset($qui['statut']) and $qui['statut'] <= '0minirezo' and !$qui['restreint']) return true;
67        else return false;
68}
69
70// Au moins rédacteur pour voir les résultats
71function autoriser_formulaires_reponse_voir_dist($faire, $type, $id, $qui, $options){
72        if (isset($qui['statut']) and $qui['statut'] <= '1comite') return true;
73        else return false;
74}
75
76// Il faut pouvoir éditer un formulaire pour pouvoir en supprimer des réponses
77function autoriser_formulaires_reponse_supprimer_dist($faire, $type, $id, $qui, $options){
78        // On récupère l'id du formulaire
79        if ($id_formulaire = intval(sql_getfetsel('id_formulaire', 'spip_formulaires_reponses', $id)))
80                return autoriser('editer', 'formulaire', $id_formulaire);
81        else
82                return false;
83}
84
85?>
Note: See TracBrowser for help on using the repository browser.