Esempio n. 1
0
 /**
  * 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';
                 }
             }
         }
     }
 }