| | |
| | | |
| | | // single header value is requested |
| | | if (!empty($attrib['valueof'])) |
| | | return Q($plugin['output'][$attrib['valueof']]['value'], ($hkey == 'subject' ? 'strict' : 'show')); |
| | | return Q($plugin['output'][$attrib['valueof']]['value'], ($attrib['valueof'] == 'subject' ? 'strict' : 'show')); |
| | | |
| | | // compose html table |
| | | $table = new html_table(array('cols' => 2)); |
| | |
| | | } |
| | | } |
| | | |
| | | // Skip TIFF images if browser doesn't support this format |
| | | // @TODO: we could convert TIFF to JPEG and display it |
| | | $tiff_support = !empty($_SESSION['browser_caps']) && !empty($_SESSION['browser_caps']['tif']); |
| | | $mime_regex = $tiff_support ? '/^image\//i' : '/^image\/(?!tif)/i'; |
| | | $ext_regex = '/\.(jpg|jpeg|png|gif|bmp' . ($tiff_support ? '|tif|tiff' : '') .')$/i'; |
| | | |
| | | // list images after mail body |
| | | if ($CONFIG['inline_images'] && !empty($MESSAGE->attachments)) { |
| | | foreach ($MESSAGE->attachments as $attach_prop) { |
| | |
| | | } |
| | | |
| | | // Content-Type: image/*... |
| | | if (preg_match($mime_regex, $attach_prop->mimetype) || |
| | | // ...or known file extension: many clients are using application/octet-stream |
| | | ($attach_prop->filename && |
| | | preg_match('/^application\/octet-stream$/i', $attach_prop->mimetype) && |
| | | preg_match($ext_regex, $attach_prop->filename)) |
| | | ) { |
| | | if (rcmail_part_image_type($attach_prop)) { |
| | | $out .= html::tag('hr') . html::p(array('align' => "center"), |
| | | html::img(array( |
| | | 'src' => $MESSAGE->get_part_url($attach_prop->mime_id, true), |
| | |
| | | return html::div($attrib, $out); |
| | | } |
| | | |
| | | function rcmail_part_image_type($part) |
| | | { |
| | | $rcmail = rcmail::get_instance(); |
| | | |
| | | // Skip TIFF images if browser doesn't support this format... |
| | | $tiff_support = !empty($_SESSION['browser_caps']) && !empty($_SESSION['browser_caps']['tif']); |
| | | // until we can convert them to JPEG |
| | | $tiff_support = $tiff_support || $rcmail->config->get('im_convert_path'); |
| | | |
| | | // Content-type regexp |
| | | $mime_regex = $tiff_support ? '/^image\//i' : '/^image\/(?!tif)/i'; |
| | | |
| | | // Content-Type: image/*... |
| | | if (preg_match($mime_regex, $part->mimetype)) { |
| | | return $part->mimetype; |
| | | } |
| | | |
| | | // Many clients use application/octet-stream, we'll detect mimetype |
| | | // by checking filename extension |
| | | |
| | | // Supported image filename extensions to image type map |
| | | $types = array( |
| | | 'jpg' => 'image/jpeg', |
| | | 'jpeg' => 'image/jpeg', |
| | | 'png' => 'image/png', |
| | | 'gif' => 'image/gif', |
| | | 'bmp' => 'image/bmp', |
| | | ); |
| | | if ($tiff_support) { |
| | | $types['tif'] = 'image/tiff'; |
| | | $types['tiff'] = 'image/tiff'; |
| | | } |
| | | |
| | | if ($part->filename |
| | | && preg_match('/^application\/octet-stream$/i', $part->mimetype) |
| | | && preg_match('/\.([^.])$/i', $part->filename, $m) |
| | | && ($extension = strtolower($m[1])) |
| | | && isset($types[$extension]) |
| | | ) { |
| | | return $types[$extension]; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Convert all relative URLs according to a <base> in HTML |
| | |
| | | // find STYLE tags |
| | | while (($pos = stripos($body, '<style', $last_style_pos)) && ($pos2 = stripos($body, '</style>', $pos))) |
| | | { |
| | | $pos = strpos($body, '>', $pos)+1; |
| | | $pos = strpos($body, '>', $pos) + 1; |
| | | $len = $pos2 - $pos; |
| | | |
| | | // replace all css definitions with #container [def] |
| | | $styles = rcmail_mod_css_styles( |
| | | substr($body, $pos, $pos2-$pos), $cont_id, $allow_remote); |
| | | $styles = substr($body, $pos, $len); |
| | | $styles = rcmail_mod_css_styles($styles, $cont_id, $allow_remote); |
| | | |
| | | $body = substr_replace($body, $styles, $pos, $pos2-$pos); |
| | | $last_style_pos = $pos2; |
| | | $body = substr_replace($body, $styles, $pos, $len); |
| | | $last_style_pos = $pos2 + strlen($styles) - $len; |
| | | } |
| | | |
| | | // modify HTML links to open a new window if clicked |