public function createQuery($context = 'list') { $container = $this->getConfigurationPool()->getContainer(); $entityManager = $container->get('doctrine.orm.entity_manager'); $query = parent::createQuery($context); if ($this->isGranted('ROLE_SONATA_ADMIN') === false) { $contentTypes = $this->getCMSTypes(); $viewableCMS = []; foreach ($contentTypes as $key => $contentType) { try { if (isset($contentType['admin'])) { $contentType['admin']->checkAccess('list'); //Throw an exception if doesn' have access $viewableCMS[$key] = $contentType; } } catch (AccessDeniedException $e) { } } $queryBuilder = clone $query; /* @var QueryBuilder $queryBuilder */ $orX = $queryBuilder->expr()->orX(); $orX->add($queryBuilder->expr()->eq('2', '1')); foreach ($viewableCMS as $key => $viewableContent) { $nodes = $entityManager->getRepository($viewableContent['class'])->findAll(); $nodesId = []; foreach ($nodes as $node) { $nodesId[] = $node->getId(); } if (count($nodesId) > 0) { $orX->add($queryBuilder->expr()->in($queryBuilder->getRootAlias() . '.id', $nodesId)); } } $queryBuilder->andWhere($orX); return $queryBuilder; } return $query; }
public function getNewInstance() { $instance = parent::getNewInstance(); $instance->setDateCreated(new \DateTime()); return $instance; }