mirror of
https://github.com/netzmacht/contao-leaflet-maps.git
synced 2025-12-02 21:14:15 +01:00
Rework filter handling (Fixes #50).
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
namespace Netzmacht\Contao\Leaflet\Frontend;
|
||||
|
||||
use Netzmacht\Contao\Leaflet\Filter\Filter;
|
||||
use Netzmacht\Contao\Leaflet\Filter\FilterFactory;
|
||||
use Netzmacht\Contao\Leaflet\MapProvider;
|
||||
|
||||
/**
|
||||
@@ -41,13 +42,6 @@ class DataController
|
||||
'filter' => null,
|
||||
'values' => null
|
||||
);
|
||||
|
||||
/**
|
||||
* Filters configuration.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $filters;
|
||||
|
||||
/**
|
||||
* Display errors.
|
||||
@@ -56,18 +50,25 @@ class DataController
|
||||
*/
|
||||
private $displayErrors;
|
||||
|
||||
/**
|
||||
* Filter factory.
|
||||
*
|
||||
* @var FilterFactory
|
||||
*/
|
||||
private $filterFactory;
|
||||
|
||||
/**
|
||||
* Construct.
|
||||
*
|
||||
* @param MapProvider $mapProvider The map provider.
|
||||
* @param array $filters Filters configuration.
|
||||
* @param bool $displayErrors Display errors.
|
||||
* @param MapProvider $mapProvider The map provider.
|
||||
* @param FilterFactory $filterFactory Filter factory.
|
||||
* @param bool $displayErrors Display errors.
|
||||
*/
|
||||
public function __construct(MapProvider $mapProvider, array $filters, $displayErrors)
|
||||
public function __construct(MapProvider $mapProvider, FilterFactory $filterFactory, $displayErrors)
|
||||
{
|
||||
$this->mapProvider = $mapProvider;
|
||||
$this->filters = $filters;
|
||||
$this->displayErrors = $displayErrors;
|
||||
$this->filterFactory = $filterFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -85,7 +86,7 @@ class DataController
|
||||
|
||||
try {
|
||||
if ($input['filter']) {
|
||||
$filter = $this->createFilter($input);
|
||||
$filter = $this->filterFactory->create($input['filter'], $input['values']);
|
||||
} else {
|
||||
$filter = null;
|
||||
}
|
||||
@@ -152,26 +153,4 @@ class DataController
|
||||
|
||||
return array($data, $error);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a filter.
|
||||
*
|
||||
* @param array $input The user input as array.
|
||||
*
|
||||
* @return Filter
|
||||
* @throws \RuntimeException If the filter is not defined.
|
||||
*
|
||||
* @SuppressWarnings(PHPMD.Superglobals)
|
||||
*/
|
||||
private function createFilter($input)
|
||||
{
|
||||
if (!isset($this->filters[$input['filter']])) {
|
||||
throw new \RuntimeException(sprintf('Undefined filter "%s".', $input['filter']));
|
||||
}
|
||||
|
||||
/** @var Filter $filter */
|
||||
$filter = $this->filters[$input['filter']];
|
||||
|
||||
return $filter::fromRequest($input['values']);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user