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
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;
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;
}
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;
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;
}
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
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);
}
function banana_hideExternalImages($text)
{
- return preg_replace("/<img([^>]*?)src=['\"](?!cid).*?['\"](.*?)>/i",
- '<img\1src="invalid"\2>',
- $text);
+ if (preg_match("/<img([^>]*?)src=['\"](?!cid).*?['\"](.*?)>/i", $text)) {
+ Banana::$msgshow_hasextimages = true;
+ return preg_replace("/<img([^>]*?)src=['\"](?!cid).*?['\"](.*?)>/i",
+ '<img\1src="invalid"\2>',
+ $text);
+ }
+ return $text;
}
function banana_catchPartLinks($text)
<td class="hdr">{"Versions"|b}</td>
<td colspan="2">
{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}
</td>