From 483dc4512986aa79417c8834cc8838278f3e6b8a Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Mon, 2 Jan 2006 10:23:18 +0000
Subject: [PATCH] bug sur la syndication, lie a la modif html2unicode et a la
 modif "tous les auteurs"

---
 ecrire/inc_charsets.php3 | 10 +++++++++-
 ecrire/inc_sites.php3    | 18 +++++++++---------
 ecrire/inc_utils.php     |  2 +-
 3 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/ecrire/inc_charsets.php3 b/ecrire/inc_charsets.php3
index 8134b1eac9..0d980d685a 100644
--- a/ecrire/inc_charsets.php3
+++ b/ecrire/inc_charsets.php3
@@ -135,12 +135,20 @@ function plage_punct_unicode() {
 
 //
 // Transformer les &eacute; en &#123;
+// $secure = true pour *ne pas convertir* les caracteres malins &lt; &amp; etc.
 //
-function html2unicode($texte) {
+function html2unicode($texte, $secure=false) {
 	static $trans;
 	if (!$trans) {
 		global $CHARSET;
 		load_charset('html');
+		
+		if (!$secure) {
+			$CHARSET['html']['amp'] = '&';
+			$CHARSET['html']['quot'] = '"';
+			$CHARSET['html']['lt'] = '<';
+			$CHARSET['html']['gt'] = '>';
+		}
 		foreach ($CHARSET['html'] as $key => $val) {
 			$trans["&$key;"] = $val;
 		}
diff --git a/ecrire/inc_sites.php3 b/ecrire/inc_sites.php3
index a50cb80597..583456b469 100644
--- a/ecrire/inc_sites.php3
+++ b/ecrire/inc_sites.php3
@@ -742,8 +742,6 @@ function cdata_echappe_retour(&$table, &$echappe_cdata) {
 function analyser_backend($rss, $url_syndic='') {
 	include_ecrire("inc_texte"); # pour couper()
 
-	$les_auteurs_du_site = "";
-
 	// Echapper les CDATA
 	$echappe_cdata = array();
 	if (preg_match_all(',<!\[CDATA\[(.*)]]>,Uims', $rss,
@@ -764,13 +762,15 @@ function analyser_backend($rss, $url_syndic='') {
 	$header, $regs, PREG_SET_ORDER)) {
 		$les_auteurs_du_site = array();
 		foreach ($regs as $reg) {
-			$nom = trim($reg[4]);
+			$nom = $reg[4];
 			if (preg_match(',<name>(.*)</name>,Uims', $nom, $reg))
 				$nom = $reg[1];
-			$les_auteurs_du_site[] = $nom;
+			$les_auteurs_du_site[] = trim(textebrut(filtrer_entites($nom)));
 		}
-		$les_auteurs_du_site = join(', ', $les_auteurs_du_site);
-	}
+		$les_auteurs_du_site = join(', ', array_unique($les_auteurs_du_site));
+	} else
+		$les_auteurs_du_site = '';
+
 	if (preg_match(',<((dc:|[^>]*xml:)lang(uage)?)>([^<>]+)</\1>,i',
 	$header, $match))
 		$langue_du_site = $match[4];
@@ -852,12 +852,12 @@ function analyser_backend($rss, $url_syndic='') {
 		$item, $regs, PREG_SET_ORDER)) {
 			$auteurs = array();
 			foreach ($regs as $reg) {
-				$nom = trim($reg[4]);
+				$nom = $reg[4];
 				if (preg_match(',<name>(.*)</name>,Uims', $nom, $reg))
 					$nom = $reg[1];
-				$auteurs[] = $nom;
+				$auteurs[] = trim(textebrut(filtrer_entites($nom)));
 			}
-			$data['lesauteurs'] = join(', ', $auteurs);
+			$data['lesauteurs'] = join(', ', array_unique($auteurs));
 		}
 		else
 			$data['lesauteurs'] = $les_auteurs_du_site;
diff --git a/ecrire/inc_utils.php b/ecrire/inc_utils.php
index 24e9ef6ba6..3c1a898903 100644
--- a/ecrire/inc_utils.php
+++ b/ecrire/inc_utils.php
@@ -362,7 +362,7 @@ function _T($texte, $args = '') {
 	$text = traduire_chaine($texte, $args);
 	if (!empty($GLOBALS['xhtml'])) {
 		include_ecrire("inc_charsets");
-		$text = html2unicode($text);
+		$text = html2unicode($text, true /* secure */);
 	}
 
 	return $text ? $text : 
-- 
GitLab