/** * Occur on site.layout.beforesave events. * * @access public * * @param Event $event */ public static function onBeforeSave(Event $event) { $layout = $event->getTarget(); if (!is_a($layout, 'BackBee\\Site\\Layout')) { return; } $dispatcher = $event->getDispatcher(); if (null !== $dispatcher->getApplication()) { if (is_a($event->getEventArgs(), 'Doctrine\\ORM\\Event\\PreUpdateEventArgs')) { if (!$event->getEventArgs()->hasChangedField('_data')) { return; } } // Update the layout thumbnail - Beware of generate thumbnail before any other operation $thumb = $dispatcher->getApplication()->getEntityManager()->getRepository('BackBee\\Site\\Layout')->generateThumbnail($layout, $dispatcher->getApplication()); // Update the layout file try { $dispatcher->getApplication()->getRenderer()->updateLayout($layout); } catch (\BackBee\Renderer\Exception\RendererException $e) { $dispatcher->getApplication()->warning($e->getMessage()); } if (is_a($event->getEventArgs(), 'Doctrine\\ORM\\Event\\PreUpdateEventArgs')) { if ($event->getEventArgs()->hasChangedField('_picpath')) { $event->getEventArgs()->setNewValue('_picpath', $thumb); } } } }
public static function onRender(Event $event) { $renderer = $event->getEventArgs(); $application = $event->getDispatcher()->getApplication(); $em = $application->getEntityManager(); $content = $renderer->getObject(); $links = $content->getParamValue('link'); $link = ['url' => '', 'title' => 'Visit', 'target' => '_self']; if (!empty($links)) { $links = reset($links); if (isset($links['pageUid']) && !empty($links['pageUid'])) { $page = $em->getRepository('BackBee\\NestedNode\\Page')->find($links['pageUid']); if ($page !== null) { $link['url'] = $renderer->getUri($page->getUrl()); } } if (empty($link['url']) && isset($links['url'])) { $link['url'] = $links['url']; } if (isset($links['title'])) { $link['title'] = $links['title']; } if (isset($links['target'])) { $link['target'] = $links['target']; } } $renderer->assign('link', $link); }
public static function onPreRenderTwitter(Event $event) { $renderer = $event->getEventArgs(); self::$application = $event->getDispatcher()->getApplication(); $config = self::getSocialConfig('twitter'); $content = $renderer->getObject(); $widgetId = $content->getParamValue('widget_id'); if (empty($widgetId)) { if (null !== $config && isset($config['widget_id'])) { $widgetId = $config['widget_id']; } } $renderer->assign('widget_id', $widgetId); }
public static function onRender(Event $event) { self::$renderer = $event->getEventArgs(); self::$application = self::$renderer->getApplication(); self::$em = self::$application->getEntityManager(); $content = self::$renderer->getObject(); $parentNode = self::getParentNode($content->getParamValue('parent_node')); $selector = ['parentnode' => [$parentNode !== null ? $parentNode->getUid() : null]]; $contents = self::$em->getRepository('BackBee\\ClassContent\\AbstractClassContent')->getSelection($selector, in_array('multipage', $content->getParamValue('multipage')), in_array('recursive', $content->getParamValue('recursive')), (int) $content->getParamValue('start'), (int) $content->getParamValue('limit'), self::$application->getBBUserToken() === null, false, (array) $content->getParamValue('content_to_show'), (int) $content->getParamValue('delta')); $count = $contents instanceof Paginator ? $contents->count() : count($contents); self::$renderer->assign('contents', $contents); self::$renderer->assign('nbContents', $count); self::$renderer->assign('parentNode', $parentNode); }
/** * Occur on nestednode.page.onflush events. * * @param \BackBee\Event\Event $event */ public static function onFlushPage(Event $event) { $page = $event->getTarget(); if (!$page instanceof Page) { return; } $maincontent = $event->getEventArgs(); if (!$maincontent instanceof AbstractClassContent) { $maincontent = null; } $dispatcher = $event->getDispatcher(); $application = $dispatcher->getApplication(); if (self::updateUrl($application, $page, $maincontent)) { $descendants = $application->getEntityManager()->getRepository('BackBee\\NestedNode\\Page')->getDescendants($page, 1); foreach ($descendants as $descendant) { self::updateUrl($application, $descendant); } } }
public static function onRender(Event $event) { $renderer = $event->getEventArgs(); $application = $event->getDispatcher()->getApplication(); $content = $renderer->getObject(); $tag = null; $url = '#'; $mainNode = $content->getMainNode(); if ($mainNode !== null) { $url = $renderer->getUri($mainNode->getUrl()); $parentNode = $mainNode->getParent(); if (null !== $parentNode) { $altTitle = $parentNode->getAltTitle(); $tag = !empty($altTitle) ? $altTitle : $parentNode->getTitle(); } } $renderer->assign('tag', $tag); $renderer->assign('url', $url); }
public static function onRender(Event $event) { $dispatcher = $event->getDispatcher(); $renderer = $event->getEventArgs(); $renderer->assign('keyword', null); if (null !== $dispatcher) { $application = $dispatcher->getApplication(); if (null === $application) { return; } $keywordloaded = $event->getTarget(); if (!is_a($renderer, 'BackBee\\Renderer\\AbstractRenderer')) { return; } $keyWord = $application->getEntityManager()->find('BackBee\\NestedNode\\KeyWord', $keywordloaded->value); if (!is_null($keyWord)) { $renderer->assign('keyword', $keyWord); } } }
/** * Occur on nestednode.page.preupdate events and nestednode.section.preupdate. * * @access public * * @param Event $event */ public static function onPreUpdate(Event $event) { $page = $event->getTarget(); $eventArgs = $event->getEventArgs(); $updateParents = false; $new = $old = null; $pageCountModifier = -1; if ($eventArgs instanceof PreUpdateEventArgs) { if ($page instanceof Page && $eventArgs->hasChangedField('_section')) { $old = $eventArgs->getOldValue('_section'); $new = $eventArgs->getNewValue('_section'); if ($new->getUid() === $page->getUid()) { return; } $updateParents = true; } if ($page instanceof Page && $eventArgs->hasChangedField('_state')) { if ($page->getParent() !== null) { if ($eventArgs->getNewValue('_state') >= 4) { $old = $page->getParent()->getSection(); if (!$page->isLeaf()) { $pageCountModifier = 0; } } else { $new = $page->getParent()->getSection(); } $updateParents = true; } } if ($page instanceof Section && $eventArgs->hasChangedField('_parent')) { $old = $eventArgs->getOldValue('_parent'); $new = $eventArgs->getNewValue('_parent'); $updateParents = true; } if ($updateParents) { $em = $event->getApplication()->getEntityManager(); self::setSectionHasChildren($em, $old, $pageCountModifier); self::setSectionHasChildren($em, $new, +1); } } }
/** * Occur on nestednode.page.preupdate events. * * @access public * * @param Event $event */ public static function onPreUpdate(Event $event) { $page = $event->getTarget(); $eventArgs = $event->getEventArgs(); if ($eventArgs instanceof PreUpdateEventArgs) { if ($eventArgs->hasChangedField('_workflow_state')) { $old = $eventArgs->getOldValue('_workflow_state'); $new = $eventArgs->getNewValue('_workflow_state'); if (null !== $new && null !== ($listener = $new->getListenerInstance())) { $listener->switchOnState($event); } if (null !== $old && null !== ($listener = $old->getListenerInstance())) { $listener->switchOffState($event); } } if ($eventArgs->hasChangedField('_state')) { if (!($eventArgs->getOldValue('_state') & Page::STATE_ONLINE) && $eventArgs->getNewValue('_state') & Page::STATE_ONLINE) { $event->getDispatcher()->triggerEvent('putonline', $page); } elseif ($eventArgs->getOldValue('_state') & Page::STATE_ONLINE && !($eventArgs->getNewValue('_state') & Page::STATE_ONLINE)) { $event->getDispatcher()->triggerEvent('putoffline', $page); } } } }
public static function onPrerenderContent(Event $event) { $dispatcher = $event->getDispatcher(); if (null === ($application = $dispatcher->getApplication())) { return; } if (null === ($token = $application->getBBUserToken())) { return; } $renderer = $event->getEventArgs(); if (!is_a($renderer, 'BackBee\\Renderer\\AbstractRenderer')) { return; } $content = $renderer->getObject(); if (!is_a($content, 'BackBee\\ClassContent\\AbstractClassContent')) { return; } $em = $application->getEntityManager(); if (null !== ($revision = $em->getRepository('BackBee\\ClassContent\\Revision')->getDraft($content, $token))) { $content->setDraft($revision); $application->debug(sprintf('Revision found for `%s` content and `%s` user', $content->getUid(), $token->getUsername())); } if (!$content instanceof ContentSet) { foreach ($content->getData() as $key => $subcontent) { if (null === $subcontent) { $contenttype = $content->getAcceptedType($key); if (0 === strpos($contenttype, 'BackBee\\ClassContent\\')) { if (null === $content->getDraft()) { $revision = $em->getRepository('BackBee\\ClassContent\\Revision')->getDraft($content, $token, true); $content->setDraft($revision); } $content->{$key} = new $contenttype(); } } } } }
public static function onRemoveElementFile(Event $event) { $dispatcher = $event->getDispatcher(); $application = $dispatcher->getApplication(); try { $content = $event->getEventArgs()->getEntity(); if (!$content instanceof ElementFile) { return; } $includePath = array($application->getStorageDir(), $application->getMediaDir()); if (null !== $application->getBBUserToken()) { $includePath[] = $application->getTemporaryDir(); } $filename = $content->path; File::resolveFilepath($filename, null, array('include_path' => $includePath)); @unlink($filename); } catch (\Exception $e) { $application->warning('Unable to delete file: ' . $e->getMessage()); } }