Jackalope\Version\VersionManager::restore PHP 메소드

restore() 공개 메소드

{@inheritDoc}
public restore ( $removeExisting, $version, $absPath = null )
    public function restore($removeExisting, $version, $absPath = null)
    {
        if ($this->objectManager->hasPendingChanges()) {
            throw new InvalidItemStateException('You may not call restore when there pending unsaved changes');
        }
        if (is_string($version)) {
            if (!is_string($absPath)) {
                throw new InvalidArgumentException('To restore version by version name you need to specify the path to the node you want to restore to this name');
            }
            $vh = $this->getVersionHistory($absPath);
            $version = $vh->getVersion($version);
            $versionPath = $version->getPath();
            $nodePath = $absPath;
        } elseif (is_array($version)) {
            // @codeCoverageIgnoreStart
            throw new NotImplementedException('TODO: implement restoring a list of versions');
            // @codeCoverageIgnoreEnd
        } elseif ($version instanceof VersionInterface && is_string($absPath)) {
            // @codeCoverageIgnoreStart
            throw new NotImplementedException('TODO: implement restoring a version to a specified path');
            // @codeCoverageIgnoreEnd
        } elseif ($version instanceof VersionInterface) {
            $versionPath = $version->getPath();
            $nodePath = $this->objectManager->getNodeByIdentifier($version->getContainingHistory()->getVersionableIdentifier())->getPath();
        } else {
            throw new InvalidArgumentException();
        }
        $this->objectManager->restore($removeExisting, $versionPath, $nodePath);
        $version->setCachedPredecessorsDirty();
        if ($history = $this->objectManager->getCachedNode(PathHelper::getParentPath($version->getPath()), 'Version\\VersionHistory')) {
            $history->notifyHistoryChanged();
        }
    }