/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var Context $context */ if ($context->hasQuery()) { // a query is already built return; } $this->aclHelper->applyAclToCriteria($context->getClassName(), $context->getCriteria(), $this->permission); }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var Context $context */ if (null !== $context->getCriteria()) { // the Criteria object is already initialized return; } $context->setCriteria(new Criteria($this->entityClassResolver)); }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var Context $context */ $entityClass = $context->getClassName(); if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) { // only manageable entities are supported return; } $criteria = $context->getCriteria(); $this->setJoinAliases($criteria); $this->completeJoins($criteria); }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasQuery()) { // a query is already built return; } $criteria = $context->getCriteria(); // check if a paging disabled if (self::UNLIMITED_RESULT === $criteria->getMaxResults()) { $criteria->setFirstResult(null); $criteria->setMaxResults(null); } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasQuery()) { // a query is already built return; } $criteria = $context->getCriteria(); $filterValues = $context->getFilterValues(); $filters = $context->getFilters(); foreach ($filters as $filterKey => $filter) { $filterValue = $filterValues->has($filterKey) ? $filterValues->get($filterKey) : null; $filter->apply($criteria, $filterValue); } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasQuery()) { // a query is already built return; } $entityClass = $context->getClassName(); if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) { // only manageable entities are supported return; } $query = $this->doctrineHelper->getEntityRepositoryForClass($entityClass)->createQueryBuilder('e'); $this->doctrineHelper->applyCriteria($query, $context->getCriteria()); $context->setQuery($query); }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ $criteria = $context->getCriteria(); $filters = $context->getFilters(); foreach ($filters as $filter) { if ($filter instanceof ComparisonFilter) { $field = $filter->getField(); $lastDelimiter = strrpos($field, ConfigUtil::PATH_DELIMITER); if (false !== $lastDelimiter) { $join = $criteria->getJoin(substr($field, 0, $lastDelimiter)); if (null !== $join && $join->getJoinType() === Join::LEFT_JOIN) { $join->setJoinType(Join::INNER_JOIN); } } } } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetContext $context */ if ($context->hasQuery()) { // a query is already built return; } $entityClass = $context->getClassName(); if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) { // only manageable entities are supported return; } $query = $this->doctrineHelper->getEntityRepositoryForClass($entityClass)->createQueryBuilder('e'); $this->doctrineHelper->applyCriteria($query, $context->getCriteria()); $entityId = $context->getId(); $idFields = $this->doctrineHelper->getEntityIdentifierFieldNamesForClass($entityClass); if (count($idFields) === 1) { // single identifier if (is_array($entityId)) { throw new \UnexpectedValueException(sprintf('The entity identifier cannot be an array because the entity "%s" has single primary key.', $entityClass)); } $query->andWhere(sprintf('e.%s = :id', reset($idFields)))->setParameter('id', $entityId); } else { // combined identifier if (!is_array($entityId)) { throw new \UnexpectedValueException(sprintf('The entity identifier must be an array because the entity "%s" has composite primary key.', $entityClass)); } $counter = 1; foreach ($idFields as $field) { if (!array_key_exists($field, $entityId)) { throw new \UnexpectedValueException(sprintf('The entity identifier array must have the key "%s" because ' . 'the entity "%s" has composite primary key.', $field, $entityClass)); } $query->andWhere(sprintf('e.%s = :id%d', $field, $counter))->setParameter(sprintf('id%d', $counter), $entityId[$field]); $counter++; } } $context->setQuery($query); }