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

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

un debut de treemap

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