/** * 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'; } } } } }