Improved PERMANENTFLAGS checking code, added code for flags caching (currently commented out)

pull/17/head
Aleksander Machniak 12 years ago
parent da19e0ee7c
commit 82a1417af8

@ -404,15 +404,56 @@ class rcube_imap extends rcube_storage
*/
public function check_permflag($flag)
{
$flag = strtoupper($flag);
$imap_flag = $this->conn->flags[$flag];
$flag = strtoupper($flag);
$imap_flag = $this->conn->flags[$flag];
$perm_flags = $this->get_permflags($this->folder);
return in_array_nocase($imap_flag, $perm_flags);
}
/**
* Returns PERMANENTFLAGS of the specified folder
*
* @param string $folder Folder name
*
* @return array Flags
*/
public function get_permflags($folder)
{
if (!strlen($folder)) {
return array();
}
/*
Checking PERMANENTFLAGS is rather rare, so we disable caching of it
Re-think when we'll use it for more than only MDNSENT flag
$cache_key = 'mailboxes.permanentflags.' . $folder;
$permflags = $this->get_cache($cache_key);
if ($permflags !== null) {
return explode(' ', $permflags);
}
*/
if (!$this->check_connection()) {
return array();
}
if ($this->folder !== null) {
$this->check_connection();
if ($this->conn->select($folder)) {
$permflags = $this->conn->data['PERMANENTFLAGS'];
}
else {
return array();
}
// @TODO: cache permanent flags (?)
return (in_array_nocase($imap_flag, $this->conn->data['PERMANENTFLAGS']));
if (!is_array($permflags)) {
$permflags = array();
}
/*
// Store permflags as string to limit cached object size
$this->update_cache($cache_key, implode(' ', $permflags));
*/
return $permflags;
}

Loading…
Cancel
Save