コード例 #1
0
 /**
  * Render a single message content element.
  *
  * @param RenderMessageContentEvent $event
  *
  * @return string
  */
 public function renderContent(RenderMessageContentEvent $event)
 {
     global $container;
     $content = $event->getMessageContent();
     if ($content->getType() != 'downloads' || $event->getRenderedContent()) {
         return;
     }
     /** @var EntityAccessor $entityAccessor */
     $entityAccessor = $container['doctrine.orm.entityAccessor'];
     $context = $entityAccessor->getProperties($content);
     $context['files'] = array();
     foreach ($context['downloadSources'] as $index => $downloadSource) {
         $context['downloadSources'][$index] = $downloadSource = \Compat::resolveFile($downloadSource);
         $file = new \File($downloadSource, true);
         if (!$file->exists()) {
             unset($context['downloadSources'][$index]);
             continue;
         }
         $context['files'][$index] = array('url' => $downloadSource, 'size' => \System::getReadableSize(filesize(TL_ROOT . DIRECTORY_SEPARATOR . $downloadSource)), 'icon' => 'assets/contao/images/' . $file->icon, 'title' => basename($downloadSource));
     }
     if (empty($context['files'])) {
         return;
     }
     $template = new \TwigTemplate('avisota/message/renderer/default/mce_downloads', 'html');
     $buffer = $template->parse($context);
     $event->setRenderedContent($buffer);
 }
コード例 #2
0
 /**
  * Render a multiple message content element.
  *
  * @param RenderMessageContentEvent $event
  *
  * @return string
  */
 public function renderContent(RenderMessageContentEvent $event)
 {
     global $container;
     $content = $event->getMessageContent();
     if ($content->getType() != 'news' || $event->getRenderedContent()) {
         return;
     }
     /** @var EntityAccessor $entityAccessor */
     $entityAccessor = $container['doctrine.orm.entityAccessor'];
     $contexts = array();
     foreach ($content->getNewsId() as $elementId) {
         $getNewsEvent = new GetNewsEvent($elementId, $content->getNewsTemplate());
         /** @var EventDispatcher $eventDispatcher */
         $eventDispatcher = $container['event-dispatcher'];
         $eventDispatcher->dispatch(ContaoEvents::NEWS_GET_NEWS, $getNewsEvent);
         $context = $entityAccessor->getProperties($content);
         $context['news'] = $getNewsEvent->getNewsHtml();
         array_push($contexts, $context);
     }
     $buffer = '';
     foreach ($contexts as $context) {
         $template = new \TwigTemplate('avisota/message/renderer/default/mce_news', 'html');
         $buffer .= $template->parse($context);
     }
     $event->setRenderedContent($buffer);
 }
コード例 #3
0
 public static function replaceInsertTagsOnlineView(RenderMessageContentEvent $objEvent)
 {
     global $objPage;
     if ($objPage) {
         $strContent = $objEvent->getRenderedContent();
         $strContent = str_replace(array('%7B%7B', '%7D%7D'), array('{{', '}}'), $strContent);
         $objEvent->setRenderedContent(\Controller::replaceInsertTags($strContent));
     }
 }
コード例 #4
0
 /**
  * Render a single message content element.
  *
  * @param RenderMessageContentEvent $event
  *
  * @return string
  * @internal param MessageContent $content
  * @internal param RecipientInterface $recipient
  */
 public function renderContent(RenderMessageContentEvent $event)
 {
     global $container;
     $content = $event->getMessageContent();
     if ($content->getType() != 'salutation' || $event->getRenderedContent()) {
         return;
     }
     /** @var EntityAccessor $entityAccessor */
     $entityAccessor = $container['doctrine.orm.entityAccessor'];
     $context = $entityAccessor->getProperties($content);
     $template = new \TwigTemplate('avisota/message/renderer/default/mce_salutation', 'html');
     $buffer = $template->parse($context);
     $event->setRenderedContent($buffer);
 }
コード例 #5
0
 /**
  * Render a single message content element.
  *
  * @param RenderMessageContentEvent $event
  *
  * @return string
  */
 public function renderContent(RenderMessageContentEvent $event)
 {
     global $container;
     $content = $event->getMessageContent();
     if ($content->getType() != 'article' || $event->getRenderedContent() || !$content->getArticleId()) {
         return;
     }
     /** @var EntityAccessor $entityAccessor */
     $entityAccessor = $container['doctrine.orm.entityAccessor'];
     /** @var EventDispatcher $eventDispatcher */
     $eventDispatcher = $container['event-dispatcher'];
     $articles = array();
     foreach ($content->getArticleId() as $articleId) {
         if (empty($articleId)) {
             continue;
         }
         $getArticleEvent = new GetArticleEvent($articleId, !$content->getArticleFull(), $content->getCell());
         if (!$content->getArticleFull()) {
             $article = ArticleModel::findByPk($articleId);
             $article->showTeaser = 1;
             global $objPage;
             if (!$objPage) {
                 $objPage = $article->getRelated('pid');
                 $objPage->loadDetails();
             }
         }
         $eventDispatcher->dispatch(ContaoEvents::CONTROLLER_GET_ARTICLE, $getArticleEvent);
         $context = $entityAccessor->getProperties($content);
         $context['article'] = $getArticleEvent->getArticle();
         array_push($articles, $context);
     }
     $buffer = '';
     foreach ($articles as $article) {
         $template = new TwigTemplate('avisota/message/renderer/default/mce_article', 'html');
         $buffer .= $template->parse($article);
     }
     $event->setRenderedContent($buffer);
 }
コード例 #6
0
 /**
  * Render a single message content element.
  *
  * @param RenderMessageContentEvent $event
  *
  * @return string
  */
 public function renderContent(RenderMessageContentEvent $event)
 {
     global $container;
     $content = $event->getMessageContent();
     if ($content->getType() != 'download' || $event->getRenderedContent()) {
         return;
     }
     /** @var EntityAccessor $entityAccessor */
     $entityAccessor = $container['doctrine.orm.entityAccessor'];
     $context = $entityAccessor->getProperties($content);
     $context['downloadSource'] = \Compat::resolveFile($context['downloadSource']);
     $file = new \File($context['downloadSource'], true);
     if (!$file->exists()) {
         return;
     }
     $context['downloadSize'] = \System::getReadableSize(filesize(TL_ROOT . DIRECTORY_SEPARATOR . $context['downloadSource']));
     $context['downloadIcon'] = 'assets/contao/images/' . $file->icon;
     if (empty($context['downloadTitle'])) {
         $context['downloadTitle'] = basename($context['downloadSource']);
     }
     $template = new \TwigTemplate('avisota/message/renderer/default/mce_download', 'html');
     $buffer = $template->parse($context);
     $event->setRenderedContent($buffer);
 }
コード例 #7
0
 /**
  * Render a single message content element.
  *
  * @param RenderMessageContentEvent $event
  *
  * @return string
  * @internal param MessageContent $content
  * @internal param RecipientInterface $recipient
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function renderContent(RenderMessageContentEvent $event)
 {
     global $container;
     $content = $event->getMessageContent();
     if ($content->getType() != 'gallery' || $event->getRenderedContent()) {
         return;
     }
     /** @var EventDispatcher $eventDispatcher */
     $eventDispatcher = $container['event-dispatcher'];
     /** @var EntityAccessor $entityAccessor */
     $entityAccessor = $container['doctrine.orm.entityAccessor'];
     $context = $entityAccessor->getProperties($content);
     $size = $content->getImageSize();
     $images = array();
     $sorting = array();
     $imageSources = 'imageSources';
     if ($content->getSortBy() === 'custom') {
         $imageSources = 'orderSRC';
     }
     foreach ($context[$imageSources] as $index => $file) {
         $context[$imageSources][$index] = $file = \Compat::resolveFile($file);
         switch ($content->getSortBy()) {
             case 'name_asc':
             case 'name_desc':
                 $sorting[] = basename($file);
                 break;
             case 'date_asc':
             case 'date_desc':
                 $sorting[] = filemtime(TL_ROOT . DIRECTORY_SEPARATOR . $file);
                 break;
             case 'random':
                 $sorting[] = rand(-PHP_INT_MAX, PHP_INT_MAX);
         }
         $resizeImageEvent = new ResizeImageEvent($file, $size[0], $size[1], $size[2]);
         $eventDispatcher->dispatch(ContaoEvents::IMAGE_RESIZE, $resizeImageEvent);
         $images[] = $resizeImageEvent->getResultImage();
     }
     switch ($content->getSortBy()) {
         case 'name_asc':
             uasort($sorting, 'strnatcasecmp');
             break;
         case 'name_desc':
             uasort($sorting, 'strnatcasecmp');
             $sorting = array_reverse($sorting, true);
             break;
         case 'random':
         case 'date_asc':
             asort($sorting);
             break;
         case 'date_desc':
             arsort($sorting);
             break;
         default:
             $sorting = false;
     }
     if ($sorting) {
         $sorting = array_keys($sorting);
         uksort($images, function ($primary, $secondary) use($sorting) {
             return array_search($primary, $sorting) - array_search($secondary, $sorting);
         });
     }
     $context['rows'] = array();
     while (count($images)) {
         $row = array_slice($images, 0, $content->getPerRow());
         $images = array_slice($images, $content->getPerRow());
         while (count($row) < $content->getPerRow()) {
             $row[] = false;
         }
         $context['rows'][] = $row;
     }
     $styles = array();
     $margins = $content->getImagemargin();
     foreach (array('top', 'right', 'bottom', 'left') as $property) {
         if (!empty($margins[$property])) {
             $styles[] = sprintf('padding-%s:%s%s', $property, $margins[$property], $margins['unit']);
         }
     }
     $context['styles'] = implode(';', $styles);
     $template = new \TwigTemplate('avisota/message/renderer/default/mce_gallery', 'html');
     $buffer = $template->parse($context);
     $event->setRenderedContent($buffer);
 }
コード例 #8
0
 /**
  * Render the text content element.
  *
  * @param RenderMessageContentEvent $event
  *
  * @return string
  * @internal param MessageContent $content
  * @internal param RecipientInterface $recipient
  *
  */
 public function renderText(RenderMessageContentEvent $event)
 {
     global $container;
     $content = $event->getMessageContent();
     if ($content->getType() != 'text' || $event->getRenderedContent()) {
         return;
     }
     $layout = $event->getLayout();
     if ($layout->getType() != 'mailChimp') {
         return;
     }
     /** @var EntityAccessor $entityAccessor */
     $entityAccessor = $container['doctrine.orm.entityAccessor'];
     $context = $entityAccessor->getProperties($content);
     $template = new \TwigTemplate('avisota/message/renderer/mailchimp/mce_text', 'html');
     $buffer = $template->parse($context);
     $event->setRenderedContent($buffer);
 }