Beispiel #1
0
 /**
  * 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);
 }
Beispiel #7
0
 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);
         }
     }
 }
Beispiel #8
0
 /**
  * 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);
         }
     }
 }
Beispiel #9
0
 /**
  * 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());
     }
 }