- Fix Answered/Forwarded flag setting for messages from subfolders
| | |
| | | CHANGELOG RoundCube Webmail |
| | | =========================== |
| | | |
| | | - Fix Answered/Forwarded flag setting for messages in subfolders |
| | | - Fix autocomplete problem with capital letters (#1485792) |
| | | - Support UUencode content encoding (#1485839) |
| | | - Minimize chance of race condition in session handling (#1485659, #1484678) |
| | |
| | | * |
| | | * @param mixed Message UIDs as array or as comma-separated string |
| | | * @param string Flag to set: SEEN, UNDELETED, DELETED, RECENT, ANSWERED, DRAFT, MDNSENT |
| | | * @param string Folder name |
| | | * @return boolean True on success, False on failure |
| | | */ |
| | | function set_flag($uids, $flag) |
| | | function set_flag($uids, $flag, $mbox_name=NULL) |
| | | { |
| | | $mailbox = $mbox_name ? $this->_mod_mailbox($mbox_name) : $this->mailbox; |
| | | |
| | | $flag = strtoupper($flag); |
| | | if (!is_array($uids)) |
| | | $uids = explode(',',$uids); |
| | | |
| | | if ($flag=='UNDELETED') |
| | | $result = iil_C_Undelete($this->conn, $this->mailbox, join(',', $uids)); |
| | | $result = iil_C_Undelete($this->conn, $mailbox, join(',', $uids)); |
| | | else if ($flag=='UNSEEN') |
| | | $result = iil_C_Unseen($this->conn, $this->mailbox, join(',', $uids)); |
| | | $result = iil_C_Unseen($this->conn, $mailbox, join(',', $uids)); |
| | | else if ($flag=='UNFLAGGED') |
| | | $result = iil_C_UnFlag($this->conn, $this->mailbox, join(',', $uids), 'FLAGGED'); |
| | | $result = iil_C_UnFlag($this->conn, $mailbox, join(',', $uids), 'FLAGGED'); |
| | | else |
| | | $result = iil_C_Flag($this->conn, $this->mailbox, join(',', $uids), $flag); |
| | | $result = iil_C_Flag($this->conn, $mailbox, join(',', $uids), $flag); |
| | | |
| | | // reload message headers if cached |
| | | $cache_key = $this->mailbox.'.msg'; |
| | | $cache_key = $mailbox.'.msg'; |
| | | if ($this->caching_enabled) |
| | | { |
| | | foreach ($uids as $uid) |
| | |
| | | |
| | | // clear message count cache |
| | | if ($result && $flag=='SEEN') |
| | | $this->_set_messagecount($this->mailbox, 'UNSEEN', $count*(-1)); |
| | | $this->_set_messagecount($mailbox, 'UNSEEN', $count*(-1)); |
| | | else if ($result && $flag=='UNSEEN') |
| | | $this->_set_messagecount($this->mailbox, 'UNSEEN', $count); |
| | | $this->_set_messagecount($mailbox, 'UNSEEN', $count); |
| | | else if ($result && $flag=='DELETED') |
| | | $this->_set_messagecount($this->mailbox, 'ALL', $count*(-1)); |
| | | $this->_set_messagecount($mailbox, 'ALL', $count*(-1)); |
| | | |
| | | return $result; |
| | | } |
| | |
| | | if (!is_array($_SESSION['compose']) || $_SESSION['compose']['id'] != get_input_value('_id', RCUBE_INPUT_GET)) |
| | | { |
| | | rcmail_compose_cleanup(); |
| | | $_SESSION['compose'] = array('id' => uniqid(rand()), 'param' => array_map('strip_tags', $_GET)); |
| | | $_SESSION['compose'] = array( |
| | | 'id' => uniqid(rand()), |
| | | 'param' => array_map('strip_tags', $_GET), |
| | | 'mailbox' => $IMAP->get_mailbox_name() |
| | | ); |
| | | |
| | | // process values like "mailto:foo@bar.com?subject=new+message&cc=another" |
| | | if ($_SESSION['compose']['param']['_to']) { |
| | |
| | | |
| | | // set replied/forwarded flag |
| | | if ($_SESSION['compose']['reply_uid']) |
| | | $IMAP->set_flag($_SESSION['compose']['reply_uid'], 'ANSWERED'); |
| | | $IMAP->set_flag($_SESSION['compose']['reply_uid'], 'ANSWERED', $_SESSION['compose']['mailbox']); |
| | | else if ($_SESSION['compose']['forward_uid']) |
| | | $IMAP->set_flag($_SESSION['compose']['forward_uid'], 'FORWARDED'); |
| | | $IMAP->set_flag($_SESSION['compose']['forward_uid'], 'FORWARDED', $_SESSION['compose']['mailbox']); |
| | | |
| | | } // End of SMTP Delivery Block |
| | | |