public function validateCollectionsFromCache(&$collections)
{
foreach ($collections as $key => $values) {
if (!isset($values['class']) && isset($this->_data['folders'][$values['id']]['class'])) {
$collections[$key]['class'] = $this->_data['folders'][$values['id']]['class'];
$this->_markCollectionsDirty($key);
}
if (!isset($values['type']) && isset($this->_data['folders'][$values['id']]['type'])) {
$collections[$key]['type'] = $this->_data['folders'][$values['id']]['type'];
$this->_markCollectionsDirty($key);
}
if (!isset($values['filtertype']) && isset($this->_data['collections'][$values['id']]['filtertype'])) {
$collections[$key]['filtertype'] = $this->_data['collections'][$values['id']]['filtertype'];
$this->_markCollectionsDirty($key);
}
if (!isset($values['mimesupport']) && isset($this->_data['collections'][$values['id']]['mimesupport'])) {
$collections[$key]['mimesupport'] = $this->_data['collections'][$values['id']]['mimesupport'];
$this->_markCollectionsDirty($key);
}
if (empty($values['bodyprefs']) && isset($this->_data['collections'][$values['id']]['bodyprefs'])) {
$collections[$key]['bodyprefs'] = $this->_data['collections'][$values['id']]['bodyprefs'];
$this->_markCollectionsDirty($key);
}
if (empty($values['truncation']) && isset($this->_data['collections'][$values['id']]['truncation'])) {
$collections[$key]['truncation'] = $this->_data['collections'][$values['id']]['truncation'];
$this->_markCollectionsDirty($key);
}
if (empty($values['mimetruncation']) && isset($this->_data['collections'][$values['id']]['mimetruncation'])) {
$collections[$key]['mimetruncation'] = $this->_data['collections'][$values['id']]['mimetruncation'];
$this->_markCollectionsDirty($key);
}
if (empty($values['serverid']) && isset($this->_data['collections'][$values['id']]['serverid'])) {
$collections[$key]['serverid'] = $this->_data['collections'][$values['id']]['serverid'];
$this->_markCollectionsDirty($key);
}
if (!isset($values['windowsize'])) {
$collections[$key]['windowsize'] = isset($this->_data['collections'][$values['id']]['windowsize']) ? $this->_data['collections'][$values['id']]['windowsize'] : 100;
$this->_markCollectionsDirty($key);
}
// According to specs, if WINDOWSIZE is out of bounds, interpret as 512.
if ($collections[$key]['windowsize'] > Horde_ActiveSync_Request_Sync::MAX_WINDOW_SIZE || $collections[$key]['windowsize'] == 0) {
$collections[$key]['windowsize'] = self::MAX_WINDOW_SIZE;
$this->_markCollectionsDirty($key);
}
if (isset($values['synckey']) && $values['synckey'] == '0' && isset($this->_data['collections'][$values['id']]['synckey']) && $this->_data['collections'][$values['id']]['synckey'] != '0') {
unset($this->_data['collections'][$values['id']]['synckey']);
$this->_markCollectionsDirty($key);
}
if (!isset($values['pingable']) && isset($this->_data['collections'][$values['id']]['pingable'])) {
$collections[$key]['pingable'] = $this->_data['collections'][$values['id']]['pingable'];
$this->_markCollectionsDirty($key);
}
}
}