| | |
| | | | program/steps/mail/mark.inc | |
| | | | | |
| | | | This file is part of the Roundcube Webmail client | |
| | | | Copyright (C) 2005-2009, The Roundcube Dev Team | |
| | | | Copyright (C) 2005-2013, The Roundcube Dev Team | |
| | | | | |
| | | | Licensed under the GNU General Public License version 3 or | |
| | | | any later version with exceptions for skins & plugins. | |
| | |
| | | */ |
| | | |
| | | // only process ajax requests |
| | | if (!$OUTPUT->ajax_call) |
| | | if (!$OUTPUT->ajax_call) { |
| | | return; |
| | | } |
| | | |
| | | $threading = (bool) $RCMAIL->storage->get_threading(); |
| | | $skip_deleted = (bool) $RCMAIL->config->get('skip_deleted'); |
| | | $read_deleted = (bool) $RCMAIL->config->get('read_when_deleted'); |
| | | |
| | | $a_flags_map = array( |
| | | 'undelete' => 'UNDELETED', |
| | |
| | | 'read' => 'SEEN', |
| | | 'unread' => 'UNSEEN', |
| | | 'flagged' => 'FLAGGED', |
| | | 'unflagged' => 'UNFLAGGED'); |
| | | 'unflagged' => 'UNFLAGGED', |
| | | ); |
| | | |
| | | $threading = (bool) $RCMAIL->storage->get_threading(); |
| | | |
| | | if (($uids = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST)) && ($flag = rcube_utils::get_input_value('_flag', rcube_utils::INPUT_POST))) |
| | | { |
| | | if (($uids = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST)) |
| | | && ($flag = rcube_utils::get_input_value('_flag', rcube_utils::INPUT_POST)) |
| | | ) { |
| | | $flag = $a_flags_map[$flag] ? $a_flags_map[$flag] : strtoupper($flag); |
| | | |
| | | if ($flag == 'DELETED' && $CONFIG['skip_deleted'] && $_POST['_from'] != 'show') { |
| | | if ($flag == 'DELETED' && $skip_deleted && $_POST['_from'] != 'show') { |
| | | // count messages before changing anything |
| | | $old_count = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL'); |
| | | $old_pages = ceil($old_count / $RCMAIL->storage->get_pagesize()); |
| | |
| | | |
| | | if (!$marked) { |
| | | // send error message |
| | | if ($_POST['_from'] != 'show') |
| | | if ($_POST['_from'] != 'show') { |
| | | $OUTPUT->command('list_mailbox'); |
| | | } |
| | | |
| | | $RCMAIL->display_server_error('errormarking'); |
| | | $OUTPUT->send(); |
| | | exit; |
| | |
| | | $OUTPUT->show_message('messagemarked', 'confirmation'); |
| | | } |
| | | |
| | | if ($flag == 'DELETED' && $CONFIG['read_when_deleted'] && !empty($_POST['_ruid'])) { |
| | | if ($flag == 'DELETED' && $read_deleted && !empty($_POST['_ruid'])) { |
| | | $ruids = rcube_utils::get_input_value('_ruid', rcube_utils::INPUT_POST); |
| | | $read = $RCMAIL->storage->set_flag($ruids, 'SEEN'); |
| | | |
| | | if ($read && !$CONFIG['skip_deleted']) |
| | | if ($read && !$skip_deleted) { |
| | | $OUTPUT->command('flag_deleted_as_read', $ruids); |
| | | } |
| | | } |
| | | |
| | | if ($flag == 'SEEN' || $flag == 'UNSEEN' || ($flag == 'DELETED' && !$CONFIG['skip_deleted'])) { |
| | | if ($flag == 'SEEN' || $flag == 'UNSEEN' || ($flag == 'DELETED' && !$skip_deleted)) { |
| | | rcmail_send_unread_count($RCMAIL->storage->get_folder()); |
| | | } |
| | | else if ($flag == 'DELETED' && $CONFIG['skip_deleted']) { |
| | | else if ($flag == 'DELETED' && $skip_deleted) { |
| | | if ($_POST['_from'] == 'show') { |
| | | if ($next = rcube_utils::get_input_value('_next_uid', rcube_utils::INPUT_GPC)) |
| | | $OUTPUT->command('show_message', $next); |
| | | else |
| | | $OUTPUT->command('command', 'list'); |
| | | } else { |
| | | } |
| | | else { |
| | | $search_request = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC); |
| | | |
| | | // refresh saved search set after moving some messages |
| | | if ($search_request && $RCMAIL->storage->get_search_set()) { |
| | | $_SESSION['search'] = $RCMAIL->storage->refresh_search(); |
| | |
| | | $OUTPUT->command('set_unread_count', $mbox, $unseen_count, ($mbox == 'INBOX')); |
| | | rcmail_set_unseen_count($mbox, $unseen_count); |
| | | } |
| | | |
| | | $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count), $mbox); |
| | | |
| | | if ($threading) { |