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 | |
---|
12 | if (!defined("_ECRIRE_INC_VERSION")) return; |
---|
13 | |
---|
14 | // http://doc.spip.org/@exec_auteurs_dist |
---|
15 | function 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 | |
---|
71 | function 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 | ? (" <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 | |
---|
102 | function 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 |
---|
166 | function 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 |
---|
212 | function 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('<<<',"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('>>>',"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 |
---|
302 | function 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 |
---|
314 | function 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 | ? (" <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 | ?> |
---|