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;
 }