Add flags and date arguments to kolab_storage::save_message()

pull/36/merge
Aleksander Machniak 12 years ago
parent 00891e687b
commit 7ac533dede

@ -2219,10 +2219,12 @@ class rcube_imap extends rcube_storage
* @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 @@ class rcube_imap extends rcube_storage
return false;
}
$flags = array('SEEN');
// make sure folder exists
if ($this->folder_exists($folder)) {
if ($is_file) {
$saved = $this->conn->appendFromFile($folder, $message, $headers, $flags);
}
else {
$saved = $this->conn->append($folder, $message, $flags);
}
if (!$this->folder_exists($folder)) {
return false;
}
$date = $this->date_format($date);
if ($is_file) {
$saved = $this->conn->appendFromFile($folder, $message, $headers, $flags, $date);
}
else {
$saved = $this->conn->append($folder, $message, $flags, $date);
}
if ($saved) {
@ -3983,6 +3987,29 @@ class rcube_imap extends rcube_storage
}
/**
* 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

@ -545,10 +545,12 @@ abstract class rcube_storage
* @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);
/**

@ -739,7 +739,8 @@ if ($store_target) {
'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) {

Loading…
Cancel
Save