Subversion Repositories Sites.tela-botanica.org

Rev

Rev 609 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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 " &nbsp;<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")."&nbsp;";
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 "&nbsp;";
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;'>&nbsp;";
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']."&nbsp;"._T('info_article_2');
329
	else if($row['compteur'] == 1)
330
		echo "1&nbsp;"._T('info_article');
331
	else
332
		echo "&nbsp;";
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='&lt;&lt;&lt;' class='fondo'>";
353
		echo "</form>";
354
		//echo "<a href='$retour&debut=$debut_prec'>&lt;&lt;&lt;</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='&gt;&gt;&gt;' class='fondo'>";
362
		echo "</form>";
363
		//echo "<a href='$retour&debut=$debut_suivant'>&gt;&gt;&gt;</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
?>