| | |
| | | |
| | | /* |
| | | +-----------------------------------------------------------------------+ |
| | | | program/include/rcube_storage.php | |
| | | | | |
| | | | This file is part of the Roundcube Webmail client | |
| | | | Copyright (C) 2005-2012, The Roundcube Dev Team | |
| | | | Copyright (C) 2012, Kolab Systems AG | |
| | |
| | | | | |
| | | | PURPOSE: | |
| | | | Mail Storage Engine | |
| | | | | |
| | | +-----------------------------------------------------------------------+ |
| | | | Author: Thomas Bruederli <roundcube@gmail.com> | |
| | | | Author: Aleksander Machniak <alec@alec.pl> | |
| | | +-----------------------------------------------------------------------+ |
| | | */ |
| | | |
| | | |
| | | /** |
| | | * Abstract class for accessing mail messages storage server |
| | |
| | | protected $default_charset = 'ISO-8859-1'; |
| | | protected $default_folders = array('INBOX'); |
| | | protected $search_set; |
| | | protected $options = array('auth_method' => 'check'); |
| | | protected $options = array('auth_type' => 'check'); |
| | | protected $page_size = 10; |
| | | protected $threading = false; |
| | | |
| | |
| | | protected $all_headers = array( |
| | | 'IN-REPLY-TO', |
| | | 'BCC', |
| | | 'SENDER', |
| | | 'MESSAGE-ID', |
| | | 'CONTENT-TRANSFER-ENCODING', |
| | | 'REFERENCES', |
| | |
| | | * Get messages count for a specific folder. |
| | | * |
| | | * @param string $folder Folder name |
| | | * @param string $mode Mode for count [ALL|THREADS|UNSEEN|RECENT] |
| | | * @param string $mode Mode for count [ALL|THREADS|UNSEEN|RECENT|EXISTS] |
| | | * @param boolean $force Force reading from server and update cache |
| | | * @param boolean $status Enables storing folder status info (max UID/count), |
| | | * required for folder_status() |
| | |
| | | * @return int Number of messages |
| | | */ |
| | | abstract function count($folder = null, $mode = 'ALL', $force = false, $status = true); |
| | | |
| | | |
| | | /** |
| | | * Public method for listing message flags |
| | | * |
| | | * @param string $folder Folder name |
| | | * @param array $uids Message UIDs |
| | | * @param int $mod_seq Optional MODSEQ value |
| | | * |
| | | * @return array Indexed array with message flags |
| | | */ |
| | | abstract function list_flags($folder, $uids, $mod_seq = null); |
| | | |
| | | |
| | | /** |
| | |
| | | |
| | | /** |
| | | * Fetch message headers and body structure from the server and build |
| | | * an object structure similar to the one generated by PEAR::Mail_mimeDecode |
| | | * an object structure. |
| | | * |
| | | * @param int $uid Message UID to fetch |
| | | * @param string $folder Folder to read from |
| | |
| | | /** |
| | | * Append a mail message (source) to a specific folder. |
| | | * |
| | | * @param string $folder Target folder |
| | | * @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 |
| | | * @param string $folder Target folder |
| | | * @param string|array $message The message source string or filename |
| | | * or array (of strings and file pointers) |
| | | * @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 |
| | | */ |
| | |
| | | /** |
| | | * Parse message UIDs input |
| | | * |
| | | * @param mixed $uids UIDs array or comma-separated list or '*' or '1:*' |
| | | * @param mixed $uids UIDs array or comma-separated list or '*' or '1:*' |
| | | * |
| | | * @return array Two elements array with UIDs converted to list and ALL flag |
| | | */ |
| | |
| | | else { |
| | | if (is_array($uids)) { |
| | | $uids = join(',', $uids); |
| | | } |
| | | else if (strpos($uids, ':')) { |
| | | $uids = join(',', rcube_imap_generic::uncompressMessageSet($uids)); |
| | | } |
| | | |
| | | if (preg_match('/[^0-9,]/', $uids)) { |
| | |
| | | |
| | | |
| | | /** |
| | | * Returns current status of a folder |
| | | * Returns current status of a folder (compared to the last time use) |
| | | * |
| | | * @param string $folder Folder name |
| | | * @param array $diff Difference data |
| | | * |
| | | * @return int Folder status |
| | | */ |
| | | abstract function folder_status($folder = null); |
| | | abstract function folder_status($folder = null, &$diff = array()); |
| | | |
| | | |
| | | /** |
| | |
| | | /** |
| | | * Delete outdated cache entries |
| | | */ |
| | | abstract function expunge_cache(); |
| | | abstract function cache_gc(); |
| | | |
| | | } // end class rcube_storage |