<?php
namespace App\Controller;
use App\Entity\ClubsCategory;
use Gedmo\Tree\RepositoryInterface;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Pagerfanta\Adapter\ArrayAdapter;
use Pagerfanta\Exception\OutOfRangeCurrentPageException;
use Pagerfanta\Pagerfanta;
class ClubsArticleController extends Controller
{
public function serviceAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$searchCategory = $request->get('category') ? explode(',', $request->get('category')) : null;
$searchTag = $request->get('tag') ? explode(',', $request->get('tag')) : null;
$pageRepository = $em->getRepository('App:Pages\ClubsPage');
$result = $pageRepository->getArticles($request->getLocale(), null, null, $searchCategory, $searchTag);
// Filter the results for this page
$adapter = new ArrayAdapter($result);
$pagerfanta = new Pagerfanta($adapter);
$pagerfanta->setMaxPerPage(10);
$pagenumber = (int)$request->get('page');
if (!$pagenumber || $pagenumber < 1) {
$pagenumber = 1;
}
try {
$pagerfanta->setCurrentPage($pagenumber);
} catch (OutOfRangeCurrentPageException $oore) {
$repo = $em->getRepository('KunstmaanNodeBundle:NodeTranslation');
$nt = $repo->getNodeTranslationByLanguageAndInternalName($request->getLocale(), 'clubs');
$url = $nt ? $nt->getUrl() : '';
$url = $this->get('router')->generate('_slug', array('url' => $url, '_locale' => $request->getLocale()));
return new RedirectResponse($url);
}
// Add clubs post url's
$results = $pagerfanta->getCurrentPageResults();
$context['results'] = $results;
$context['pagerfanta'] = $pagerfanta;
$context['nodeTranslation'] = $request->attributes->get('_nodeTranslation');
$request->attributes->set('_renderContext', $context);
}
public function categories(Request $request, $limit = null, $node = null)
{
$em = $this->getDoctrine()->getManager();
$pageRepository = $em->getRepository(ClubsCategory::class);
$result = $pageRepository->findAll();
return $this->render(
'Clubs/Category/view.html.twig',
array(
'categories' => $result,
'node' => $node,
)
);
}
public function categoriesFilter(Request $request)
{
$em = $this->getDoctrine()->getManager();
$pageRepository = $em->getRepository(ClubsCategory::class);
$result = $pageRepository->findAll();
return $this->render(
'Clubs/Category/filterView.html.twig',
array(
'categories' => $result,
)
);
}
}