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()); }
/** * {@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; }
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'); } } }
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')); }
/** * @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; }
/** * @param QueryBuilder $queryBuilder */ public function __construct($queryBuilder, SettingsManagerInterface $settingsManager = null) { parent::__construct($queryBuilder); $this->settingsManager = $settingsManager; }
/** * @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; }