4 |
david |
1 |
<?php
|
|
|
2 |
|
|
|
3 |
/***************************************************************************\
|
|
|
4 |
* SPIP, Systeme de publication pour l'internet *
|
|
|
5 |
* *
|
|
|
6 |
* Copyright (c) 2001-2005 *
|
|
|
7 |
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
|
|
|
8 |
* *
|
|
|
9 |
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
|
|
|
10 |
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
|
|
|
11 |
\***************************************************************************/
|
|
|
12 |
|
|
|
13 |
|
|
|
14 |
include ("inc.php3");
|
|
|
15 |
include_ecrire ("inc_acces.php3");
|
|
|
16 |
|
|
|
17 |
|
|
|
18 |
//
|
|
|
19 |
// Action : supprimer un auteur
|
|
|
20 |
//
|
|
|
21 |
if ($supp && ($connect_statut == '0minirezo'))
|
|
|
22 |
spip_query("UPDATE spip_auteurs SET statut='5poubelle' WHERE id_auteur=$supp");
|
|
|
23 |
|
|
|
24 |
$retour = "auteurs.php3?";
|
|
|
25 |
if ($tri) {
|
|
|
26 |
$retour .= "tri=$tri";
|
|
|
27 |
if ($tri=='nom' OR $tri=='statut')
|
|
|
28 |
$partri = " "._T('info_par_tri', array('tri' => $tri));
|
|
|
29 |
else if ($tri=='nombre')
|
|
|
30 |
$partri = " "._T('info_par_nombre_article');
|
|
|
31 |
}
|
|
|
32 |
|
|
|
33 |
if ($visiteurs == "oui") {
|
|
|
34 |
debut_page(_T('titre_page_auteurs'),"auteurs","redacteurs");
|
|
|
35 |
$retour .= '&visiteurs=oui';
|
|
|
36 |
} else
|
|
|
37 |
debut_page(_T('info_auteurs_par_tri', array('partri' => $partri)),"auteurs","redacteurs");
|
|
|
38 |
|
|
|
39 |
debut_gauche();
|
|
|
40 |
|
|
|
41 |
|
|
|
42 |
|
|
|
43 |
debut_boite_info();
|
|
|
44 |
if ($visiteurs == "oui")
|
|
|
45 |
echo "<p class='arial1'>"._T('info_gauche_visiteurs_enregistres');
|
|
|
46 |
else {
|
|
|
47 |
echo "<p class='arial1'>"._T('info_gauche_auteurs');
|
|
|
48 |
|
|
|
49 |
if ($connect_statut == '0minirezo')
|
|
|
50 |
echo '<br>'. _T('info_gauche_auteurs_exterieurs');
|
|
|
51 |
}
|
|
|
52 |
fin_boite_info();
|
|
|
53 |
|
|
|
54 |
|
|
|
55 |
if ($connect_statut == '0minirezo') {
|
|
|
56 |
$query = "SELECT id_auteur FROM spip_auteurs WHERE statut='6forum' LIMIT 0,1";
|
|
|
57 |
$result = spip_query($query);
|
|
|
58 |
$flag_visiteurs = spip_num_rows($result) > 0;
|
|
|
59 |
|
|
|
60 |
debut_raccourcis();
|
|
|
61 |
icone_horizontale(_T('icone_creer_nouvel_auteur'), "auteur_infos.php3?new=oui", "auteur-24.gif", "creer.gif");
|
|
|
62 |
icone_horizontale(_T('icone_informations_personnelles'), "auteurs_edit.php3?id_auteur=$connect_id_auteur", "fiche-perso-24.gif","rien.gif");
|
|
|
63 |
if ($flag_visiteurs) {
|
|
|
64 |
if ($visiteurs == "oui")
|
|
|
65 |
icone_horizontale (_T('icone_afficher_auteurs'), "auteurs.php3", "auteur-24.gif", "");
|
|
|
66 |
else
|
|
|
67 |
icone_horizontale (_T('icone_afficher_visiteurs'), "auteurs.php3?visiteurs=oui", "auteur-24.gif", "");
|
|
|
68 |
}
|
|
|
69 |
fin_raccourcis();
|
|
|
70 |
}
|
|
|
71 |
debut_droite();
|
|
|
72 |
|
|
|
73 |
|
|
|
74 |
//
|
|
|
75 |
// Construire la requete
|
|
|
76 |
//
|
|
|
77 |
|
|
|
78 |
// limiter les statuts affiches
|
|
|
79 |
if (($visiteurs == "oui") AND ($connect_statut == '0minirezo')) {
|
|
|
80 |
$sql_statut_auteurs = " AND auteurs.statut IN ('6forum', '5poubelle')";
|
|
|
81 |
$sql_statut_articles = '';
|
|
|
82 |
$tri = 'nom';
|
|
|
83 |
} else if ($connect_statut != '0minirezo') {
|
|
|
84 |
$sql_statut_auteurs = " AND auteurs.statut IN ('0minirezo', '1comite')";
|
|
|
85 |
$sql_statut_articles = " AND articles.statut IN ('prop', 'publie')";
|
|
|
86 |
} else {
|
|
|
87 |
$sql_statut_auteurs = " AND auteurs.statut IN ('0minirezo', '1comite', '5poubelle')";
|
|
|
88 |
$sql_statut_articles = "";
|
|
|
89 |
}
|
|
|
90 |
|
|
|
91 |
// tri
|
|
|
92 |
switch ($tri) {
|
|
|
93 |
case 'nombre':
|
|
|
94 |
$sql_order = ' ORDER BY compteur DESC, unom';
|
|
|
95 |
$type_requete = 'nombre';
|
|
|
96 |
break;
|
|
|
97 |
|
|
|
98 |
case 'statut':
|
|
|
99 |
$sql_order = ' ORDER BY auteurs.statut, login = "", unom';
|
|
|
100 |
$type_requete = 'auteur';
|
|
|
101 |
break;
|
|
|
102 |
|
|
|
103 |
case 'nom':
|
|
|
104 |
default:
|
|
|
105 |
$sql_order = ' ORDER BY unom';
|
|
|
106 |
$type_requete = 'auteur';
|
|
|
107 |
}
|
|
|
108 |
|
|
|
109 |
|
|
|
110 |
// si on doit afficher les auteurs par statut ou par nom,
|
|
|
111 |
// la requete principale est simple, et une autre requete
|
|
|
112 |
// vient calculer les nombres d'articles publies ;
|
|
|
113 |
// si en revanche on doit classer par nombre, la bonne requete
|
|
|
114 |
// est la concatenation de $query_nombres et de $query_auteurs
|
|
|
115 |
|
|
|
116 |
unset($nombre_auteurs);
|
|
|
117 |
$auteurs = Array();
|
|
|
118 |
|
|
|
119 |
if ($type_requete == 'auteur') {
|
|
|
120 |
$result_auteurs = spip_query("SELECT id_auteur, statut, login, nom, email, url_site, messagerie, UPPER(nom) AS unom
|
|
|
121 |
FROM spip_auteurs AS auteurs
|
|
|
122 |
WHERE 1 $sql_statut_auteurs
|
|
|
123 |
$sql_order");
|
|
|
124 |
while ($row = spip_fetch_array($result_auteurs)) {
|
|
|
125 |
$auteurs[$row['id_auteur']] = $row;
|
|
|
126 |
$nombre_auteurs ++;
|
|
|
127 |
}
|
|
|
128 |
|
|
|
129 |
$result_nombres = spip_query("SELECT auteurs.id_auteur, UPPER(auteurs.nom) AS unom, COUNT(articles.id_article) AS compteur
|
|
|
130 |
FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien, spip_articles AS articles
|
|
|
131 |
WHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=articles.id_article
|
|
|
132 |
$sql_statut_auteurs $sql_statut_articles
|
|
|
133 |
GROUP BY auteurs.id_auteur
|
|
|
134 |
$sql_order");
|
|
|
135 |
while ($row = spip_fetch_array($result_nombres))
|
|
|
136 |
$auteurs[$row['id_auteur']]['compteur'] = $row['compteur'];
|
|
|
137 |
|
|
|
138 |
// si on n'est pas minirezo, supprimer les auteurs sans article publie
|
|
|
139 |
// sauf les admins, toujours visibles.
|
|
|
140 |
if ($connect_statut != '0minirezo') {
|
|
|
141 |
reset($auteurs);
|
|
|
142 |
while (list(,$auteur) = each ($auteurs)) {
|
|
|
143 |
if (! $auteur['compteur'] AND ($auteur['statut'] != '0minirezo')) {
|
|
|
144 |
unset($auteurs[$auteur['id_auteur']]);
|
|
|
145 |
$nombre_auteurs --;
|
|
|
146 |
}
|
|
|
147 |
}
|
|
|
148 |
}
|
|
|
149 |
|
|
|
150 |
// apres avoir supprime les auteurs sans article publie
|
|
|
151 |
// generer les paires lettre/indice pour l'acces direct
|
|
|
152 |
// sur la premiere lettre
|
|
|
153 |
$lettres_nombre_auteurs = 0;
|
|
|
154 |
foreach ($auteurs as $auteur) {
|
|
|
155 |
$lettres_nombre_auteurs ++;
|
|
|
156 |
$premiere_lettre = addslashes(strtoupper(spip_substr($auteur['nom'],0,1)));
|
|
|
157 |
if ($premiere_lettre != $lettre_prec) {
|
|
|
158 |
$lettre[$premiere_lettre] = $lettres_nombre_auteurs-1;
|
|
|
159 |
}
|
|
|
160 |
$lettre_prec = $premiere_lettre;
|
|
|
161 |
}
|
|
|
162 |
|
|
|
163 |
} else { // tri par nombre
|
|
|
164 |
$result_nombres = spip_query("SELECT auteurs.id_auteur, auteurs.statut, auteurs.login, auteurs.nom, auteurs.email, auteurs.url_site, auteurs.messagerie, UPPER(nom) AS unom, COUNT(articles.id_article) AS compteur
|
|
|
165 |
FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien, spip_articles AS articles
|
|
|
166 |
WHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=articles.id_article
|
|
|
167 |
$sql_statut_auteurs $sql_statut_articles
|
|
|
168 |
GROUP BY auteurs.id_auteur
|
|
|
169 |
$sql_order");
|
|
|
170 |
unset($vus);
|
|
|
171 |
while ($row = spip_fetch_array($result_nombres)) {
|
|
|
172 |
$auteurs[$row['id_auteur']] = $row;
|
|
|
173 |
$vus .= ','.$row['id_auteur'];
|
|
|
174 |
$nombre_auteurs ++;
|
|
|
175 |
}
|
|
|
176 |
|
|
|
177 |
// si on est admin, ajouter tous les auteurs sans articles
|
|
|
178 |
// sinon ajouter seulement les admins sans articles
|
|
|
179 |
if ($connect_statut == '0minirezo')
|
|
|
180 |
$sql_statut_auteurs_ajout = $sql_statut_auteurs;
|
|
|
181 |
else
|
|
|
182 |
$sql_statut_auteurs_ajout = " AND auteurs.statut = '0minirezo'";
|
|
|
183 |
|
|
|
184 |
$result_auteurs = spip_query("SELECT auteurs.id_auteur, auteurs.statut, auteurs.login, auteurs.nom, auteurs.email, auteurs.url_site, auteurs.messagerie, UPPER(nom) AS unom, 0 as compteur
|
|
|
185 |
FROM spip_auteurs AS auteurs
|
|
|
186 |
WHERE id_auteur NOT IN (0$vus)
|
|
|
187 |
$sql_statut_auteurs_ajout
|
|
|
188 |
$sql_order");
|
|
|
189 |
while ($row = spip_fetch_array($result_auteurs)) {
|
|
|
190 |
$auteurs[$row['id_auteur']] = $row;
|
|
|
191 |
$nombre_auteurs ++;
|
|
|
192 |
}
|
|
|
193 |
}
|
|
|
194 |
|
|
|
195 |
|
|
|
196 |
unset ($rub_restreinte);
|
|
|
197 |
if ($connect_statut == '0minirezo') { // recuperer les admins restreints
|
|
|
198 |
$restreint = spip_query("SELECT * FROM spip_auteurs_rubriques");
|
|
|
199 |
while ($row = spip_fetch_array($restreint))
|
|
|
200 |
$rub_restreinte[$row['id_auteur']] .= ','.$row['id_rubrique'];
|
|
|
201 |
}
|
|
|
202 |
|
|
|
203 |
//
|
|
|
204 |
// Affichage
|
|
|
205 |
//
|
|
|
206 |
|
|
|
207 |
echo "<br>";
|
|
|
208 |
if ($visiteurs=='oui')
|
|
|
209 |
gros_titre(_T('info_visiteurs'));
|
|
|
210 |
else
|
|
|
211 |
gros_titre(_T('info_auteurs'));
|
|
|
212 |
echo "<p>";
|
|
|
213 |
|
|
|
214 |
// reglage du debut
|
|
|
215 |
$max_par_page = 30;
|
|
|
216 |
if ($debut > $nombre_auteurs - $max_par_page)
|
|
|
217 |
$debut = max(0,$nombre_auteurs - $max_par_page);
|
|
|
218 |
$fin = min($nombre_auteurs, $debut + $max_par_page);
|
|
|
219 |
|
|
|
220 |
// ignorer les $debut premiers
|
|
|
221 |
unset ($i);
|
|
|
222 |
reset ($auteurs);
|
|
|
223 |
while ($i++ < $debut AND each($auteurs));
|
|
|
224 |
|
|
|
225 |
// ici commence la vraie boucle
|
|
|
226 |
debut_cadre_relief('auteur-24.gif');
|
|
|
227 |
echo "<TABLE BORDER=0 CELLPADDING=2 CELLSPACING=0 WIDTH='100%' class='arial2' style='border: 1px solid #aaaaaa;'>\n";
|
|
|
228 |
echo "<tr bgcolor='#DBE1C5'>";
|
|
|
229 |
echo "<td width='20'>";
|
|
|
230 |
if ($tri=='statut')
|
|
|
231 |
echo http_img_pack('admin-12.gif','', "border='0'");
|
|
|
232 |
else
|
|
|
233 |
echo http_href_img('auteurs.php3?tri=statut','admin-12.gif', "border='0'", _T('lien_trier_statut'));
|
|
|
234 |
|
|
|
235 |
echo "</td><td>";
|
|
|
236 |
if ($tri == '' OR $tri=='nom')
|
|
|
237 |
echo '<b>'._T('info_nom').'</b>';
|
|
|
238 |
else
|
|
|
239 |
echo "<a href='auteurs.php3?tri=nom' title='"._T('lien_trier_nom')."'>"._T('info_nom')."</a>";
|
|
|
240 |
|
|
|
241 |
if ($options == 'avancees') echo "</td><td colspan='2'>"._T('info_contact');
|
|
|
242 |
echo "</td><td>";
|
|
|
243 |
if ($visiteurs != 'oui') {
|
|
|
244 |
if ($tri=='nombre')
|
|
|
245 |
echo '<b>'._T('info_articles').'</b>';
|
|
|
246 |
else
|
|
|
247 |
echo "<a href='auteurs.php3?tri=nombre' title=\""._T('lien_trier_nombre_articles')."\">"._T('info_articles_2')."</a>"; //'
|
|
|
248 |
}
|
|
|
249 |
echo "</td></tr>\n";
|
|
|
250 |
|
|
|
251 |
if ($nombre_auteurs > $max_par_page) {
|
|
|
252 |
echo "<tr bgcolor='white'><td class='arial1' colspan='".($options == 'avancees' ? 5 : 3)."'>";
|
|
|
253 |
//echo "<font face='Verdana,Arial,Sans,sans-serif' size='2'>";
|
|
|
254 |
for ($j=0; $j < $nombre_auteurs; $j+=$max_par_page) {
|
|
|
255 |
if ($j > 0) echo " | ";
|
|
|
256 |
|
|
|
257 |
if ($j == $debut)
|
|
|
258 |
echo "<b>$j</b>";
|
|
|
259 |
else if ($j > 0)
|
|
|
260 |
echo "<a href=$retour&debut=$j>$j</a>";
|
|
|
261 |
else
|
|
|
262 |
echo " <a href=$retour>0</a>";
|
|
|
263 |
|
|
|
264 |
if ($debut > $j AND $debut < $j+$max_par_page){
|
|
|
265 |
echo " | <b>$debut</b>";
|
|
|
266 |
}
|
|
|
267 |
|
|
|
268 |
}
|
|
|
269 |
//echo "</font>";
|
|
|
270 |
echo "</td></tr>\n";
|
|
|
271 |
|
|
|
272 |
if (($tri == 'nom' OR !$tri) AND $options == 'avancees') {
|
|
|
273 |
// affichage des lettres
|
|
|
274 |
echo "<tr bgcolor='white'><td class='arial11' colspan='5'>";
|
|
|
275 |
// echo "<font face='Verdana,Arial,Sans,sans-serif' size=2>";
|
|
|
276 |
while (list($key,$val) = each($lettre)) {
|
|
|
277 |
if ($val == $debut)
|
|
|
278 |
echo "<b>$key</b> ";
|
|
|
279 |
else
|
|
|
280 |
echo "<a href=$retour&debut=$val>$key</a> ";
|
|
|
281 |
}
|
|
|
282 |
// echo "</font>";
|
|
|
283 |
echo "</td></tr>\n";
|
|
|
284 |
}
|
|
|
285 |
echo "<tr height='5'></tr>";
|
|
|
286 |
}
|
|
|
287 |
|
|
|
288 |
|
|
|
289 |
|
|
|
290 |
while ($i++ <= $fin && (list(,$row) = each ($auteurs))) {
|
|
|
291 |
// couleur de ligne
|
|
|
292 |
$couleur = ($i % 2) ? '#FFFFFF' : $couleur_claire;
|
|
|
293 |
echo "<tr style='background-color: #eeeeee;'>";
|
|
|
294 |
|
|
|
295 |
// statut auteur
|
|
|
296 |
echo "<td style='border-top: 1px solid #cccccc;'>";
|
|
|
297 |
echo bonhomme_statut($row);
|
|
|
298 |
|
|
|
299 |
// nom
|
|
|
300 |
echo "</td><td class='verdana11' style='border-top: 1px solid #cccccc;'>";
|
|
|
301 |
echo "<a href='auteurs_edit.php3?id_auteur=".$row['id_auteur']."'>".typo($row['nom']).'</a>';
|
|
|
302 |
|
|
|
303 |
if ($connect_statut == '0minirezo' AND $row['statut']=='0minirezo' AND $rub_restreinte[$row['id_auteur']])
|
|
|
304 |
echo " <small>"._T('statut_admin_restreint')."</small>";
|
|
|
305 |
|
|
|
306 |
|
|
|
307 |
// contact
|
|
|
308 |
if ($options == 'avancees') {
|
|
|
309 |
echo "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>";
|
|
|
310 |
if ($row['messagerie'] != 'non' AND $row['login']
|
|
|
311 |
AND $activer_messagerie != "non" AND $connect_activer_messagerie != "non" AND $messagerie != "non")
|
|
|
312 |
echo bouton_imessage($row['id_auteur'],"force")." ";
|
|
|
313 |
if ($connect_statut=="0minirezo")
|
|
|
314 |
if (strlen($row['email'])>3)
|
|
|
315 |
echo "<A HREF='mailto:".$row['email']."'>"._T('lien_email')."</A>";
|
|
|
316 |
else
|
|
|
317 |
echo " ";
|
|
|
318 |
|
|
|
319 |
if (strlen($row['url_site'])>3)
|
|
|
320 |
echo "</td><td class='arial1' style='border-top: 1px solid #cccccc;'><A HREF='".$row['url_site']."'>"._T('lien_site')."</A>";
|
|
|
321 |
else
|
|
|
322 |
echo "</td><td style='border-top: 1px solid #cccccc;'> ";
|
|
|
323 |
}
|
|
|
324 |
|
|
|
325 |
// nombre d'articles
|
|
|
326 |
echo "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>";
|
|
|
327 |
if ($row['compteur'] > 1)
|
|
|
328 |
echo $row['compteur']." "._T('info_article_2');
|
|
|
329 |
else if($row['compteur'] == 1)
|
|
|
330 |
echo "1 "._T('info_article');
|
|
|
331 |
else
|
|
|
332 |
echo " ";
|
|
|
333 |
|
|
|
334 |
echo "</td></tr>\n";
|
|
|
335 |
}
|
|
|
336 |
|
|
|
337 |
echo "</table>\n";
|
|
|
338 |
|
|
|
339 |
|
|
|
340 |
echo "<a name='bas'>";
|
|
|
341 |
echo "<table width='100%' border='0'>";
|
|
|
342 |
|
|
|
343 |
$debut_suivant = $debut + $max_par_page;
|
|
|
344 |
if ($debut_suivant < $nombre_auteurs OR $debut > 0) {
|
|
|
345 |
echo "<tr height='10'></tr>";
|
|
|
346 |
echo "<tr bgcolor='white'><td align='left'>";
|
|
|
347 |
if ($debut > 0) {
|
|
|
348 |
$debut_prec = strval(max($debut - $max_par_page, 0));
|
|
|
349 |
$link = new Link;
|
|
|
350 |
$link->addVar('debut', $debut_prec);
|
|
|
351 |
echo $link->getForm('GET');
|
|
|
352 |
echo "<input type='submit' name='submit' value='<<<' class='fondo'>";
|
|
|
353 |
echo "</form>";
|
|
|
354 |
//echo "<a href='$retour&debut=$debut_prec'><<<</a>";
|
|
|
355 |
}
|
|
|
356 |
echo "</td><td style='text-align: $spip_lang_right'>";
|
|
|
357 |
if ($debut_suivant < $nombre_auteurs) {
|
|
|
358 |
$link = new Link;
|
|
|
359 |
$link->addVar('debut', $debut_suivant);
|
|
|
360 |
echo $link->getForm('GET');
|
|
|
361 |
echo "<input type='submit' name='submit' value='>>>' class='fondo'>";
|
|
|
362 |
echo "</form>";
|
|
|
363 |
//echo "<a href='$retour&debut=$debut_suivant'>>>></a>";
|
|
|
364 |
}
|
|
|
365 |
echo "</td></tr>\n";
|
|
|
366 |
}
|
|
|
367 |
|
|
|
368 |
echo "</table>\n";
|
|
|
369 |
|
|
|
370 |
|
|
|
371 |
|
|
|
372 |
fin_cadre_relief();
|
|
|
373 |
|
|
|
374 |
|
|
|
375 |
fin_page();
|
|
|
376 |
|
|
|
377 |
?>
|