thomascube
2006-09-01 3ea0e3202a73eb7efcbf0b825582a6d3504658aa
program/steps/mail/func.inc
@@ -611,7 +611,7 @@
function rcmail_quota_display($attrib)
  {
  global $IMAP, $OUTPUT, $JS_OBJECT_NAME;
  global $IMAP, $OUTPUT, $JS_OBJECT_NAME, $COMM_PATH;
  if (!$attrib['id'])
    $attrib['id'] = 'rcmquotadisplay';
@@ -620,11 +620,28 @@
  // allow the following attributes to be added to the <span> tag
  $attrib_str = create_attrib_string($attrib, array('style', 'class', 'id'));
  if (!$IMAP->get_capability('QUOTA'))
    $quota_text = rcube_label('unknown');
  else if (!($quota_text = $IMAP->get_quota()))
  else if ($quota = $IMAP->get_quota())
    {
    $quota_text = sprintf("%s / %s (%.0f%%)",
                          show_bytes($quota["used"] * 1024),
                          show_bytes($quota["total"] * 1024),
                          $quota["percent"]);
    // show quota as image (by Brett Patterson)
    if ($attrib['display'] == 'image' && function_exists('imagegif'))
      {
      $quota_text = sprintf('<img src="%s&amp;_action=quotaimg&amp;u=%s&amp;q=%d" alt="%s" width="102" height="15" />',
                            $COMM_PATH,
                            $quota['used'], $quota['total'],
                            $quota_text);
      }
    }
  else
    $quota_text = rcube_label('unlimited');
  $out = '<span' . $attrib_str . '>';
  $out .= $quota_text;
@@ -676,18 +693,18 @@
    if (!$safe)  // remove remote images and scripts
      {
      $remote_patterns = array('/(src|background)=(["\']?)([hftps]{3,5}:\/{2}[^"\'\s]+)(\2|\s|>)/Ui',
                           //  '/(src|background)=(["\']?)([\.\/]+[^"\'\s]+)(\2|\s|>)/Ui',
      $remote_patterns = array('/<img\s+(.*)src=(["\']?)([hftps]{3,5}:\/{2}[^"\'\s]+)(\2|\s|>)/Ui',
                               '/(src|background)=(["\']?)([hftps]{3,5}:\/{2}[^"\'\s]+)(\2|\s|>)/Ui',
                               '/(<base.*href=["\']?)([hftps]{3,5}:\/{2}[^"\'\s]+)([^<]*>)/i',
                               '/(<link.*href=["\']?)([hftps]{3,5}:\/{2}[^"\'\s]+)([^<]*>)/i',
                               '/url\s*\(["\']?([hftps]{3,5}:\/{2}[^"\'\s]+)["\']?\)/i',
                               '/url\s*\(["\']?([\.\/]+[^"\'\s]+)["\']?\)/i',
                               '/<script.+<\/script>/Umis');
      $remote_replaces = array('',  // '\\1=\\2#\\4',
                            // '\\1=\\2#\\4',
      $remote_replaces = array('<img \\1src=\\2./program/blank.gif\\4',
                               '',
                               '',  // '\\1#\\3',
                               '',
                               '',
                               'none',
                               'none',
                               '');
@@ -766,7 +783,7 @@
    // insert the links for urls and mailtos
    $body = preg_replace("/##string_replacement\{([0-9]+)\}##/e", "\$replace_strings[\\1]", join("\n", $a_lines));
    
    return "<div class=\"pre\">\n".$body."\n</div>";
    return "<div class=\"pre\">".$body."\n</div>";
    }
  }
@@ -947,7 +964,7 @@
      $a_replaces = array();
        
      foreach ($sa_inline_objects as $inline_object)
        $a_replaces['cid:'.$inline_object->content_id] = sprintf($get_url, $inline_object->mime_id);
        $a_replaces['cid:'.$inline_object->content_id] = htmlspecialchars(sprintf($get_url, $inline_object->mime_id));
      
      // add replace array to each content part
      // (will be applied later when part body is available)
@@ -1092,8 +1109,8 @@
    foreach ($MESSAGE['attachments'] as $attach_prop)
      {
      if (strpos($attach_prop->mimetype, 'image/')===0)
        $out .= sprintf("\n<hr />\n<p align=\"center\"><img src=\"%s&_part=%s\" alt=\"%s\" title=\"%s\" /></p>\n",
                        $GET_URL, $attach_prop->mime_id,
        $out .= sprintf("\n<hr />\n<p align=\"center\"><img src=\"%s&amp;_part=%s\" alt=\"%s\" title=\"%s\" /></p>\n",
                        htmlspecialchars($GET_URL), $attach_prop->mime_id,
                        $attach_prop->filename,
                        $attach_prop->filename);
      }
@@ -1121,15 +1138,12 @@
  // find STYLE tags
  while (($pos = strpos($body_lc, '<style', $last_style_pos)) && ($pos2 = strpos($body_lc, '</style>', $pos)))
    {
    $pos2 += 8;
    $body_pre = substr($body, 0, $pos);
    $styles = substr($body, $pos, $pos2-$pos);
    $body_post = substr($body, $pos2, strlen($body)-$pos2);
    $pos = strpos($body_lc, '>', $pos)+1;
    // replace all css definitions with #container [def]
    $styles = rcmail_mod_css_styles($styles, $container_id);
    $body = $body_pre . $styles . $body_post;
    $styles = rcmail_mod_css_styles(substr($body, $pos, $pos2-$pos), $container_id);
    $body = substr($body, 0, $pos) . $styles . substr($body, $pos2);
    $last_style_pos = $pos2;
    }