rcube_imap_cache

Interface class for accessing Roundcube messages cache

package

Framework

subpackage

Storage

author

Thomas Bruederli

author

Aleksander Machniak

Methods

Object constructor.

__construct(\rcube_db $db, \rcube_imap $imap, int $userid, bool $skip_deleted, string $ttl, int $threshold) 

Arguments

$db

\rcube_db

DB handler

$imap

\rcube_imap

IMAP handler

$userid

int

User identifier

$skip_deleted

bool

skip_deleted flag

$ttl

string

Expiration time of memcache/apc items

$threshold

int

Maximum cached message size

Cleanup actions (on shutdown).

close() 

Set cache mode

set_mode(int $mode) 

Arguments

$mode

int

Cache mode

Return (sorted) messages index (UIDs).

get_index(string $mailbox, string $sort_field = null, string $sort_order = null, $existing = false) : array

If index doesn't exist or is invalid, will be updated.

Arguments

$mailbox

string

Folder name

$sort_field

string

Sorting column

$sort_order

string

Sorting order (ASC|DESC)

$existing

Response

array

Messages index

Return messages thread.

get_thread(string $mailbox) : array

If threaded index doesn't exist or is invalid, will be updated.

Arguments

$mailbox

string

Folder name

Response

array

Messages threaded index

Returns list of messages (headers). See rcube_imap::fetch_headers().

get_messages(string $mailbox, array $msgs = array()) : array

Arguments

$mailbox

string

Folder name

$msgs

array

Message UIDs

Response

array

The list of messages (rcube_message_header) indexed by UID

Returns message data.

get_message(string $mailbox, int $uid, bool $update = true, $cache = true) : \rcube_message_header

Arguments

$mailbox

string

Folder name

$uid

int

Message UID

$update

bool

If message doesn't exists in cache it will be fetched

                    from IMAP server

$cache

Response

\rcube_message_header

Message data

Saves the message in cache.

add_message(string $mailbox, \rcube_message_header $message, bool $force = false) 

Arguments

$mailbox

string

Folder name

$message

\rcube_message_header

Message data

$force

bool

Skips message in-cache existance check

Sets the flag for specified message.

change_flag(string $mailbox, array $uids, string $flag, bool $enabled = false) 

Arguments

$mailbox

string

Folder name

$uids

array

Message UIDs or null to change flag

                     of all messages in a folder

$flag

string

The name of the flag

$enabled

bool

Flag state

Removes message(s) from cache.

remove_message(string $mailbox = null, array $uids = null) 

Arguments

$mailbox

string

Folder name

$uids

array

Message UIDs, NULL removes all messages

Clears index cache.

remove_index(string $mailbox = null, bool $remove = false) 

Arguments

$mailbox

string

Folder name

$remove

bool

Enable to remove the DB row

Clears thread cache.

remove_thread(string $mailbox = null) 

Arguments

$mailbox

string

Folder name

Clears the cache.

clear(string $mailbox = null, array $uids = null) 

Arguments

$mailbox

string

Folder name

$uids

array

Message UIDs, NULL removes all messages in a folder

Delete expired cache entries

gc() 
static

Fetches index data from database

get_index_row($mailbox) 

Arguments

$mailbox

Fetches thread data from database

get_thread_row($mailbox) 

Arguments

$mailbox

Saves index data into database

add_index_row($mailbox, $sort_field, $data, $mbox_data = array(), $exists = false, $modseq = null) 

Arguments

$mailbox

$sort_field

$data

$mbox_data

$exists

$modseq

Saves thread data into database

add_thread_row($mailbox, $data, $mbox_data = array(), $exists = false) 

Arguments

$mailbox

$data

$mbox_data

$exists

Checks index/thread validity

validate($mailbox, $index, &$exists = true) 

Arguments

$mailbox

$index

$exists

Synchronizes the mailbox.

synchronize(string $mailbox) 

Arguments

$mailbox

string

Folder name

Converts cache row into message object.

build_message(array $sql_arr) : \rcube_message_header

Arguments

$sql_arr

array

Message row data

Response

\rcube_message_header

Message object

Saves message stored in internal cache

save_icache() 

Prepares message object to be stored in database.

message_object_prepare(&$msg, &$size) 

Arguments

$msg

$size

Fetches index data from IMAP server

get_index_data($mailbox, $sort_field, $sort_order, $mbox_data = array()) 

Arguments

$mailbox

$sort_field

$sort_order

$mbox_data

Fetches thread data from IMAP server

get_thread_data($mailbox, $mbox_data = array()) 

Arguments

$mailbox

$mbox_data

Constants

MODE_INDEX

MODE_INDEX

MODE_MESSAGE

MODE_MESSAGE

Properties

Instance of rcube_imap

imap : \rcube_imap
var

Type(s)

\rcube_imap

Instance of rcube_db

db : \rcube_db
var

Type(s)

\rcube_db

User ID

userid : int
var

Type(s)

int

Expiration time in seconds

ttl : int
var

Type(s)

int

Maximum cached message size

threshold : int
var

Type(s)

int

Internal (in-memory) cache

icache : array
var

Type(s)

array

skip_deleted

skip_deleted : 

mode

mode : 

List of known flags. Thanks to this we can handle flag changes with good performance. Bad thing is we need to know used flags.

flags :