Inheritance: extends FilterSelect
Ejemplo n.º 1
0
 /**
  * Filter by multi select value
  * @param  Filter\FilterMultiSelect $filter
  * @return void
  */
 public function applyFilterMultiSelect(Filter\FilterMultiSelect $filter)
 {
     $condition = $filter->getCondition();
     $values = $condition[$filter->getColumn()];
     $expr = '(';
     foreach ($values as $value) {
         $expr .= "%column = %any OR ";
         $params[] = $filter->getColumn();
         $params[] = "{$value}";
     }
     $expr = preg_replace('/ OR $/', ')', $expr);
     array_unshift($params, $expr);
     call_user_func_array([$this->data_source->getQueryBuilder(), 'andWhere'], $params);
 }
 /**
  * Filter by multi select value
  * @param  Filter\FilterMultiSelect $filter
  * @return void
  */
 public function applyFilterMultiSelect(Filter\FilterMultiSelect $filter)
 {
     $values = $filter->getCondition()[$filter->getColumn()];
     $expr = Criteria::expr()->in($filter->getColumn(), $values);
     $this->criteria->andWhere($expr);
 }
 /**
  * Filter by multi select value
  * @param  Filter\FilterMultiSelect $filter
  * @return void
  */
 public function applyFilterMultiSelect(Filter\FilterMultiSelect $filter)
 {
     $condition = $filter->getCondition();
     $values = $condition[$filter->getColumn()];
     $or = '(';
     if (sizeof($values) > 1) {
         $length = sizeof($values);
         $i = 1;
         foreach ($values as $value) {
             if ($i == $length) {
                 $or .= $filter->getColumn() . ' = ?)';
             } else {
                 $or .= $filter->getColumn() . ' = ? OR ';
             }
             $i++;
         }
         array_unshift($values, $or);
         call_user_func_array([$this->data_source, 'where'], $values);
     } else {
         $this->data_source->where($filter->getColumn() . ' = ?', reset($values));
     }
 }
Ejemplo n.º 4
0
 /**
  * Filter by multi select value
  * @param  mixed  $row
  * @param  FilterMultiSelect $filter
  * @return void
  */
 public function applyFilterMultiSelect($row, FilterMultiSelect $filter)
 {
     $condition = $filter->getCondition();
     $values = $condition[$filter->getColumn()];
     return in_array($row[$filter->getColumn()], $values);
 }
Ejemplo n.º 5
0
 /**
  * Filter by multi select value
  * @param Filter\FilterMultiSelect  $filter
  */
 public function applyFilterMultiSelect(Filter\FilterMultiSelect $filter)
 {
     $c = $this->checkAliases($filter->getColumn());
     $p = $this->getPlaceholder();
     $values = $filter->getCondition()[$filter->getColumn()];
     $expr = $this->data_source->expr()->in($c, '?' . $p);
     $this->data_source->andWhere($expr)->setParameter($p, $values);
 }
Ejemplo n.º 6
0
 /**
  * Filter by multi select value
  *
  * @param  Filter\FilterMultiSelect $filter
  *
  * @return void
  */
 public function applyFilterMultiSelect(Filter\FilterMultiSelect $filter)
 {
     $condition = $filter->getCondition();
     $values = $condition[$filter->getColumn()];
     $or = '(';
     if (sizeof($values) > 1) {
         $length = sizeof($values);
         $i = 1;
         foreach ($values as $value) {
             if ($i == $length) {
                 $or .= $filter->getColumn() . ' = ?)';
             } else {
                 $or .= $filter->getColumn() . ' = ? OR ';
             }
             $i++;
         }
         array_unshift($values, $or);
         $this->filter[] = $values;
     } else {
         $this->filter[$filter->getColumn() . ' = ?'] = reset($values);
     }
 }
 /**
  * Filter by multiselect value
  * @param  Filter\FilterMultiSelect $filter
  * @return void
  */
 public function applyFilterMultiSelect(Filter\FilterMultiSelect $filter)
 {
     $or = [];
     $args = [];
     $big_or = '';
     $big_or_args = [];
     $condition = $filter->getCondition();
     foreach ($condition as $column => $values) {
         $queryPart = '(';
         foreach ($values as $value) {
             $queryPart .= "{$column} = ? OR ";
             $args[] = $value;
         }
         $queryPart = substr($queryPart, 0, strlen($queryPart) - 4) . ')';
         $or[] = $queryPart;
         $big_or .= "{$queryPart} OR ";
         $big_or_args = array_merge($big_or_args, $args);
     }
     if (sizeof($or) > 1) {
         $or = substr($big_or, 0, strlen($big_or) - 4) . ')';
         $args = $big_or_args;
     } else {
         $or = reset($or);
     }
     $this->sql = $this->queryHelper->whereSql($or);
     foreach ($args as $arg) {
         $this->query_parameters[] = $arg;
     }
 }