From 18f6babf615250b1360e6abbf306e62a141a10b8 Mon Sep 17 00:00:00 2001 From: x2003bruneau Date: Mon, 29 Jan 2007 14:27:32 +0000 Subject: [PATCH] Can choose to show external images Css external images are now catched git-svn-id: svn+ssh://murphy/home/svn/banana/trunk@182 9869982d-c50d-0410-be91-f2a2ec7c7c7b --- banana/banana.inc.php.in | 8 ++++++++ banana/message.func.inc.php | 26 +++++++++++++++++++++----- banana/templates/banana-message.inc.tpl | 7 ++++++- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/banana/banana.inc.php.in b/banana/banana.inc.php.in index 1c52fc5..5da2a44 100644 --- a/banana/banana.inc.php.in +++ b/banana/banana.inc.php.in @@ -50,6 +50,7 @@ class Banana static public $msgshow_xface = true; static public $msgshow_wrap = 78; static public $msgshow_externalimages = false; + static public $msgshow_hasextimages = false; static public $msgshow_withthread = true; /** Match an url @@ -99,6 +100,7 @@ class Banana const ACTION_MSG_READ = 5; const ACTION_MSG_NEW = 9; const ACTION_MSG_CANCEL = 17; + const ACTION_MSG_IMAGES = 33; // Box list view const BOXES_ALL = 0; @@ -206,6 +208,9 @@ class Banana case 'cancel': Banana::$action = Banana::ACTION_MSG_CANCEL; return; + case 'showext': + Banana::$action = Banana::ACTION_MSG_IMAGES; + return; default: Banana::$action = Banana::ACTION_MSG_READ; } @@ -245,6 +250,8 @@ class Banana case Banana::ACTION_MSG_LIST: $error = $this->action_showThread(Banana::$group, Banana::$first); break; + case Banana::ACTION_MSG_IMAGES: + Banana::$msgshow_externalimages = true; case Banana::ACTION_MSG_READ: $error = $this->action_showMessage(Banana::$group, Banana::$artid, Banana::$part); break; @@ -365,6 +372,7 @@ class Banana Banana::$page->assign('groups', $groups); } Banana::$page->assign_by_ref('message', $msg); + Banana::$page->assign('extimages', Banana::$msgshow_hasextimages); Banana::$page->assign('headers', Banana::$msgshow_headers); Banana::$page->assign('type', $partid); return true; diff --git a/banana/message.func.inc.php b/banana/message.func.inc.php index f86e731..f0f8d93 100644 --- a/banana/message.func.inc.php +++ b/banana/message.func.inc.php @@ -310,6 +310,19 @@ function banana_cleanStyles($tag, $attributes) } return ' ' . $style . trim($attributes); } + +function banana_filterCss($css) +{ + $css = preg_replace("/(^|\n|,)\s*(\w+[^\{\}\<]+\{)/s", '\1.banana .message .body .html \2', $css); + $css = preg_replace('/ body\b/i', '', $css); + if (!Banana::$msgshow_externalimages) { + if (preg_match("/url\(((ht|f)tps?:.*?)\)/i", $css)) { + $css = preg_replace("/url\(((ht|f)tps?:.*?)\)/i", 'url(invalid-image.png)', $css); + Banana::$msgshow_hasextimages = true; + } + } + return $css; +} /** * @return string @@ -348,8 +361,7 @@ function banana_cleanHtml($source, $to_xhtml = false) foreach ($matches[1] as &$match) { $css .= $match; } - $css = preg_replace("/(^|\n|,)\s*(\w+[^\{\}\<]+\{)/s", '\1.banana .message .body .html \2', $css); - $css = preg_replace('/ body\b/i', '', $css); + $css = banana_filterCss($css); Banana::$page->addCssInline($css); } @@ -395,9 +407,13 @@ function banana__linkAttachment($cid) function banana_hideExternalImages($text) { - return preg_replace("/]*?)src=['\"](?!cid).*?['\"](.*?)>/i", - '', - $text); + if (preg_match("/]*?)src=['\"](?!cid).*?['\"](.*?)>/i", $text)) { + Banana::$msgshow_hasextimages = true; + return preg_replace("/]*?)src=['\"](?!cid).*?['\"](.*?)>/i", + '', + $text); + } + return $text; } function banana_catchPartLinks($text) diff --git a/banana/templates/banana-message.inc.tpl b/banana/templates/banana-message.inc.tpl index f7672b7..6fe2479 100644 --- a/banana/templates/banana-message.inc.tpl +++ b/banana/templates/banana-message.inc.tpl @@ -57,7 +57,12 @@ {"Versions"|b} {foreach from=$alter key=ctype item=text name=alter} - {if $type eq $ctype}{$text}{else}{link group=$group artid=$artid part=$ctype text=$text}{/if} + {if $type eq $ctype} + {$text} + {if $extimages}[{link group=$group artid=$artid part=$type action=showext text="Afficher les images externes"|b}]{/if} + {else} + {link group=$group artid=$artid part=$ctype text=$text} + {/if} {if !$smarty.foreach.alter.last} • {/if} {/foreach} -- 2.1.4