/** * DirectoryStorage constructor. * @param string $directory * @param \VersionPress\Database\EntityInfo $entityInfo * @param string $dbPrefix * @param ChangeInfoFactory $changeInfoFactory */ public function __construct($directory, $entityInfo, $dbPrefix, $changeInfoFactory) { parent::__construct($entityInfo, $dbPrefix); $this->directory = $directory; $this->entityInfo = $entityInfo; $this->changeInfoFactory = $changeInfoFactory; }
/** * Loads entities from storage and gives subclasses the chance to transform them, see * {@see transformEntities()}. * * @param $entitiesToSynchronize * @return array */ private function loadEntitiesFromStorage($entitiesToSynchronize) { if ($this->selectiveSynchronization) { $entities = array(); foreach ($entitiesToSynchronize as $entityToSynchronize) { if ($this->storage->exists($entityToSynchronize['vp_id'], $entityToSynchronize['parent'])) { $entities[] = $this->storage->loadEntity($entityToSynchronize['vp_id'], $entityToSynchronize['parent']); } else { if ($this->storage->exists($entityToSynchronize['vp_id'], null)) { $entities[] = $this->storage->loadEntity($entityToSynchronize['vp_id'], null); } } } } else { $entities = $this->storage->loadAll(); } $entities = $this->transformEntities($entities); return $entities; }
/** * Loads entities from storage. For full synchronization it loads all entities. For selective synchronization it loads * only entities from $this->entitiesToSynchronize. * * @return array */ private function loadEntitiesFromStorage() { if ($this->isSelectiveSynchronization) { $entities = []; foreach ($this->entitiesToSynchronize as $entityToSynchronize) { if ($this->storage->exists($entityToSynchronize['vp_id'], $entityToSynchronize['parent'])) { $entities[] = $this->storage->loadEntity($entityToSynchronize['vp_id'], $entityToSynchronize['parent']); } } } else { $entities = $this->storage->loadAll(); } $entities = $this->maybeStripMetaEntities($entities); $entities = array_map(function ($entity) { return $this->urlReplacer->restore($entity); }, $entities); $entities = array_map(function ($entity) { return $this->vpidRepository->restoreForeignKeys($this->entityName, $entity); }, $entities); return $entities; }
public function shouldBeSaved($data) { return parent::shouldBeSaved($data) && isset($data[$this->parentReferenceName]) && $this->parentStorage->exists($data[$this->parentReferenceName], null); }
private function saveMetaEntities(Storage $storage, $entities, $parentReference) { if (count($entities) == 0) { return; } $lastParent = $entities[0][$parentReference]; foreach ($entities as $entity) { if ($entity[$parentReference] !== $lastParent) { $storage->commit(); $this->checkTimeout(); } $storage->saveLater($entity); } $storage->commit(); }