source: spip-zone/_squelettes_/MiniGriSpip/spip19/MGS_1.2/mes_fonctions.php @ 52500

Last change on this file since 52500 was 52500, checked in by suske@…, 10 years ago

Mise en ordre: branches pour les archives 1.9, trunk pour le squel spip2+ (étape 5 et fin)

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