<?php
namespace Contao;
use DieSchittigs\IconicWorld\Controller\IconicApiController;
use Symfony\Component\HttpFoundation\Request;
class ContentIconicDirectory extends PrerenderableContentElement
{
protected $strTemplate = 'ce_iconic_directory';
protected $templateMarkerName = 'iconic_directory_';
public function compile()
{
if (TL_MODE == 'BE')
{
$this->strTemplate = 'be_wildcard';
$this->Template = new \BackendTemplate($this->strTemplate);
$this->Template->title = 'Iconic World: Directory';
return;
}
$this->setupTemplate();
// Pre-populate some data
$controller = System::getContainer()->get(IconicApiController::class);
$request = Request::create('/api/directory');
if ($this->isCrawler()) {
$request->request->set('take', PHP_INT_MAX);
}
$locale = $GLOBALS['TL_LANGUAGE'];
$request->request->set('locale', $locale);
$this->Template->categoryToUrl = function ($a) {
$a = strtolower($a);
$a = preg_replace('/ä/', 'ae', $a);
$a = preg_replace('/ö/', 'oe', $a);
$a = preg_replace('/ü/', 'ue', $a);
$a = preg_replace('/ß/', 'ss', $a);
$a = preg_replace('/,/', '', $a);
$a = preg_replace('/ /', '-', $a);
return $a;
};
$request = System::getContainer()->get('request_stack')->getCurrentRequest();
$filters = explode('/', $request->get('filters') ?? '');
$alias = null;
foreach ($filters as $filter) {
$list = explode('-', $filter);
if ($list[0] === 'category') {
$alias = $this->Template->categoryToUrl($list[1]);
break;
}
}
$lang = $GLOBALS['TL_LANGUAGE'];
if ($alias) {
foreach (DirectoryCategoryModel::findAll() as $category) {
if ($this->Template->categoryToUrl($category->$locale) == $alias) {
$this->Template->filteredCategory = $category;
}
}
}
$this->Template->language = $locale;
$this->Template->filters = $controller->filters();
$request->request->set('locale', $lang);
$unpaginatedEntries = $controller->getDirectoryEntries($request);
$this->Template->entries = $controller->paginated($request, $unpaginatedEntries);
}
}