From 330380ae69b0c32e421f4aa0c3c9636eff849446 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Tue, 17 Oct 2006 12:20:27 +0000
Subject: [PATCH] =?UTF-8?q?[7637,=20suite:=20inc=5Fbouton=5Fauteur=20devie?=
 =?UTF-8?q?nt=20la=20fonction=20fabriquant=20le=20code=20HTML=20des=20info?=
 =?UTF-8?q?rmations=20sur=20un=20auteur,=20ce=20qui=20permet=20de=20partag?=
 =?UTF-8?q?er=20le=20code=20et=20homog=C3=A9nise=20l'interface.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Dans le résultat de cette fonction, l'icone de messagerie reférence le mail s'il est présent dans la table, le script de messagerie interne sinon (cela pour prendre en compte le peu d'utilisation de cette messagerie, mais on peut toujours appliquer ce script à cet auteur par le bouton au bas de la page de l'auteur). Comme auparavant (mais à présent cela s'applique donc aussi au mail) cette icone n'apparait pas si l'auteur ne s'est pas connecté depuis plus de 15 jours (et n'apparait pas pour soi-meme).

Enfin, cliquer sur l'icone de statut d'un auteur affiche la pages des auteurs ayant ce statut (nouvelle fonctionnalité du script auteurs.php).
---
 ecrire/exec/auteur_infos.php  |   6 ++
 ecrire/exec/auteurs.php       | 114 +++++++++++++---------------------
 ecrire/exec/forum_envoi.php   |   9 ++-
 ecrire/inc/bouton_auteur.php  |  64 ++++++++++++++-----
 ecrire/inc/editer_auteurs.php |  49 +++------------
 ecrire/inc/presentation.php   |  97 ++++++++++-------------------
 ecrire/inc/vieilles_defs.php  |  18 ++++++
 7 files changed, 158 insertions(+), 199 deletions(-)

diff --git a/ecrire/exec/auteur_infos.php b/ecrire/exec/auteur_infos.php
index daf04c30a6..3d535bfc63 100644
--- a/ecrire/exec/auteur_infos.php
+++ b/ecrire/exec/auteur_infos.php
@@ -91,6 +91,12 @@ function exec_auteur_infos_dist()
 	  debut_cadre_relief("redacteurs-24.gif", true),
 	  $legender_auteur, $instituer_auteur;
 
+	echo pipeline('affiche_milieu',
+	        array('args' => array(
+        	        'exec'=>'auteur_infos',
+                	'id_auteur'=>$id_auteur),
+		      'data'=>''));
+
 	auteurs_interventions($id_auteur, $auteur['statut']);
 
 	echo fin_cadre_relief(true),
diff --git a/ecrire/exec/auteurs.php b/ecrire/exec/auteurs.php
index c32d3eed01..d56663cd7a 100644
--- a/ecrire/exec/auteurs.php
+++ b/ecrire/exec/auteurs.php
@@ -17,12 +17,12 @@ include_spip('inc/presentation');
 // http://doc.spip.org/@exec_auteurs_dist
 function exec_auteurs_dist()
 {
-	global  $visiteurs;
 
 	$tri = preg_replace('/\W/', '', _request('tri'));
 	if (!$tri) $tri='nom'; 
+	$statut = preg_replace('/\W/', '', _request('statut'));
 
-	$result = requete_auteurs($tri, $visiteurs);
+	$result = requete_auteurs($tri, $statut);
 	$nombre_auteurs = spip_num_rows($result);
 	$max_par_page = 30;
 	$debut = intval(_request('debut'));
@@ -31,13 +31,13 @@ function exec_auteurs_dist()
 
 	list($auteurs, $lettre)= lettres_d_auteurs($result, $debut, $max_par_page, $tri);
 
-	$res = auteurs_tranches(afficher_n_auteurs($auteurs), $debut, $lettre, $tri, $visiteurs, $max_par_page, $nombre_auteurs);
+	$res = auteurs_tranches(afficher_n_auteurs($auteurs), $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs);
 
 	if (_request('var_ajaxcharset')) ajax_retour($res);
 
 	pipeline('exec_init',array('args'=>array('exec'=>'auteurs'),'data'=>''));
 
-	bandeau_auteurs($auteurs, $debut, $tri, $visiteurs, $max_par_page, $nombre_auteurs);
+	bandeau_auteurs($tri, $statut);
 
 	echo "<div id='auteurs'>", $res, "</div>", fin_page();
 }
@@ -72,7 +72,7 @@ function lettres_d_auteurs($query, $debut, $max_par_page, $tri)
 
 
 // http://doc.spip.org/@bandeau_auteurs
-function bandeau_auteurs($auteurs, $debut, $tri, $visiteurs, $max_par_page, $nombre_auteurs)
+function bandeau_auteurs($tri, $statut)
 {
 	global $options, $spip_lang_right, $connect_id_auteur,   $connect_statut,   $connect_toutes_rubriques;
 
@@ -81,24 +81,22 @@ function bandeau_auteurs($auteurs, $debut, $tri, $visiteurs, $max_par_page, $nom
 	if ($tri=='nombre') $s = _T('info_par_nombre_articles');
 	$s = ' ('._T('info_par_nombre_article').')';
 
-	if ($visiteurs == "oui") {
+	if ($statut == '6forum') {
 		debut_page(_T('titre_page_auteurs'),"auteurs","redacteurs");
-		$visiteurs = '&visiteurs=oui';
 	} else {
 		debut_page(_T('info_auteurs_par_tri', array('partri' => $s)),"auteurs","redacteurs");
-	$visiteurs = "";
 	}
 	debut_gauche();
 
 	debut_boite_info();
-	if ($visiteurs)
+	if ($statut == '6forum') 
 		echo "\n<p class='arial1'>"._T('info_gauche_visiteurs_enregistres'), '</p>';
-	else {
+	else 
 		echo "\n<p class='arial1'>"._T('info_gauche_auteurs'), '</p>';
 
 	if ($connect_statut == '0minirezo')
 		echo "\n<br />". _T('info_gauche_auteurs_exterieurs');
-	}
+
 	fin_boite_info();
 
 
@@ -108,14 +106,14 @@ function bandeau_auteurs($auteurs, $debut, $tri, $visiteurs, $max_par_page, $nom
 			$res = icone_horizontale(_T('icone_creer_nouvel_auteur'), generer_url_ecrire("auteur_infos"), "auteur-24.gif", "creer.gif", false);
 		else $res = '';
 
-		$res .= icone_horizontale(_T('icone_informations_personnelles'), generer_url_ecrire("auteurs_edit","id_auteur=$connect_id_auteur"), "fiche-perso-24.gif","rien.gif", false);
+		$res .= icone_horizontale(_T('icone_informations_personnelles'), generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur&initial=-1"), "fiche-perso-24.gif","rien.gif", false);
 
 		$n = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs WHERE statut='6forum' LIMIT 1"));
 		if ($n) {
-			if ($visiteurs)
-				$res .= icone_horizontale (_T('icone_afficher_auteurs'), generer_url_ecrire("auteurs",""), "auteur-24.gif", "", false);
+			if ($statut == '6forum')
+				$res .= icone_horizontale (_T('icone_afficher_auteurs'), generer_url_ecrire("auteurs"), "auteur-24.gif", "", false);
 			else
-				$res .= icone_horizontale (_T('icone_afficher_visiteurs'), generer_url_ecrire("auteurs","visiteurs=oui"), "auteur-24.gif", "", false);
+				$res .= icone_horizontale (_T('icone_afficher_visiteurs'), generer_url_ecrire("auteurs","statut=6forum"), "auteur-24.gif", "", false);
 		}
 		echo bloc_des_raccourcis($res);
 	}
@@ -125,7 +123,7 @@ function bandeau_auteurs($auteurs, $debut, $tri, $visiteurs, $max_par_page, $nom
 	debut_droite();
 
 	echo "\n<br />";
-	if ($visiteurs)
+	if ($statut == '6forum') 
 		gros_titre(_T('info_visiteurs'));
 	else
 		gros_titre(_T('info_auteurs'));
@@ -133,7 +131,7 @@ function bandeau_auteurs($auteurs, $debut, $tri, $visiteurs, $max_par_page, $nom
 }
 
 // http://doc.spip.org/@auteurs_tranches
-function auteurs_tranches($auteurs, $debut, $lettre, $tri, $visiteurs, $max_par_page, $nombre_auteurs)
+function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs)
 {
 	global $options, $spip_lang_right;
 
@@ -147,29 +145,27 @@ function auteurs_tranches($auteurs, $debut, $lettre, $tri, $visiteurs, $max_par_
 	  $res .= auteurs_href(http_img_pack('admin-12.gif', $t, "border='0'"),'tri=statut', " title=\"$t\"");
 	}
 
-	$res .= "</td><td>";
+	$res .= "</td><td width='20'></td><td colspan='2'>";
 
 	if ($tri == '' OR $tri=='nom')
 		$res .= '<b>'._T('info_nom').'</b>';
 	else
 		$res .= auteurs_href(_T('info_nom'), "tri=nom", " title='"._T('lien_trier_nom'). "'");
 
-	if ($options == 'avancees')
-	 	$res .= "</td><td colspan='2'>"._T('info_contact');
 
 	$res .= "</td><td>";
 
-	if (!$visiteurs) {
+	if ($statut != '6forum') {
 		if ($tri=='nombre')
 			$res .= '<b>'._T('info_articles').'</b>';
 		else
 			$res .= auteurs_href(_T('info_articles_2'), "tri=nombre", " title=\""._T('lien_trier_nombre_articles'). '"');
-	} else $visiteurs = '&visiteurs=oui';
+	}
 
 	$res .= "</td></tr>\n";
 
 	if ($nombre_auteurs > $max_par_page) {
-		$res .= "\n<tr bgcolor='white'><td class='arial1' colspan='".($options == 'avancees' ? 5 : 3)."'>";
+		$res .= "\n<tr bgcolor='white'><td class='arial1' colspan='5'>";
 
 		for ($j=0; $j < $nombre_auteurs; $j+=$max_par_page) {
 			if ($j > 0) 	$res .= " | ";
@@ -177,9 +173,9 @@ function auteurs_tranches($auteurs, $debut, $lettre, $tri, $visiteurs, $max_par_
 			if ($j == $debut)
 				$res .= "<b>$j</b>";
 			else if ($j > 0)
-				$res .= auteurs_href($j, "tri=$tri$visiteurs&debut=$j");
+				$res .= auteurs_href($j, "tri=$tri&statut=$statut&debut=$j");
 			else
-				$res .= auteurs_href('0', "tri=$tri$visiteurs");
+				$res .= auteurs_href('0', "tri=$tri&statut=$statut");
 			if ($debut > $j  AND $debut < $j+$max_par_page){
 				$res .= " | <b>$debut</b>";
 			}
@@ -192,7 +188,7 @@ function auteurs_tranches($auteurs, $debut, $lettre, $tri, $visiteurs, $max_par_
 				if ($val == $debut)
 					$res .= "<b>$key</b>\n";
 				else
-					$res .= auteurs_href($key, "tri=$tri$visiteurs&debut=$val") . "\n";
+					$res .= auteurs_href($key, "tri=$tri&statut=$statut&debut=$val") . "\n";
 			}
 			$res .= "</td></tr>\n";
 		}
@@ -206,11 +202,11 @@ function auteurs_tranches($auteurs, $debut, $lettre, $tri, $visiteurs, $max_par_
 
 		if ($debut > 0) {
 			$debut_prec = max($debut - $max_par_page, 0);
-			$nav .= auteurs_href('&lt;&lt;&lt;',"tri=$tri&debut=$debut_prec$visiteurs");
+			$nav .= auteurs_href('&lt;&lt;&lt;',"tri=$tri&debut=$debut_prec&statut=$statut");
 		}
 		$nav .= "</td><td style='text-align: $spip_lang_right'>";
 		if ($debut_suivant < $nombre_auteurs) {
-			$nav .= auteurs_href('&gt;&gt;&gt;',"tri=$tri&debut=$debut_suivant$visiteurs");
+			$nav .= auteurs_href('&gt;&gt;&gt;',"tri=$tri&debut=$debut_suivant&statut=$statut");
 		}
 		$nav .= "</td></tr></table>\n";
 	}
@@ -236,7 +232,7 @@ function auteurs_href($clic, $args='', $att='')
 }
 
 // http://doc.spip.org/@requete_auteurs
-function requete_auteurs($tri, $visiteurs)
+function requete_auteurs($tri, $statut)
 {
   global $connect_statut, $spip_lang, $connect_id_auteur;
 
@@ -248,8 +244,8 @@ function requete_auteurs($tri, $visiteurs)
 // sauf les admins, toujours visibles.
 // limiter les statuts affiches
 if ($connect_statut == '0minirezo') {
-	if ($visiteurs == "oui") {
-		$sql_visible = "aut.statut IN ('6forum','5poubelle')";
+	if ($statut) {
+		$sql_visible = "aut.statut IN ('$statut')";
 		$tri = 'nom';
 	} else {
 		$sql_visible = "aut.statut IN ('0minirezo','1comite','5poubelle')";
@@ -271,7 +267,7 @@ case 'nombre':
 	break;
 
 case 'statut':
-	$sql_order = ' statut, login = "", unom';
+	$sql_order = ' statut, unom';
 	break;
 
 case 'nom':
@@ -286,7 +282,7 @@ default:
 // La requete de base est tres sympa
 //
 
- $row = spip_query("SELECT							aut.id_auteur AS id_auteur,							aut.statut AS statut,								aut.login AS login,								aut.nom AS nom,								aut.email AS email,								aut.source AS source,								aut.pass AS pass,								aut.url_site AS url_site,							aut.messagerie AS messagerie,							UPPER(aut.nom) AS unom,							count(lien.id_article) as compteur						$sql_sel									FROM spip_auteurs as aut							LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur	LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)		WHERE	$sql_visible								GROUP BY aut.id_auteur	 ORDER BY		$sql_order");
+ $row = spip_query("SELECT							aut.id_auteur AS id_auteur,							aut.statut AS statut,								aut.nom AS nom,								UPPER(aut.nom) AS unom,							count(lien.id_article) as compteur						$sql_sel									FROM spip_auteurs as aut							LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur	LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)		WHERE	$sql_visible								GROUP BY aut.id_auteur	 ORDER BY		$sql_order");
  return $row;
 }
 
@@ -298,48 +294,22 @@ function afficher_n_auteurs($auteurs) {
 	$bouton_auteur = charger_fonction('bouton_auteur', 'inc');
 	foreach ($auteurs as $row) {
 
-		$nom = typo($row['nom']);
-
+		list($s, $mail, $nom, $w, $p) = $bouton_auteur($row['id_auteur']);
 		$res .= "\n<tr style='background-color: #eeeeee;'>"
 		. "\n<td style='border-top: 1px solid #cccccc;'>"
-		. bonhomme_statut($row)
+		. $s
+		. "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>"
+		. $mail
 		. "</td><td class='verdana11' style='border-top: 1px solid #cccccc;'>"
-		. "<a href='"
-		. generer_url_ecrire('auteurs_edit',"id_auteur=".$row['id_auteur'])
-		."'>"
-		. ($nom ? $nom : ("<span style='color: red'>" . _T('texte_vide') . '</span>'))
-		. '</a>';
-
-		if (isset($row['restreint']) AND $row['restreint'])
-			$res .= " &nbsp;<small>"._T('statut_admin_restreint')."</small>";
-
-
-	// contact
-		if ($options == 'avancees') {
-			$res .= "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>";
-			$res .= $bouton_auteur($row['id_auteur'])."&nbsp;";
-			if ($connect_statut=="0minirezo")
-				if (strlen($row['email'])>3)
-					$res .= "<a href='mailto:".$row['email']."'>"._T('lien_email')."</a>";
-				else
-					$res .= "&nbsp;";
-
-			if (strlen($row['url_site'])>3)
-				$res .= "</td><td class='arial1' style='border-top: 1px solid #cccccc;'><a href='".$row['url_site']."'>"._T('lien_site')."</a>";
-			else
-				$res .= "</td><td style='border-top: 1px solid #cccccc;'>&nbsp;";
-		}
-
-	// nombre d'articles
-		$res .= "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>";
-		if ($row['compteur'] > 1)
-			$res .= $row['compteur']."&nbsp;"._T('info_article_2');
-		else if($row['compteur'] == 1)
-			$res .= "1&nbsp;"._T('info_article');
-		else
-			$res .= "&nbsp;";
-
-		$res .= "</td></tr>\n";
+		. $nom
+		. ((isset($row['restreint']) AND $row['restreint'])
+		   ? (" &nbsp;<small>"._T('statut_admin_restreint')."</small>")
+		   : '')
+		 ."</td><td class='arial1' style='border-top: 1px solid #cccccc;'>"
+		 . $w
+		 . "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>"
+		 . $p
+		.  "</td></tr>\n";
 	}
 	return $res;
 }
diff --git a/ecrire/exec/forum_envoi.php b/ecrire/exec/forum_envoi.php
index 3442c878ff..8594988070 100644
--- a/ecrire/exec/forum_envoi.php
+++ b/ecrire/exec/forum_envoi.php
@@ -90,14 +90,13 @@ if ($id_parent) {
 
     if ($titre_parent) {
 	debut_cadre_forum("forum-interne-24.gif", false, "", typo($titre_parent));
-	echo "<span class='arial2'>$date_heure_parent</span>";
-	echo " ".typo($auteur_parent);
+	echo "<span class='arial2'>$date_heure_parent</span> ";
 
 	if ($id_auteur_parent) {
 		$bouton_auteur = charger_fonction('bouton_auteur', 'inc');
-		$bouton = $bouton_auteur($id_auteur_parent);
-		if ($bouton) echo "&nbsp;".$bouton;
-	}
+		list($s, $mail, $nom, $w, $p) = $bouton_auteur($id_auteur_parent);
+		echo "$mail&nbsp;$nom";
+	} else 	echo " ", typo($auteur_parent);
 
 	echo justifier(propre($texte_parent));
 
diff --git a/ecrire/inc/bouton_auteur.php b/ecrire/inc/bouton_auteur.php
index c6179efec9..119b6547e4 100644
--- a/ecrire/inc/bouton_auteur.php
+++ b/ecrire/inc/bouton_auteur.php
@@ -13,31 +13,61 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 //
-// affiche un bouton appelant le script de messagerie interne
-//
+// Construit un tableau des 5 informations principales sur un auteur,
+// avec des liens vers les scripts associes:
+// 1. l'icone du statut, avec lien vers la page de tous ceux ayant ce statut
+// 2. le nom, avec lien vers la page complete des informations
+// 3. le mot "mail" avec un lien mailto ou a defaut la messagerie de Spip
+// 4. le nom du site perso avec le lien vers lui
+// 5. le nombre d'articles publies
 
 function inc_bouton_auteur_dist($id_auteur) {
 
 	global $connect_id_auteur, $spip_lang_rtl;
 
-	if ($id_auteur == $connect_id_auteur)
-		return '';
+	$id_auteur = intval($id_auteur);
+
+	$row = spip_fetch_array(spip_query("SELECT *, (en_ligne<DATE_SUB(NOW(),INTERVAL 15 DAY)) AS parti FROM spip_auteurs where id_auteur=$id_auteur"));
+
+	$vals = array();
 
-	$login_req = spip_query("SELECT login, messagerie FROM spip_auteurs where id_auteur=" . intval($id_auteur) ." AND en_ligne>DATE_SUB(NOW(),INTERVAL 15 DAY)");
-	$row = spip_fetch_array($login_req);
+	$href = generer_url_ecrire("auteurs","statut=" . $row['statut']);
+	$vals[] = "<a href='$href'>" . bonhomme_statut($row) . '</a>';
 
-	if (($row['login'] == "") OR ($row['messagerie'] == "non")) {
-			return '';
+	if (($id_auteur == $connect_id_auteur) OR $row['parti'])
+		$vals[]= '&nbsp;';
+	else {
+		if ($row['email']) $href='mailto:' . $row['email'];
+		else $href = generer_url_ecrire("message_edit","new=oui&dest=$id_auteur&type=normal");
+
+		$vals[]= "<a href='$href' title=\""
+		  . _T('email')
+		  . '">'
+		  . http_img_pack("m_envoi$spip_lang_rtl.gif", "m&gt;", "width='14' height='7'", _T('info_envoyer_message_prive'))
+		  . '</a>';
 	}
 
-	$title = _T('info_envoyer_message_prive');
-		
-	return "<a href='"
-	. generer_url_ecrire("message_edit","new=oui&dest=$id_auteur&type=normal")
-	. "' title=\""
-	. $title
-	. "\">"
-	. http_img_pack("m_envoi$spip_lang_rtl.gif", "m&gt;", "width='14' height='7'", $title)
-	. "</a>";
+	if ($bio_auteur = attribut_html(propre(couper($row["bio"], 100))))
+		$bio_auteur = " title=\"$bio_auteur\"";
+
+	if (!$nom = typo($row['nom']))
+		$nom = "<span style='color: red'>" . _T('texte_vide') . '</span>';
+
+	$vals[] = "<a href='"
+	. generer_url_ecrire('auteur_infos', "id_auteur=$id_auteur&initial=-1")
+	. "' $bio_auteur>$nom</a>";
+
+	if ($url_site_auteur = $row["url_site"]) $vals[] =  "<a href='$url_site_auteur'>"._T('info_site_min')."</a>";
+	else $vals[] =  "&nbsp;";
+
+	$cpt = spip_fetch_array(spip_query("SELECT COUNT(articles.id_article) AS n FROM spip_auteurs_articles AS lien, spip_articles AS articles WHERE lien.id_auteur=$id_auteur AND articles.id_article=lien.id_article AND articles.statut IN " . ($connect_statut == "0minirezo" ? "('prepa', 'prop', 'publie', 'refuse')" : "('prop', 'publie')") . " GROUP BY lien.id_auteur"));
+
+	$nombre_articles = intval($cpt['n']);
+
+	if ($nombre_articles > 1) $vals[] =  $nombre_articles.' '._T('info_article_2');
+	elseif ($nombre_articles == 1) $vals[] =  _T('info_1_article');
+	else $vals[] =  "&nbsp;";
+
+	return $vals;
 }
 ?>
diff --git a/ecrire/inc/editer_auteurs.php b/ecrire/inc/editer_auteurs.php
index 5f5ee42e95..7711b98ce2 100644
--- a/ecrire/inc/editer_auteurs.php
+++ b/ecrire/inc/editer_auteurs.php
@@ -22,7 +22,7 @@ function inc_editer_auteurs_dist($id_article, $flag, $cherche_auteur, $ids)
 {
 	global $options;
 
-	$les_auteurs = join(',', determiner_auteurs_article($id_article));
+	$les_auteurs = determiner_auteurs_article($id_article);
 	if ($flag AND $options == 'avancees') {
 		$futurs = ajouter_auteurs_articles($id_article, $les_auteurs);
 	} else $futurs = '';
@@ -174,49 +174,18 @@ function afficher_auteurs_articles($id_article, $flag_editable, $les_auteurs)
 
 	$table = array();
 
-	$result = spip_query("SELECT * FROM spip_auteurs AS A WHERE A.id_auteur IN ($les_auteurs) ORDER BY A.nom");
-
 	$bouton_auteur = charger_fonction('bouton_auteur', 'inc');
-	while ($row = spip_fetch_array($result)) {
-			$vals = array();
-			$id_auteur = $row["id_auteur"];
-			$nom_auteur = $row["nom"];
-			$email_auteur = $row["email"];
-			if ($bio_auteur = attribut_html(propre(couper($row["bio"], 100))))
-			  $bio_auteur = " title=\"$bio_auteur\"";
-			$url_site_auteur = $row["url_site"];
-
-			$vals[] = bonhomme_statut($row);
-
-			$vals[] = "<a href='" . generer_url_ecrire('auteurs_edit', "id_auteur=$id_auteur") . "' $bio_auteur>".typo($nom_auteur)."</a>";
-
-			$vals[] = $bouton_auteur($id_auteur);
-		
-			if ($email_auteur) $vals[] =  "<a href='mailto:$email_auteur'>"._T('email')."</a>";
-			else $vals[] =  "&nbsp;";
+	foreach($les_auteurs as $id_auteur) {
+		$vals = $bouton_auteur($id_auteur);
 
-			if ($url_site_auteur) $vals[] =  "<a href='$url_site_auteur'>"._T('info_site_min')."</a>";
-			else $vals[] =  "&nbsp;";
-
-			$cpt = spip_fetch_array(spip_query("SELECT COUNT(articles.id_article) AS n FROM spip_auteurs_articles AS lien, spip_articles AS articles WHERE lien.id_auteur=$id_auteur AND articles.id_article=lien.id_article AND articles.statut IN " . ($connect_statut == "0minirezo" ? "('prepa', 'prop', 'publie', 'refuse')" : "('prop', 'publie')") . " GROUP BY lien.id_auteur"));
-
-			$nombre_articles = intval($cpt['n']);
-
-			if ($nombre_articles > 1) $vals[] =  $nombre_articles.' '._T('info_article_2');
-			elseif ($nombre_articles == 1) $vals[] =  _T('info_1_article');
-			else $vals[] =  "&nbsp;";
-
-			if ($flag_editable AND ($connect_id_auteur != $id_auteur OR $connect_statut == '0minirezo') AND $options == 'avancees') {
-				$vals[] =  ajax_action_auteur('editer_auteurs', "$id_article,-$id_auteur",'articles', "id_article=$id_article", array(_T('lien_retirer_auteur')."&nbsp;". http_img_pack('croix-rouge.gif', "X", "width='7' height='7' border='0' align='middle'")));
-			} else {
-			  $vals[] = "";
-			}
-		
-			$table[] = $vals;
+		if ($flag_editable AND ($connect_id_auteur != $id_auteur OR $connect_statut == '0minirezo') AND $options == 'avancees') {
+			$vals[] =  ajax_action_auteur('editer_auteurs', "$id_article,-$id_auteur",'articles', "id_article=$id_article", array(_T('lien_retirer_auteur')."&nbsp;". http_img_pack('croix-rouge.gif', "X", "width='7' height='7' border='0' align='middle'")));
+		} else  $vals[] = "";
+		$table[] = $vals;
 	}
 	
-	$largeurs = array('14', '', '', '', '', '', '');
-	$styles = array('arial11', 'arial2', 'arial11', 'arial11', 'arial11', 'arial11', 'arial1');
+	$largeurs = array('14', '', '', '', '', '');
+	$styles = array('arial11', 'arial2', 'arial11', 'arial11', 'arial11', 'arial1');
 
 	return "<div class='liste'><table width='100%' cellpadding='3' cellspacing='0' border='0' background=''>"
 	. afficher_liste($largeurs, $table, $styles)
diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php
index 70e0ad81be..3ef10440f1 100644
--- a/ecrire/inc/presentation.php
+++ b/ecrire/inc/presentation.php
@@ -861,27 +861,6 @@ function afficher_articles_boucle($row, &$tous_id, $afficher_auteurs, $afficher_
 	if ($descriptif) $descriptif = ' title="'.attribut_html(typo($descriptif)).'"';
 	$petition = $row['petition'];
 
-	if ($afficher_auteurs) {
-		$les_auteurs = "";
-		$result_auteurs = spip_query("SELECT auteurs.id_auteur, nom,  bio FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien WHERE lien.id_article=$id_article AND auteurs.id_auteur=lien.id_auteur ORDER BY nom");
-
-		$bouton_auteur = charger_fonction('bouton_auteur', 'inc');
-		while ($row = spip_fetch_array($result_auteurs)) {
-			$id_auteur = $row['id_auteur'];
-			$nom_auteur = typo($row['nom']);
-
-			if ($bio = texte_backend(supprimer_tags(couper($row['bio'],50))))
-				$bio = " title=\"$bio\"";
-
-
-			$les_auteurs .= ", <a href='" . generer_url_ecrire("auteur_infos","id_auteur=$id_auteur&initial=-1") . "'$bio>$nom_auteur</a>";
-			if ($bouton = $bouton_auteur($id_auteur)) {
-				$les_auteurs .= "&nbsp;".$bouton;
-			}
-		}
-		$les_auteurs = substr($les_auteurs, 2);
-	}
-
 	// La petite puce de changement de statut
 	$vals[] = puce_statut_article($id_article, $statut, $id_rubrique);
 
@@ -913,8 +892,18 @@ function afficher_articles_boucle($row, &$tous_id, $afficher_auteurs, $afficher_
 	
 	$vals[] = $s;
 
-	// Les auteurs
-	if ($afficher_auteurs) $vals[] = $les_auteurs;
+
+	if ($afficher_auteurs) {
+		$les_auteurs = "";
+		$result_auteurs = auteurs_article($id_article);
+
+		$bouton_auteur = charger_fonction('bouton_auteur', 'inc');
+		while ($row = spip_fetch_array($result_auteurs)) {
+			list($s, $mail, $nom, $w, $p) = $bouton_auteur($row['id_auteur']);
+			$les_auteurs .= "$mail&nbsp;$nom, ";
+		}
+		$vals[] = substr($les_auteurs, 0, -2);
+	}
 
 	// La date
 	$vals[] = affdate_jourcourt($date);
@@ -1347,7 +1336,7 @@ function afficher_auteurs ($titre_table, $requete) {
 			echo "<p><table width='100%' cellpadding='0' cellspacing='0' border='0' background=''>";
 			echo "<tr><td width='100%' background=''>";
 			echo "<table width='100%' cellpadding='3' cellspacing='0' border='0'>";
-			echo "<tr bgcolor='#333333'><td width='100%' colspan='2'><font face='Verdana,Arial,Sans,sans-serif' size=3 color='#FFFFFF'>";
+			echo "<tr bgcolor='#333333'><td width='100%' colspan='5'><font face='Verdana,Arial,Sans,sans-serif' size=3 color='#FFFFFF'>";
 			echo "<b>$titre_table</b></font></td></tr>";
 		}
 	else {
@@ -1360,38 +1349,22 @@ function afficher_auteurs ($titre_table, $requete) {
 
 	$table = array();
 	while ($row = spip_fetch_array($result)) {
-		$table[]= affiche_auteur_boucle($row, $tous_id);
+		$tous_id[] = $row['id_auteur'];
+		$bouton_auteur = charger_fonction('bouton_auteur', 'inc');
+		$table[]= $bouton_auteur($row['id_auteur']);
 	}
 	spip_free_result($result);
-	$largeurs = array('');
-	$styles = array('arial2');
+	$largeurs = array(20, 20, 200, 20, 50);
+	$styles = array('','','arial2','arial1','arial1');
 	echo afficher_liste($largeurs, $table, $styles);
 
-	if ($titre_table) echo "</TABLE></TD></TR>";
-	echo "</TABLE>";
+	if ($titre_table) echo "</table></td></tr>";
+	echo "</table>";
 	fin_cadre_relief();
 
 	return $tous_id;
 }
 
-// http://doc.spip.org/@affiche_auteur_boucle
-function affiche_auteur_boucle($row, &$tous_id)
-{
-	$vals = '';
-
-	$id_auteur = $row['id_auteur'];
-	$tous_id[] = $id_auteur;
-	$nom = $row['nom'];
-
-	$s = bonhomme_statut($row);
-	$s .= "<a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$id_auteur") . "'>";
-	$s .= typo($nom);
-	$s .= "</a>";
-	$vals[] = $s;
-
-	return $vals;
-}
-
 //
 // Afficher les forums
 //
@@ -1494,19 +1467,14 @@ function afficher_forum_thread($row, $controle_id_article, $compteur_forum, $nb_
 		$res .= "<div style='border: 1px solid yellow; padding: 5px;'>";
 	}
 		
-	$res .= "<span class='arial2'>". date_interface($date_heure) . "</span> ";
-
-	if ($id_auteur)
-		$res .= "<a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$id_auteur") . "'>".typo($auteur)."</a>";
-	else if ($email_auteur)
-		$res .= "<a href='mailto:$email_auteur'>".typo($auteur)."</a>";
-	else	$res .= typo($auteur);
+	$res .= "<span class='arial2'>". date_interface($date_heure) . "</span>&nbsp;&nbsp;";
 
 	if ($id_auteur) {
 		$bouton_auteur = charger_fonction('bouton_auteur', 'inc');
-		$bouton = $bouton_auteur($id_auteur);
-		if ($bouton) $res .= "&nbsp;".$bouton;
-	}
+		$res .= join(' ',$bouton_auteur($id_auteur));
+	} else if ($email_auteur)
+		$res .= "<a href='mailto:$email_auteur'>".typo($auteur)."</a>";
+	else	$res .= typo($auteur);
 
 	// boutons de moderation
 	if ($controle_id_article)
@@ -2270,7 +2238,7 @@ if (true /*$bandeau_colore*/) {
 
 		if (!($connect_toutes_rubriques)) {
 			echo http_img_pack("rien.gif", " ", "width='10'");
-			echo "<a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$connect_id_auteur") . "' class='icone26' onmouseover=\"changestyle('bandeauinfoperso','visibility','visible');\">" .
+			echo "<a href='" . generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur&initial=-1") . "' class='icone26' onmouseover=\"changestyle('bandeauinfoperso','visibility','visible');\">" .
 			  http_img_pack("fiche-perso.png", "", "onmouseover=\"changestyle('bandeauvide','visibility', 'visible');\"");
 			echo "</a>";
 		}
@@ -2387,17 +2355,16 @@ function auteurs_recemment_connectes()
 {	
 	global $connect_id_auteur;
 	$res = '';
-	$result_auteurs = spip_query("SELECT id_auteur, nom FROM spip_auteurs WHERE id_auteur!=$connect_id_auteur AND imessage!='non' AND en_ligne>DATE_SUB(NOW(),INTERVAL 15 MINUTE) AND statut IN ('0minirezo','1comite')");
+	$result_auteurs = spip_query("SELECT id_auteur FROM spip_auteurs WHERE id_auteur!=$connect_id_auteur AND en_ligne>DATE_SUB(NOW(),INTERVAL 15 MINUTE) AND statut IN ('0minirezo','1comite')");
 
-	$bouton_auteur = charger_fonction('bouton_auteur', 'inc');
 	if (spip_num_rows($result_auteurs)) {
-
-		$res = "<b>"._T('info_en_ligne')."</b>";
+		$bouton_auteur = charger_fonction('bouton_auteur', 'inc');
+		$res = "<b>"._T('info_en_ligne'). "&nbsp;</b>";
 		while ($row = spip_fetch_array($result_auteurs)) {
-			$id_auteur = $row["id_auteur"];
-			$nom_auteur = typo($row["nom"]);
-			$res .= " &nbsp; ".bouton_auteur($id_auteur)."&nbsp;<a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$id_auteur") . "' style='color: #666666;'>$nom_auteur</a>";
+			list($s, $mail, $nom, $w, $p) = $bouton_auteur($row['id_auteur']);
+			$res .= "$mail&nbsp;$nom, ";
 		}
+		$res = substr($res,0,-2);
 	}
 
 	return "<div class='messages' style='color: #666666;'>$res</div>";
diff --git a/ecrire/inc/vieilles_defs.php b/ecrire/inc/vieilles_defs.php
index fc4483bb98..5ed588020e 100644
--- a/ecrire/inc/vieilles_defs.php
+++ b/ecrire/inc/vieilles_defs.php
@@ -75,4 +75,22 @@ function afficher_script_layer(){echo $GLOBALS['browser_layer'];}
 // http://doc.spip.org/@test_layer
 function test_layer(){return $GLOBALS['browser_layer'];}
 
+
+// http://doc.spip.org/@affiche_auteur_boucle
+function affiche_auteur_boucle($row, &$tous_id)
+{
+	$vals = '';
+
+	$id_auteur = $row['id_auteur'];
+	
+	$nom = $row['nom'];
+
+	$s = bonhomme_statut($row);
+	$s .= "<a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$id_auteur") . "'>";
+	$s .= typo($nom);
+	$s .= "</a>";
+	$vals[] = $s;
+
+	return $vals;
+}
 ?>
-- 
GitLab