<?php
namespace App\Controller;
use App\Services\CheckwebsitesettingService;
use App\Website\LinkGenerator\NewsLinkGenerator;
use App\Website\Navigation\BreadcrumbHelperService;
use MultilingualBundle\Service\DocumentLookupService;
use Pimcore\Model\DataObject;
use Pimcore\Model\DataObject\News;
use Pimcore\Model\Document;
use Pimcore\Model\Site;
use Pimcore\Translation\Translator;
use Pimcore\Twig\Extension\Templating\HeadTitle;
use Pimcore\Twig\Extension\Templating\Placeholder;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Knp\Component\Pager\PaginatorInterface;
class BlogController extends BaseController
{
protected $translator;
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
/**
* @param Request $request
*
* @return Response
*
* @throws \Exception
*/
public function overviewAction(Request $request, PaginatorInterface $paginator)
{
if($this->document->hasChildren()){
$requestPage = 0;
$requestArticles = 12;
$articles = [];
$getchildDocs = $this->document->getChildren();
if($getchildDocs){
foreach ($getchildDocs as $getchildDoc){
if($getchildDoc->getEditable('publicationDate') != ''){
$childTimeStamp = $getchildDoc->getEditable('publicationDate')->getData()->timestamp;
}
if($request->get('filter') && $request->get('filter') != 'all'){
$filterArr = [];
if($getchildDoc->getEditable('blogFilters')){
$filters = $getchildDoc->getEditable('blogFilters');
foreach($filters as $filter){
/** @var \Pimcore\Model\DataObject\FilterBlog $filter */
$filterArr[] = $filter->getId();
}
}
if(in_array($request->get('filter'), $filterArr)){
$articles[$childTimeStamp.'-'.$getchildDoc->getId()] = $getchildDoc;
}
}else{
$articles[$childTimeStamp.'-'.$getchildDoc->getId()] = $getchildDoc;
}
}
}
usort($articles, static function ($a, $b) {
return strtotime($b->getEditable('publicationDate')->getData()) - strtotime($a->getEditable('publicationDate')->getData());
});
krsort($articles);
if($request->isXmlHttpRequest() && $request->get('requestArticles')){
$requestPage = $request->get('requestArticles') * $requestArticles;
}
$articles = array_slice($articles, $requestPage, $requestArticles);
if($request->isXmlHttpRequest()){
$result = $this->renderView('includes/blog/article.html.twig',
[
'language' => $this->language,
'articles' => $articles
]
);
if($articles){
$respond['result'] = $result;
}else{
$respond['result'] = '<div class="col-md-12">'.$this->translator->trans('Geen artikels teruggevonden.').'</div>';
}
return new JsonResponse($respond);
}
// Get filters
$blogFilters = new DataObject\FilterBlog\Listing();
$blogFilters->setOrderKey(["orderKey", "filterName"]);
$blogFilters->setOrder("asc");
return $this->render('blog/overview.html.twig', [
'articles' => $articles,
'blogfilters' => $blogFilters
]);
}
}
public function articleAction(Request $request)
{
return $this->render('blog/article.html.twig');
}
}