1 | <?php |
---|
2 | |
---|
3 | // Copyright 2005 Maxime GEORGE-BOURREAU |
---|
4 | // Adaptation pour SPIP 1.9 |
---|
5 | // MiniGriSpip 1.4.2 - 2006 (c) FredoMkb |
---|
6 | |
---|
7 | // This program is free software; you can redistribute it and/or modify |
---|
8 | // it under the terms of the GNU General Public License as published by |
---|
9 | // the Free Software Foundation; either version 2 of the License, or |
---|
10 | // (at your option) any later version. |
---|
11 | |
---|
12 | // This program is distributed in the hope that it will be useful, |
---|
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
15 | // GNU General Public License for more details. |
---|
16 | |
---|
17 | // You should have received a copy of the GNU General Public License |
---|
18 | // along with this program; if not, write to the Free Software |
---|
19 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
---|
20 | |
---|
21 | function menu($texte,$presence_rubrique_active=true) { |
---|
22 | |
---|
23 | // Fonction menu |
---|
24 | |
---|
25 | // Renvoie une chaine de caractères contenant du code HTML nécessaire à l'affichage |
---|
26 | // d'un menu arborescent dans SPIP. |
---|
27 | |
---|
28 | // Paramètres : |
---|
29 | |
---|
30 | // 1. Mettre dans $texte l'identifiant de rubrique active, si on veut faire apparaitre une rubrique active. |
---|
31 | // 2. Mettre $presence_rubrique_active à false si on ne veut pas faire apparaitre de rubrique active. |
---|
32 | |
---|
33 | // Sortie : |
---|
34 | |
---|
35 | // Code HTML nécessaire à l'affiche d'un menu arborescent, sous la forme suivante : |
---|
36 | |
---|
37 | // 1. Chaque rubrique est listée sous la forme : |
---|
38 | // <li class="menu-itemX">une rubrique...</li> |
---|
39 | // avec X la profondeur de la rubrique (0=racine du site) |
---|
40 | |
---|
41 | // 2. Si une rubrique est active, elle est de la forme : |
---|
42 | // <li class="menu-itemX menu-selected">une rubrique...</li> |
---|
43 | |
---|
44 | if ($presence_rubrique_active) $rubrique_active=$texte; |
---|
45 | else $rubrique_active=-1; |
---|
46 | $rubriques=array(); |
---|
47 | $requete = mysql_query( "SELECT titre, id_rubrique, id_parent from spip_rubriques order by id_parent, titre"); |
---|
48 | while ($ligne = mysql_fetch_assoc($requete)) array_push($rubriques,$ligne); |
---|
49 | mysql_free_result($requete); |
---|
50 | return menu_rec($rubriques,$rubrique_active,0,0); |
---|
51 | } |
---|
52 | |
---|
53 | function menu_rec($rubriques,$rubrique_active,$pere,$rang) { |
---|
54 | |
---|
55 | // Fonction menu_rec |
---|
56 | |
---|
57 | // Utilisée par la fonction menu. Explore l'arborescence des rubriques de façon récursive. |
---|
58 | |
---|
59 | $sortie = ''; |
---|
60 | for ($i=0;$i<count($rubriques);$i++) { |
---|
61 | if ($rubriques[$i]['id_parent']==$pere) { |
---|
62 | $sortie .='<li class="mgs_menu_item_'.$rang; |
---|
63 | if ($rubrique_active==$rubriques[$i]['id_rubrique']) $sortie .= ' mgs_menu_selected'; |
---|
64 | $sortie .= '"><a href="spip.php?rubrique'; |
---|
65 | $sortie .= $rubriques[$i]['id_rubrique']; |
---|
66 | $titre=ereg_replace("^[0-9]+[.][ ]","",$rubriques[$i]['titre']); |
---|
67 | $sortie .= '">'.$titre.'</a>'; |
---|
68 | $nb_articles = nombre_articles_rubrique($rubriques[$i]['id_rubrique']); |
---|
69 | // Ajout du nombre d'articles publies existants dans la rubrique |
---|
70 | $sortie .= ' <small>('.$nb_articles.')</small></li> |
---|
71 | '; |
---|
72 | //Ici ajouter condition pour ne pas afficher toutes les noeuds |
---|
73 | $sortie .= menu_rec($rubriques,$rubrique_active,$rubriques[$i]['id_rubrique'],$rang+1); |
---|
74 | } |
---|
75 | } |
---|
76 | return $sortie; |
---|
77 | } |
---|
78 | |
---|
79 | function nombre_articles_rubrique($id_rubrique) { |
---|
80 | // Fonction pour retourner le nombre d'articles publies existants dans une rubrique ($id_rubrique) |
---|
81 | |
---|
82 | $requete = mysql_query("SELECT id_article FROM spip_articles WHERE id_rubrique=$id_rubrique AND statut='publie'"); |
---|
83 | $nbr = mysql_num_rows($requete); |
---|
84 | mysql_free_result($requete); |
---|
85 | return $nbr; |
---|
86 | } |
---|
87 | |
---|
88 | function numero_message_forum_article($id_article,$id_forum) { |
---|
89 | // Fonction pour retourner le numero incremental d'un message du forum ($id_forum) d'un article ($id_article) lors d'une reponse |
---|
90 | |
---|
91 | $requete = mysql_query("SELECT id_forum FROM spip_forum WHERE id_article=$id_article AND id_forum<=$id_forum AND statut='publie'"); |
---|
92 | $nbr = mysql_num_rows($requete); |
---|
93 | mysql_free_result($requete); |
---|
94 | return $nbr; |
---|
95 | } |
---|
96 | |
---|
97 | function nombre_articles_auteur($id_auteur) { |
---|
98 | // Fonction pour retourner le nombre d'articles rediges par un auteur ($id_auteur) |
---|
99 | |
---|
100 | $requete = mysql_query("SELECT id_article FROM spip_auteurs_articles WHERE id_auteur=$id_auteur"); |
---|
101 | $nbr = mysql_num_rows($requete); |
---|
102 | mysql_free_result($requete); |
---|
103 | return $nbr; |
---|
104 | } |
---|
105 | |
---|
106 | function statut_article($id_article) { |
---|
107 | // Fonction pour retourner le "statut" d'un article ($id_article) soit ('prepa', 'prop', 'publie', 'refuse', 'poubelle') |
---|
108 | |
---|
109 | $requete = mysql_query("SELECT statut FROM spip_articles WHERE id_article=$id_article"); |
---|
110 | $statuts = mysql_fetch_assoc($requete); |
---|
111 | mysql_free_result($requete); |
---|
112 | return $statuts[statut]; |
---|
113 | } |
---|
114 | |
---|
115 | function nombre_articles_publies_auteur($id_auteur) { |
---|
116 | // Fonction pour retourner le nombre d'articles publies par un auteur ($id_auteur) |
---|
117 | |
---|
118 | $articles = array(); |
---|
119 | $requete = mysql_query("SELECT id_article FROM spip_auteurs_articles WHERE id_auteur=$id_auteur"); |
---|
120 | while ($ligne = mysql_fetch_assoc($requete)) array_push($articles,$ligne); |
---|
121 | mysql_free_result($requete); |
---|
122 | $nbr = 0; |
---|
123 | foreach ($articles as $val) { |
---|
124 | $statut = statut_article($val[id_article]); |
---|
125 | if ($statut == 'publie') {$nbr += 1;}; |
---|
126 | } |
---|
127 | return $nbr; |
---|
128 | } |
---|
129 | |
---|
130 | |
---|
131 | ?> |
---|