/** * Handles a node save or remove action * @param \ride\library\event\Event $event Save or remove event * @param \ride\library\event\EventManager $eventManager Instance of the * event manager * @return null */ public function handleCmsAction(Event $event, EventManager $eventManager) { if ($event->getArgument('action') != 'publish') { return; } $nodes = $event->getArgument('nodes'); foreach ($nodes as $node) { $this->banNodes[$node->getId()] = $node; } $deletedNodes = $event->getArgument('deletedNodes'); if ($deletedNodes) { foreach ($deletedNodes as $node) { $this->banNodes[$node->getId()] = $node; } } if (!$this->needsAction && $this->banNodes) { // register event to clear when the controller has finished // processing the request $eventManager->addEventListener('app.response.pre', array($this, 'handleVarnish'), 2); $this->needsAction = true; } }
/** * Publish a node or site * @param \ride\library\cms\node\Node $node Node to publish * @param string $revision Name of the published revision, falls back to the * default revision * @param boolean $recursive Flag to see if the node's children should be * published as well * @return null */ public function publishNode(Node $node, $revision = null, $recursive = true) { if ($revision === null) { $revision = $this->getDefaultRevision(); } if ($this->eventManager) { $eventArguments = array('action' => 'publish', 'description' => 'Publish node ' . $node->getName(), 'nodes' => array($node), 'revision' => $revision, 'recursive' => $recursive); $this->eventManager->triggerEvent(self::EVENT_PRE_ACTION, $eventArguments); } $deletedNodes = $this->io->publish($node, $revision, $recursive); if ($this->eventManager) { $eventArguments['deletedNodes'] = $deletedNodes; $this->eventManager->triggerEvent(self::EVENT_POST_ACTION, $eventArguments); } }
/** * Handles a node save or remove action * @param \ride\library\event\Event $event Save or remove event * @param \ride\library\event\EventManager $eventManager Instance of the * event manager * @return null */ public function handleCache(Event $event, EventManager $eventManager) { if (!$this->cacheControls || $this->isCacheClearRegistered) { return; } if (!$this->isCacheClearRegistered) { // register event to commit when the controller has finished processing // the request $eventManager->addEventListener('app.response.post', array($this, 'clearCache')); $this->isCacheClearRegistered = true; } }