Do not remove image properties when hiding external links
[banana.git] / banana / message.func.inc.php
index 8164172..15da405 100644 (file)
@@ -92,7 +92,7 @@ function banana_catchFormats($text)
     $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);
@@ -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);
 }