Do not remove image properties when hiding external links
[banana.git] / banana / message.func.inc.php
index d60e4e9..15da405 100644 (file)
@@ -88,11 +88,11 @@ function banana_catchFormats($text)
                         '_' => 'u',
                         '*' => 'strong');
     $url = Banana::$msgshow_url;
-    preg_match_all("/$url/i", $text, $urls);
+    preg_match_all("/$url/ui", $text, $urls);
     $text = str_replace($urls[0], "&&&urls&&&", $text);
     foreach ($formatting as $limit=>$mark) {
         $limit = preg_quote($limit, '/');
-        $text = preg_replace("/$limit\\b(.*?)\\b$limit/s",
+        $text = preg_replace('/' . $limit . '(\S+?)' . $limit . '/us',
                              "<$mark>\\1</$mark>", $text);
     }
     return preg_replace('/&&&urls&&&/e', 'array_shift($urls[0])', $text);
@@ -138,7 +138,7 @@ function banana_catchURLs($text)
     $url  = Banana::$msgshow_url;
 
     $res  = preg_replace("/&(lt|gt|quot);/", " &\\1; ", $text);
-    $res  = preg_replace("/$url/ie", "'\\1'.banana__cleanurl('\\2').'\\3'", $res);
+    $res  = preg_replace("/$url/uie", "'\\1'.banana__cleanurl('\\2').'\\3'", $res);
     $res  = preg_replace('/(["\[])?(?:mailto:|news:)?([a-z0-9.\-+_\$]+@([\-.+_]?[a-z0-9])+)(["\]])?/ie',
                          "'\\1' . banana__catchMailLink('\\2') . '\\4'",
                           $res);
@@ -261,7 +261,7 @@ function banana_removeEvilAttributes($tagSource)
 function banana_cleanHtml($source)
 {
     $allowedTags = '<h1><b><i><a><ul><li><pre><hr><blockquote><img><br><font><div>'
-                 . '<p><small><big><sup><sub><code><em><strong><table><tr><td><th>';
+                 . '<u><p><small><big><sup><sub><code><em><strong><table><tr><td><th>';
     $source = strip_tags($source, $allowedTags);
     $source = preg_replace('/<(.*?)>/ie', "'<'.banana_removeEvilAttributes('\\1').'>'", $source);
         
@@ -311,8 +311,8 @@ function banana__linkAttachment($cid)
 
 function banana_hideExternalImages($text)
 {
-    return preg_replace("/<img[^>]*?src=['\"](?!cid).*?>/i",
-                        Banana::$page->makeImg(array('img' => 'invalid')),
+    return preg_replace("/<img([^>]*?)src=['\"](?!cid).*?['\"](.*?)>/i",
+                        '<img\1src="invalid"\2>',
                         $text);
 }
 
@@ -357,7 +357,9 @@ function banana_formatHtml(BananaMimePart &$part)
 {
     $text = $part->getText();
     $text = banana_catchHtmlSignature($text);
-    $text = banana_hideExternalImages($text);
+    if (!Banana::$msgshow_externalimages) {
+        $text = banana_hideExternalImages($text);
+    }    
     $text = banana_catchPartLinks($text);
     return banana_cleanHtml($text);
 }
@@ -413,7 +415,15 @@ function banana_formatRichText(BananaMimePart &$part)
     return banana_cleanHtml($text);
 }
 
+function banana_quoteRichtText(BananaMimePart &$part)
+{
+    $text = $part->getText();
+    $text = banana_richtextToHtml($text);
+    $text = banana_htmlToPlainText($text);
+    return banana_wrap($text, 1);
+}
+
 // }}}
 
-// vim:set et sw=4 sts=4 ts=4:
+// vim:set et sw=4 sts=4 ts=4 enc=utf-8:
 ?>