Example #1
0
 /**
  * Converts the criteria into query fragments
  *
  * @throws \RuntimeException if Criterion is not applicable to its target
  *
  * @param string $fieldTypeIdentifier
  * @param \eZ\Publish\Core\Persistence\Database\SelectQuery $query
  * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $criterion
  * @param string $column
  *
  * @return \eZ\Publish\Core\Persistence\Database\Expression
  */
 public function convertCriteria($fieldTypeIdentifier, SelectQuery $query, Criterion $criterion, $column)
 {
     if ($this->registry->has($fieldTypeIdentifier)) {
         return $this->registry->get($fieldTypeIdentifier)->handle($query, $criterion, $column);
     }
     if ($this->defaultHandler === null) {
         throw new RuntimeException("No conversion for a field type '{$fieldTypeIdentifier}' found.");
     }
     return $this->defaultHandler->handle($query, $criterion, $column);
 }
 /**
  * Generates query expression for operator and value of a Field Criterion.
  *
  * @param \eZ\Publish\Core\Persistence\Database\SelectQuery $query
  * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $criterion
  * @param string $column
  *
  * @return \eZ\Publish\Core\Persistence\Database\Expression
  */
 public function handle(SelectQuery $query, Criterion $criterion, $column)
 {
     switch ($criterion->operator) {
         case Criterion\Operator::CONTAINS:
             $filter = $query->expr->eq($this->dbHandler->quoteColumn($column), $query->bindValue($this->lowerCase($criterion->value)));
             break;
         default:
             $filter = parent::handle($query, $criterion, $column);
     }
     return $filter;
 }
 /**
  * Generates query expression for operator and value of a Field Criterion.
  *
  * @param \eZ\Publish\Core\Persistence\Database\SelectQuery $query
  * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $criterion
  * @param string $column
  *
  * @return \eZ\Publish\Core\Persistence\Database\Expression
  */
 public function handle(SelectQuery $query, Criterion $criterion, $column)
 {
     switch ($criterion->operator) {
         case Criterion\Operator::CONTAINS:
             $quotedColumn = $this->dbHandler->quoteColumn($column);
             $value = $this->lowerCase($criterion->value);
             $filter = $query->expr->lOr(array($query->expr->eq($quotedColumn, $query->bindValue($value, null, \PDO::PARAM_STR)), $query->expr->like($quotedColumn, $query->bindValue("%" . $this->separator . $value, null, \PDO::PARAM_STR)), $query->expr->like($quotedColumn, $query->bindValue($value . $this->separator . "%", null, \PDO::PARAM_STR)), $query->expr->like($quotedColumn, $query->bindValue("%" . $this->separator . $value . $this->separator . "%", null, \PDO::PARAM_STR))));
             break;
         default:
             $filter = parent::handle($query, $criterion, $column);
     }
     return $filter;
 }