source: spip-zone/_plugins_/_dev_/acces_groupes/exec/accesgroupes_admin_fonctions.php @ 5862

Last change on this file since 5862 was 5862, checked in by cy_altern@…, 15 years ago

début du filtrage complet de l'espace privé par surcharge des requêtes SQL : plus de rubriques restreintes *presque partout*, reste les articles, les sites et les forums...

File size: 24.5 KB
Line 
1<?php
2/*  LES FONCTIONS utilisées par accesgroupes_admin uniquement  */
3
4// affichage de la liste des rubriques disponibles pour l'utilisateur
5//      rubriques privées en rouge + vert + jaune + bleu
6function accesgroupes_enfant($leparent){
7                                global $Trub_grpe_ec_parent;  // tableau des rubriques restreintes par le groupe en cours
8                                global $groupe;
9        global $connect_toutes_rubriques;
10        global $i;
11        global $couleur_claire, $spip_lang_left;
12        global $browser_name, $browser_version;
13                                global $dernier_option;
14//                              global $prive_public_ec, $prive_public_parent_ec;
15
16        $i++;
17//        $prive_public_ec = $prive_public_parent;
18                               
19                                $query = "SELECT * FROM spip_rubriques WHERE id_parent = $leparent ORDER BY 0+titre,titre";
20        $result = spip_query($query);
21        while($row = spip_fetch_array($result)){
22              $my_rubrique = $row['id_rubrique'];
23              $titre = typo($row['titre']);
24              $statut_rubrique = $row['statut'];
25              $lang_rub = $row['lang'];
26              $langue_choisie_rub = $row['langue_choisie'];
27              $style = "";
28              $espace = "";
29//              $prive = $row['prive'];
30     
31              if (eregi("mozilla", $browser_name)) {
32                  $style .= "padding-$spip_lang_left: ".($i*16)."px;";
33              } 
34                                        else {
35                    for ($count = 0; $count <= $i; $count ++) {
36                                                                                        $espace .= "&nbsp;&nbsp;&nbsp;&nbsp;";
37                                                                        }
38                                }
39              if ($i == 1) {
40                  $style .= "background: $couleur_claire url("._DIR_IMG_PACK."secteur-12.gif) no-repeat ".(($i - 1) * 16)."px 0px; ";
41              }
42                                                        else {
43                                                                         $style .= "background: $couleur_claire url("._DIR_IMG_PACK."rubrique-12.gif) no-repeat ".(($i * 16) - 12)."px 2px; ";
44                                                        }
45           // affiche en rouge/vert/jaune/bleu les rubriques privées : prive_public = 0 => prive+public | 1 => prive | 2 => public
46                                                        $prive_public_ec = accesgroupes_trouve_prive_public($my_rubrique, $groupe);
47                                                        $prive_public_parent = accesgroupes_trouve_prive_public($leparent, $groupe);
48                                                        if ($prive_public_parent >= 3 AND $prive_public_parent <= 5) {
49                                                                 $prive_public_parent -= 3;
50                                                        } 
51                                        // remplissage du tableau des rubriques restreintes par le groupe en cours : permet d'avoir le prive_public_parent de chaque rubrique restreinte par le groupe en cours
52                                      $Trub_grpe_ec_parent[$my_rubrique] = $prive_public_parent; 
53                                        switch ($prive_public_ec) {
54                                                                 case 0 :               // privé + public
55                                                                                        $style .= "color: #f00;";
56                                                                 break;
57                                                                 case 1 :               // privé seul
58                                                                                        $style .= "color: #093;";
59                                                                 break;
60                                                                 case 2 :               // public seul
61                                                                                        $style .= "color: #f90;";
62                                                                 break;
63                                                                 case 3 :               // autres groupes : privé+public
64                                                                                        $style .= "color: #00f;";
65                                                                 break;
66                                                                                 case 4 :               // autres groupes :  privé
67                                                                                        $style .= "color: #00f;";
68                                                                 break;
69                                                                                 case 5 :               // autres groupes : public
70                                                                                        $style .= "color: #00f;";
71                                                                 break;
72                                                                 default :      // rubrique sans restriction
73                                                                                        $style .= "color: #000;";
74                                                                 break;
75                                        }
76              if ($prive_public_ec <= 5) {
77                                                                 $style .= "font-weight:bold; ";
78                                            }
79              if ($statut_rubrique != 'publie') {
80                                                         $titre = "($titre , non publi&eacute;e)";
81                                                }
82              if (lire_meta('multi_rubriques') == 'oui' AND $langue_choisie_rub == "oui") {
83                                                         $titre = $titre." [".traduire_nom_langue($lang_rub)."]";
84                                                }
85              $selec_rub = "selec_rub";
86              if ($browser_name == "MSIE" AND floor($browser_version) == "5") {
87                                                         $selec_rub = ""; // Bug de MSIE MacOs 9.0
88                                                }
89              if (acces_rubrique($my_rubrique)) {
90                  echo "\r\n <option".mySel($my_rubrique,$id_parent)." class='$selec_rub' style=\"$style\">$espace".supprimer_tags($titre);
91//echo " i = $i my_rubrique = $my_rubrique prive_public_ec = $prive_public_ec prive_public_parent = $prive_public_parent";
92                                                                        if ($prive_public_ec >= 3 AND $prive_public_ec <= 5) {
93                                                                                 echo " (";
94                                                                                 echo ($prive_public_ec == 3 ? _T('accesgroupes:prive_public') : ($prive_public_ec == 4 ? _T('accesgroupes:prive_seul') : _T('accesgroupes:public_seul') ));
95                                                                                 echo ")";
96                                                                        }
97                                                                        echo "</option>\n";
98//                                                                      $prive_public_parent >= 3 ? $prive_public_parent_ec = $prive_public_parent - 3 : $prive_public_parent_ec = $prive_public_parent;
99                                                                        if ($prive_public_ec < 3) {
100                                                                         echo "<script language=\"JavaScript\" type=\"text/javascript\">
101                                                                                            Tacces_rub.push([\"$my_rubrique\", \"$prive_public_ec\", \"$prive_public_parent\"]);</script>";
102                                                                }
103                                                                        elseif ($prive_public_ec <=5 AND $prive_public_ec > 2) {
104                                                                                                 echo "<script language=\"JavaScript\" type=\"text/javascript\">
105                                                                                            Tacces_rub.push([\"$my_rubrique\", \"".($prive_public_ec - 3)."\", \"$prive_public_parent\"]);</script>";
106                                                                        }
107 
108              }
109              accesgroupes_enfant($my_rubrique);
110        }
111        $i = $i - 1;
112//                              $i == 1 ? $prive_public_ec = 10 : $prive_public_ec = $prive_public_parent_ec;
113}
114
115//  fct pour renvoyer le code numérique du type d'accès à une rubrique restreinte
116//      si la rubrique est contrôlée par le groupe $id_grpacces retourne : 0 => prive + public, 1 => privé, 2 => public
117//      si la  rubrique est contrôlée par un autre groupe retourne : 3 =>  prive + public, 4 => privé, 5 => public
118function accesgroupes_trouve_prive_public($id_rub, $id_grpacces) {
119                                 $min = 10;
120                                 do {
121                                                $prive_ec = accesgroupes_valeur_prive($id_rub, $id_grpacces);
122                                                if ($prive_ec < $min) {
123                                                         $min = $prive_ec;
124                                                }
125            $sql = "SELECT id_parent FROM spip_rubriques WHERE id_rubrique = $id_rub LIMIT 1";
126            $result = spip_query($sql);
127            if ($row = spip_fetch_array($result)) {
128               $id_rub = $row['id_parent'];
129            }
130         }
131                 while ($id_rub > 0); // vérification de l'ascendance : on boucle jusqu'à être remonté à la racine du site
132         return $min;
133}       
134//print '<br>trouve_prive_public(42, 1) = '.accesgroupes_trouve_prive_public(42, 1);
135
136// fct pour retourner la valeur privé mini d'une rubrique
137// (on envisage le cas ou une rubrique peut être restreinte par plusieurs groupes, avec des valeurts de privé différentes)
138function accesgroupes_valeur_prive($id_rub, $id_grpacces) {
139        $pp_ec = 10;
140                                $sql2 = "SELECT prive_public, id_grpacces FROM spip_accesgroupes_acces WHERE id_rubrique = $id_rub";
141        $result2 = spip_query($sql2);                           
142                while ($row2 = spip_fetch_array($result2)){
143                                        $id_groupe_ec = $row2['id_grpacces'];
144                                        $prive_public_ec = $row2['prive_public'];
145                                                        if ($id_groupe_ec != $id_grpacces) {
146                                                                 $prive_public_ec += 3;
147                                                        }
148                                                        if ($prive_public_ec < $pp_ec) {
149                                                                 $pp_ec = $prive_public_ec;
150                                                        }
151                          }
152                                return $pp_ec;
153}
154
155
156// les fonctions nécessaires pour la gestions des ss-groupes et statuts inclus dans les groupes
157
158// fct de vérification que le groupe_pere n'est pas inclu dans le groupe_fils ou l'un de ses ascendants (récursivement)
159// renvoie FALSE si groupe_pere ou l'un de ses ascendants contient groupe_fils
160function accesgroupes_verifie_inclusions_groupe($id_groupe_fils, $id_groupe_pere) {                             
161                                 $sql111 = "SELECT COUNT(*) AS inclusions FROM spip_accesgroupes_auteurs WHERE id_grpacces = $id_groupe_fils AND id_ss_groupe = $id_groupe_pere LIMIT 1";
162                                 $result111 = spip_query($sql111);
163                                 $row = spip_fetch_array($result111);
164                                 if ($row['inclusions'] > 0){
165                                         return FALSE;
166                                 }
167                        // le père n'est pas inclu dans le fils => on teste toute l'ascendance du fils par récurrence avant d'être OK
168                                 else {
169                                 $sql110 = "SELECT id_grpacces FROM spip_accesgroupes_auteurs WHERE id_ss_groupe = $id_groupe_pere";
170                                 $result110 = spip_query($sql110);
171                                 while ($row = spip_fetch_array($result110)) {
172                                                         $id_groupe_ec = $row["id_groupe"];
173                                                                         if (accesgroupes_verifie_inclusions_groupe($id_groupe_fils, $id_groupe_ec) == FALSE) {
174                                                                                        return FALSE;
175                                                                         }
176                                 }
177                                 }                               
178                        // pas d'inclusion d'un parent donc OK
179                                 return TRUE;                           
180}
181
182// fct pour construire le tableau de la descendance d'un groupe (récursivement)
183function accesgroupes_descendance_groupe($groupe_pere, $Tdescendance = array()) {
184                         $sql121 = "SELECT spip_accesgroupes_auteurs.id_ss_groupe, spip_accesgroupes_groupes.nom, spip_accesgroupes_auteurs.id_grpacces
185                                                                          FROM spip_accesgroupes_auteurs
186                                                                                LEFT JOIN spip_accesgroupes_groupes
187                                                                                ON spip_accesgroupes_auteurs.id_ss_groupe = spip_accesgroupes_groupes.id_grpacces
188                                                                                WHERE actif = 1 
189                                                                                AND id_ss_groupe != 0
190                                                                                ORDER BY nom";
191//                                                                              WHERE spip_accesgroupes_auteurs.id_grpacces = $groupe_pere 
192                         $result121 = spip_query($sql121);
193                                 while ($row = spip_fetch_array($result121)) {
194                                                         if ($row['id_grpacces'] != $groupe_pere) {
195                                                                        continue;
196                                                         }
197                                                         $id_descendant_ec = $row["id_ss_groupe"];
198                                                         $nom_descendant_ec = $row["nom"];
199                                                         $Tdescendance[$groupe_pere][] = array('id' => $id_descendant_ec, 'nom' => $nom_descendant_ec);
200                                                         $Tdescendance = accesgroupes_descendance_groupe($id_descendant_ec, $Tdescendance);
201                                 }
202                                 return $Tdescendance;
203}
204
205// fct pour afficher le tableau $Tdesc de la descendance du groupe $id_grpe (récursivement)
206function accesgroupes_affiche_descendance($id_grpe, $Tdesc, $a_afficher = "") {
207                                 if (is_array($Tdesc[$id_grpe]) AND count($Tdesc[$id_grpe]) > 0) {
208                                                $a_afficher .= "<div style='margin-left: 10px; font-size: 10px; padding: 2px;'>";
209                                                foreach ($Tdesc[$id_grpe] as $a => $Td) {
210                                                                         $a_afficher .= "<img src='"._DIR_PLUGIN_ACCESGROUPES."/img_pack/sous-groupe.png' alt='|_' style='vertical-align:top;'>";
211                                                 $a_afficher .= "<img src='"._DIR_PLUGIN_ACCESGROUPES."/img_pack/groupe-12.png' alt='|_' style='vertical-align:top;'> <a href=\"$PHP_SELF?exec=accesgroupes_admin&groupe=".$Td['id']."\">".$Td['nom']."</a><br />";
212                                                                         $a_afficher = accesgroupes_affiche_descendance($Td['id'], $Tdesc, $a_afficher);
213                          }
214                                                $a_afficher .= "</div>";
215                                 }
216                                 return $a_afficher;
217}
218
219// fct pour créer le tableau des rubriques gérées par les groupes
220function accesgroupes_affiche_groupes_rubriques() {
221         $a_afficher =  "<table CELLPADDING=2 CELLSPACING=0 WIDTH='100%' class='arial2' style='border: 1px solid #aaaaaa;'>\n";
222         $a_afficher .= "<tr><th colspan=\"2\">"._T('accesgroupes:groupes_rubriques')."</th></tr>";
223         $sql301 = "SELECT nom, id_grpacces, actif FROM spip_accesgroupes_groupes GROUP BY id_grpacces";
224                                 $result301 = spip_query($sql301);
225         while ($row301 = spip_fetch_array($result301)) {
226                                 $id_grpe_ec = $row301['id_grpacces'];
227                                 $nom_grpe_ec = $row301['nom'];
228               $a_afficher .= "<tr style='background-color: #eeeeee;'>";
229               $a_afficher .= "<td class='verdana11' style='border-top: 1px solid #cccccc; width: 14px; vertical-align:top;'>";
230                                 if (accesgroupes_est_admin_restreint() == TRUE AND accesgroupes_est_proprio($id_grpe_ec) == TRUE) {
231                                                                        $a_afficher .= "<img src='img_pack/admin-12.gif' alt='|_' style='vertical-align:top;'>";
232                                                         }
233                                                         $a_afficher .= "<img src='"._DIR_PLUGIN_ACCESGROUPES."/img_pack/groupe-12.png' alt='|_' style='vertical-align:top;'></td>";
234                                 $a_afficher .= "<td style='border-top: 1px solid #cccccc;'><a href=\"$PHP_SELF?exec=accesgroupes_admin&groupe=".$id_grpe_ec."\">";
235                                                 if ($row301['actif'] != 1) {
236                                                                $a_afficher .= '('.$nom_grpe_ec.' : <span style="color: #6c3;">'._T('accesgroupes:inactif').'</span>)';
237                                                 }
238                                                 else {
239                                                                        $a_afficher .= $nom_grpe_ec;
240                                                 }
241                                                         $a_afficher .= "</a><br />";
242                                 $a_afficher .= "<div style='margin-left: 20px; font-size: 10px; padding: 2px;'>";
243                                                         $sql302 = "SELECT spip_rubriques.titre, spip_rubriques.id_rubrique
244                                                                          FROM spip_rubriques
245                                                                                                        LEFT JOIN spip_accesgroupes_acces
246                                                                                                        ON spip_accesgroupes_acces.id_rubrique = spip_rubriques.id_rubrique
247                                                                                                        WHERE id_grpacces = $id_grpe_ec";
248                                                         
249                                 if ($result302 = spip_query($sql302)) {
250                                                while ($row302 = spip_fetch_array($result302)) {
251                                                                        $id_rub_ec = $row302['id_rubrique'];
252                                                                        $nom_rub_ec = $row302['titre'];
253                                                                        $a_afficher .= "<img src='"._DIR_PLUGIN_ACCESGROUPES."/img_pack/sous-groupe.png' alt='|_' style='vertical-align:top;'>";
254                                                                        $a_afficher .= " <a href=\"?exec=naviguer&id_rubrique=".$id_rub_ec."\"><img src='img_pack/rubrique-12.gif' alt='|_' style='vertical-align:top; border: 0px;'>".$nom_rub_ec;
255                                                         
256                                                                if (accesgroupes_est_admin_rubrique($id_rub_ec) == TRUE) {
257                                                                                $a_afficher .= " <img src='img_pack/admin-12.gif'>";
258                                                                }
259                                                                 
260                                                                                                $a_afficher .= "</a><br />";
261                                                }
262                                 }
263//echo '<br>mysql_error $sql302 = '.mysql_error();                               
264                                 $a_afficher .= "</div>\r\n</td>";
265               $a_afficher .= "</tr>";
266         }
267         $a_afficher .= "</table>";
268                                 return $a_afficher;
269}
270
271// fct pour créer et retourner l'array contenant les rubriques d'un admin restreint
272function accesgroupes_cree_Trub_admin () {         
273                                        $id_utilisateur = accesgroupes_trouve_id_utilisateur();
274                                        $sql501= "SELECT  id_rubrique
275                                                                                FROM spip_auteurs_rubriques
276                                                                                WHERE id_auteur = '$id_utilisateur'";
277                                        $result501 = spip_query($sql501);
278                                        $Trubriques_autorises = array();
279                                        while ($row501 = spip_fetch_array($result501)) {
280                                                                $Trubriques_autorises[] = $row501['id_rubrique'];
281                                        }
282                                        return $Trubriques_autorises;
283}
284
285// fct pour trouver l'id de l'utilisateur en cours
286function accesgroupes_trouve_id_utilisateur() {                                 
287                                  $login_utilisateur = $GLOBALS['auteur_session']['login'];
288
289                                        $sql502 = "SELECT id_auteur FROM spip_auteurs WHERE login = '$login_utilisateur' LIMIT 1";
290                                        $result502 = spip_query($sql502);
291                                        $row502 = spip_fetch_array($result502);
292                                        $id_utilisateur = $row502['id_auteur'];
293                                        return $id_utilisateur;                         
294}
295
296// fct pour déterminer si l'utilisateur en cours est admin restreint
297function accesgroupes_est_admin_restreint() {
298                                 $Trub_restreint = accesgroupes_cree_Trub_admin();
299                                 if (count($Trub_restreint) > 0) {
300                                                return TRUE;
301                                 }
302                                 else {
303                                                        return $Trub_restreint;
304                                 }
305}
306
307// fct pour déterminer si l'utilisateur est proprio du groupe en cours (donc peut le modifier)
308function accesgroupes_est_proprio($id_groupe) {
309                                 $sql505 = "SELECT proprio FROM spip_accesgroupes_groupes WHERE id_grpacces = $id_groupe LIMIT 1";
310                                 $result505 = spip_query($sql505);
311                                 $row505 = spip_fetch_array($result505);
312                                 $id_proprio = $row505['proprio'];
313                                 if ($id_proprio == accesgroupes_trouve_id_utilisateur()) {
314                                                return TRUE;
315                                 }
316                                 else {
317                                                        return FALSE;
318                                 }
319}
320
321// fct pour déterminer si l'utilisateur est proprio de l'accès sur une rubrique
322function accesgroupes_est_proprio_acces($id_rubrique) {
323                                 $proprio = 0;
324                                 $sql506 = "SELECT proprio FROM spip_accesgroupes_acces WHERE id_rubrique = $id_rubrique";
325                                 $result506 = spip_query($sql506);
326                                 while ($row506 = spip_fetch_array($result506)) {
327                                 $id_proprio_acces = $row506['proprio'];
328                                 if ($id_proprio_acces == accesgroupes_trouve_id_utilisateur()) {
329                                                $proprio = 1;
330                                 }
331                                 }
332                                 if ($proprio == 1) {
333                                                return TRUE;
334                                 }
335                                 else {
336                                                        return FALSE;
337                                 }
338}
339
340// fct pour déterminer le statut d'un utilisateur
341function accesgroupes_trouve_statut($id_util) {
342                                 $sql506 = "SELECT statut FROM spip_auteurs WHERE id_auteur = $id_util LIMIT 1";
343                                 $result506 = spip_query($sql506);
344                                 $row506 = spip_fetch_array($result506);
345                                 return $row506['statut'];
346}
347
348// fct pour traiter les noms de groupes en doublons retourne FALSE si le nom existe déja
349function accesgroupes_verifie_duplicata_groupes($nom_at) {
350                                 $sql507 = "SELECT nom FROM spip_accesgroupes_groupes";
351                                 if ($result507 = spip_query($sql507)) {
352                                 while ($row507 = spip_fetch_array($result507)) {
353                                                         if ($row507['nom'] == $nom_at) {
354                                                                        return FALSE;
355                                                         }
356                                 }
357                                 }
358                                 return TRUE;
359}
360
361function accesgroupes_debug(){
362         if(mysql_errno() > 0){
363           echo mysql_errno().": ".mysql_error();
364         }
365}
366
367// libère les rubriques qui n'ont plus de restriction, ok avec mysql 3.23
368function accesgroupes_rub_reinit(){
369        $sql = "SELECT spip_rubriques.*
370                                                    FROM spip_rubriques
371                                        LEFT JOIN spip_accesgroupes_acces
372                                        ON spip_rubriques.id_rubrique = spip_accesgroupes_acces.id_rubrique
373                                                                AND spip_rubriques.prive = 1
374                                        WHERE spip_accesgroupes_acces.id_rubrique IS NULL";
375        $result=spip_query($sql);
376        accesgroupes_debug($result);
377        while ($row = spip_fetch_array($result)){
378              $sql1 = "UPDATE spip_rubriques SET prive=0 WHERE id_rubrique = \"".$row['id_rubrique']."\"";
379              $result1=spip_query($sql1);
380              accesgroupes_debug($result1);
381        }
382}
383
384//  fct pour déterminer si une sous-rubrique est inclue dans une rubrique gérée par un admin restreint
385function accesgroupes_est_admin_rubrique($id_rub) {
386                                 $id_auteur_ec = accesgroupes_trouve_id_utilisateur();
387                        // remonter dans l'ascendance de la rubrique jusqu'à trouver une rubrique parent dont l'admin en cours est l'admin restreint
388                                 do {
389                                                $sql563 = "SELECT COUNT(*) AS nb_rub
390                                                                                         FROM spip_auteurs_rubriques
391                                                                                         WHERE id_rubrique = $id_rub
392                                                                                         AND id_auteur = $id_auteur_ec";
393                                                $result563 = spip_query($sql563);
394                                                if ($row563 = spip_fetch_array($result563) AND $row563['nb_rub'] > 0) {
395                                                         return TRUE;
396                                                }
397                                                else {
398                                                                 $sql564 = "SELECT id_parent
399                                                                                                          FROM spip_rubriques
400                                                                                                                WHERE id_rubrique = $id_rub
401                                                                                                                LIMIT 1";
402                                                                 $result564 = spip_query($sql564);
403                                                                 $row564 = spip_fetch_array($result564);
404                                                                 $id_rub = $row564['id_parent'];
405                                                }
406                                 }
407                                 while ($id_rub != 0);
408                                 return FALSE;
409}
410
411
412/* versions avant modifs
413function accesgroupes_enfant($leparent, $prive_public_parent = 10){
414                                global $Trub_grpe_ec_parent;
415                                global $groupe;
416        global $connect_toutes_rubriques;
417        global $i;
418        global $couleur_claire, $spip_lang_left;
419        global $browser_name, $browser_version;
420                                global $prive_public_ec, $prive_public_parent_ec;
421
422        $i++;
423        $prive_public_ec = $prive_public_parent;
424                               
425                                $query = "SELECT * FROM spip_rubriques WHERE id_parent = $leparent ORDER BY 0+titre,titre";
426        $result = spip_query($query);
427        while($row = spip_fetch_array($result)){
428              $my_rubrique = $row['id_rubrique'];
429              $titre = typo($row['titre']);
430              $statut_rubrique = $row['statut'];
431              $lang_rub = $row['lang'];
432              $langue_choisie_rub = $row['langue_choisie'];
433              $style = "";
434              $espace = "";
435              $prive = $row['prive'];
436     
437              if (eregi("mozilla", $browser_name)) {
438                  $style .= "padding-$spip_lang_left: ".($i*16)."px;";
439              }
440                                        else {
441                    for ($count = 0; $count <= $i; $count ++) {
442                                                                                        $espace .= "&nbsp;&nbsp;&nbsp;&nbsp;";
443                                                                        }
444                                }
445              if ($i == 1) {
446                  $style .= "background: $couleur_claire url("._DIR_IMG_PACK."secteur-12.gif) no-repeat ".(($i - 1) * 16)."px 0px; ";
447              }
448                                                        else {
449                                                                         $style .= "background: $couleur_claire url("._DIR_IMG_PACK."rubrique-12.gif) no-repeat ".(($i * 16) - 12)."px 2px; ";
450                                                        }
451           // affiche en rouge/vert/jaune/bleu les rubriques privées : prive_public = 0 => prive+public | 1 => prive | 2 => public
452$ppe_old = $prive_public_ec;
453                                                        $prive_public_ec = accesgroupes_trouve_prive_public($my_rubrique, $groupe, $prive_public_ec);
454                                        switch ($prive_public_ec) {
455                                                                 case 0 :               // privé + public
456                                                                                        $style .= "color: #f00;";
457                                                                 break;
458                                                                 case 1 :               // privé seul
459                                                                                        $style .= "color: #093;";
460                                                                 break;
461                                                                 case 2 :               // public seul
462                                                                                        $style .= "color: #f90;";
463                                                                 break;
464                                                                 case 3 :               // autres groupes : privé+public
465                                                                                        $style .= "color: #00f;";
466                                                                 break;
467                                                                                 case 4 :               // autres groupes :  privé
468                                                                                        $style .= "color: #00f;";
469                                                                 break;
470                                                                                 case 5 :               // autres groupes : public
471                                                                                        $style .= "color: #00f;";
472                                                                 break;
473                                                                 default :      // rubrique sans restriction
474                                                                                        $style .= "color: #000;";
475                                                                 break;
476                                        }
477              if ($prive_public_ec <= 5) {
478                                                                 $style .= "font-weight:bold; ";
479                                            }
480              if ($statut_rubrique != 'publie') {
481                                                         $titre = "($titre , non publi&eacute;e)";
482                                                }
483              if (lire_meta('multi_rubriques') == 'oui' AND $langue_choisie_rub == "oui") {
484                                                         $titre = $titre." [".traduire_nom_langue($lang_rub)."]";
485                                                }
486              $selec_rub = "selec_rub";
487              if ($browser_name == "MSIE" AND floor($browser_version) == "5") {
488                                                         $selec_rub = ""; // Bug de MSIE MacOs 9.0
489                                                }
490              if (acces_rubrique($my_rubrique)) {
491                  echo "\r\n <option".mySel($my_rubrique,$id_parent)." class='$selec_rub' style=\"$style\">$espace".supprimer_tags($titre);
492echo " i = $i my_rubrique = $my_rubrique prive_public_ec = $prive_public_ec prive_public_parent = $prive_public_parent ppe_old = $ppe_old";
493                                                                        if ($prive_public_ec >= 3 AND $prive_public_ec <= 5) {
494                                                                                 echo " (";
495                                                                                 echo ($prive_public_ec == 3 ? _T('accesgroupes:prive_public') : ($prive_public_ec == 4 ? _T('accesgroupes:prive_seul') : _T('accesgroupes:public_seul') ));
496                                                                                 echo ")";
497                                                                        }
498                                                                        echo "</option>\n"; 
499                                                                        $prive_public_parent >= 3 ? $prive_public_parent_ec = $prive_public_parent - 3 : $prive_public_parent_ec = $prive_public_parent;
500                                                                        if ($prive_public_ec < 3) {
501                                                                         echo "<script language=\"JavaScript\" type=\"text/javascript\">
502                                                                                            Tacces_rub.push([\"$my_rubrique\", \"$prive_public_ec\", \"$prive_public_parent\"]);</script>";
503                                                        // remplissage du tableau des rubriques restreintes par le groupe en cours : permet d'avoir le prive_public_parent de chaque rubrique restreinte par le groupe en cours
504                                                                     $Trub_grpe_ec_parent[$my_rubrique] = $prive_public_parent;
505                                                                }
506                                                                        elseif ($prive_public_ec <=5 AND $prive_public_ec > 2) {
507                                                                                                 echo "<script language=\"JavaScript\" type=\"text/javascript\">
508                                                                                            Tacces_rub.push([\"$my_rubrique\", \"".($prive_public_ec - 3)."\", \"$prive_public_parent_ec\"]);</script>";
509                                                                        }
510 
511              }
512              accesgroupes_enfant($my_rubrique, $prive_public_ec);
513        }
514        $i = $i - 1;
515                                $i == 1 ? $prive_public_ec = 10 : $prive_public_ec = $prive_public_parent_ec;
516}
517
518//  fct pour renvoyer le code numérique du type d'accès à une rubrique restreinte
519//      si la rubrique est contrôlée par le groupe $id_grpacces retourne : 0 => prive + public, 1 => privé, 2 => public
520//      si la  rubrique est contrôlée par un autre groupe retourne : 3 =>  prive + public, 4 => privé, 5 => public
521function accesgroupes_trouve_prive_public($id_rub, $id_grpacces, $prive_public_parent = 10) {
522                                $prive_public_rub = $prive_public_parent;  // prive_public = 10 => indéterminé
523        $sql2 = "SELECT prive_public, id_rubrique, id_grpacces, proprio FROM spip_accesgroupes_acces WHERE id_rubrique = $id_rub";
524        $result2 = spip_query($sql2);
525                while ($row2 = spip_fetch_array($result2)){
526                                        $id_rubrique_ec = $row2['id_rubrique'];
527                                        $id_groupe_ec = $row2['id_grpacces'];
528                                        $prive_public_ec = $row2['prive_public'];
529                                                        if ($id_groupe_ec != $id_grpacces) {
530                                                                 $prive_public_ec += 3;
531                                                        }
532                                                        if ($prive_public_ec < $prive_public_rub) {
533                                                                 $prive_public_rub = $prive_public_ec;
534                                                        }
535          }
536                return $prive_public_rub;
537}       
538*/
539
540?>
Note: See TracBrowser for help on using the repository browser.