Ejemplo n.º 1
0
 public function modifySelect(Fields $fields, Select $select)
 {
     $conditionSetName = $this->prefix . 'filters';
     $filteredInQueryString = [];
     $select->registerConditionSet($conditionSetName, $this->getConditionSetConjunction());
     foreach ($this->getFilteredFieldIds() as $index => $id) {
         $urlId = urlencode($id);
         foreach ($fields as $field) {
             if ($urlId === $field->getQueryStringId()) {
                 $callback = $this->getFieldAssignment($field);
                 $defaults = $this->defaultVars->getDefaultVars($field);
                 $select = call_user_func($callback, $select, $conditionSetName, array_merge($defaults, $this->getFilterVars($index)));
                 $filteredInQueryString[] = $field->getQueryStringId();
             }
         }
     }
     /* @var $field FieldInterface */
     foreach ($fields as $field) {
         if (in_array($field->getQueryStringId(), $filteredInQueryString)) {
             continue;
         }
         $defaults = $this->defaultVars->getDefaultVars($field);
         if (count($defaults)) {
             $select = call_user_func($this->getFieldAssignment($field), $select, $conditionSetName, $defaults);
         }
     }
     foreach ($this->customFilters as $filter) {
         $select = $filter['filter']->apply($select, $conditionSetName, $filter['vars']);
     }
     return $select;
 }
Ejemplo n.º 2
0
 public function modifySelect(Fields $fields, Select $select)
 {
     $conditionSetName = $this->prefix . 'filters';
     $select->registerConditionSet($conditionSetName, $this->getConditionSetConjunction());
     foreach ($this->getFilteredFieldIds() as $index => $id) {
         $urlId = urlencode($id);
         foreach ($fields as $field) {
             if ($urlId === $field->getQueryStringId()) {
                 $callback = $this->getFieldAssignment($field);
                 $select = call_user_func($callback, $select, $conditionSetName, $this->getFilterVars($index));
             }
         }
     }
     foreach ($this->customFilters as $filter) {
         $select = $filter['filter']->apply($select, $conditionSetName, $filter['vars']);
     }
     return $select;
 }