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

Last change on this file since 10373 was 10373, checked in by bertrand@…, 13 years ago

Une classe pour donner a manger a treemap et autres lsites de populations

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