Thomas Bruederli
2014-06-04 3412e50b54e3daac8745234e21ab6e72be0ed165
program/steps/mail/func.inc
@@ -24,16 +24,15 @@
$RCMAIL->storage_init();
// set imap properties and session vars
if (strlen(trim($mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GPC, true)))) {
    $RCMAIL->storage->set_folder(($_SESSION['mbox'] = $mbox));
if (!strlen($mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GPC, true))) {
    $mbox = strlen($_SESSION['mbox']) ? $_SESSION['mbox'] : 'INBOX';
}
else if ($RCMAIL->storage) {
    $_SESSION['mbox'] = $RCMAIL->storage->get_folder();
if (!($page = intval($_GET['_page']))) {
    $page = $_SESSION['page'] ? $_SESSION['page'] : 1;
}
if (!empty($_GET['_page'])) {
    $RCMAIL->storage->set_page(($_SESSION['page'] = intval($_GET['_page'])));
}
$RCMAIL->storage->set_folder($_SESSION['mbox'] = $mbox);
$RCMAIL->storage->set_page($_SESSION['page'] = $page);
$a_threading        = $RCMAIL->config->get('message_threading', array());
$message_sort_col   = $RCMAIL->config->get('message_sort_col');
@@ -69,8 +68,8 @@
}
// remove mbox part from _uid
if (($_uid  = get_input_value('_uid', RCUBE_INPUT_GPC)) && preg_match('/^\d+-[^,]+$/', $_uid)) {
  list($_uid, $mbox) = explode('-', $_uid);
if (($_uid  = rcube_utils::get_input_value('_uid', RCUBE_INPUT_GPC)) && !is_array($_uid) && preg_match('/^\d+-.+/', $_uid)) {
  list($_uid, $mbox) = explode('-', $_uid, 2);
  if (isset($_GET['_uid']))  $_GET['_uid']  = $_uid;
  if (isset($_POST['_uid'])) $_POST['_uid'] = $_uid;
  $_REQUEST['_uid'] = $_uid;
@@ -84,6 +83,9 @@
  }
}
if (!empty($_SESSION['browser_caps']) && !$OUTPUT->ajax_call) {
    $OUTPUT->set_env('browser_capabilities', $_SESSION['browser_caps']);
}
// set main env variables, labels and page title
if (empty($RCMAIL->action) || $RCMAIL->action == 'list') {
@@ -137,17 +139,15 @@
    $RCMAIL->set_env_config(array('delete_junk', 'flag_for_deletion', 'read_when_deleted',
        'skip_deleted', 'display_next', 'message_extwin', 'compose_extwin', 'forward_attachment'));
    if (!empty($_SESSION['browser_caps'])) {
        $OUTPUT->set_env('browser_capabilities', $_SESSION['browser_caps']);
    }
    if (!$OUTPUT->ajax_call) {
        $OUTPUT->add_label('checkingmail', 'deletemessage', 'movemessagetotrash',
            'movingmessage', 'copyingmessage', 'deletingmessage', 'markingmessage',
            'copy', 'move', 'quota', 'replyall', 'replylist');
            'copy', 'move', 'quota', 'replyall', 'replylist', 'stillsearching',
            'flagged', 'unflagged', 'unread', 'deleted', 'replied', 'forwarded',
            'priority', 'withattachment');
    }
    $pagetitle = $RCMAIL->localize_foldername($RCMAIL->storage->mod_folder($mbox_name), true);
    $pagetitle = $RCMAIL->localize_foldername($mbox_name, true);
    $pagetitle = str_replace($delimiter, " \xC2\xBB ", $pagetitle);
    $OUTPUT->set_pagetitle($pagetitle);
@@ -393,6 +393,8 @@
        $OUTPUT->command('select_folder', '');
    }
    $OUTPUT->set_env('multifolder_listing', $multifolder);
    if (empty($a_headers)) {
        return;
    }
@@ -507,14 +509,19 @@
        $a_sort_cols = array('subject', 'date', 'from', 'to', 'fromto', 'size', 'cc');
    if (!empty($attrib['optionsmenuicon'])) {
        $onclick = 'return ' . rcmail_output::JS_OBJECT_NAME . ".command('menu-open', 'messagelistmenu')";
        if ($attrib['optionsmenuicon'] === true || $attrib['optionsmenuicon'] == 'true')
            $list_menu = html::div(array('onclick' => $onclick, 'class' => 'listmenu',
                'id' => 'listmenulink', 'title' => $RCMAIL->gettext('listoptions')));
        else
            $list_menu = html::a(array('href' => '#', 'onclick' => $onclick),
                html::img(array('src' => $skin_path . $attrib['optionsmenuicon'],
                    'id' => 'listmenulink', 'title' => $RCMAIL->gettext('listoptions'))));
        $onclick = 'return ' . rcmail_output::JS_OBJECT_NAME . ".command('menu-open', 'messagelistmenu', this, event)";
        $inner   = $RCMAIL->gettext('listoptions');
        if (is_string($attrib['optionsmenuicon']) && $attrib['optionsmenuicon'] != 'true') {
            $inner = html::img(array('src' => $skin_path . $attrib['optionsmenuicon'], 'alt' => $RCMAIL->gettext('listoptions')));
        }
        $list_menu = html::a(array(
            'href' => '#list-options',
            'onclick' => $onclick,
            'class' => 'listmenu',
            'id' => 'listmenulink',
            'title' => $RCMAIL->gettext('listoptions'),
            'tabindex' => '0',
        ), $inner);
    }
    else {
        $list_menu = '';
@@ -534,12 +541,14 @@
        // get column name
        switch ($col) {
        case 'flag':
            $col_name = html::span('flagged', ' ');
            $col_name = html::span('flagged', $RCMAIL->gettext('flagged'));
            break;
        case 'attachment':
        case 'priority':
            $col_name = html::span($col, $RCMAIL->gettext($col));
            break;
        case 'status':
            $col_name = html::span($col, ' ');
            $col_name = html::span($col, $RCMAIL->gettext('readstatus'));
            break;
        case 'threads':
            $col_name = $list_menu;
@@ -2036,7 +2045,7 @@
    $ctypes = array('application/', 'multipart/m', 'multipart/signed', 'multipart/report');
    // Build search string of "with attachment" filter
    $attachment = str_repeat(' OR', count($ctypes)-1);
    $attachment = trim(str_repeat(' OR', count($ctypes)-1));
    foreach ($ctypes as $type) {
        $attachment .= ' HEADER Content-Type ' . rcube_imap_generic::escape($type);
    }