Add flags and date arguments to kolab_storage::save_message()
| | |
| | | * @param string $message The message source string or filename |
| | | * @param string $headers Headers string if $message contains only the body |
| | | * @param boolean $is_file True if $message is a filename |
| | | * @param array $flags Message flags |
| | | * @param mixed $date Message internal date |
| | | * |
| | | * @return int|bool Appended message UID or True on success, False on error |
| | | */ |
| | | public function save_message($folder, &$message, $headers='', $is_file=false) |
| | | public function save_message($folder, &$message, $headers='', $is_file=false, $flags = array(), $date = null) |
| | | { |
| | | if (!strlen($folder)) { |
| | | $folder = $this->folder; |
| | |
| | | return false; |
| | | } |
| | | |
| | | $flags = array('SEEN'); |
| | | |
| | | // make sure folder exists |
| | | if ($this->folder_exists($folder)) { |
| | | if (!$this->folder_exists($folder)) { |
| | | return false; |
| | | } |
| | | |
| | | $date = $this->date_format($date); |
| | | |
| | | if ($is_file) { |
| | | $saved = $this->conn->appendFromFile($folder, $message, $headers, $flags); |
| | | $saved = $this->conn->appendFromFile($folder, $message, $headers, $flags, $date); |
| | | } |
| | | else { |
| | | $saved = $this->conn->append($folder, $message, $flags); |
| | | } |
| | | $saved = $this->conn->append($folder, $message, $flags, $date); |
| | | } |
| | | |
| | | if ($saved) { |
| | |
| | | |
| | | |
| | | /** |
| | | * Converts date string/object into IMAP date/time format |
| | | */ |
| | | protected function date_format($date) |
| | | { |
| | | if (empty($date)) { |
| | | return null; |
| | | } |
| | | |
| | | if (!is_object($date) || !is_a($date, 'DateTime')) { |
| | | try { |
| | | $timestamp = rcube_utils::strtotime($date); |
| | | $date = new DateTime("@".$timestamp); |
| | | } |
| | | catch (Exception $e) { |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | return $date->format('d-M-Y H:i:s O'); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * This is our own debug handler for the IMAP connection |
| | | * @access public |
| | | */ |
| | |
| | | * @param string $message The message source string or filename |
| | | * @param string $headers Headers string if $message contains only the body |
| | | * @param boolean $is_file True if $message is a filename |
| | | * @param array $flags Message flags |
| | | * @param mixed $date Message internal date |
| | | * |
| | | * @return int|bool Appended message UID or True on success, False on error |
| | | */ |
| | | abstract function save_message($folder, &$message, $headers = '', $is_file = false); |
| | | abstract function save_message($folder, &$message, $headers = '', $is_file = false, $flags = array(), $date = null); |
| | | |
| | | |
| | | /** |
| | |
| | | 'message' => "Could not create message: ".$msg->getMessage()), |
| | | TRUE, FALSE); |
| | | else { |
| | | $saved = $RCMAIL->storage->save_message($store_target, $msg, $headers, $mailbody_file ? true : false); |
| | | $saved = $RCMAIL->storage->save_message($store_target, $msg, $headers, |
| | | $mailbody_file ? true : false, array('SEEN')); |
| | | } |
| | | |
| | | if ($mailbody_file) { |