Rev 609 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2005 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
include ("inc.php3");
include_ecrire ("inc_acces.php3");
//
// Action : supprimer un auteur
//
if ($supp && ($connect_statut == '0minirezo'))
spip_query("UPDATE spip_auteurs SET statut='5poubelle' WHERE id_auteur=$supp");
$retour = "auteurs.php3?";
if ($tri) {
$retour .= "tri=$tri";
if ($tri=='nom' OR $tri=='statut')
$partri = " "._T('info_par_tri', array('tri' => $tri));
else if ($tri=='nombre')
$partri = " "._T('info_par_nombre_article');
}
if ($visiteurs == "oui") {
debut_page(_T('titre_page_auteurs'),"auteurs","redacteurs");
$retour .= '&visiteurs=oui';
} else
debut_page(_T('info_auteurs_par_tri', array('partri' => $partri)),"auteurs","redacteurs");
debut_gauche();
debut_boite_info();
if ($visiteurs == "oui")
echo "<p class='arial1'>"._T('info_gauche_visiteurs_enregistres');
else {
echo "<p class='arial1'>"._T('info_gauche_auteurs');
if ($connect_statut == '0minirezo')
echo '<br>'. _T('info_gauche_auteurs_exterieurs');
}
fin_boite_info();
if ($connect_statut == '0minirezo') {
$query = "SELECT id_auteur FROM spip_auteurs WHERE statut='6forum' LIMIT 0,1";
$result = spip_query($query);
$flag_visiteurs = spip_num_rows($result) > 0;
debut_raccourcis();
icone_horizontale(_T('icone_creer_nouvel_auteur'), "auteur_infos.php3?new=oui", "auteur-24.gif", "creer.gif");
icone_horizontale(_T('icone_informations_personnelles'), "auteurs_edit.php3?id_auteur=$connect_id_auteur", "fiche-perso-24.gif","rien.gif");
if ($flag_visiteurs) {
if ($visiteurs == "oui")
icone_horizontale (_T('icone_afficher_auteurs'), "auteurs.php3", "auteur-24.gif", "");
else
icone_horizontale (_T('icone_afficher_visiteurs'), "auteurs.php3?visiteurs=oui", "auteur-24.gif", "");
}
fin_raccourcis();
}
debut_droite();
//
// Construire la requete
//
// limiter les statuts affiches
if (($visiteurs == "oui") AND ($connect_statut == '0minirezo')) {
$sql_statut_auteurs = " AND auteurs.statut IN ('6forum', '5poubelle')";
$sql_statut_articles = '';
$tri = 'nom';
} else if ($connect_statut != '0minirezo') {
$sql_statut_auteurs = " AND auteurs.statut IN ('0minirezo', '1comite')";
$sql_statut_articles = " AND articles.statut IN ('prop', 'publie')";
} else {
$sql_statut_auteurs = " AND auteurs.statut IN ('0minirezo', '1comite', '5poubelle')";
$sql_statut_articles = "";
}
// tri
switch ($tri) {
case 'nombre':
$sql_order = ' ORDER BY compteur DESC, unom';
$type_requete = 'nombre';
break;
case 'statut':
$sql_order = ' ORDER BY auteurs.statut, login = "", unom';
$type_requete = 'auteur';
break;
case 'nom':
default:
$sql_order = ' ORDER BY unom';
$type_requete = 'auteur';
}
// si on doit afficher les auteurs par statut ou par nom,
// la requete principale est simple, et une autre requete
// vient calculer les nombres d'articles publies ;
// si en revanche on doit classer par nombre, la bonne requete
// est la concatenation de $query_nombres et de $query_auteurs
unset($nombre_auteurs);
$auteurs = Array();
if ($type_requete == 'auteur') {
$result_auteurs = spip_query("SELECT id_auteur, statut, login, nom, email, url_site, messagerie, UPPER(nom) AS unom
FROM spip_auteurs AS auteurs
WHERE 1 $sql_statut_auteurs
$sql_order");
while ($row = spip_fetch_array($result_auteurs)) {
$auteurs[$row['id_auteur']] = $row;
$nombre_auteurs ++;
}
$result_nombres = spip_query("SELECT auteurs.id_auteur, UPPER(auteurs.nom) AS unom, COUNT(articles.id_article) AS compteur
FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien, spip_articles AS articles
WHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=articles.id_article
$sql_statut_auteurs $sql_statut_articles
GROUP BY auteurs.id_auteur
$sql_order");
while ($row = spip_fetch_array($result_nombres))
$auteurs[$row['id_auteur']]['compteur'] = $row['compteur'];
// si on n'est pas minirezo, supprimer les auteurs sans article publie
// sauf les admins, toujours visibles.
if ($connect_statut != '0minirezo') {
reset($auteurs);
while (list(,$auteur) = each ($auteurs)) {
if (! $auteur['compteur'] AND ($auteur['statut'] != '0minirezo')) {
unset($auteurs[$auteur['id_auteur']]);
$nombre_auteurs --;
}
}
}
// apres avoir supprime les auteurs sans article publie
// generer les paires lettre/indice pour l'acces direct
// sur la premiere lettre
$lettres_nombre_auteurs = 0;
foreach ($auteurs as $auteur) {
$lettres_nombre_auteurs ++;
$premiere_lettre = addslashes(strtoupper(spip_substr($auteur['nom'],0,1)));
if ($premiere_lettre != $lettre_prec) {
$lettre[$premiere_lettre] = $lettres_nombre_auteurs-1;
}
$lettre_prec = $premiere_lettre;
}
} else { // tri par nombre
$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
FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien, spip_articles AS articles
WHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=articles.id_article
$sql_statut_auteurs $sql_statut_articles
GROUP BY auteurs.id_auteur
$sql_order");
unset($vus);
while ($row = spip_fetch_array($result_nombres)) {
$auteurs[$row['id_auteur']] = $row;
$vus .= ','.$row['id_auteur'];
$nombre_auteurs ++;
}
// si on est admin, ajouter tous les auteurs sans articles
// sinon ajouter seulement les admins sans articles
if ($connect_statut == '0minirezo')
$sql_statut_auteurs_ajout = $sql_statut_auteurs;
else
$sql_statut_auteurs_ajout = " AND auteurs.statut = '0minirezo'";
$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
FROM spip_auteurs AS auteurs
WHERE id_auteur NOT IN (0$vus)
$sql_statut_auteurs_ajout
$sql_order");
while ($row = spip_fetch_array($result_auteurs)) {
$auteurs[$row['id_auteur']] = $row;
$nombre_auteurs ++;
}
}
unset ($rub_restreinte);
if ($connect_statut == '0minirezo') { // recuperer les admins restreints
$restreint = spip_query("SELECT * FROM spip_auteurs_rubriques");
while ($row = spip_fetch_array($restreint))
$rub_restreinte[$row['id_auteur']] .= ','.$row['id_rubrique'];
}
//
// Affichage
//
echo "<br>";
if ($visiteurs=='oui')
gros_titre(_T('info_visiteurs'));
else
gros_titre(_T('info_auteurs'));
echo "<p>";
// reglage du debut
$max_par_page = 30;
if ($debut > $nombre_auteurs - $max_par_page)
$debut = max(0,$nombre_auteurs - $max_par_page);
$fin = min($nombre_auteurs, $debut + $max_par_page);
// ignorer les $debut premiers
unset ($i);
reset ($auteurs);
while ($i++ < $debut AND each($auteurs));
// ici commence la vraie boucle
debut_cadre_relief('auteur-24.gif');
echo "<TABLE BORDER=0 CELLPADDING=2 CELLSPACING=0 WIDTH='100%' class='arial2' style='border: 1px solid #aaaaaa;'>\n";
echo "<tr bgcolor='#DBE1C5'>";
echo "<td width='20'>";
if ($tri=='statut')
echo http_img_pack('admin-12.gif','', "border='0'");
else
echo http_href_img('auteurs.php3?tri=statut','admin-12.gif', "border='0'", _T('lien_trier_statut'));
echo "</td><td>";
if ($tri == '' OR $tri=='nom')
echo '<b>'._T('info_nom').'</b>';
else
echo "<a href='auteurs.php3?tri=nom' title='"._T('lien_trier_nom')."'>"._T('info_nom')."</a>";
if ($options == 'avancees') echo "</td><td colspan='2'>"._T('info_contact');
echo "</td><td>";
if ($visiteurs != 'oui') {
if ($tri=='nombre')
echo '<b>'._T('info_articles').'</b>';
else
echo "<a href='auteurs.php3?tri=nombre' title=\""._T('lien_trier_nombre_articles')."\">"._T('info_articles_2')."</a>"; //'
}
echo "</td></tr>\n";
if ($nombre_auteurs > $max_par_page) {
echo "<tr bgcolor='white'><td class='arial1' colspan='".($options == 'avancees' ? 5 : 3)."'>";
//echo "<font face='Verdana,Arial,Sans,sans-serif' size='2'>";
for ($j=0; $j < $nombre_auteurs; $j+=$max_par_page) {
if ($j > 0) echo " | ";
if ($j == $debut)
echo "<b>$j</b>";
else if ($j > 0)
echo "<a href=$retour&debut=$j>$j</a>";
else
echo " <a href=$retour>0</a>";
if ($debut > $j AND $debut < $j+$max_par_page){
echo " | <b>$debut</b>";
}
}
//echo "</font>";
echo "</td></tr>\n";
if (($tri == 'nom' OR !$tri) AND $options == 'avancees') {
// affichage des lettres
echo "<tr bgcolor='white'><td class='arial11' colspan='5'>";
// echo "<font face='Verdana,Arial,Sans,sans-serif' size=2>";
while (list($key,$val) = each($lettre)) {
if ($val == $debut)
echo "<b>$key</b> ";
else
echo "<a href=$retour&debut=$val>$key</a> ";
}
// echo "</font>";
echo "</td></tr>\n";
}
echo "<tr height='5'></tr>";
}
while ($i++ <= $fin && (list(,$row) = each ($auteurs))) {
// couleur de ligne
$couleur = ($i % 2) ? '#FFFFFF' : $couleur_claire;
echo "<tr style='background-color: #eeeeee;'>";
// statut auteur
echo "<td style='border-top: 1px solid #cccccc;'>";
echo bonhomme_statut($row);
// nom
echo "</td><td class='verdana11' style='border-top: 1px solid #cccccc;'>";
echo "<a href='auteurs_edit.php3?id_auteur=".$row['id_auteur']."'>".typo($row['nom']).'</a>';
if ($connect_statut == '0minirezo' AND $row['statut']=='0minirezo' AND $rub_restreinte[$row['id_auteur']])
echo " <small>"._T('statut_admin_restreint')."</small>";
// contact
if ($options == 'avancees') {
echo "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>";
if ($row['messagerie'] != 'non' AND $row['login']
AND $activer_messagerie != "non" AND $connect_activer_messagerie != "non" AND $messagerie != "non")
echo bouton_imessage($row['id_auteur'],"force")." ";
if ($connect_statut=="0minirezo")
if (strlen($row['email'])>3)
echo "<A HREF='mailto:".$row['email']."'>"._T('lien_email')."</A>";
else
echo " ";
if (strlen($row['url_site'])>3)
echo "</td><td class='arial1' style='border-top: 1px solid #cccccc;'><A HREF='".$row['url_site']."'>"._T('lien_site')."</A>";
else
echo "</td><td style='border-top: 1px solid #cccccc;'> ";
}
// nombre d'articles
echo "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>";
if ($row['compteur'] > 1)
echo $row['compteur']." "._T('info_article_2');
else if($row['compteur'] == 1)
echo "1 "._T('info_article');
else
echo " ";
echo "</td></tr>\n";
}
echo "</table>\n";
echo "<a name='bas'>";
echo "<table width='100%' border='0'>";
$debut_suivant = $debut + $max_par_page;
if ($debut_suivant < $nombre_auteurs OR $debut > 0) {
echo "<tr height='10'></tr>";
echo "<tr bgcolor='white'><td align='left'>";
if ($debut > 0) {
$debut_prec = strval(max($debut - $max_par_page, 0));
$link = new Link;
$link->addVar('debut', $debut_prec);
echo $link->getForm('GET');
echo "<input type='submit' name='submit' value='<<<' class='fondo'>";
echo "</form>";
//echo "<a href='$retour&debut=$debut_prec'><<<</a>";
}
echo "</td><td style='text-align: $spip_lang_right'>";
if ($debut_suivant < $nombre_auteurs) {
$link = new Link;
$link->addVar('debut', $debut_suivant);
echo $link->getForm('GET');
echo "<input type='submit' name='submit' value='>>>' class='fondo'>";
echo "</form>";
//echo "<a href='$retour&debut=$debut_suivant'>>>></a>";
}
echo "</td></tr>\n";
}
echo "</table>\n";
fin_cadre_relief();
fin_page();
?>