protected function _parseVanished(Horde_Imap_Client_Interaction_Pipeline $pipeline, Horde_Imap_Client_Tokenize $data)
{
/* There are two forms of VANISHED. VANISHED (EARLIER) will be sent
* in a FETCH (VANISHED) or SELECT/EXAMINE (QRESYNC) call.
* If this is the case, we can go ahead and update the cache
* immediately (we know we are caching or else QRESYNC would not be
* enabled). HIGHESTMODSEQ information will be updated via the tagged
* response. */
if (($curr = $data->next()) === true) {
if (Horde_String::upper($data->next()) === 'EARLIER') {
/* Caching is guaranteed to be active if we are using
* QRESYNC. */
$data->next();
$vanished = $this->getIdsOb($data->next());
if (isset($pipeline->data['vanished'])) {
$pipeline->data['vanished']->add($vanished);
} else {
$this->_deleteMsgs($this->_selected, $vanished, array('pipeline' => $pipeline));
}
}
} else {
/* The second form is just VANISHED. This is analogous to EXPUNGE
* and requires the message count to decrement. */
$this->_deleteMsgs($this->_selected, $this->getIdsOb($curr), array('decrement' => true, 'pipeline' => $pipeline));
}
}