Beispiel #1
0
 /**
  * {@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));
 }
Beispiel #3
0
 /**
  * {@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);
 }
Beispiel #4
0
 /**
  * {@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);
     }
 }
Beispiel #5
0
 /**
  * {@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);
     }
 }
Beispiel #6
0
 /**
  * {@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);
 }
Beispiel #7
0
 /**
  * {@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);
                 }
             }
         }
     }
 }
Beispiel #8
0
 /**
  * {@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);
 }