=?utf-8?q?*=20Gestion=20de=20l'encodage=20'quoted-printable'=20dans=20le=20cas=20de...
authorx2003bruneau <x2003bruneau@9869982d-c50d-0410-be91-f2a2ec7c7c7b>
Sun, 5 Mar 2006 21:20:00 +0000 (21:20 +0000)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Fri, 4 Jan 2008 23:34:37 +0000 (00:34 +0100)
=20*=20Gestion=20de=20message=20dont=20les=20paragraphes=20sont=20d=C3=83=C2=A9limit=C3=83=C2=A9s=20par=20des=20div
=20*=20Am=C3=83=C2=A9lioration=20de=20la=20gestion=20de=20l'encodage=20dans=20le=20cas=20de=20message=20html/richtext?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

git-svn-id: svn+ssh://murphy/home/svn/banana/trunk@28 9869982d-c50d-0410-be91-f2a2ec7c7c7b

banana/misc.inc.php
banana/post.inc.php

index 27cb940..f8df870 100644 (file)
@@ -43,6 +43,7 @@ function textFormat_translate($format)
 function removeEvilTags($source)
 {
     $allowedTags = '<h1><b><i><a><ul><li><pre><hr><blockquote><img><br><font><p><small><big><sup><sub><code><em>';
+    $source = preg_replace('|</div>|i', '<br />', $source);
     $source = strip_tags($source, $allowedTags);
     return preg_replace('/<(.*?)>/ie', "'<'.removeEvilAttributes('\\1').'>'", $source);
 }
@@ -63,8 +64,8 @@ function removeEvilAttributes($tagSource)
  */
 function htmlToPlainText($res)
 {
-    $res = trim(html_entity_decode(strip_tags($res, '<br><p>')));
-    $res = preg_replace("@</?(br|p)[^>]*>@i", "\n", $res);
+    $res = trim(html_entity_decode(strip_tags($res, '<div><br><p>')));
+    $res = preg_replace("@</?(br|p|div)[^>]*>@i", "\n", $res);
     if (!is_utf8($res)) {
         $res = utf8_encode($res);
     }   
@@ -307,9 +308,9 @@ function wrap($text, $_prefix="")
 function formatbody($_text, $format='plain')
 {
     if ($format == 'html') {
-        $res = '<br/>'.removeEvilTags($_text).'<br/>';
+        $res = '<br/>'.html_entity_decode(to_entities(removeEvilTags($_text))).'<br/>';
     } else if ($format == 'richtext') {
-        $res = '<br/>'.richtextToHtml($_text).'<br/>';
+        $res = '<br/>'.html_entity_decode(to_entities(richtextToHtml($_text))).'<br/>';
         $format = 'html';
     } else {
         $res  = "\n\n" . to_entities(wrap($_text, ""))."\n\n";
index 20ab505..e0f3c5f 100644 (file)
@@ -150,7 +150,11 @@ class BananaPost
                 break;
             }
         }
-        return Array('headers' => $local_headers, 'body' => join("\n", $lines)); 
+        $local_body = join("\n", $lines);
+        if (preg_match("/quoted-printable/", $local_headers['content-transfer-encoding'])) {
+            $local_body = quoted_printable_decode($local_body);
+        }
+        return Array('headers' => $local_headers, 'body' => $local_body); 
     }
 
     /** add an attachment
@@ -250,7 +254,7 @@ class BananaPost
             $this->body = iconv($matches[1], 'utf-8', $this->body);
         } else {
             $this->body = utf8_encode($this->body);
-        }                                                        
+        }
         return true;
     }