src/Controller/BlogController.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Services\CheckwebsitesettingService;
  4. use App\Website\LinkGenerator\NewsLinkGenerator;
  5. use App\Website\Navigation\BreadcrumbHelperService;
  6. use MultilingualBundle\Service\DocumentLookupService;
  7. use Pimcore\Model\DataObject;
  8. use Pimcore\Model\DataObject\News;
  9. use Pimcore\Model\Document;
  10. use Pimcore\Model\Site;
  11. use Pimcore\Translation\Translator;
  12. use Pimcore\Twig\Extension\Templating\HeadTitle;
  13. use Pimcore\Twig\Extension\Templating\Placeholder;
  14. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  15. use Symfony\Component\HttpFoundation\JsonResponse;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\RequestStack;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  20. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  21. use Symfony\Component\Routing\Annotation\Route;
  22. use Knp\Component\Pager\PaginatorInterface;
  23. class BlogController extends BaseController
  24. {
  25.     protected $translator;
  26.     public function __construct(Translator $translator)
  27.     {
  28.         $this->translator $translator;
  29.     }
  30.     /**
  31.      * @param Request $request
  32.      *
  33.      * @return Response
  34.      *
  35.      * @throws \Exception
  36.      */
  37.     public function overviewAction(Request $requestPaginatorInterface $paginator)
  38.     {
  39.         if($this->document->hasChildren()){
  40.             $requestPage 0;
  41.             $requestArticles 12;
  42.             $articles = [];
  43.             $getchildDocs $this->document->getChildren();
  44.             if($getchildDocs){
  45.                 foreach ($getchildDocs as $getchildDoc){
  46.                     if($getchildDoc->getEditable('publicationDate') != ''){
  47.                         $childTimeStamp $getchildDoc->getEditable('publicationDate')->getData()->timestamp;
  48.                     }
  49.                     if($request->get('filter') && $request->get('filter') != 'all'){
  50.                         $filterArr = [];
  51.                         if($getchildDoc->getEditable('blogFilters')){
  52.                             $filters $getchildDoc->getEditable('blogFilters');
  53.                             foreach($filters as $filter){
  54.                                 /** @var \Pimcore\Model\DataObject\FilterBlog $filter */
  55.                                 $filterArr[] = $filter->getId();
  56.                             }
  57.                         }
  58.                         if(in_array($request->get('filter'), $filterArr)){
  59.                             $articles[$childTimeStamp.'-'.$getchildDoc->getId()] = $getchildDoc;
  60.                         }
  61.                     }else{
  62.                         $articles[$childTimeStamp.'-'.$getchildDoc->getId()] = $getchildDoc;
  63.                     }
  64.                 }
  65.             }
  66.             usort($articles, static function ($a$b) {
  67.                 return strtotime($b->getEditable('publicationDate')->getData()) - strtotime($a->getEditable('publicationDate')->getData());
  68.             });
  69.             krsort($articles);
  70.             if($request->isXmlHttpRequest() && $request->get('requestArticles')){
  71.                 $requestPage $request->get('requestArticles') * $requestArticles;
  72.             }
  73.             $articles array_slice($articles$requestPage$requestArticles);
  74.             if($request->isXmlHttpRequest()){
  75.                 $result $this->renderView('includes/blog/article.html.twig',
  76.                     [
  77.                         'language' => $this->language,
  78.                         'articles' => $articles
  79.                     ]
  80.                 );
  81.                 if($articles){
  82.                     $respond['result'] = $result;
  83.                 }else{
  84.                     $respond['result'] = '<div class="col-md-12">'.$this->translator->trans('Geen artikels teruggevonden.').'</div>';
  85.                 }
  86.                 return new JsonResponse($respond);
  87.             }
  88.             // Get filters
  89.             $blogFilters = new DataObject\FilterBlog\Listing();
  90.             $blogFilters->setOrderKey(["orderKey""filterName"]);
  91.             $blogFilters->setOrder("asc");
  92.             return $this->render('blog/overview.html.twig', [
  93.                 'articles' => $articles,
  94.                 'blogfilters' => $blogFilters
  95.             ]);
  96.         }
  97.     }
  98.     public function articleAction(Request $request)
  99.     {
  100.         return $this->render('blog/article.html.twig');
  101.     }
  102. }