From 3c8d61d95ad6f03c431195de595b82883364a840 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Fri, 19 Jan 2007 16:46:26 +0000
Subject: [PATCH] =?UTF-8?q?T=C3=A2che=20#605=20sur=20la=20messagerie,=20fi?=
 =?UTF-8?q?n=20(pourrait=20etre=20optimis=C3=A9=20comme=20dans=20editer=5F?=
 =?UTF-8?q?auteur,=20mais=20vu=20ce=20qu'on=20s'en=20sert).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/action/editer_message.php |  32 +++++++
 ecrire/exec/message.php          | 147 +++++++++++++------------------
 2 files changed, 94 insertions(+), 85 deletions(-)

diff --git a/ecrire/action/editer_message.php b/ecrire/action/editer_message.php
index 976483c0fb..64b29c069d 100644
--- a/ecrire/action/editer_message.php
+++ b/ecrire/action/editer_message.php
@@ -25,6 +25,8 @@ function action_editer_message_dist() {
 		action_editer_message_post_vieux($arg); 
 	elseif (preg_match(',^-(\d+)$,', $arg, $r))
 		action_editer_message_post_supprimer($r[1]);
+	elseif (preg_match(',^(\d+)\W$,', $arg, $r))
+		action_editer_message_post_choisir($r[1]);	  
 	elseif (preg_match(',^(\d+)\W@(\d+)$,', $arg, $r))
 		action_editer_message_post_ajouter($r[1], $r[2]);	  
 	elseif (preg_match(',^(\d+)\W:(\d+)$,', $arg, $r))
@@ -65,6 +67,36 @@ function action_editer_message_post_ajouter($id_message, $id_auteur) {
 		"('$id_auteur','$id_message','non')");
 }
 
+function action_editer_message_post_choisir($id_message) {
+  spip_log("aempc" . urldecode(_request('redirect')));
+	if ($id_auteur = _request('nouv_auteur'))
+		action_editer_message_post_ajouter($id_message, $id_auteur);
+	else {
+		include_spip('inc/mots');
+		include_spip('inc/charsets'); // pour tranlitteration
+		$id_auteur = $GLOBALS['auteur_session']['id_auteur'];
+		$cherche_auteur= _request('cherche_auteur');
+		$query = spip_query("SELECT id_auteur, nom FROM spip_auteurs WHERE messagerie<>'non' AND id_auteur<>'$connect_id_auteur' AND pass<>'' AND login<>''");
+		$table_auteurs = array();
+		$table_ids = array();
+		while ($row = spip_fetch_array($query)) {
+			$table_auteurs[] = $row['nom'];
+			$table_ids[] = $row['id_auteur'];
+		}
+		$res =  mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids);
+		$n = count($res);
+
+		if ($n == 1)
+			# Bingo
+			action_editer_message_post_ajouter($id_message, $res[0]);
+		# renvoyer la valeur ==> formulaire de choix si n !=1
+		# notification que $res[0] a ete rajoute sinon
+		  redirige_par_entete(parametre_url(urldecode(_request('redirect')),
+					    'cherche_auteur', _request('chercher_auteur'), '&'));
+	}
+}
+
+
 function action_editer_message_post_envoyer($id_message, $statut) {
 
 	spip_query("UPDATE spip_messages SET statut=" . _q($statut) . " WHERE id_message='$id_message'");
diff --git a/ecrire/exec/message.php b/ecrire/exec/message.php
index cacf597880..fc376168a3 100644
--- a/ecrire/exec/message.php
+++ b/ecrire/exec/message.php
@@ -19,10 +19,9 @@ include_spip('inc/mots');
 // http://doc.spip.org/@exec_message_dist
 function exec_message_dist()
 {
-	global $cherche_auteur, $connect_id_auteur,$forcer_dest,$id_message, $nouv_auteur;
+	global $cherche_auteur, $connect_id_auteur,$forcer_dest,$id_message;
 
 	$id_message = intval($id_message);
-	$nouv_auteur = intval($nouv_auteur);
 	charger_generer_url();
 
 	$row = spip_fetch_array(spip_query("SELECT type FROM spip_messages WHERE id_message=$id_message"));
@@ -45,7 +44,7 @@ function exec_message_dist()
 		}
 	}
 
-	exec_affiche_message_dist($id_message,  $cherche_auteur, $nouv_auteur, $forcer_dest);
+	exec_affiche_message_dist($id_message, $cherche_auteur, $forcer_dest);
 }
 
 // http://doc.spip.org/@http_afficher_rendez_vous
@@ -63,15 +62,6 @@ function http_afficher_rendez_vous($date_heure, $date_fin)
 	}
 }
 
-// http://doc.spip.org/@sql_nouveau_participant
-function sql_nouveau_participant($nouv_auteur, $id_message)
-{
-	spip_query("DELETE FROM spip_auteurs_messages WHERE id_auteur='$nouv_auteur' AND id_message='$id_message'");
-	spip_abstract_insert('spip_auteurs_messages',
-		"(id_auteur,id_message,vu)",
-		"('$nouv_auteur','$id_message','non')");
-}
-
 // http://doc.spip.org/@http_auteurs_ressemblants
 function http_auteurs_ressemblants($cherche_auteur, $id_message)
 {
@@ -88,12 +78,12 @@ function http_auteurs_ressemblants($cherche_auteur, $id_message)
     return '<b>' . _T('info_recherche_auteur_zero', array('cherche_auteur' => $cherche_auteur))."</b><br />";
   }
   else if (count($resultat) == 1) {
+    // action/editer_message a du prendre en compte ce cas
     list(, $nouv_auteur) = each($resultat);
-    sql_nouveau_participant($nouv_auteur, $id_message);
     $row = spip_fetch_array(spip_query("SELECT nom FROM spip_auteurs WHERE id_auteur=$nouv_auteur"));
     $nom_auteur = $row['nom'];
     return "<b>"._T('info_ajout_participant')."</b><br />" .
-      "<ul><li><span class='verdana1 spip_small'><b><span class='spip_medium'>$nom_auteur</span></b></span>\n</ul>";
+      "<ul><li><span class='verdana1 spip_small'><b><span class='spip_medium'>$nom_auteur</span></b></span></li>\n</ul>";
   }
   else if (count($resultat) < 16) {
     $res = '';
@@ -104,15 +94,15 @@ function http_auteurs_ressemblants($cherche_auteur, $id_message)
       $nom_auteur = $row['nom'];
       $email_auteur = $row['email'];
       $bio_auteur = $row['bio'];
-      $res .= "<li><span class='spip_medium' style='class='verdana1'><b>$nom_auteur</b></span>" .
+      $res .= "\n<li><span class='spip_medium verdana1'><b>$nom_auteur</b></span>" .
 	($email_auteur ? " ($email_auteur)" : '') .
-	" | <a href='" . redirige_action_auteur("editer_message","$id_message/@$id_auteur", 'message', "id_message=$id_message")
+	"\n <a href='" . redirige_action_auteur("editer_message","$id_message/@$id_auteur", 'message', "id_message=$id_message")
 	. "'>" 
 	. _T('lien_ajout_destinataire').
 	"</a>" .
 	(!trim($bio_auteur) ? '' :
-	 ("<br /><span class='spip_x-small'>".propre(couper($bio_auteur, 100))."</span>\n")) .
-	"</font></li>\n";
+	 ("<br />\n<span class='spip_x-small'>".propre(couper($bio_auteur, 100))."</span>\n")) .
+	"</li>\n";
     }
     return  "<b>"._T('info_recherche_auteur_ok', array('cherche_auteur' => $cherche_auteur))."</b><br /><ul>$res</ul>";
   }
@@ -137,61 +127,51 @@ function http_visualiser_participants($auteurs_tmp)
 // http://doc.spip.org/@http_ajouter_participants
 function http_ajouter_participants($ze_auteurs, $id_message)
 {	
-    $result_ajout_auteurs = spip_query("SELECT * FROM spip_auteurs WHERE " . (!$ze_auteurs ? '' : "id_auteur NOT IN ($ze_auteurs) AND ") . " messagerie<>'non' AND statut IN ('0minirezo', '1comite') ORDER BY statut, nom");
-
-    if (spip_num_rows($result_ajout_auteurs) > 0) {
-
-      echo "<div align='left'>";
-      echo generer_url_post_ecrire('message');
-      echo "<span class='verdana1 spip_small'><b>", _T('bouton_ajouter_participant')," &nbsp; </b></span>\n",
-	"<input type='hidden' name='id_message' value=\"$id_message\" />";
-
-      if (spip_num_rows($result_ajout_auteurs) > 50) {
-	echo "\n<input type='text' name='cherche_auteur' class='fondl' value='' size='20' />";
-	echo "\n<input type='submit' name='Chercher' value='"._T('bouton_chercher')."' class='fondo' />";
-      }
-      else {
-	echo "<select name='nouv_auteur' size='1' style='width: 150px' class='fondl'>";
-	$group = false;
-	$group2 = false;
-	
-	while($row=spip_fetch_array($result_ajout_auteurs)) {
-	  $id_auteur = $row['id_auteur'];
-	  $nom = $row['nom'];
-	  $email = $row['email'];
-	  $statut_auteur = $row['statut'];
-	  
-	  $statut_auteur=ereg_replace("0minirezo", _T('info_statut_administrateur'), $statut_auteur);
-	  $statut_auteur=ereg_replace("1comite", _T('info_statut_redacteur'), $statut_auteur);
-	  $statut_auteur=ereg_replace("2redac", _T('info_statut_redacteur'), $statut_auteur);
-	  $statut_auteur=ereg_replace("5poubelle", _T('info_statut_efface'), $statut_auteur);
-	  
-	  $premiere = strtoupper(substr(trim($nom), 0, 1));
+	$result_ajout_auteurs = spip_query("SELECT * FROM spip_auteurs WHERE " . (!$ze_auteurs ? '' : "id_auteur NOT IN ($ze_auteurs) AND ") . " messagerie<>'non' AND statut IN ('0minirezo', '1comite') ORDER BY statut, nom");
 
-	  if ($GLOBALS['connect_statut'] != '0minirezo') {
-	    if ($p = strpos($email, '@')) $email = substr($email, 0, $p).'@...';
-	  }
+	if (!spip_num_rows($result_ajout_auteurs) > 0) return '';
 
-	  if ($statut_auteur != $statut_old) {
-	    echo "\n<option value=\"x\"></option>";
-	    echo "\n<option value=\"x\"> $statut_auteur".'s</option>';
-	  }
+	$res = "<span class='verdana1 spip_small'><b>" .
+	  _T('bouton_ajouter_participant') ." &nbsp; </b></span>\n" .
+	  "<input type='hidden' name='id_message' value=\"$id_message\" />";
+
+	if (spip_num_rows($result_ajout_auteurs) > 50) {
+		$res .=  "\n<input type='text' name='cherche_auteur' class='fondl' value='' size='20' />";
+		$res .=  "\n<input type='submit' value='"._T('bouton_chercher')."' class='fondo' />";
+	} else {
+		$res .=  "<select name='nouv_auteur' size='1' style='width: 150px' class='fondl'>";
+		while($row=spip_fetch_array($result_ajout_auteurs)) {
+			$id_auteur = $row['id_auteur'];
+			$nom = $row['nom'];
+			$email = $row['email'];
+			$statut_auteur = $row['statut'];
+			$premiere = strtoupper(substr(trim($nom), 0, 1));
+
+			if ($GLOBALS['connect_statut'] != '0minirezo') {
+				if ($p = strpos($email, '@')) $email = substr($email, 0, $p).'@...';
+			}
+
+			if ($statut_auteur != $statut_old) {
+				$s =ereg_replace("0minirezo", _T('info_statut_administrateur'), $statut_auteur);
+				$s=ereg_replace("1comite", _T('info_statut_redacteur'), $s);
+				$s=ereg_replace("2redac", _T('info_statut_redacteur'), $s);
+				$s=ereg_replace("5poubelle", _T('info_statut_efface'), $s);
+				$res .=  "\n<option value=\"x\"></option>";
+				$res .=  "\n<option value=\"x\"> " . $s . 's</option>';
+			}
 						
-	  if ($premiere != $premiere_old AND ($statut_auteur != _T('info_administrateur') OR !$premiere_old)) {
-	    echo "\n<option value=\"x\"></option>";
-	  }
+			if ($premiere != $premiere_old AND ($statut_auteur != '0minirezo' OR !$premiere_old))
+				$res .=  "\n<option value=\"x\"></option>";
 	  
-	  $texte_option = supprimer_tags(couper("$nom ($email) ", 40));
-	  echo "\n<option value=\"$id_auteur\">&nbsp;&nbsp;&nbsp;&nbsp;$texte_option</option>";
-	  $statut_old = $statut_auteur;
-	  $premiere_old = $premiere;
-	}
+			$res .=  "\n<option value=\"$id_auteur\">&nbsp;&nbsp;&nbsp;&nbsp;" .supprimer_tags(couper("$nom ($email) ", 40)) . "</option>";
+			$statut_old = $statut_auteur;
+			$premiere_old = $premiere;
+		}
 	
-	echo "</select>";
-	echo "<input type='submit' name='Ajouter' value='"._T('bouton_ajouter')."' class='fondo' />";
-      }
-      echo "</form></div>";
-    }
+		$res .=  "</select>"
+		.  "<input type='submit' value='"._T('bouton_ajouter')."' class='fondo' />";
+	}
+	return redirige_action_auteur('editer_message', "$id_message,", 'message', "id_message=$id_message", "<div align='left'>$res</div>", " method='post'");
 }
 
 // http://doc.spip.org/@http_afficher_forum_perso
@@ -209,22 +189,19 @@ function http_afficher_forum_perso($id_message)
 
 
 // http://doc.spip.org/@http_message_avec_participants
-function http_message_avec_participants($id_message, $statut, $forcer_dest, $nouv_auteur, $cherche_auteur, $expediteur='')
+function http_message_avec_participants($id_message, $statut, $forcer_dest, $cherche_auteur, $expediteur='')
 {
 	global $connect_id_auteur, $couleur_claire ;
-	echo debut_cadre_enfonce("redacteurs-24.gif", true);
 
 	if ($cherche_auteur) {
-			echo "\n<p align='left'><div class='cadre-info'>" .
-			  http_auteurs_ressemblants($cherche_auteur , $id_message) .
-			  "\n</div></p>";
+		echo "\n<div align='left'><div class='cadre-info'>"
+		. http_auteurs_ressemblants($cherche_auteur , $id_message)
+		. "\n</div></div>";
 	  }
 
-	if ($nouv_auteur > 0) sql_nouveau_participant($nouv_auteur, $id_message);
-
-		//
-		// Liste des participants
-		//
+	//
+	// Liste des participants
+	//
 
 	$result_auteurs = spip_query("SELECT auteurs.* FROM spip_auteurs AS auteurs, spip_auteurs_messages AS lien WHERE lien.id_message=$id_message AND lien.id_auteur=auteurs.id_auteur");
 
@@ -264,20 +241,18 @@ function http_message_avec_participants($id_message, $statut, $forcer_dest, $nou
 	  }
 
 	  if ($statut == 'redac' OR $forcer_dest)
-		  http_ajouter_participants(join(',', $ze_auteurs),
-					    $id_message);
+		  echo http_ajouter_participants(join(',', $ze_auteurs), $id_message);
 	  else {
 		  echo
 		    debut_block_invisible("ajouter_auteur"),
 		    "<br /><div align='right'><span class='verdana1 spip_small'><a href='" . generer_url_ecrire("message","id_message=$id_message&forcer_dest=oui") . "'>"._T('lien_ajouter_participant')."</a></span></div>",
 		    fin_block();
 		}
-	  fin_cadre_enfonce();
 	  return $total_dest;
 }
 
 // http://doc.spip.org/@http_affiche_message
-function http_affiche_message($id_message, $expediteur, $statut, $type, $texte, $titre, $rv, $date_heure, $date_fin, $cherche_auteur, $nouv_auteur, $forcer_dest)
+function http_affiche_message($id_message, $expediteur, $statut, $type, $texte, $titre, $rv, $date_heure, $date_fin, $cherche_auteur, $forcer_dest)
 {
   global $connect_id_auteur,$connect_statut, $les_notes;
 
@@ -319,7 +294,9 @@ function http_affiche_message($id_message, $expediteur, $statut, $type, $texte,
 	//
 	
 	if ($type == 'normal') {
-	  $total_dest = http_message_avec_participants($id_message, $statut, $forcer_dest, $nouv_auteur, $cherche_auteur, $expediteur);
+	  echo debut_cadre_enfonce("redacteurs-24.gif", true);
+	  $total_dest = http_message_avec_participants($id_message, $statut, $forcer_dest, $cherche_auteur, $expediteur);
+	  fin_cadre_enfonce();
 	}
 
 	if ($rv != "non") http_afficher_rendez_vous($date_heure, $date_fin);
@@ -390,7 +367,7 @@ function http_affiche_message($id_message, $expediteur, $statut, $type, $texte,
 }
 
 // http://doc.spip.org/@exec_affiche_message_dist
-function exec_affiche_message_dist($id_message, $cherche_auteur, $nouv_auteur, $forcer_dest)
+function exec_affiche_message_dist($id_message, $cherche_auteur, $forcer_dest)
 {
   global $connect_id_auteur, $echelle, $partie_cal;
   $row = spip_fetch_array(spip_query("SELECT * FROM spip_messages WHERE id_message=$id_message"));
@@ -445,7 +422,7 @@ function exec_affiche_message_dist($id_message, $cherche_auteur, $nouv_auteur, $
 
 	debut_droite();
 
-	http_affiche_message($id_message, $expediteur, $statut, $type, $texte, $titre, $rv, $date_heure, $date_fin, $cherche_auteur, $nouv_auteur, $forcer_dest);
+	http_affiche_message($id_message, $expediteur, $statut, $type, $texte, $titre, $rv, $date_heure, $date_fin, $cherche_auteur, $forcer_dest);
 
 	// reponses et bouton poster message
 
-- 
GitLab