src/AppBundle/Controller/NewsController.php line 28

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Enterprise License (PEL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  *  @license    http://www.pimcore.org/license     GPLv3 and PEL
  13.  */
  14. namespace AppBundle\Controller;
  15. use AppBundle\Website\LinkGenerator\NewsLinkGenerator;
  16. use AppBundle\Website\Navigation\BreadcrumbHelperService;
  17. use Pimcore\Model\DataObject\News;
  18. use Pimcore\Templating\Helper\HeadTitle;
  19. use Pimcore\Templating\Helper\Placeholder;
  20. use Symfony\Component\HttpFoundation\Request;
  21. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  22. use Symfony\Component\Routing\Annotation\Route;
  23. use Zend\Paginator\Paginator;
  24. class NewsController extends BaseController
  25. {
  26.     const NEWS_DEFAULT_DOCUMENT_PROPERTY_NAME 'news_default_document';
  27.     /**
  28.      * @param Request $request
  29.      *
  30.      * @return array
  31.      *
  32.      * @throws \Exception
  33.      */
  34.     public function listingAction(Request $request)
  35.     {
  36.         // get a list of news objects and order them by date
  37.         $newsList = new News\Listing();
  38.         $newsList->setOrderKey('date');
  39.         $newsList->setOrder('DESC');
  40.         $paginator = new Paginator($newsList);
  41.         $paginator->setCurrentPageNumber($request->get('page'));
  42.         $paginator->setItemCountPerPage(6);
  43.         return [
  44.             'news' => $paginator,
  45.             'paginationVariables' => $paginator->getPages('Sliding')
  46.         ];
  47.     }
  48.     /**
  49.      * @Route("{path}/{newstitle}~n{news}", name="news-detail", defaults={"path"=""}, requirements={"path"=".*?", "newstitle"="[\w-]+", "news"="\d+"})
  50.      *
  51.      * @param Request $request
  52.      * @param HeadTitle $headTitleHelper
  53.      * @param Placeholder $placeholderHelper
  54.      * @param NewsLinkGenerator $newsLinkGenerator
  55.      * @param BreadcrumbHelperService $breadcrumbHelperService
  56.      *
  57.      * @return array
  58.      */
  59.     public function detailAction(Request $requestHeadTitle $headTitleHelperPlaceholder $placeholderHelperNewsLinkGenerator $newsLinkGeneratorBreadcrumbHelperService $breadcrumbHelperService)
  60.     {
  61.         $news News::getById($request->get('news'));
  62.         if (!($news instanceof News && ($news->isPublished() || $this->verifyPreviewRequest($request$news)))) {
  63.             throw new NotFoundHttpException('News not found.');
  64.         }
  65.         $headTitleHelper($news->getTitle());
  66.         $breadcrumbHelperService->enrichNewsPage($news);
  67.         $placeholderHelper('canonical')->set($newsLinkGenerator->generate($news, ['document' => $this->document->getProperty(self::NEWS_DEFAULT_DOCUMENT_PROPERTY_NAME)]));
  68.         return [
  69.             'news' => $news
  70.         ];
  71.     }
  72.     /**
  73.      * @param Request $request
  74.      *
  75.      * @return \Symfony\Component\HttpFoundation\Response
  76.      */
  77.     public function newsTeaserAction(Request $request)
  78.     {
  79.         $paramsBag = [];
  80.         if ($request->get('type') == 'object') {
  81.             $news News::getById($request->get('id'));
  82.             $paramsBag['news'] = $news;
  83.             return $this->render('news/news_teaser.html.twig'$paramsBag);
  84.         }
  85.         throw new NotFoundHttpException('News not found.');
  86.     }
  87.     /**
  88.      * @param Request $request
  89.      *
  90.      * @return \Symfony\Component\HttpFoundation\Response
  91.      */
  92.     public function emailNewsTeaserAction(Request $requestNewsLinkGenerator $newsLinkGenerator)
  93.     {
  94.         $paramsBag = [];
  95.         if ($request->get('type') == 'object') {
  96.             $news News::getById($request->get('id'));
  97.             $paramsBag['news'] = $news;
  98.             $paramsBag['detailLink'] = $newsLinkGenerator->generate($news, ['document' => $this->document->getProperty('news_default_document')]);
  99.             return $this->render('news/email_news_teaser.html.twig'$paramsBag);
  100.         }
  101.         throw new NotFoundHttpException('News not found.');
  102.     }
  103. }