/** * Creates a node dispatcher for the provided node * @param \ride\library\cms\node\SiteNode $site * @param string $nodeId Id of the node * @param string $baseUrl * @param string $locale * @return \ride\web\cms\node\dispatcher\NodeDispatcher */ public function createNodeDispatcher(SiteNode $site, $nodeId, $baseUrl, $locale) { if ($this->cachePool) { $cacheKey = 'node.dispatcher.' . $site->getId() . '.' . $nodeId . '.' . $locale; $cacheItem = $this->cachePool->get($cacheKey); if ($cacheItem->isValid()) { $nodeDispatcher = $cacheItem->getValue(); $this->processNodeDispatcher($nodeDispatcher); return $nodeDispatcher; } } try { $node = $this->nodeModel->getNode($site->getId(), $site->getRevision(), $nodeId); } catch (NodeNotFoundException $exception) { return null; } $theme = $this->themeModel->getTheme($node->getTheme()); $nodeView = new NodeTemplateView($node, $theme, $locale); $router = new GenericRouter(new RouteContainer()); $breadcrumbs = $this->nodeModel->getBreadcrumbsForNode($node, $baseUrl, $locale); $nodeDispatcher = new GenericNodeDispatcher($node, $nodeView, $router, $breadcrumbs); $nodeDispatcher->loadWidgets($this->widgetModel, $theme->getRegions()); if ($this->cachePool) { $cacheItem->setValue($nodeDispatcher); $this->cachePool->set($cacheItem); } $this->processNodeDispatcher($nodeDispatcher); return $nodeDispatcher; }
/** * Saves the node in the model * @param string $locale Locale of the structure * @param \ride\library\cms\node\SiteNode $site Site node * @param \ride\library\cms\node\NodeModel $nodeModel * @param array $nodeArray * @return \ride\library\cms\node\Node */ protected function saveNode($locale, SiteNode $site, NodeModel $nodeModel, array $nodeArray, $isUniqueTree) { if (isset($nodeArray['id']) && $nodeArray['id']) { $node = $nodeModel->getNode($site->getId(), $site->getRevision(), $nodeArray['id']); } else { $type = $nodeArray['type']; if (!$type) { $type = PageNodeType::NAME; } $node = $nodeModel->createNode($type); $node->setParentNode($site); $node->setRevision($site->getRevision()); if ($isUniqueTree) { $node->setAvailableLocales($locale); } } $node->setName($locale, $nodeArray['name']); if ($nodeArray['route'] && $nodeArray['route'] != '/nodes/' . $node->getId() . '/' . $locale) { $node->setRoute($locale, $nodeArray['route']); } $nodeModel->setNode($node, 'Updated structure of ' . $site->getName()); return $node; }
/** * Restores the provided trash nodes * @param \ride\library\cms\node\SiteNode $site Site to manipulate * @param array $trashNodes Array with TrashNode instances * @param string $destination Materialized path of the new parent * @return null */ public function restoreTrashNodes(SiteNode $site, array $trashNodes, $destination) { $this->nodeModel->restoreTrashNodes($site->getId(), $site->getRevision(), $trashNodes, $destination); }