/**
* Moves cache entries from the current mailbox to another mailbox.
*
* @param Horde_Imap_Client_Mailbox $to The destination mailbox.
* @param array $map Mapping of source UIDs (keys) to
* destination UIDs (values).
* @param string $uidvalid UIDVALIDITY of destination
* mailbox.
*
* @throws Horde_Imap_Client_Exception
*/
protected function _moveCache(Horde_Imap_Client_Mailbox $to, $map, $uidvalid)
{
if (!$this->_initCache()) {
return;
}
$c = $this->getParam('cache');
if (in_array(strval($to), $c['fetch_ignore'])) {
$this->_debug->info(sprintf('CACHE: Ignoring moving FETCH data (%s => %s)', $this->_selected, $to));
return;
}
$old = $this->_cache->get($this->_selected, array_keys($map), null);
$new = array();
foreach ($map as $key => $val) {
if (!empty($old[$key])) {
$new[$val] = $old[$key];
}
}
if (!empty($new)) {
$this->_cache->set($to, $new, $uidvalid);
}
}