|
|
|
@ -733,6 +733,41 @@ class rcube_imap_generic
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Executes STATUS comand
|
|
|
|
|
*
|
|
|
|
|
* @param string $mailbox Mailbox name
|
|
|
|
|
* @param array $items Requested item names
|
|
|
|
|
*
|
|
|
|
|
* @return array Status item-value hash
|
|
|
|
|
* @access public
|
|
|
|
|
* @since 0.5-beta
|
|
|
|
|
*/
|
|
|
|
|
function status($mailbox, $items)
|
|
|
|
|
{
|
|
|
|
|
if (empty($mailbox) || empty($items)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
list($code, $response) = $this->execute('STATUS', array($this->escape($mailbox),
|
|
|
|
|
'(' . implode(' ', (array) $items) . ')'));
|
|
|
|
|
|
|
|
|
|
if ($code == self::ERROR_OK && preg_match('/\* STATUS /i', $response)) {
|
|
|
|
|
$result = array();
|
|
|
|
|
$response = substr($response, 9); // remove prefix "* STATUS "
|
|
|
|
|
|
|
|
|
|
list($mbox, $items) = $this->tokenizeResponse($response, 2);
|
|
|
|
|
|
|
|
|
|
for ($i=0, $len=count($items); $i<$len; $i += 2) {
|
|
|
|
|
$result[$items[$i]] = (int) $items[$i+1];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function checkForRecent($mailbox)
|
|
|
|
|
{
|
|
|
|
|
if (empty($mailbox)) {
|
|
|
|
@ -761,6 +796,32 @@ class rcube_imap_generic
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns count of messages without \Seen flag in a specified folder
|
|
|
|
|
*
|
|
|
|
|
* @param string $mailbox Mailbox name
|
|
|
|
|
*
|
|
|
|
|
* @return int Number of messages, False on error
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
|
|
|
|
function countUnseen($mailbox)
|
|
|
|
|
{
|
|
|
|
|
// Try STATUS, should be faster
|
|
|
|
|
$counts = $this->status($mailbox, array('UNSEEN'));
|
|
|
|
|
if (is_array($counts)) {
|
|
|
|
|
return (int) $counts['UNSEEN'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Invoke SEARCH as a fallback
|
|
|
|
|
// @TODO: ESEARCH support
|
|
|
|
|
$index = $this->search($mailbox, 'ALL UNSEEN');
|
|
|
|
|
if (is_array($index)) {
|
|
|
|
|
return count($index);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function sort($mailbox, $field, $add='', $is_uid=FALSE, $encoding = 'US-ASCII')
|
|
|
|
|
{
|
|
|
|
|
$field = strtoupper($field);
|
|
|
|
@ -1413,14 +1474,6 @@ class rcube_imap_generic
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function countUnseen($folder)
|
|
|
|
|
{
|
|
|
|
|
$index = $this->search($folder, 'ALL UNSEEN');
|
|
|
|
|
if (is_array($index))
|
|
|
|
|
return count($index);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Don't be tempted to change $str to pass by reference to speed this up - it will slow it down by about
|
|
|
|
|
// 7 times instead :-) See comments on http://uk2.php.net/references and this article:
|
|
|
|
|
// http://derickrethans.nl/files/phparch-php-variables-article.pdf
|
|
|
|
|