Inheritance: extends Filter
Ejemplo n.º 1
0
 /**
  * Filter by keyword
  * @param  Filter\FilterText $filter
  * @return void
  */
 public function applyFilterText(Filter\FilterText $filter)
 {
     $condition = $filter->getCondition();
     $or = [];
     foreach ($condition as $column => $value) {
         $words = explode(' ', $value);
         foreach ($words as $word) {
             $escaped = $this->data_source->getConnection()->getDriver()->escapeLike($word, 0);
             if (preg_match("/[€-ÿ]/", $escaped)) {
                 $or[] = "{$column} LIKE {$escaped} COLLATE utf8_bin";
             } else {
                 $escaped = Strings::toAscii($escaped);
                 $or[] = "{$column} LIKE {$escaped} COLLATE utf8_general_ci";
             }
         }
     }
     if (sizeof($or) > 1) {
         $this->data_source->where('(%or)', $or);
     } else {
         $this->data_source->where($or);
     }
 }
 /**
  * Filter by keyword
  * @param  Filter\FilterText $filter
  * @return void
  */
 public function applyFilterText(Filter\FilterText $filter)
 {
     $exprs = [];
     foreach ($filter->getCondition() as $column => $value) {
         if ($filter->isExactSearch()) {
             $exprs[] = Criteria::expr()->eq($column, $value);
             continue;
         }
         if ($filter->hasSplitWordsSearch() === FALSE) {
             $words = [$value];
         } else {
             $words = explode(' ', $value);
         }
         foreach ($words as $word) {
             $exprs[] = Criteria::expr()->contains($column, $word);
         }
     }
     $expr = call_user_func_array([Criteria::expr(), 'orX'], $exprs);
     $this->criteria->andWhere($expr);
 }
Ejemplo n.º 3
0
 /**
  * Filter by keyword
  * @param  Filter\FilterText $filter
  * @return void
  */
 public function applyFilterText(Filter\FilterText $filter)
 {
     $condition = $filter->getCondition();
     $expr = '(';
     $params = [];
     foreach ($condition as $column => $value) {
         if ($filter->isExactSearch()) {
             $expr .= "%column = %s OR ";
             $params[] = $column;
             $params[] = "{$value}";
             continue;
         }
         if ($filter->hasSplitWordsSearch() === FALSE) {
             $words = [$value];
         } else {
             $words = explode(' ', $value);
         }
         foreach ($words as $word) {
             $expr .= "%column LIKE %s OR ";
             $params[] = $column;
             $params[] = "%{$word}%";
         }
     }
     $expr = preg_replace('/ OR $/', ')', $expr);
     array_unshift($params, $expr);
     call_user_func_array([$this->data_source->getQueryBuilder(), 'andWhere'], $params);
 }
Ejemplo n.º 4
0
 /**
  * Filter by date
  * @param  Filter\FilterText $filter
  * @return void
  */
 public function applyFilterText(Filter\FilterText $filter)
 {
     $condition = $filter->getCondition();
     $or = [];
     foreach ($condition as $column => $value) {
         $column = Dibi\Helpers::escape($this->data_source->getConnection()->getDriver(), $column, \dibi::IDENTIFIER);
         if ($filter->isExactSearch()) {
             $this->data_source->where("{$column} = %s", $value);
             continue;
         }
         $or[] = "{$column} LIKE \"%{$value}%\"";
     }
     if (sizeof($or) > 1) {
         $this->data_source->where('(%or)', $or);
     } else {
         $this->data_source->where($or);
     }
 }
 /**
  * Filter by keyword
  * @param  Filter\FilterText $filter
  * @return void
  */
 public function applyFilterText(Filter\FilterText $filter)
 {
     $or = [];
     $args = [];
     $big_or = '(';
     $big_or_args = [];
     $condition = $filter->getCondition();
     foreach ($condition as $column => $value) {
         $like = '(';
         $args = [];
         if ($filter->isExactSearch()) {
             $like .= "{$column} = ? OR ";
             $args[] = "{$value}";
         } else {
             if ($filter->hasSplitWordsSearch() === FALSE) {
                 $words = [$value];
             } else {
                 $words = explode(' ', $value);
             }
             foreach ($words as $word) {
                 $like .= "{$column} LIKE ? OR ";
                 $args[] = "%{$word}%";
             }
         }
         $like = substr($like, 0, strlen($like) - 4) . ')';
         $or[] = $like;
         $big_or .= "{$like} OR ";
         $big_or_args = array_merge($big_or_args, $args);
     }
     if (sizeof($or) > 1) {
         $big_or = substr($big_or, 0, strlen($big_or) - 4) . ')';
         $query = array_merge([$big_or], $big_or_args);
         call_user_func_array([$this->data_source, 'where'], $query);
     } else {
         $query = array_merge($or, $args);
         call_user_func_array([$this->data_source, 'where'], $query);
     }
 }
 /**
  * Filter by date
  * @param  Filter\FilterText $filter
  * @return void
  */
 public function applyFilterText(Filter\FilterText $filter)
 {
     $condition = $filter->getCondition();
     $or = [];
     foreach ($condition as $column => $value) {
         $or[] = "{$column} LIKE \"%{$value}%\"";
     }
     if (sizeof($or) > 1) {
         $this->data_source->where('(%or)', $or);
     } else {
         $this->data_source->where($or);
     }
 }
Ejemplo n.º 7
0
 /**
  * Filter by keyword
  * @param Filter\FilterText  $filter
  */
 public function applyFilterText(Filter\FilterText $filter)
 {
     $condition = $filter->getCondition();
     $exprs = [];
     foreach ($condition as $column => $value) {
         if ($filter->hasSplitWordsSearch() === FALSE) {
             $words = [$value];
         } else {
             $words = explode(' ', $value);
         }
         $c = $this->checkAliases($column);
         foreach ($words as $word) {
             $exprs[] = $this->data_source->expr()->like($c, $this->data_source->expr()->literal("%{$word}%"));
         }
     }
     $or = call_user_func_array([$this->data_source->expr(), 'orX'], $exprs);
     $this->data_source->andWhere($or);
 }
Ejemplo n.º 8
0
 /**
  * Filter by keyword
  * @param  Filter\FilterText $filter
  * @return void
  */
 public function applyFilterText(Filter\FilterText $filter)
 {
     $condition = $filter->getCondition();
     foreach ($condition as $column => $value) {
         $words = explode(' ', $value);
         foreach ($words as $word) {
             $exprs[] = $this->data_source->expr()->like($column, $this->data_source->expr()->literal("%{$word}%"));
             /**
              * @todo Manage somehow COLLATE statement in DQL
              */
             /*if (preg_match("/[\x80-\xFF]/", $word)) {
             			$or[] = "$column LIKE $escaped COLLATE utf8_bin";
             		} else {
             			$escaped = Strings::toAscii($escaped);
             			$or[] = "$column LIKE $escaped COLLATE utf8_general_ci";
             		}*/
         }
     }
     $or = call_user_func_array([$this->data_source->expr(), 'orX'], $exprs);
     $this->data_source->andWhere($or);
 }
 /**
  * Filter by keyword
  * @param  Filter\FilterText $filter
  * @return void
  */
 public function applyFilterText(Filter\FilterText $filter)
 {
     $or = [];
     $big_or = '(';
     $big_or_args = [];
     $condition = $filter->getCondition();
     foreach ($condition as $column => $value) {
         $words = explode(' ', $value);
         $reflection = new \ReflectionClass(get_class($this->data_source));
         $property_reflection = $reflection->getProperty('context');
         $property_reflection->setAccessible(TRUE);
         $like = '(';
         $args = [];
         foreach ($words as $word) {
             $like .= "{$column} LIKE ? OR ";
             $args[] = "%{$word}%";
         }
         $like = substr($like, 0, strlen($like) - 4) . ')';
         $or[] = $like;
         $big_or .= "{$like} OR ";
         $big_or_args = array_merge($big_or_args, $args);
     }
     $query = array_merge($or, $args);
     if (sizeof($or) > 1) {
         $big_or = substr($big_or, 0, strlen($big_or) - 4) . ')';
         $query = array_merge([$big_or], $big_or_args);
         call_user_func_array([$this->data_source, 'where'], $query);
     } else {
         call_user_func_array([$this->data_source, 'where'], $query);
     }
 }
Ejemplo n.º 10
0
 /**
  * Filter by keyword
  *
  * @param  Filter\FilterText $filter
  *
  * @return void
  */
 public function applyFilterText(Filter\FilterText $filter)
 {
     $or = [];
     $args = [];
     $big_or = '(';
     $big_or_args = [];
     $condition = $filter->getCondition();
     foreach ($condition as $column => $value) {
         $words = explode(' ', $value);
         $like = '(';
         $args = [];
         foreach ($words as $word) {
             $like .= "{$column} LIKE ? OR ";
             $args[] = "%{$word}%";
         }
         $like = substr($like, 0, strlen($like) - 4) . ')';
         $or[] = $like;
         $big_or .= "{$like} OR ";
         $big_or_args = array_merge($big_or_args, $args);
     }
     if (sizeof($or) > 1) {
         $big_or = substr($big_or, 0, strlen($big_or) - 4) . ')';
         $query = array_merge([$big_or], $big_or_args);
         $this->filter[] = $query;
     } else {
         $query = array_merge($or, $args);
         $this->filter[] = $query;
     }
 }
 /**
  * Filter by keyword
  * @param  Filter\FilterText $filter
  * @return void
  */
 public function applyFilterText(Filter\FilterText $filter)
 {
     $or = [];
     $args = [];
     $big_or = '(';
     $big_or_args = [];
     $condition = $filter->getCondition();
     foreach ($condition as $column => $value) {
         $words = explode(' ', $value);
         $like = '(';
         $args = [];
         foreach ($words as $word) {
             $like .= "{$column} LIKE ? OR ";
             $args[] = "%{$word}%";
         }
         $like = substr($like, 0, strlen($like) - 4) . ')';
         $or[] = $like;
         $big_or .= "{$like} 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;
     }
 }