alecpl
2009-02-18 ec603f7da6e0dcae398169efe03b52d199427d11
program/steps/mail/func.inc
@@ -19,7 +19,6 @@
*/
require_once('lib/enriched.inc');
require_once('include/rcube_smtp.inc');
$EMAIL_ADDRESS_PATTERN = '/([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9]([a-z0-9\-][.]?)*[a-z0-9]\\.[a-z]{2,5})/i';
@@ -611,31 +610,47 @@
    return rcmail_localize_foldername($RCMAIL->imap->get_mailbox_name());
}
/**
 * Sets message is_safe flag according to 'show_images' option value
 *
 * @param object rcube_message Message
 */
function rcmail_check_safe(&$message)
{
  global $RCMAIL;
  $show_images = $RCMAIL->config->get('show_images');
  if (!$message->is_safe
    && !empty($show_images)
    && $message->has_html_part())
  {
    switch($show_images) {
      case '1': // known senders only
        $CONTACTS = new rcube_contacts($DB, $_SESSION['user_id']);
        if ($CONTACTS->search('email', $message->sender['mailto'], true, false)->count) {
          $message->set_safe(true);
        }
      break;
      case '2': // always
        $message->set_safe(true);
      break;
    }
  }
}
/**
 * Convert the given message part to proper HTML
 * which can be displayed the message view
 * Cleans up the given message HTML Body (for displaying)
 *
 * @param object rcube_message_part Message part
 * @param bool  True if external objects (ie. images ) are allowed
 * @param bool  True if part should be converted to plaintext
 * @return string Formatted HTML string
 * @param string HTML
 * @param array  Display parameters
 * @param array  CID map replaces (inline images)
 * @return string Clean HTML
 */
function rcmail_print_body($part, $p = array())
function rcmail_wash_html($html, $p = array(), $cid_replaces)
{
  global $REMOTE_OBJECTS;
  
  $p += array('safe' => false, 'plain' => false, 'inline_html' => true);
  // convert html to text/plain
  if ($part->ctype_secondary == 'html' && $p['plain']) {
    $txt = new html2text($part->body, false, true);
    $body = $txt->get_text();
    $part->ctype_secondary = 'plain';
  }
  // text/html
  else if ($part->ctype_secondary == 'html') {
    $html = $part->body;
  $p += array('safe' => false, 'inline_html' => true);
    // special replacements (not properly handled by washtml class)
    $html_search = array(
@@ -679,7 +694,7 @@
      'allow_remote' => $p['safe'],
      'blocked_src' => "./program/blocked.gif",
      'charset' => RCMAIL_CHARSET,
      'cid_map' => $part->replaces,
    'cid_map' => $cid_replaces,
      'html_elements' => array('body'),
    );
    
@@ -698,14 +713,39 @@
      $washer->add_callback('style', 'rcmail_washtml_callback');
    }
    
    $body = $washer->wash($html);
  $html = $washer->wash($html);
    $REMOTE_OBJECTS = $washer->extlinks;
    return $body;
  return $html;
}
/**
 * Convert the given message part to proper HTML
 * which can be displayed the message view
 *
 * @param object rcube_message_part Message part
 * @param array  Display parameters array
 * @return string Formatted HTML string
 */
function rcmail_print_body($part, $p = array())
{
  $p += array('safe' => false, 'plain' => false, 'inline_html' => true);
  // convert html to text/plain
  if ($part->ctype_secondary == 'html' && $p['plain']) {
    $txt = new html2text($part->body, false, true);
    $body = $txt->get_text();
    $part->ctype_secondary = 'plain';
  }
  // text/html
  else if ($part->ctype_secondary == 'html') {
    return rcmail_wash_html($part->body, $p, $part->replaces);
  }
  // text/enriched
  else if ($part->ctype_secondary=='enriched') {
    $part->ctype_secondary = 'html';
    require_once('lib/enriched.inc');
    return Q(enriched_to_html($part->body), 'show');
  }
  else
@@ -757,6 +797,7 @@
  return html::tag('pre', array(), $body);
}
/**
 * add a string to the replacement array and return a replacement string
 */