Aleksander Machniak
2012-10-11 7ac533dedea5bae31baa2eb6450cc0eb8c1b0090
Add flags and date arguments to kolab_storage::save_message()
3 files modified
48 ■■■■ changed files
program/include/rcube_imap.php 41 ●●●● patch | view | raw | blame | history
program/include/rcube_storage.php 4 ●●● patch | view | raw | blame | history
program/steps/mail/sendmail.inc 3 ●●●● patch | view | raw | blame | history
program/include/rcube_imap.php
@@ -2219,10 +2219,12 @@
     * @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;
@@ -2232,16 +2234,18 @@
            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) {
@@ -3984,6 +3988,29 @@
    /**
     * 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
     */
program/include/rcube_storage.php
@@ -545,10 +545,12 @@
     * @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);
    /**
program/steps/mail/sendmail.inc
@@ -739,7 +739,8 @@
            '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) {