vendor/tchoulom/view-counter-bundle/Repository/CounterRepository.php line 38

Open in your IDE?
  1. <?php
  2. /**
  3.  * This file is part of the TchoulomViewCounterBundle package.
  4.  *
  5.  * @package    TchoulomViewCounterBundle
  6.  * @author     Original Author <tchoulomernest@yahoo.fr>
  7.  *
  8.  * (c) Ernest TCHOULOM
  9.  *
  10.  * For the full copyright and license information, please view the LICENSE
  11.  * file that was distributed with this source code.
  12.  */
  13. namespace Tchoulom\ViewCounterBundle\Repository;
  14. use Tchoulom\ViewCounterBundle\Entity\ViewCounterInterface;
  15. use Tchoulom\ViewCounterBundle\Exception\RuntimeException;
  16. /**
  17.  * Class CounterRepository
  18.  */
  19. class CounterRepository extends AbstractRepository
  20. {
  21.     /**
  22.      * @var string Viewcounter class not found message.
  23.      */
  24.     protected const VIEWCOUNTER_CLASS_NOT_FOUND_MSG 'No ViewCounter class to process.';
  25.     /**
  26.      * Saves the object.
  27.      *
  28.      * @param $object
  29.      *
  30.      * @return mixed
  31.      * @throws \Exception
  32.      */
  33.     public function save($object)
  34.     {
  35.         try {
  36.             $this->em->persist($object);
  37.             $this->em->flush();
  38.         } catch (\Exception $e) {
  39.             throw $e;
  40.         }
  41.         return $object;
  42.     }
  43.     /**
  44.      * Finds One By.
  45.      *
  46.      * @param array $criteria
  47.      * @param null $orderBy
  48.      * @param null $limit
  49.      * @param null $offset
  50.      *
  51.      * @return mixed
  52.      */
  53.     public function findOneBy(array $criteria$orderBy null$limit null$offset null)
  54.     {
  55.         $result $this->getClassRepository()->findOneBy($criteria$orderBy$limit$offset);
  56.         return $result;
  57.     }
  58.     /**
  59.      * Cleanup the viewcounter data.
  60.      *
  61.      * @param \DateTimeInterface|null $min
  62.      * @param \DateTimeInterface|null $max
  63.      *
  64.      * @return int The number of rows deleted.
  65.      */
  66.     public function cleanup(\DateTimeInterface $min null\DateTimeInterface $max null): int
  67.     {
  68.         $viewcounterClass $this->loadViewCounterClass();
  69.         if (null == $viewcounterClass) {
  70.             throw new RuntimeException(self::VIEWCOUNTER_CLASS_NOT_FOUND_MSG);
  71.         }
  72.         $queryBuilder $this->em->createQueryBuilder();
  73.         $queryBuilder->delete($viewcounterClass'v');
  74.         $where false;
  75.         if ($min instanceof \DateTimeInterface) {
  76.             $andWhere true === $where 'andWhere' 'where';
  77.             $where true;
  78.             $queryBuilder->$andWhere('v.viewDate >= :min')
  79.                 ->setParameter('min'$min);
  80.         }
  81.         if ($max instanceof \DateTimeInterface) {
  82.             $andWhere true === $where 'andWhere' 'where';
  83.             $queryBuilder->$andWhere('v.viewDate <= :max')
  84.                 ->setParameter('max'$max);
  85.         }
  86.         return $queryBuilder->getQuery()->execute();
  87.     }
  88.     /**
  89.      * Loads the ViewCounter data.
  90.      *
  91.      * @return ViewCounterInterface[]
  92.      */
  93.     public function loadViewCounterData()
  94.     {
  95.         $viewcounterClass $this->loadViewCounterClass();
  96.         return $this->getEntityManager()->getRepository($viewcounterClass)->findAll();
  97.     }
  98. }