source: spip-zone/_plugins_/_dev_/acces_groupes/inc/mini_nav.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: 6.9 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2006                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined("_ECRIRE_INC_VERSION")) return;
14
15// modif pour accesgroupes
16// inclure le fichier de redéfinitions des BOUCLES pour utiliser ses fcts de filtrage des requètes pour l'espace privé
17         include_spip('inc/accesgroupes_fonctions');
18
19
20// http://doc.spip.org/@mini_afficher_rubrique
21function mini_afficher_rubrique($id_rubrique, $rac="", $list=array(), $col = 1, $exclu=0) {
22        global  $spip_lang_left;
23       
24        if ($list) $id_rubrique = $list[$col-1];
25       
26        $ret = '';
27
28        # recherche les filles et petites-filles de la rubrique donnee
29        $ordre = array();
30        $rub = array();
31
32// modif pour accesgroupes : filtrer les rubriques restreintes directement dans la requete SQL
33        $sql_rub_restreintes = accesgroupes_rubriques_accessibles_where('rub1.id_rubrique ', 'prive');
34//echo '$sql_rub_restreintes = '.$sql_rub_restreintes; 
35 
36        $sql = "SELECT rub1.id_rubrique, rub1.titre, rub1.id_parent, rub1.lang, rub1.langue_choisie
37                                                                                 FROM spip_rubriques AS rub1, spip_rubriques AS rub2
38                                                                                 WHERE ((rub1.id_parent = $id_rubrique)
39                                                                                 OR (rub2.id_parent = $id_rubrique 
40                                                                                 AND rub1.id_parent=rub2.id_rubrique))
41                                                                                 AND rub1.id_rubrique != $exclu
42                                                                                 AND $sql_rub_restreintes 
43                                                                                 GROUP BY rub1.id_rubrique";
44        $res = spip_query($sql);
45//echo 'mysql_error = '.mysql_error(); 
46// fin modif
47
48        while ($row = spip_fetch_array($res)) {
49                $rub[$row['id_parent']]['enfants'] = true;
50                if ($row['id_parent'] == $id_rubrique)
51                        $ordre[$row['id_rubrique']]= trim(typo($row['titre']))
52                        . (($row['langue_choisie'] != 'oui')
53                           ? '' : (' [' . $row['lang'] . ']'));
54        }
55
56        $next = $list[$col];
57        if ($ordre) {
58                asort($ordre);
59                $rec = generer_url_ecrire('plonger',"rac=$rac&exclus=$exclu&col=".($col+1));
60                $args = "'$rac',this,$col,'$spip_lang_left'";
61                while (list($id, $titrebrut) = each($ordre)) {
62
63                        $titre = "<div class='"
64                        . ($id_rubrique ? 'petite-rubrique' : "petit-secteur")
65                        . "'>"
66                        . supprimer_numero($titrebrut)
67                        . "</div>";
68
69                        if (isset($rub[$id]["enfants"])) {
70                                $titre = "<div class='rub-ouverte'>$titre</div>";
71
72                                $acces = "firstChild.";
73                                $url = "\nhref='$rec&amp;id=$id'" ;
74                        } else {  $url = $acces = ''; }
75
76                        $ret .= "<a class='"
77                        . (($id == $next) ? "highlight" : "pashighlight")
78                        . "'"
79                        . $url
80                        .  "\nonClick=\"changerhighlight(this);return "
81                        . (!is_array($list) ? ' false' 
82                           : "aff_selection_provisoire($id,$args)")
83# ce lien provoque la selection (directe) de la rubrique cliquee
84# et l'affichage de son titre dans le bandeau
85                        . "\"\nondblclick=\""
86                        . "return aff_selection_titre(this."
87                        . $acces
88                        . "firstChild.firstChild.nodeValue,$id,$args);"
89                        . "\">$titre</a>";
90                }
91        }
92
93        $nom_col = $rac . "_col_".($col+1);
94        $left = ($col*150);
95
96        return http_img_pack("searching.gif", "*", "style='visibility: hidden; position: absolute; $spip_lang_left: "
97        . ($left-30)
98        . "px; top: 2px; z-index: 2;' id='img_$nom_col'")
99        . "<div style='width: 150px; height: 100%; overflow: auto; position: absolute; top: 0px; $spip_lang_left: "
100        .($left-150)
101        ."px;'>"
102        . $ret
103        . "\n</div>\n<div id='$nom_col'>"
104        . ($next
105           ? mini_afficher_rubrique($id_rubrique, $rac, $list, $col+1, $exclu)
106           : "")
107        . "\n</div>";
108}
109
110
111// http://doc.spip.org/@mini_hierarchie_rub
112function mini_hierarchie_rub ($id_rubrique) {
113        $row = spip_fetch_array(spip_query("SELECT id_parent FROM spip_rubriques WHERE id_rubrique = " . intval($id_rubrique)));
114        return $row["id_parent"];
115}
116
117
118// http://doc.spip.org/@mini_afficher_hierarchie
119function mini_hier ($id_rubrique) {
120       
121        $id_parent = $id_rubrique;
122        $liste = $id_rubrique;
123        while ($id_parent = mini_hierarchie_rub ($id_parent)) {
124                $liste = $id_parent.",".$liste;
125        }
126        $liste = "0,".$liste;
127        return explode(',',$liste);
128}
129
130//
131// Affiche un mini-navigateur ajax positionne sur la rubrique $sel
132//
133// http://doc.spip.org/@mini_nav
134function mini_nav ($sel, $rac="",$fonction="", $rub_exclus=0, $aff_racine=false, $plonger=true) {
135
136        if (!$fonction)
137                $fonction = "document.location='"
138                . generer_url_ecrire('naviguer', "id_rubrique=::sel::")
139                . "';";
140
141        global $couleur_foncee, $spip_lang_right, $spip_lang_left;
142        if ($id_rubrique < 1) $id_rubrique = 0;
143
144        $ret = "<div id='$rac'>"
145        . "<div style='display: none;'>"
146        . "<input type='text' id='".$rac."_fonc' value=\"$fonction\" />"
147        . "</div>\n"
148        . "<table width='100%' cellpadding='0' cellspacing='0'>"
149        . "<tr>"
150        . "<td style='vertical-align: bottom;'>";
151
152        if ($aff_racine) {
153                $onClick = " aff_selection('rubrique','$rac', '0');";
154                # ce lien provoque la selection (directe) de la rubrique cliquee
155                $ondbClick = "findObj('id_parent').value=0;";
156                # et l'affichage de son titre dans le bandeau
157                $ondbClick .= "findObj('titreparent').value='"
158                        . strtr(
159                                str_replace("'", "&#8217;",
160                                str_replace('"', "&#34;",
161                                        textebrut(_T('info_racine_site')))),
162                                "\n\r", "  ")."';";
163                $ondbClick .= "findObj('selection_rubrique').style.display='none';";
164        }
165
166        if ($plonger)
167                $onClick .= "charger_id_url('" . generer_url_ecrire('plonger',"rac=$rac&exclus=$rub_exclus&id=0&col=1", true) . "', '".$rac."_col_1');";
168
169        $ret .= "\n<div class='arial11 petite-racine'\nonclick=\""
170        . $onClick
171        . "\"\nondblclick=\""
172        . $ondbClick
173        . $onClick
174        . "\">\n<div class='pashighlight'>"
175        . _T("info_racine_site")
176        . "</div></div>"
177        . "</td>"       . "\n<td>"
178        . http_img_pack("searching.gif", "*", "style='visibility: hidden;' id='img_".$rac."_col_1'")
179        . "</td>"
180        . "\n<td style='text-align: $spip_lang_right'>"
181        . "<input style='width: 100px;' type='search' id='"
182        . $rac
183        . "_champ_recherche'\nonkeypress=\"t=setTimeout('lancer_recherche_rub(\'"
184          . $rac
185          . "_champ_recherche\',\'$rac\',\'$rub_exclus\')', 200); key = event.keyCode; if (key == 13 || key == 3) { return false;} \" />"
186        . "</td></tr></table>\n<div id='"
187        . $rac
188        . "_principal' style='position: relative; height: 170px; background-color: white; border: 1px solid $couleur_foncee; overflow: auto;'><div id='"
189        . $rac
190        . "_col_1' class='arial1'>" 
191        . ($plonger
192           ? mini_afficher_rubrique($sel, $rac, mini_hier($sel), 1, $rub_exclus)
193           : mini_afficher_rubrique(0, $rac, false, 1, $rub_exclus))
194        . "</div></div>\n<div id='"
195        . $rac
196        . "_selection'></div></div>\n";
197
198        return $ret;
199}
200
201
202?>
Note: See TracBrowser for help on using the repository browser.