- Allow absolute URLs to images in HTML messages/sigs (#1485666)

- Fix message body which contains both inline attachments and emotions
release-0.6
alecpl 16 years ago
parent ae6bfc4e3a
commit 24ed413328

@ -1,6 +1,11 @@
CHANGELOG RoundCube Webmail
---------------------------
2009/01/15 (alec)
----------
- Allow absolute URLs to images in HTML messages/sigs (#1485666)
- Fix message body which contains both inline attachments and emotions
2009/01/08 (alec)
----------
- Improve messages display performance

@ -28,6 +28,8 @@ function rcmail_editor_init(skin_path, editor_lang, spellcheck, mode)
theme_advanced_buttons1 : 'bold,italic,underline,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,separator,outdent,indent,charmap,hr,link,unlink,code,forecolor',
theme_advanced_buttons2 : ',fontselect,fontsizeselect',
theme_advanced_buttons3 : '',
relative_urls : false,
remove_script_host : false,
gecko_spellcheck : true
});
else // mail compose
@ -49,6 +51,8 @@ function rcmail_editor_init(skin_path, editor_lang, spellcheck, mode)
external_image_list_url : 'program/js/editor_images.js',
spellchecker_languages : (rcmail.env.spellcheck_langs ? rcmail.env.spellcheck_langs : 'Dansk=da,Deutsch=de,+English=en,Espanol=es,Francais=fr,Italiano=it,Nederlands=nl,Polski=pl,Portugues=pt,Suomi=fi,Svenska=sv'),
gecko_spellcheck : true,
relative_urls : false,
remove_script_host : false ,
rc_client: rcube_webmail_client,
oninit : 'rcmail_editor_callback'
});

@ -98,47 +98,43 @@ function rcmail_attach_emoticons(&$mime_message)
{
global $CONFIG;
$htmlContents = $mime_message->getHtmlBody();
$body = $mime_message->getHtmlBody();
// remove any null-byte characters before parsing
$body = preg_replace('/\x00/', '', $htmlContents);
$body = preg_replace('/\x00/', '', $body);
$last_img_pos = 0;
$searchstr = 'program/js/tiny_mce/plugins/emotions/img/';
$path_len = strlen(INSTALL_PATH . '/');
$offset = 0;
// keep track of added images, so they're only added once
$included_images = array();
// find emoticon image tags
while ($pos = strpos($body, $searchstr, $last_img_pos))
{
$pos2 = strpos($body, '"', $pos);
$body_pre = substr($body, 0, $pos);
$body_post = substr($body, $pos2);
$image_name = substr($body,
$pos + strlen($searchstr),
$pos2 - ($pos + strlen($searchstr)));
// sanitize image name so resulting attachment doesn't leave images dir
$image_name = preg_replace('/[^a-zA-Z0-9_\.\-]/i','',$image_name);
$img_file = INSTALL_PATH . '/' . $searchstr . $image_name;
if (! in_array($image_name, $included_images))
{
// add the image to the MIME message
if(! $mime_message->addHTMLImage($img_file, 'image/gif', '', true, $image_name))
$OUTPUT->show_message("emoticonerror", 'error');
array_push($included_images, $image_name);
if (preg_match_all('# src=[\'"]([^\'"]+)#', $body, $matches, PREG_OFFSET_CAPTURE)) {
foreach ($matches[1] as $m) {
// find emoticon image tags
if (preg_match('#'.$searchstr.'(.*)$#', $m[0], $imatches)) {
$image_name = $imatches[1];
// sanitize image name so resulting attachment doesn't leave images dir
$image_name = preg_replace('/[^a-zA-Z0-9_\.\-]/i', '', $image_name);
$img_file = INSTALL_PATH . '/' . $searchstr . $image_name;
if (! in_array($image_name, $included_images)) {
// add the image to the MIME message
if(! $mime_message->addHTMLImage($img_file, 'image/gif', '', true, $image_name))
$OUTPUT->show_message("emoticonerror", 'error');
array_push($included_images, $image_name);
}
$body = substr_replace($body, $img_file, $m[1] + $offset, strlen($m[0]));
$offset += strlen($img_file) - strlen($m[0]);
}
$body = $body_pre . $img_file . $body_post;
$last_img_pos = $pos2 + $path_len;
}
}
$mime_message->setHTMLBody($body);
return $body;
}
@ -276,7 +272,7 @@ if ($isHtml)
$MAIL_MIME->setTXTBody($plainTextPart);
// look for "emoticon" images from TinyMCE and copy into message as attachments
rcmail_attach_emoticons($MAIL_MIME);
$message_body = rcmail_attach_emoticons($MAIL_MIME);
}
else
{

Loading…
Cancel
Save