source: spip-zone/_contribs_/_gestiondroit_/ecrire/inc_droits.php3 @ 456

Last change on this file since 456 was 456, checked in by aurelien.levy@…, 15 years ago

debut de gestion externalisé des droits la fonction est dans inc_droits , le sql correspond à la table des droits, inc.php3 appel inc_droits les autre page sont un début d'exemple d'intégration

File size: 6.0 KB
Line 
1<?
2// ---------------------------------------------
3//      Fonction pour lire l'intégralité des droits d'un utilisateur
4//  Retourne un booléen
5//      Updated Alain 23/06/05
6//  Updated Alain 19/07/05
7// ---------------------------------------------
8
9function auteur_droit($action, $objet, $objet_id, $statut_auteur='auto', $id_auteur='auto') {
10        global $auteur_session;
11        // global $display;
12       
13        if ($id_auteur == 'auto')        {$id_auteur = $auteur_session['id_auteur'];}
14        if ($statut_auteur =='auto') {$statut_auteur = $auteur_session['statut'];}
15       
16        if ($display) {print "check si $statut_auteur ($id_auteur) peut $action  $objet($objet_id)<br><br>";}
17       
18        // ---------------------------------------------
19        //              DROITS GÉNÉRAUX
20        //      statut =>? action sur objet
21        // ---------------------------------------------
22        $qgd = "select * from a_droit
23                        where dr_statut_spip = '$statut_auteur'
24                        and dr_objet = '$objet'
25                        and dr_action = '$action'
26                        ";
27                       
28        $rgd = mysql_query($qgd);
29        $tgd = mysql_num_rows($rgd);
30       
31        if ($tgd == 1) {
32                $obj = mysql_fetch_object($rgd);
33                $resultat                       = $obj -> dr_droit;
34        }
35        else { // au cas où
36                $resultat = 'N';
37        }
38               
39        // ---------------------------------------------
40        //              DROITS PARTICULIERS RESTREIGNANT LES DROITS GENERAUX
41        //      ssi $resultat = O
42        // ---------------------------------------------
43       
44        // ---------------------------------------------
45        //       modification article, si non validé   
46        // ---------------------------------------------
47        if ($resultat == 'O' 
48                and $objet == 'article' 
49                and $statut_auteur == '1comite'
50                and $action == 'modifier') {
51               
52                // check if article non validé
53                $qart = "select statut from spip_articles
54                                where id_article = '$objet_id'
55                                ";     
56                $rart = mysql_query($qart);     
57                $article = mysql_fetch_array($rart);
58               
59                if ($article["statut"] != 'prepa' and $article["statut"] != 'prop') {
60                        $resultat = 'N';
61                }
62               
63                $statut = $article["statut"];
64        }
65       
66       
67        // ---------------------------------------------
68        //              restriction admin restreint
69        //              pour admin
70        //      pourrait être pour rédacteur, ??
71        // ---------------------------------------------
72       
73        // sur rubrique
74        if ($resultat == 'O' 
75                and $objet == 'rubrique' 
76                and ($statut_auteur == '0minirezo')) {
77               
78                // is retriction in spip_auteurs_rubriques ?
79                $qaurub = "select * from spip_auteurs_rubriques
80                                where id_auteur = '$id_auteur'
81                                ";
82                $raurub = mysql_query($qaurub);
83                $taurub = mysql_numrows($raurub);
84               
85                if ($taurub > 0) {
86                        // is rubrique comptabile ??
87                        $qrub = "select * from spip_auteurs_rubriques
88                                where id_auteur = '$id_auteur'
89                                and id_rubrique = '$objet_id'
90                                ";
91                        $rrub = mysql_query($qrub);
92                        $trub = mysql_numrows($rrub);
93                       
94                                if ($trub == 0) {
95                                        $resultat = 'N';
96                                }
97                                else {
98                                        // no restriction specific
99                                }
100                        }
101                }
102                else {
103                        // no restriction global
104                }
105        // ----------------------------------------------
106       
107        // sur article associé
108        if ($resultat == 'O' 
109                and $objet == 'article' 
110                and ($statut_auteur == '0minirezo')) {
111               
112                // is retriction in spip_auteurs_rubriques ?
113                $qaurub = "select * from spip_auteurs_rubriques
114                                where id_auteur = '$id_auteur'
115                                ";
116                $raurub = mysql_query($qaurub);
117                $taurub = mysql_numrows($raurub);
118               
119               
120                if ($taurub > 0) {
121                        // is article compatible with rubrique ??
122                        $qrub = "select * from spip_auteurs_rubriques as sarub, spip_articles as sart
123                                where sarub.id_auteur = '$id_auteur'
124                                and sart.id_rubrique = sarub.id_rubrique
125                                and sart.id_article = '$objet_id'
126                                ";
127                        $rrub = mysql_query($qrub);
128                        $trub = mysql_numrows($rrub);
129                       
130                                if ($trub == 0) {
131                                        $resultat = 'N';
132                                }
133                                else {
134                                        // no restriction specific
135                                }
136                }
137               
138                else {
139                        // no restriction global
140                }
141                       
142        }
143        // ----------------------------------------------
144        // booleanify resultat
145        if ($display) {print "resultat = $resultat<br>";}
146
147       
148        if ($resultat == 'N') {$resultat_bool = false;}
149        else {$resultat_bool = true;}
150       
151        return $resultat_bool; 
152}
153
154
155
156// ---------------------------------------------
157//              function auteur_statut
158//      raccourci
159// ---------------------------------------------
160function auteur_statut ($any_statut, $id_auteur='auto') {
161        global $auteur_session;
162        // global $display;
163       
164        $statut_cts = array(
165                                        'administrateur' => '0minirezo',
166                                        'redacteur' => '1comite'
167                                        );
168       
169        if ($id_auteur == 'auto') {$id_auteur = $auteur_session['id_auteur'];}
170        $statut_auteur_spip = $auteur_session['statut'];
171        $any_statut_spip = $statut_cts["$any_statut"];
172       
173        if ($display) {print "sp = $statut_auteur_spip / as = $any_statut / asc = $any_statut_spip<br><br>";}
174       
175        if ($any_statut == $statut_auteur_spip or $any_statut_spip == $statut_auteur_spip) {
176                $resultat = true;
177        }
178        else {
179                $resultat = false;
180        }
181        return $resultat;
182}
183
184// ---------------------------------------------
185//              function auteur_self
186//      raccourci
187// ---------------------------------------------
188function auteur_self () {
189        global $auteur_session, $id_auteur;
190        // global $display;
191
192        if ($id_auteur == $auteur_session['id_auteur']) {
193                $resultat = true;
194        }
195        else {
196                $resultat = false;
197        }
198        return $resultat;
199}
200
201// ---------------------------------------------
202//              lit les condition specifiques
203// ---------------------------------------------
204function auteur_condition($action, $objet, $objet_id, $statut_auteur='auto', $id_auteur='auto') {
205        global $auteur_session;
206        // global $display;
207       
208        if ($id_auteur == 'auto')        {$id_auteur = $auteur_session['id_auteur'];}
209        if ($statut_auteur =='auto') {$statut_auteur = $auteur_session['statut'];}
210       
211        if ($display) {print "check condition $statut_auteur ($id_auteur) pour $action  $objet($objet_id)<br><br>";}
212       
213        // ---------------------------------------------
214        //              condition
215        //      statut =>? action sur objet
216        // ---------------------------------------------
217        $qgd = "select * from a_droit
218                        where dr_statut_spip = '$statut_auteur'
219                        and dr_objet = '$objet'
220                        and dr_action = '$action'
221                        ";
222                       
223        $rgd = mysql_query($qgd);
224        $tgd = mysql_num_rows($rgd);
225       
226        if ($tgd == 1) {
227                $obj = mysql_fetch_object($rgd);
228                $resultat                       = $obj -> dr_condition;
229        }
230        else { // au cas où
231                $resultat = 'N';
232        }
233        return $resultat;
234}
235?>
Note: See TracBrowser for help on using the repository browser.