$opts = array(
1 => 'Full Statistics',
2 => 'Summary',
- 3 => 'Exit'
+ 3 => 'Detailed Statistics (Single Mailbox)',
+ 4 => 'Expire Mailbox',
+ 5 => 'Expire All Mailboxes',
+ 6 => 'Expire specific UIDs',
+ 7 => 'Exit'
);
while (true) {
if ($action == 1) {
$cli->writeln();
foreach ($mbox_list as $key => $val) {
- $cli->writeln($cli->indent(sprintf("%s (%d msgs, %d searches)", $key, $val['msgs'], $val['search'])));
+ $cli->writeln($cli->indent($cli->green($key) . sprintf(" (%d msgs, %d searches)", $val['msgs'], $val['search'])));
}
}
break;
case 3:
+ $mbox_prompt = $cli->prompt('Mailbox:');
+ if (strlen($mbox_prompt) &&
+ ($res = $ob->cache->get($mbox_prompt))) {
+ $cli->message('Cached messages: ' . count($res) . ' [' . $ob->utils->toSequenceString($res) . ']');
+ if ($res = $ob->cache->getMetaData($mbox_prompt)) {
+ $status = $ob->status($mbox_prompt, Horde_Imap_Client::STATUS_UIDVALIDITY | Horde_Imap_Client::STATUS_HIGHESTMODSEQ);
+ $cli->message('UIDVALIDITY: ' . $res['uidvalid'] . ' [Server value: ' . (($status['uidvalidity'] != $res['uidvalid']) ? $cli->red($status['uidvalidity']) : $status['uidvalidity']) . ']');
+ if (isset($res['HICmodseq'])) {
+ $cli->message('Highest MODSEQ seen: ' . $res['HICmodseq'] . ' [Server value: ' . (($status['highestmodseq'] != $res['HICmodseq']) ? $cli->red($status['highestmodseq']) : $status['highestmodseq']) . ']');
+ }
+ if (isset($res['HICsearch'])) {
+ $cli->message('Cached searches: ' . (count($res['HICsearch']) - 1));
+ }
+ }
+ }
+ break;
+
+ case 4:
+ case 5:
+ if ($action == 4) {
+ $prompt = $cli->prompt('Mailbox:');
+ if (!strlen($prompt)) {
+ break;
+ }
+ $mbox_list = array($prompt);
+ } else {
+ $mbox_list = array($mboxes);
+ }
+
+ if ($cli->prompt('Delete mailbox cache(s)?', array('1' => 'No', '2' => 'Yes'), 1) == 2) {
+ $cli->writeln();
+ foreach ($mbox_list as $val) {
+ $ob->cache->deleteMailbox($val);
+ $cli->message(sprintf('Deleted cache for "%s".', $val), 'cli.success');
+ }
+ }
+ break;
+
+ case 6:
+ $mbox = $cli->prompt('Mailbox:');
+ if (!strlen($mbox)) {
+ break;
+ }
+ $uids = $cli->prompt('UIDs (IMAP sequence string format):');
+ if (!strlen($uids)) {
+ break;
+ }
+ $uids = $ob->utils->fromSequenceString($uids);
+ if (empty($uids)) {
+ $cli->message('No UIDs found', 'cli.error');
+ break;
+ }
+
+ $cli->writeln();
+
+ try {
+ $ob->cache->deleteMsgs($mbox, $uids);
+ $cli->message(sprintf('Deleted %d UIDs from cache.', count($uids)), 'cli.success');
+ } catch (Horde_Imap_Client_Exception $e) {
+ $cli->message('Failed deleting UIDS. Error: ' . $e->getMessage(), 'cli.error');
+ }
+ break;
+
+ case 7:
exit;
}
}