| | |
| | | |
| | | $a_threading = $RCMAIL->config->get('message_threading', array()); |
| | | $message_sort_col = $RCMAIL->config->get('message_sort_col'); |
| | | $message_sort_order = $RCMAIL->config->get('message_sort_col'); |
| | | $message_sort_order = $RCMAIL->config->get('message_sort_order'); |
| | | |
| | | // set default sort col/order to session |
| | | if (!isset($_SESSION['sort_col'])) { |
| | |
| | | $OUTPUT->set_env('search_text', $_SESSION['last_text_search']); |
| | | } |
| | | |
| | | // remove mbox part from _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; |
| | | unset($_uid); |
| | | |
| | | // override mbox |
| | | if (!empty($mbox)) { |
| | | $_GET['_mbox'] = $mbox; |
| | | $_POST['_mbox'] = $mbox; |
| | | $RCMAIL->storage->set_folder(($_SESSION['mbox'] = $mbox)); |
| | | } |
| | | } |
| | | |
| | | |
| | | // set main env variables, labels and page title |
| | | if (empty($RCMAIL->action) || $RCMAIL->action == 'list') { |
| | | // connect to storage server and trigger error on failure |
| | |
| | | } |
| | | |
| | | $OUTPUT->set_env('search_mods', rcmail_search_mods()); |
| | | |
| | | if (!empty($_SESSION['search_scope'])) |
| | | $OUTPUT->set_env('search_scope', $_SESSION['search_scope']); |
| | | } |
| | | |
| | | $threading = (bool) $RCMAIL->storage->get_threading(); |
| | |
| | | if (!$OUTPUT->ajax_call) { |
| | | $OUTPUT->add_label('checkingmail', 'deletemessage', 'movemessagetotrash', |
| | | 'movingmessage', 'copyingmessage', 'deletingmessage', 'markingmessage', |
| | | 'copy', 'move', 'quota', 'replyall', 'replylist', 'importwait'); |
| | | 'copy', 'move', 'quota', 'replyall', 'replylist'); |
| | | } |
| | | |
| | | $pagetitle = $RCMAIL->localize_foldername($RCMAIL->storage->mod_folder($mbox_name), true); |
| | |
| | | 'upload' => 'attachments.inc', |
| | | 'group-expand' => 'autocomplete.inc', |
| | | )); |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | $OUTPUT->set_env('sort_col', $_SESSION['sort_col']); |
| | | $OUTPUT->set_env('sort_order', $_SESSION['sort_order']); |
| | | $OUTPUT->set_env('messages', array()); |
| | | $OUTPUT->set_env('coltypes', $a_show_cols); |
| | | $OUTPUT->set_env('listcols', $a_show_cols); |
| | | |
| | | $OUTPUT->include_script('list.js'); |
| | | |
| | |
| | | /** |
| | | * return javascript commands to add rows to the message list |
| | | */ |
| | | function rcmail_js_message_list($a_headers, $insert_top=FALSE, $a_show_cols=null) |
| | | function rcmail_js_message_list($a_headers, $insert_top=false, $a_show_cols=null) |
| | | { |
| | | global $RCMAIL, $OUTPUT; |
| | | |
| | |
| | | $head_replace = true; |
| | | } |
| | | |
| | | // add 'folder' column to list on multi-folder searches |
| | | $search_set = $RCMAIL->storage->get_search_set(); |
| | | $multifolder = $search_set && $search_set[1]->multi; |
| | | if ($multifolder && !in_array('folder', $a_show_cols)) { |
| | | $a_show_cols[] = 'folder'; |
| | | $head_replace = true; |
| | | } |
| | | |
| | | $mbox = $RCMAIL->storage->get_folder(); |
| | | |
| | | // make sure 'threads' and 'subject' columns are present |
| | |
| | | array_unshift($a_show_cols, 'subject'); |
| | | if (!in_array('threads', $a_show_cols)) |
| | | array_unshift($a_show_cols, 'threads'); |
| | | |
| | | $_SESSION['list_attrib']['columns'] = $a_show_cols; |
| | | |
| | | // Make sure there are no duplicated columns (#1486999) |
| | | $a_show_cols = array_unique($a_show_cols); |
| | |
| | | |
| | | $OUTPUT->command('set_message_coltypes', $a_show_cols, $thead, $smart_col); |
| | | |
| | | if ($multifolder && $_SESSION['search_scope'] == 'all') { |
| | | $OUTPUT->command('select_folder', ''); |
| | | } |
| | | |
| | | $OUTPUT->set_env('multifolder_listing', $multifolder); |
| | | |
| | | if (empty($a_headers)) { |
| | | return; |
| | | } |
| | |
| | | foreach ($a_headers as $header) { |
| | | if (empty($header)) |
| | | continue; |
| | | |
| | | // make message UIDs unique by appending the folder name |
| | | if ($multifolder) { |
| | | $header->uid .= '-'.$header->folder; |
| | | $header->flags['skip_mbox_check'] = true; |
| | | if ($header->parent_uid) |
| | | $header->parent_uid .= '-'.$header->folder; |
| | | } |
| | | |
| | | $a_msg_cols = array(); |
| | | $a_msg_flags = array(); |
| | |
| | | $cont = show_bytes($header->$col); |
| | | else if ($col == 'date') |
| | | $cont = $RCMAIL->format_date($header->date); |
| | | else if ($col == 'folder') |
| | | $cont = rcube::Q(rcube_charset::convert($header->folder, 'UTF7-IMAP')); |
| | | else |
| | | $cont = rcube::Q($header->$col); |
| | | |
| | |
| | | $a_msg_flags['prio'] = (int) $header->priority; |
| | | |
| | | $a_msg_flags['ctype'] = rcube::Q($header->ctype); |
| | | $a_msg_flags['mbox'] = $mbox; |
| | | $a_msg_flags['mbox'] = $header->folder; |
| | | |
| | | // merge with plugin result (Deprecated, use $header->flags) |
| | | if (!empty($header->list_flags) && is_array($header->list_flags)) |
| | |
| | | $list_menu = ''; |
| | | } |
| | | |
| | | $cells = array(); |
| | | $cells = $coltypes = array(); |
| | | |
| | | // get name of smart From/To column in folder context |
| | | if (array_search('fromto', $a_show_cols) !== false) { |
| | |
| | | } |
| | | |
| | | foreach ($a_show_cols as $col) { |
| | | $label = ''; |
| | | $sortable = false; |
| | | |
| | | // get column name |
| | | switch ($col) { |
| | | case 'flag': |
| | | $col_name = '<span class="flagged"> </span>'; |
| | | $col_name = html::span('flagged', ' '); |
| | | break; |
| | | case 'attachment': |
| | | case 'priority': |
| | | case 'status': |
| | | $col_name = '<span class="' . $col .'"> </span>'; |
| | | $col_name = html::span($col, ' '); |
| | | break; |
| | | case 'threads': |
| | | $col_name = $list_menu; |
| | | break; |
| | | case 'fromto': |
| | | $col_name = rcube::Q($RCMAIL->gettext($smart_col)); |
| | | $label = $RCMAIL->gettext($smart_col); |
| | | $col_name = rcube::Q($label); |
| | | break; |
| | | default: |
| | | $col_name = rcube::Q($RCMAIL->gettext($col)); |
| | | $label = $RCMAIL->gettext($col); |
| | | $col_name = rcube::Q($label); |
| | | } |
| | | |
| | | // make sort links |
| | | if (in_array($col, $a_sort_cols)) { |
| | | $sortable = true; |
| | | $col_name = html::a(array( |
| | | 'href' => "./#sort", |
| | | 'onclick' => 'return '.rcmail_output::JS_OBJECT_NAME.".command('sort','".$col."',this)", |
| | | 'title' => $RCMAIL->gettext('sortby') |
| | | 'href' => "./#sort", |
| | | 'class' => 'sortcol', |
| | | 'rel' => $col, |
| | | 'title' => $RCMAIL->gettext('sortby') |
| | | ), $col_name); |
| | | } |
| | | else if ($col_name[0] != '<') { |
| | |
| | | |
| | | // put it all together |
| | | $cells[] = array('className' => $class_name, 'id' => "rcm$col", 'html' => $col_name); |
| | | $coltypes[$col] = array('className' => $class_name, 'id' => "rcm$col", 'label' => $label, 'sortable' => $sortable); |
| | | } |
| | | |
| | | $RCMAIL->output->set_env('coltypes', $coltypes); |
| | | return $cells; |
| | | } |
| | | |
| | |
| | | { |
| | | $parts = array(); |
| | | foreach ($p as $key => $val) { |
| | | $parts[] = $key . '=' . ($key == 'folder' ? base64_encode($val) : $val); |
| | | $encode = $key == 'folder' || strpos($val, ';') !== false; |
| | | $parts[] = $key . '=' . ($encode ? 'B::' . base64_encode($val) : $val); |
| | | } |
| | | |
| | | return join('; ', $parts); |
| | |
| | | |
| | | foreach (preg_split('/;\s+/', $str) as $part) { |
| | | list($key, $val) = explode('=', $part, 2); |
| | | if ($key == 'folder') { |
| | | if (strpos($val, 'B::') === 0) { |
| | | $val = base64_decode(substr($val, 3)); |
| | | } |
| | | else if ($key == 'folder') { |
| | | $val = base64_decode($val); |
| | | } |
| | | |
| | |
| | | $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); |
| | | } |
| | |
| | | $content); |
| | | |
| | | $RCMAIL->output->add_gui_object('importform', $attrib['id'].'Frm'); |
| | | $RCMAIL->output->add_label('selectimportfile','importwait'); |
| | | |
| | | return html::div($attrib, $out); |
| | | } |