public function validateHierarchyChanges(Horde_ActiveSync_Connector_Exporter_FolderSync $exporter, array $seenFolders)
{
if ($this->_as->device->version < Horde_ActiveSync::VERSION_TWELVEONE || count($exporter->changed)) {
return;
}
// Remove unnecessary changes.
foreach ($exporter->changed as $key => $folder) {
if (isset($folder->serverid) && ($syncFolder = $this->_cache->getFolder($folder->serverid) && in_array($folder->serverid, $seenfolders) && $syncFolder['parentid'] == $folder->parentid && $syncFolder['displayname'] == $folder->displayname && $syncFolder['type'] == $folder->type)) {
$this->_logger->info(sprintf('[%s] Ignoring %s from changes because it contains no changes from device.', $this->_procid, $folder->serverid));
unset($exporter->changed[$key]);
$exporter->count--;
}
}
// Remove unnecessary deletions.
foreach ($exporter->deleted as $key => $folder) {
if (($sid = array_search($folder, $seenfolders)) === false) {
$this->_logger->info(sprintf('[%s] Ignoring %s from deleted list because the device does not know it', $this->_procid, $folder));
unset($exporter->deleted[$key]);
$exporter->count--;
}
}
}