/** * Generate query expression for a Criterion this handler accepts * * accept() must be called before calling this method. * * @param \eZ\Publish\Core\Persistence\Legacy\Content\Search\Gateway\CriteriaConverter$converter * @param \ezcQuerySelect $query * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion$criterion * * @return \ezcQueryExpression */ public function handle(CriteriaConverter $converter, ezcQuerySelect $query, Criterion $criterion) { $subexpressions = array(); foreach ($criterion->criteria as $subCriterion) { $subexpressions[] = $converter->convertCriteria($query, $subCriterion); } return $query->expr->lOr($subexpressions); }
/** * Get query condition * * @param Criterion $criterion * @param \ezcQuerySelect $query * @param mixed $translations * * @return string */ protected function getQueryCondition(Criterion $criterion, ezcQuerySelect $query, $translations) { $condition = $query->expr->lAnd($this->criteriaConverter->convertCriteria($query, $criterion), $query->expr->eq('ezcontentobject_version.status', VersionInfo::STATUS_PUBLISHED)); if ($translations === null) { return $condition; } $translationQuery = $query->subSelect(); $translationQuery->select($this->handler->quoteColumn('contentobject_id'))->from($this->handler->quoteTable('ezcontentobject_attribute'))->where($translationQuery->expr->in($this->handler->quoteColumn('language_code'), $translations)); return $query->expr->lAnd($condition, $query->expr->in($this->handler->quoteColumn('id'), $translationQuery)); }
/** * Generate query expression for a Criterion this handler accepts * * accept() must be called before calling this method. * * @param \eZ\Publish\Core\Persistence\Legacy\Content\Search\Gateway\CriteriaConverter$converter * @param \ezcQuerySelect $query * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion$criterion * * @return \ezcQueryExpression */ public function handle(CriteriaConverter $converter, ezcQuerySelect $query, Criterion $criterion) { return $query->expr->not($converter->convertCriteria($query, $criterion->criteria[0])); }