Horde_ActiveSync_Collections::validateHierarchyChanges PHP Метод

validateHierarchyChanges() публичный Метод

Validate and perform some sanity checks on the hierarchy changes before being sent to the client.
public validateHierarchyChanges ( Horde_ActiveSync_Connector_Exporter_FolderSync $exporter, array $seenFolders )
$exporter Horde_ActiveSync_Connector_Exporter_FolderSync The exporter.
$seenFolders array An array of folders.
    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--;
            }
        }
    }