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 é en { +// $secure = true pour *ne pas convertir* les caracteres malins < & 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