source: spip-zone/_plugins_/_dev_/gestion_auteurs/exec/auteurs.php @ 10458

Last change on this file since 10458 was 10458, checked in by renato@…, 14 years ago

retour a deux niveaux

File size: 10.8 KB
Line 
1<?php
2 /**************************************************************************\
3*  SPIP, Systeme de publication pour l'internet                              *
4*                                                                            *
5*  Copyright (c) 2001-2007                                                   *
6*  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James     *
7*                                                                            *
8*  Ce script fait partie d'un logiciel libre distribue sous licence GNU/GPL. *
9*  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.      *
10 \**************************************************************************/
11
12if (!defined("_ECRIRE_INC_VERSION")) return;
13
14// http://doc.spip.org/@exec_auteurs_dist
15function exec_auteurs()
16{
17        include_spip('inc/presentation');
18        include_spip('inc/navigation_liste');
19
20        (($tri = preg_replace('/\W/', '', _request('tri'))) || ($tri='nom'));
21        $statut = preg_replace('/\W/', '', _request('statut'));
22       
23        $len_debut_etape = strlen(_request('debut_etape'))+1;
24       
25        $navig = new NavigationListe(array(
26                'requete_liste' => requete_auteurs($tri, $statut),
27//              'callback_liste' => 'complement_auteur',
28                'requete_comptage' => 'SELECT COUNT(*) FROM spip_auteurs',
29                'requete_etapes' =>
30                        'SELECT DISTINCT UPPER(LEFT(nom,'.$len_debut_etape.')) etape, COUNT(*) compte FROM spip_auteurs
31                        '.($len_debut_etape>1?'WHERE nom LIKE "'._request('debut_etape').'%"':'').'
32                         GROUP BY etape ORDER BY etape',
33                'debut_etape' => _request('debut_etape'),
34                'max_par_page' => 30,
35                'debut' => intval(_request('debut')),
36                'fragment' => intval(_request('fragment')),
37                'contenu_ligne' => 'ligne_auteur',
38                'url' => '?exec=auteurs'
39        ));
40       
41        $res = $navig->show();
42        //var_dump($navig);
43/*
44        $result = requete_auteurs($tri, $statut);
45        $nombre_auteurs = spip_num_rows($result);
46        $max_par_page = 30;
47        $debut = intval(_request('debut'));
48        if ($debut > $nombre_auteurs - $max_par_page)
49                $debut = max(0,$nombre_auteurs - $max_par_page);
50
51        list($auteurs, $lettre)= lettres_d_auteurs($result, $debut, $max_par_page, $tri);
52
53        $res = auteurs_tranches(afficher_n_auteurs($auteurs), $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs);
54*/
55
56        if (_request('var_ajaxcharset')) {
57                $ret = ajax_retour($res);
58        } else {
59                $ret =
60                  pipeline('exec_init',array('args'=>array('exec'=>'auteurs'),'data'=>''))
61
62                . bandeau_auteurs($tri, $statut)
63
64                . '<div id="auteurs">' . $res . '</div>'
65                . pipeline('affiche_milieu',array('args'=>array('exec'=>'auteurs'),'data'=>''))
66                . fin_gauche() . fin_page();
67        }
68        echo $ret;
69}
70
71function ligne_auteurs($ligne = array(), $pos = 0, $reste = 0)
72{
73        static $formater_auteur = '';
74        ($formater_auteur || ($formater_auteur = charger_fonction('formater_auteur', 'inc')));
75        global $connect_statut, $options;
76
77        if ($ligne['statut'] == '0minirezo') {
78                $count = spip_fetch_array(spip_query(
79                        'SELECT COUNT(*) FROM spip_auteurs_rubriques WHERE id_auteur='
80                        . $ligne['id_auteur']), SPIP_NUM);
81                $ligne['restreint'] = $count[0];
82        }
83
84        list($s, $mail, $nom, $w, $p) = $formater_auteur($ligne['id_auteur']);
85        return "\n<tr style='background-color: #eeeeee;'>"
86        . "\n<td style='border-top: 1px solid #cccccc;'>"
87        . $s
88        . "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>"
89        . $mail
90        . "</td><td class='verdana1' style='border-top: 1px solid #cccccc;'>"
91        . $nom
92        . ((isset($row['restreint']) AND $ligne['restreint'])
93           ? (" &nbsp;<small>"._T('statut_admin_restreint')."</small>")
94           : '')
95         ."</td><td class='arial1' style='border-top: 1px solid #cccccc;'>"
96         . $w
97         . "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>"
98         . $p
99        .  "</td></tr>\n";
100}
101
102function requete_auteurs($tri, $statut)
103{
104        global $connect_statut, $spip_lang, $connect_id_auteur;
105
106        //
107        // Construire la requete
108        //
109
110        // si on n'est pas minirezo, ignorer les auteurs sans article publie
111        // sauf les admins, toujours visibles.
112        // limiter les statuts affiches
113        if ($connect_statut == '0minirezo') {
114                if ($statut) {
115                        $sql_visible = "aut.statut IN ('$statut')";
116                        $tri = 'nom';
117                } else {
118                        $sql_visible = "aut.statut IN ('0minirezo','1comite','5poubelle')";
119                }
120        } else {
121                $sql_visible = "(
122                        aut.statut = '0minirezo'
123                        OR art.statut IN ('prop', 'publie')
124                        OR aut.id_auteur=$connect_id_auteur
125                )";
126        }
127
128        $sql_sel = '';
129
130        // tri
131        switch ($tri) {
132        case 'nombre':
133                $sql_order = ' compteur DESC, unom';
134                break;
135
136        case 'statut':
137                $sql_order = ' statut, unom';
138                break;
139
140        case 'nom':
141                $sql_order = ' unom';
142                break;
143
144        case 'multi':
145        default:
146                $sql_sel = ", ".creer_objet_multi ("nom", $spip_lang);
147                $sql_order = " multi";
148        }
149
150        return "SELECT
151                aut.id_auteur AS id_auteur,
152                aut.statut AS statut,
153                aut.nom AS nom,
154                UPPER(aut.nom) AS unom,
155                count(lien.id_article) as compteur
156                $sql_sel
157                FROM spip_auteurs as aut
158                LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur
159                LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)
160                WHERE $sql_visible
161                GROUP BY aut.id_auteur
162                ORDER BY $sql_order";
163}
164
165// http://doc.spip.org/@bandeau_auteurs
166function bandeau_auteurs($tri, $statut)
167{
168        global $options, $spip_lang_right, $connect_id_auteur,
169                $connect_statut, $connect_toutes_rubriques;
170
171        $commencer_page = charger_fonction('commencer_page', 'inc');
172        return ($statut == '6forum' ?
173                $commencer_page(_T('titre_page_auteurs'), "auteurs", "redacteurs") :
174                $commencer_page(_T('info_auteurs_par_tri', array('partri' =>
175                         $tri=='nombre' ? _T('info_par_nombre_articles') :
176                        ($tri=='statut' ? _T('info_par_statut') : _T('info_par_nom')))),
177                        "auteurs", "redacteurs"))
178        . debut_gauche(null, true)
179
180        . debut_boite_info(true)
181        . "\n<p class='arial1'>"
182        . ($statut == '6forum' ? _T('info_gauche_visiteurs_enregistres') : _T('info_gauche_auteurs'))
183        . '</p>'
184        . ($connect_statut == '0minirezo' ? "\n<br />". _T('info_gauche_auteurs_exterieurs') : '')
185        . fin_boite_info(true)
186        . pipeline('affiche_gauche',array('args'=>array('exec'=>'auteurs'),'data'=>''))
187
188        . bloc_des_raccourcis(
189                ($connect_statut == '0minirezo' ?
190
191                ($connect_toutes_rubriques ?
192                        icone_horizontale(_T('icone_creer_nouvel_auteur'), generer_url_ecrire("auteur_infos", 'new=oui'), "auteur-24.gif", "creer.gif", false) : '') : '')
193
194                . icone_horizontale(_T('icone_informations_personnelles'), generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur"), "fiche-perso-24.gif","rien.gif", false)
195
196                . (spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs WHERE statut='6forum' LIMIT 1")) ?
197                        ($statut == '6forum' ?
198                                icone_horizontale (_T('icone_afficher_auteurs'), generer_url_ecrire("auteurs"), "auteur-24.gif", "", false) :
199                                icone_horizontale (_T('icone_afficher_visiteurs'), generer_url_ecrire("auteurs","statut=6forum"), "auteur-24.gif", "", false)
200                        ) : '')
201                )
202        . creer_colonne_droite(null, true)
203        . pipeline('affiche_droite',array('args'=>array('exec'=>'auteurs'),'data'=>''))
204        . debut_droite(null, true)
205
206        . "\n<br />"
207        . gros_titre(_T($statut == '6forum' ? 'info_visiteurs' : 'info_auteurs'), '', false)
208        . "\n<br />";
209}
210
211// http://doc.spip.org/@auteurs_tranches
212function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs)
213{
214        global $options, $spip_lang_right;
215
216        $res ="\n<tr style='background-color: #dbe1c5'>"
217        . "\n<td style='width: 20px'>";
218
219        if ($tri=='statut')
220                $res .= http_img_pack('admin-12.gif','', " class='lang'");
221        else {
222          $t =  _T('lien_trier_statut');
223          $res .= auteurs_href(http_img_pack('admin-12.gif', $t, "class='lang'"),'tri=statut', " title=\"$t\"");
224        }
225
226        $res .= "</td><td style='width: 20px'></td><td colspan='2'>";
227
228        if ($tri == '' OR $tri=='nom')
229                $res .= '<b>'._T('info_nom').'</b>';
230        else
231                $res .= auteurs_href(_T('info_nom'), "tri=nom", " title='"._T('lien_trier_nom'). "'");
232
233
234        $res .= "</td><td>";
235
236        if ($statut != '6forum') {
237                if ($tri=='nombre')
238                        $res .= '<b>'._T('info_articles').'</b>';
239                else
240                        $res .= auteurs_href(_T('info_articles_2'), "tri=nombre", " title=\""._T('lien_trier_nombre_articles'). '"');
241        }
242
243        $res .= "</td></tr>\n";
244
245        if ($nombre_auteurs > $max_par_page) {
246                $res .= "\n<tr style='background-color: white'><td class='arial1' colspan='5'>";
247
248                for ($j=0; $j < $nombre_auteurs; $j+=$max_par_page) {
249                        if ($j > 0)     $res .= " | ";
250
251                        if ($j == $debut)
252                                $res .= "<b>$j</b>";
253                        else if ($j > 0)
254                                $res .= auteurs_href($j, "tri=$tri&statut=$statut&debut=$j");
255                        else
256                                $res .= auteurs_href('0', "tri=$tri&statut=$statut");
257                        if ($debut > $j  AND $debut < $j+$max_par_page){
258                                $res .= " | <b>$debut</b>";
259                        }
260                }
261                $res .= "</td></tr>\n";
262
263                if ($tri == 'nom' AND $options == 'avancees') {
264                        $res .= "\n<tr style='background-color: white'><td class='arial11' colspan='5'>";
265                        foreach ($lettre as $key => $val) {
266                                if ($val == $debut)
267                                        $res .= "<b>$key</b>\n";
268                                else
269                                        $res .= auteurs_href($key, "tri=$tri&statut=$statut&debut=$val") . "\n";
270                        }
271                        $res .= "</td></tr>\n";
272                }
273        }
274
275        $nav = '';
276        $debut_suivant = $debut + $max_par_page;
277        if ($debut_suivant < $nombre_auteurs OR $debut > 0) {
278                $nav = "\n<table id='bas' style='width: 100%' border='0'>"
279                . "\n<tr style='background-color: white'><td align='left'>";
280
281                if ($debut > 0) {
282                        $debut_prec = max($debut - $max_par_page, 0);
283                        $nav .= auteurs_href('&lt;&lt;&lt;',"tri=$tri&debut=$debut_prec&statut=$statut");
284                }
285                $nav .= "</td><td style='text-align: $spip_lang_right'>";
286                if ($debut_suivant < $nombre_auteurs) {
287                        $nav .= auteurs_href('&gt;&gt;&gt;',"tri=$tri&debut=$debut_suivant&statut=$statut");
288                }
289                $nav .= "</td></tr></table>\n";
290        }
291
292        return  debut_cadre_relief('auteur-24.gif',true)
293        . "\n<table  class='arial2' border='0' cellpadding='2' cellspacing='0' style='width: 100%; border: 1px solid #aaaaaa;'>\n"
294        . $res
295        . $auteurs
296        . "</table>\n<br />"
297        .  $nav
298        . fin_cadre_relief(true);
299}
300
301// http://doc.spip.org/@auteurs_href
302function auteurs_href($clic, $args='', $att='')
303{
304        $h = generer_url_ecrire('auteurs', $args);
305        $a = 'auteurs';
306
307        if (_SPIP_AJAX === 1 )
308                $att .= ("\nonclick=" . ajax_action_declencheur($h,$a));
309
310        return "<a href='$h#$a'$att>$clic</a>";
311}
312
313// http://doc.spip.org/@afficher_n_auteurs
314function afficher_n_auteurs($auteurs) {
315        global $connect_statut, $options;
316
317        $res = '';
318        $formater_auteur = charger_fonction('formater_auteur', 'inc');
319        foreach ($auteurs as $row) {
320
321                list($s, $mail, $nom, $w, $p) = $formater_auteur($row['id_auteur']);
322                $res .= "\n<tr style='background-color: #eeeeee;'>"
323                . "\n<td style='border-top: 1px solid #cccccc;'>"
324                . $s
325                . "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>"
326                . $mail
327                . "</td><td class='verdana1' style='border-top: 1px solid #cccccc;'>"
328                . $nom
329                . ((isset($row['restreint']) AND $row['restreint'])
330                   ? (" &nbsp;<small>"._T('statut_admin_restreint')."</small>")
331                   : '')
332                 ."</td><td class='arial1' style='border-top: 1px solid #cccccc;'>"
333                 . $w
334                 . "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>"
335                 . $p
336                .  "</td></tr>\n";
337        }
338        return $res;
339}
340
341?>
Note: See TracBrowser for help on using the repository browser.