Beispiel #1
0
 public function execute($key, $value, QueryFilter $queryFilter)
 {
     if (!preg_match(static::$commandRegex, $value, $matches)) {
         return false;
     }
     $data = trim($matches[1]);
     $queryFilter->addCriteria(new Criteria(Criteria::TYPE_CONDITION_EQUAL, $key, $data));
     return true;
 }
Beispiel #2
0
 public function execute(array $query, QueryFilter $queryFilter)
 {
     if (!isset($query[$this->commandName])) {
         return false;
     }
     $value = $query[$this->commandName];
     $queryFilter->addCriteria(new Criteria(Criteria::TYPE_SPECIAL_LIMIT, null, (int) $value));
     return true;
 }
Beispiel #3
0
 public function execute($key, $value, QueryFilter $queryFilter)
 {
     $value = explode(',', $value);
     $value = array_map('trim', $value);
     $value = array_filter($value, function ($el) {
         return $el !== '';
     });
     $queryFilter->addCriteria(new Criteria(Criteria::TYPE_CONDITION_IN_ARRAY, $key, $value));
     return true;
 }
Beispiel #4
0
 public function execute(array $query, QueryFilter $queryFilter)
 {
     if (!isset($query[$this->commandName])) {
         return false;
     }
     $value = $query[$this->commandName];
     $value = explode(',', $value);
     $value = array_map('trim', $value);
     $queryFilter->addCriteria(new Criteria(Criteria::TYPE_SPECIAL_FIELDS, $value, null));
     return true;
 }
Beispiel #5
0
 public function execute(array $query, QueryFilter $queryFilter)
 {
     if (!isset($query[$this->commandName])) {
         return false;
     }
     $value = $query[$this->commandName];
     /** @var Criteria $limitCriteria */
     if ($limitCriteria = $queryFilter->getCriteria(Criteria::TYPE_SPECIAL_LIMIT)) {
         $limitValue = $limitCriteria->getValue();
         $offsetValue = $limitValue * ((int) $value - 1);
         $queryFilter->addCriteria(new Criteria(Criteria::TYPE_SPECIAL_OFFSET, null, $offsetValue));
     }
     return true;
 }
Beispiel #6
0
 public function execute($key, $value, QueryFilter $queryFilter)
 {
     if (!preg_match(static::$commandRegex, $value, $matches)) {
         return false;
     }
     $command = trim($matches[1]);
     $start = trim($matches[2]);
     $end = trim($matches[3]);
     if ($start > $end) {
         list($start, $end) = [$end, $start];
     }
     $queryFilter->addCriteria(new Criteria($command, $key, [$start, $end]));
     return true;
 }
Beispiel #7
0
 private function setOrderBy(QueryFilter $queryFilter, $value)
 {
     $value = explode(',', $value);
     $value = array_map('trim', $value);
     $value = array_filter($value, function ($el) {
         return $el !== '';
     });
     foreach ($value as $sortColumn) {
         $order = 'asc';
         if ($sortColumn[0] === '-') {
             $sortColumn = substr($sortColumn, 1);
             $order = 'desc';
         }
         $queryFilter->addCriteria(new Criteria(Criteria::TYPE_SPECIAL_SORT, $sortColumn, $order));
     }
 }