alecpl
2010-06-23 b25dfd0913f2ca5666124740c30156fa0a6abaef
program/steps/mail/func.inc
@@ -130,7 +130,7 @@
  if (!$OUTPUT->ajax_call)
    $OUTPUT->add_label('checkingmail', 'deletemessage', 'movemessagetotrash',
      'movingmessage', 'copyingmessage', 'copy', 'move');
      'movingmessage', 'copyingmessage', 'copy', 'move', 'quota');
  $OUTPUT->set_pagetitle(rcmail_localize_foldername($mbox_name));
  }
@@ -227,7 +227,7 @@
 */
function rcmail_js_message_list($a_headers, $insert_top=FALSE, $head_replace=FALSE)
{
  global $CONFIG, $IMAP, $OUTPUT;
  global $CONFIG, $IMAP, $RCMAIL, $OUTPUT;
  if (!empty($_SESSION['list_attrib']['columns']))
    $a_show_cols = $_SESSION['list_attrib']['columns'];
@@ -246,6 +246,14 @@
  if (!in_array('threads', $a_show_cols))
    array_unshift($a_show_cols, 'threads');
  // Plugins may set header's list_cols/list_flags and other rcube_mail_header variables
  // and list columns
  $plugin = $RCMAIL->plugins->exec_hook('messages_list',
    array('messages' => $a_headers, 'cols' => $a_show_cols));
  $a_show_cols = $plugin['cols'];
  $a_headers   = $plugin['messages'];
  $thead = $head_replace ? rcmail_message_list_head($_SESSION['list_attrib'], $a_show_cols) : NULL;
  $OUTPUT->command('set_message_coltypes', $a_show_cols, $thead);
@@ -260,15 +268,15 @@
    unset($a_show_cols[$key]);
  if (($key = array_search('threads', $a_show_cols)) !== FALSE)
    unset($a_show_cols[$key]);
  // loop through message headers
  foreach ($a_headers as $n => $header)
    {
    $a_msg_cols = array();
    $a_msg_flags = array();
    if (empty($header))
      continue;
    $a_msg_cols = array();
    $a_msg_flags = array();
    $IMAP->set_charset(!empty($header->charset) ? $header->charset : $CONFIG['default_charset']);
@@ -317,6 +325,12 @@
      $a_msg_flags['attachment'] = 1;
    $a_msg_flags['mbox'] = $mbox;
    // merge with plugin result
    if (!empty($header->list_flags) && is_array($header->list_flags))
      $a_msg_flags = array_merge($a_msg_flags, $header->list_flags);
    if (!empty($header->list_cols) && is_array($header->list_cols))
      $a_msg_cols = array_merge($a_msg_cols, $header->list_cols);
    $OUTPUT->command('add_message_row',
      $header->uid,
      $a_msg_cols,
@@ -324,7 +338,7 @@
      $insert_top);
    }
    if ($IMAP->threading && $a_headers) {
    if ($IMAP->threading) {
      $OUTPUT->command('init_threads', (array) $roots);
    }
}
@@ -393,14 +407,15 @@
 */
function rcmail_messagecontent_frame($attrib)
  {
  global $OUTPUT;
  global $OUTPUT, $RCMAIL;
  if (empty($attrib['id']))
    $attrib['id'] = 'rcmailcontentwindow';
  $attrib['name'] = $attrib['id'];
  $OUTPUT->set_env('contentframe', $attrib['id']);
  if ($RCMAIL->config->get('preview_pane'))
    $OUTPUT->set_env('contentframe', $attrib['id']);
  $OUTPUT->set_env('blankpage', $attrib['src'] ? $OUTPUT->abs_url($attrib['src']) : 'program/blank.gif');
  return html::iframe($attrib);
@@ -434,13 +449,10 @@
  $quota = rcmail_quota_content($attrib);
  if (is_array($quota)) {
    $OUTPUT->add_script('$(document).ready(function(){
  $OUTPUT->add_script('$(document).ready(function(){
   rcmail.set_quota('.json_serialize($quota).')});', 'foot');
    $quota = '';
    }
  return html::span($attrib, $quota);
  return html::span($attrib, '');
  }
@@ -448,39 +460,37 @@
  {
  global $COMM_PATH, $RCMAIL;
  $display = isset($_SESSION['quota_display']) ? $_SESSION['quota_display'] : '';
  $quota = $RCMAIL->imap->get_quota();
  $quota = $RCMAIL->plugins->exec_hook('quota', $quota);
  if (!$quota['total'] && $RCMAIL->config->get('quota_zero_as_unlimited'))
    return rcube_label('unlimited');
  $quota_result = (array) $quota;
  $quota_result['type'] = isset($_SESSION['quota_display']) ? $_SESSION['quota_display'] : '';
  if ($quota['total'])
    {
  if (!$quota['total'] && $RCMAIL->config->get('quota_zero_as_unlimited')) {
    $quota_result['title'] = rcube_label('unlimited');
    $quota_result['percent'] = 0;
    }
  else if ($quota['total']) {
    if (!isset($quota['percent']))
      $quota['percent'] = min(100, round(($quota['used']/max(1,$quota['total']))*100));
      $quota_result['percent'] = min(100, round(($quota['used']/max(1,$quota['total']))*100));
    $quota_result = sprintf('%s / %s (%.0f%%)',
    $title = sprintf('%s / %s (%.0f%%)',
        show_bytes($quota['used'] * 1024), show_bytes($quota['total'] * 1024),
        $quota['percent']);
        $quota_result['percent']);
    if ($display == 'image') {
      $quota_result = array(
       'percent'    => $quota['percent'],
        'title'      => $quota_result,
     );
    $quota_result['title'] = $title;
      if ($attrib['width'])
        $quota_result['width'] = $attrib['width'];
      if ($attrib['height'])
        $quota_result['height']   = $attrib['height'];
      }
      return $quota_result;
    if ($attrib['width'])
      $quota_result['width'] = $attrib['width'];
    if ($attrib['height'])
      $quota_result['height']   = $attrib['height'];
    }
  else {
    $quota_result['title'] = rcube_label('unknown');
    $quota_result['percent'] = 0;
    }
  return rcube_label('unknown');
  return $quota_result;
  }
@@ -537,12 +547,16 @@
}
function rcmail_send_unread_count($mbox_name, $force=false)
function rcmail_send_unread_count($mbox_name, $force=false, $count=null)
{
  global $RCMAIL;
  $old_unseen = $_SESSION['unseen_count'][$mbox_name];
  $unseen = $RCMAIL->imap->messagecount($mbox_name, 'UNSEEN', $force);
  if ($count === null)
    $unseen = $RCMAIL->imap->messagecount($mbox_name, 'UNSEEN', $force);
  else
    $unseen = $count;
  if ($unseen != $old_unseen || ($mbox_name == 'INBOX'))
    $RCMAIL->output->command('set_unread_count', $mbox_name, $unseen, ($mbox_name == 'INBOX'));
@@ -945,6 +959,11 @@
        // fetch part if not available
        if (!isset($part->body))
          $part->body = $MESSAGE->get_part_content($part->mime_id);
        // message is cached but not exists (#1485443), or other error
        if ($part->body === false) {
          rcmail_message_error($MESSAGE->uid);
        }
        // re-format format=flowed content
        if ($part->ctype_secondary == "plain" && $part->ctype_parameters['format'] == "flowed")
@@ -1455,7 +1474,7 @@
    // compose headers array
    $headers = array(
      'Date' => date('r'),
      'Date' => rcmail_user_date(),
      'From' => $sender,
      'To'   => $message->headers->mdn_to,
      'Subject' => rcube_label('receiptread') . ': ' . $message->subject,
@@ -1500,6 +1519,29 @@
  return false;
}
// Returns RFC2822 formatted current date in user's timezone
function rcmail_user_date()
{
  global $CONFIG;
  // get user's timezone
  if ($CONFIG['timezone'] === 'auto') {
    $tz = isset($_SESSION['timezone']) ? $_SESSION['timezone'] : date('Z')/3600;
  }
  else {
    $tz = $CONFIG['timezone'];
    if ($CONFIG['dst_active'])
      $tz++;
  }
  $date = time() + $tz * 60 * 60;
  $date = gmdate('r', $date);
  $date = preg_replace('/[+-][0-9]{4}$/', sprintf('%+05d', $tz * 100), $date);
  return $date;
}
function rcmail_search_filter($attrib)
{
  global $OUTPUT, $CONFIG;
@@ -1532,6 +1574,21 @@
  return $out;
}
function rcmail_message_error($uid=null)
{
  global $RCMAIL;
  // Set env variables for messageerror.html template
  if ($RCMAIL->action == 'show') {
    $mbox_name = $RCMAIL->imap->get_mailbox_name();
    $RCMAIL->output->set_env('mailbox', $mbox_name);
    $RCMAIL->output->set_env('uid', null);
  }
  // display error message
  $RCMAIL->output->show_message('messageopenerror', 'error');
  // ... display message error page
  $RCMAIL->output->send('messageerror');
}
// register UI objects
$OUTPUT->add_handlers(array(
@@ -1549,4 +1606,4 @@
  'searchform' => array($OUTPUT, 'search_form'),
));
?>