/** * Applies a constraint to the query * * @param Sonata\DoctrinePHPCRAdminBundle\Datagrid\ProxyQuery $queryBuilder * @param string $alias has no effect * @param string $field field uhere to apply the constraint * @param array $data determines the constraint * @return */ public function filter($queryBuilder, $alias = null, $field, $data) { if (!$data || !is_array($data) || !array_key_exists('value', $data)) { return; } $data['value'] = trim($data['value']); $data['type'] = !isset($data['type']) ? ChoiceType::TYPE_CONTAINS : $data['type']; if (strlen($data['value']) == 0) { return; } $qf = $queryBuilder->getQueryObjectModelFactory(); switch ($data['type']) { case ChoiceType::TYPE_EQUAL: $constraint = $qf->comparison($qf->propertyValue($field), Constants::JCR_OPERATOR_EQUAL_TO, $qf->literal($data['value'])); break; case ChoiceType::TYPE_NOT_CONTAINS: $constraint = $qf->fulltextSearch($field, "* -" . $data['value'], '[' . $queryBuilder->getNodeType() . ']'); break; case ChoiceType::TYPE_CONTAINS: $constraint = $qf->comparison($qf->propertyValue($field), Constants::JCR_OPERATOR_LIKE, $qf->literal('%' . $data['value'] . '%')); break; case ChoiceType::TYPE_CONTAINS_WORDS: default: $constraint = $qf->fulltextSearch($field, $data['value'], '[' . $queryBuilder->getNodeType() . ']'); } $queryBuilder->andWhere($constraint); }
/** * Applies a constraint to the query * * @param Sonata\DoctrinePHPCRAdminBundle\Datagrid\ProxyQuery $queryBuilder * @param string $alias has no effect * @param string $field field where to apply the constraint * @param array $data determines the date constraint [value => [year => Y, month => m, day => d], type => DateType::TYPE_GREATER_EQUAL|DateType::TYPE_GREATER_THAN|DateType::TYPE_LESS_EQUAL|DateType::TYPE_LESS_THAN|DateType::TYPE_NULL|DateType::TYPE_NOT_NULL|DateType::TYPE_EQUAL] * @return */ public function filter($queryBuilder, $alias = null, $field, $data) { if (!$data || !is_array($data) || !isset($data['value'])) { return; } if (isset($data['value']['year']) && $data['value']['year'] && isset($data['value']['month']) && $data['value']['month'] && isset($data['value']['day']) && $data['value']['day']) { $data['type'] = isset($data['type']) ? $data['type'] : DateType::TYPE_EQUAL; $qf = $queryBuilder->getQueryObjectModelFactory(); $date = '' . $data['value']['year'] . '-' . $data['value']['month'] . '-' . $data['value']['day']; $from = new \DateTime($date); $to = new \DateTime($date . ' +86399 seconds'); // 23 hours 59 minutes 59 seconds switch ($data['type']) { case DateType::TYPE_GREATER_EQUAL: $constraint = $qf->comparison($qf->propertyValue($field), Constants::JCR_OPERATOR_GREATER_THAN_OR_EQUAL_TO, $qf->literal($from)); break; case DateType::TYPE_GREATER_THAN: $constraint = $qf->comparison($qf->propertyValue($field), Constants::JCR_OPERATOR_GREATER_THAN, $qf->literal($to)); break; case DateType::TYPE_LESS_EQUAL: $constraint = $qf->comparison($qf->propertyValue($field), Constants::JCR_OPERATOR_LESS_THAN_OR_EQUAL_TO, $qf->literal($to)); break; case DateType::TYPE_LESS_THAN: $constraint = $qf->comparison($qf->propertyValue($field), Constants::JCR_OPERATOR_LESS_THAN, $qf->literal($from)); break; case DateType::TYPE_NULL: $constraint = $qf->comparison($qf->propertyValue($field), Constants::JCR_OPERATOR_EQUAL_TO, $qf->literal(null)); break; case DateType::TYPE_NOT_NULL: $constraint = $qf->comparison($qf->propertyValue($field), Constants::JCR_OPERATOR_NOT_EQUAL_TO, $qf->literal(null)); break; case DateType::TYPE_EQUAL: default: $constraint = $qf->comparison($qf->propertyValue($field), Constants::JCR_OPERATOR_LESS_THAN_OR_EQUAL_TO, $qf->literal($to)); $queryBuilder->andWhere($constraint); $constraint = $qf->comparison($qf->propertyValue($field), Constants::JCR_OPERATOR_GREATER_THAN_OR_EQUAL_TO, $qf->literal($from)); } $queryBuilder->andWhere($constraint); } }
public function testConstructor() { $pq = new ProxyQuery($this->qf, $this->qb); $this->assertInstanceOf('PHPCR\\Util\\QOM\\QueryBuilder', $pq->getQueryBuilder()); $this->assertInstanceOf('PHPCR\\Query\\QOM\\QueryObjectModelFactoryInterface', $pq->getQueryObjectModelFactory()); }