vendor/uvdesk/core-framework/Repository/EmailTemplatesRepository.php line 14

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\CoreFrameworkBundle\Repository;
  3. use Doctrine\ORM\Query;
  4. use Doctrine\ORM\EntityRepository;
  5. use Doctrine\Common\Collections\Criteria;
  6. class EmailTemplatesRepository extends EntityRepository
  7. {
  8.     const LIMIT 10;
  9.     public $safeFields = array('page','limit','sort','order','direction');
  10.     public function getEmailTemplates(\Symfony\Component\HttpFoundation\ParameterBag $obj null$container)
  11.     {
  12.         $json = array();
  13.         $qb $this->getEntityManager()->createQueryBuilder();
  14.         $qb->select('sr')->from($this->getEntityName(), 'sr');
  15.         $data $obj->all();
  16.         $data array_reverse($data);
  17.         foreach ($data as $key => $value) {
  18.             if(!in_array($key,$this->safeFields)) {
  19.                 if($key!='dateUpdated' AND $key!='dateAdded' AND $key!='search') {
  20.                     $qb->andwhere('sr.'.$key.' = :'.$key);
  21.                     $qb->setParameter($key$value);
  22.                 } else {
  23.                     if($key == 'search') {
  24.                         $qb->andwhere('sr.name'.' LIKE :name');
  25.                         $qb->setParameter('name''%'.urldecode(trim($value)).'%');    
  26.                     }
  27.                 }
  28.             }
  29.         }   
  30.         
  31.         if(!isset($data['sort']))
  32.             $qb->orderBy('sr.id'Criteria::DESC);
  33.         $paginator  $container->get('knp_paginator');
  34.         $newQb = clone $qb;
  35.         $newQb->select('COUNT(DISTINCT sr.id)');
  36.         $results $paginator->paginate(
  37.             $qb->getQuery()->setHydrationMode(Query::HYDRATE_ARRAY)->setHint('knp_paginator.count'$newQb->getQuery()->getSingleScalarResult()),
  38.             isset($data['page']) ? $data['page'] : 1,
  39.             self::LIMIT,
  40.             array('distinct' => false)
  41.         );
  42.         $paginationData $results->getPaginationData();
  43.         $queryParameters $results->getParams();
  44.         if(isset($queryParameters['template']))
  45.             unset($queryParameters['template']);
  46.         $paginationData['url'] = '#'.$container->get('uvdesk.service')->buildPaginationQuery($queryParameters);
  47.         $json['templates'] = $results->getItems();
  48.         $json['pagination_data'] = $paginationData;
  49.         return $json;
  50.     }
  51. }