source: spip-zone/_squelettes_/MiniGriSpip/mes_fonctions.php @ 6960

Last change on this file since 6960 was 6960, checked in by franck.ducas@…, 14 years ago

Mise a jour de minigrispip.

File size: 4.8 KB
Line 
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
21function 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
44if ($presence_rubrique_active) $rubrique_active=$texte;
45else $rubrique_active=-1;
46$rubriques=array();
47$requete = mysql_query( "SELECT titre, id_rubrique, id_parent from spip_rubriques order by id_parent, titre");
48while ($ligne = mysql_fetch_assoc($requete)) array_push($rubriques,$ligne);
49mysql_free_result($requete);
50return menu_rec($rubriques,$rubrique_active,0,0);
51}
52
53function 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 .= '&nbsp;<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
79function 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
88function 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
97function 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
106function 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
115function 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?>
Note: See TracBrowser for help on using the repository browser.