Rev 609 | 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';} elsedebut_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", "");elseicone_horizontale (_T('icone_afficher_visiteurs'), "auteurs.php3?visiteurs=oui", "auteur-24.gif", "");}fin_raccourcis();}debut_droite();//// Construire la requete//// limiter les statuts affichesif (($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 = "";}// triswitch ($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_auteursunset($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 unomFROM spip_auteurs AS auteursWHERE 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 compteurFROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien, spip_articles AS articlesWHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=articles.id_article$sql_statut_auteurs $sql_statut_articlesGROUP 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 compteurFROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien, spip_articles AS articlesWHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=articles.id_article$sql_statut_auteurs $sql_statut_articlesGROUP 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 articlesif ($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 compteurFROM spip_auteurs AS auteursWHERE 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'));elsegros_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 premiersunset ($i);reset ($auteurs);while ($i++ < $debut AND each($auteurs));// ici commence la vraie boucledebut_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'");elseecho 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>';elseecho "<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>';elseecho "<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>";elseecho " <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 lettresecho "<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> ";elseecho "<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 auteurecho "<td style='border-top: 1px solid #cccccc;'>";echo bonhomme_statut($row);// nomecho "</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>";// contactif ($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>";elseecho " ";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>";elseecho "</td><td style='border-top: 1px solid #cccccc;'> ";}// nombre d'articlesecho "</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');elseecho " ";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();?>