/**
* Builds up the parameters of the list page filters.
*
* @param Request $request
* the current application
* @param EntityDefinition $definition
* the current entity definition
* @param array &$filter
* will hold a map of fields to request parameters for the filters
* @param boolean $filterActive
* reference, will be true if at least one filter is active
* @param array $filterToUse
* reference, will hold a map of fields to integers (0 or 1) which boolean filters are active
* @param array $filterOperators
* reference, will hold a map of fields to operators for AbstractData::listEntries()
*/
protected function buildUpListFilter(Request $request, EntityDefinition $definition, &$filter, &$filterActive, &$filterToUse, &$filterOperators)
{
foreach ($definition->getFilter() as $filterField) {
$type = $definition->getType($filterField);
$filter[$filterField] = $request->get('crudFilter' . $filterField);
if ($filter[$filterField]) {
$filterActive = true;
if ($type === 'boolean') {
$filterToUse[$filterField] = $filter[$filterField] == 'true' ? 1 : 0;
$filterOperators[$filterField] = '=';
} else {
if ($type === 'many') {
$filter[$filterField] = array_map(function ($value) {
return ['id' => $value];
}, $filter[$filterField]);
$filterToUse[$filterField] = $filter[$filterField];
} else {
$filterToUse[$filterField] = '%' . $filter[$filterField] . '%';
$filterOperators[$filterField] = 'LIKE';
}
}
}
}
}