Example #1
0
 private function proxyQuery($query)
 {
     $proxyQuery = new ProxyQuery($query);
     $proxyQuery->setSortBy(array(), array('fieldName' => 'createdAt'));
     $proxyQuery->setSortOrder('DESC');
     return $proxyQuery;
 }
 /**
  * Publish media
  *
  * This function publishes media that has been insterted previously.
  *
  * @param  ProxyQueryInterface                                $query
  * @return \Symfony\Component\HttpFoundation\RedirectResponse
  */
 public function batchActionUnpublish(ProxyQueryInterface $query)
 {
     $em = $this->getDoctrine()->getManager();
     foreach ($query->getQuery()->iterate() as $entity) {
         $entity[0]->setStatus(Media::STATUS_UNPUBLISHED);
         $em->persist($entity[0]);
     }
     $em->flush();
     $this->get('session')->setFlash('sonata_flash_success', 'flash_batch_merge_success');
     return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters()));
 }
 /**
  * @param \Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery $queryBuilder
  * @param $alias
  * @param $field
  * @param $data
  * @return bool
  */
 public function getByLocale($queryBuilder, $alias, $field, $data)
 {
     $active = true;
     if (!($locale = $data['value'])) {
         $locale = $this->getDefaultLocale();
         $active = false;
     }
     $queryBuilder->andWhere(sprintf('%s.locale = :locale', $alias));
     $queryBuilder->orderBy(sprintf('%s.translationKey', $alias), 'asc');
     $queryBuilder->setParameter(':locale', $locale);
     return $active;
 }
 public function testFilterClosure()
 {
     $builder = new ProxyQuery(new QueryBuilder());
     $filter = new CallbackFilter();
     $filter->initialize('field_name', array('callback' => function ($builder, $alias, $field, $value) {
         $builder->andWhere(sprintf('CUSTOM QUERY %s.%s', $alias, $field));
         $builder->setParameter('value', $value);
         return true;
     }));
     $filter->filter($builder, 'alias', 'field', 'myValue');
     $this->assertEquals(array('CUSTOM QUERY alias.field'), $builder->query);
     $this->assertEquals(array('value' => 'myValue'), $builder->parameters);
     $this->assertEquals(true, $filter->isActive());
 }
 public function testApplyMethod()
 {
     $builder = new ProxyQuery(new QueryBuilder());
     $filter = new CallbackFilter();
     $filter->initialize('field_name_test', array('callback' => function ($builder, $alias, $field, $value) {
         $builder->andWhere(sprintf('CUSTOM QUERY %s.%s', $alias, $field));
         $builder->setParameter('value', $value['value']);
         return true;
     }, 'field_name' => 'field_name_test'));
     $filter->apply($builder, array('value' => 'myValue'));
     $this->assertEquals(array('CUSTOM QUERY o.field_name_test'), $builder->query);
     $this->assertEquals(array('value' => 'myValue'), $builder->parameters);
     $this->assertEquals(true, $filter->isActive());
 }
Example #6
0
 /**
  * {@inheritdoc}
  */
 public function getPager(array $criteria, $page, $maxPerPage = 10, array $sort = array())
 {
     if (!isset($criteria['mode'])) {
         $criteria['mode'] = 'public';
     }
     $parameters = array();
     $query = $this->getRepository()->createQueryBuilder('p')->select('p,t');
     if ($criteria['mode'] == 'admin') {
         $query->leftJoin('p.tags', 't')->leftJoin('p.author', 'a');
     } else {
         $query->leftJoin('p.tags', 't', Join::WITH, 't.enabled = true')->leftJoin('p.author', 'a', Join::WITH, 'a.enabled = true');
     }
     if ($criteria['mode'] == 'public') {
         // enabled
         $criteria['enabled'] = isset($criteria['enabled']) ? $criteria['enabled'] : true;
         $query->andWhere('p.enabled = :enabled');
         $parameters['enabled'] = $criteria['enabled'];
     }
     if (isset($criteria['date'])) {
         $query->andWhere($criteria['date']['query']);
         $parameters = array_merge($parameters, $criteria['date']['params']);
     }
     if (isset($criteria['tag'])) {
         $query->andWhere('t.slug LIKE :tag');
         $parameters['tag'] = (string) $criteria['tag'];
     }
     if (isset($criteria['author'])) {
         if (!is_array($criteria['author']) && stristr($criteria['author'], 'NULL')) {
             $query->andWhere('p.author IS ' . $criteria['author']);
         } else {
             $query->andWhere(sprintf('p.author IN (%s)', implode((array) $criteria['author'], ',')));
         }
     }
     if (isset($criteria['collection']) && $criteria['collection'] instanceof CollectionInterface) {
         $query->andWhere('p.collection = :collectionid');
         $parameters['collectionid'] = $criteria['collection']->getId();
     }
     $query->setParameters($parameters);
     $pager = new Pager();
     $pager->setMaxPerPage($maxPerPage);
     $proxyQuery = new ProxyQuery($query);
     $proxyQuery->setSortBy(array(), array('fieldName' => 'publicationDateStart'));
     $proxyQuery->setSortOrder('DESC');
     $pager->setQuery($proxyQuery);
     $pager->setPage($page);
     $pager->init();
     return $pager;
 }
Example #7
0
 public function batchActionExtend(ProxyQueryInterface $selectedModelQuery)
 {
     if ($this->admin->isGranted('EDIT') === false || $this->admin->isGranted('DELETE') === false) {
         throw new AccessDeniedException();
     }
     $modelManager = $this->admin->getModelManager();
     $selectedModels = $selectedModelQuery->execute();
     try {
         foreach ($selectedModels as $selectedModel) {
             $selectedModel->extend();
             $modelManager->update($selectedModel);
         }
     } catch (\Exception $e) {
         $this->get('session')->getFlashBag()->add('sonata_flash_error', $e->getMessage());
         return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters()));
     }
     $this->get('session')->getFlashBag()->add('sonata_flash_success', sprintf('The selected jobs validity has been extended until %s.', date('m/d/Y', time() + 86400 * 30)));
     return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters()));
 }
 public function batchActionDeactivate(ProxyQueryInterface $selectedModelQuery)
 {
     if ($this->admin->isGranted('EDIT') === false || $this->admin->isGranted('DELETE') === false) {
         throw new AccessDeniedException();
     }
     $request = $this->get('request');
     $modelManager = $this->admin->getModelManager();
     $selectedModels = $selectedModelQuery->execute();
     try {
         foreach ($selectedModels as $selectedModel) {
             $selectedModel->deactivate();
             $modelManager->update($selectedModel);
         }
     } catch (\Exception $e) {
         $this->get('session')->getFlashBag()->add('sonata_flash_error', $e->getMessage());
         return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters()));
     }
     $this->get('session')->getFlashBag()->add('sonata_flash_success', sprintf('The selected accounts have been deactivated'));
     return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters()));
 }
 public function batchActionRepublication(ProxyQuery $selectedModelQuery)
 {
     if (!$this->admin->isGranted('EDIT')) {
         throw new AccessDeniedException();
     }
     $request = $this->get('request');
     $modelManager = $this->admin->getModelManager();
     $selectedModels = $selectedModelQuery->execute();
     try {
         foreach ($selectedModels as $selectedModel) {
             $selectedModel->setModified(new \DateTime());
             $modelManager->update($selectedModel);
         }
     } catch (\Exception $e) {
         $this->addFlash('sonata_flash_error', 'Republication error' . $e);
         return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters()));
     }
     $this->addFlash('sonata_flash_success', 'Republication ok!');
     return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters()));
 }
 /**
  * @param ProxyQuery $queryBuilder
  * @param String     $alias
  */
 private function joinTranslations(ProxyQuery $queryBuilder, $alias, array $locales = null)
 {
     $alreadyJoined = false;
     $joins = $queryBuilder->getDQLPart('join');
     if (array_key_exists($alias, $joins)) {
         $joins = $joins[$alias];
         foreach ($joins as $join) {
             if (strpos($join->__toString(), "{$alias}.translations ")) {
                 $alreadyJoined = true;
             }
         }
     }
     if (!$alreadyJoined) {
         /** @var QueryBuilder $queryBuilder */
         if ($locales) {
             $queryBuilder->leftJoin(sprintf('%s.translations', $alias), 'translations', 'WITH', 'translations.locale = :locales');
             $queryBuilder->setParameter('locales', $locales);
         } else {
             $queryBuilder->leftJoin(sprintf('%s.translations', $alias), 'translations');
         }
     }
 }
Example #11
0
 public function batchActionRefuse(ProxyQueryInterface $selectedModelQuery)
 {
     // 		if (!$this->admin->isGranted('EDIT') || !$this->admin->isGranted('DELETE'))
     // 		{
     // 			throw new AccessDeniedException();
     // 		}
     $request = $this->get('request');
     $modelManager = $this->admin->getModelManager();
     // 		$target = $modelManager->find($this->admin->getClass(), $request->get('value'));
     // 		if( $target === null){
     // 			$this->addFlash('sonata_flash_info', 'flash_batch_merge_no_target');
     // 			return new RedirectResponse(
     // 					$this->admin->generateUrl('list',$this->admin->getFilterParameters())
     // 			);
     // 		}
     $selectedModels = $selectedModelQuery->execute();
     // do the merge work here
     try {
         foreach ($selectedModels as $selectedModel) {
             // 				$modelManager->delete($selectedModel);
             $selectedModel->setIsRejected(true);
             $selectedModel->setChecked(true);
             $selectedModel->setIsValidated(false);
             // 				$modelManager = $this->admin->update($object);
         }
         $modelManager->update($selectedModel);
     } catch (\Exception $e) {
         $this->addFlash('sonata_flash_error', 'Error: Please select all products');
         return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters()));
     }
     $this->addFlash('sonata_flash_error', 'All products are validated');
     // 		return new RedirectResponse(
     // 				$this->admin->generateUrl('list',$this->admin->getFilterParameters())
     // 		);
     return new RedirectResponse($this->container->get('router')->generate('admin_suppliercheck_admin_products_validation_list'));
 }
Example #12
0
 /**
  * @param $queryBuilder
  * @param $alias
  * @param $field
  * @param $value
  * @return bool
  */
 public function getByLocale(\Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery $queryBuilder, $alias, $field, $value)
 {
     if (!($locale = $value['value'])) {
         $locale = $this->getDefaultLocale();
     }
     $queryBuilder->where(sprintf('%s.locale = :locale', $alias));
     $queryBuilder->andWhere($queryBuilder->expr()->isNotNull(sprintf('%s.parent', $alias)));
     $queryBuilder->setParameter(':locale', $locale);
     return true;
 }
Example #13
0
 /**
  * @param QueryBuilder $queryBuilder
  */
 public function __construct($queryBuilder, SettingsManagerInterface $settingsManager = null)
 {
     parent::__construct($queryBuilder);
     $this->settingsManager = $settingsManager;
 }
Example #14
0
 /**
  * @param ProxyQuery $ProxyQuery
  * @param $alias
  * @param $field
  * @param $data
  * @return bool
  */
 public function getByLocale(ProxyQuery $ProxyQuery, $alias, $field, $data)
 {
     $active = true;
     if (!($locale = $data['value'])) {
         $locale = $this->getDefaultLocale();
         $active = false;
     }
     $qb = $ProxyQuery->getQueryBuilder();
     $qb->andWhere(sprintf('%s.locale = :locale', $alias));
     $qb->orderBy(sprintf('%s.path', $alias), 'asc');
     $qb->setParameter(':locale', $locale);
     return $active;
 }