vendor/crea/security-bundle/src/Repository/UserRepository.php line 21

Open in your IDE?
  1. <?php
  2. namespace Crea\SecurityBundle\Repository;
  3. use DateTime;
  4. use Doctrine\ORM\QueryBuilder;
  5. use Crea\SecurityBundle\Entity\User;
  6. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. /**
  9.  * @method User|null find($id, $lockMode = null, $lockVersion = null)
  10.  * @method User|null findOneBy(array $criteria, array $orderBy = null)
  11.  * @method User[]    findAll()
  12.  * @method User[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  13.  */
  14. class UserRepository extends ServiceEntityRepository
  15. {
  16.     public function __construct(ManagerRegistry $registrystring $entityClass User::class)
  17.     {
  18.         parent::__construct($registry$entityClass);
  19.     }
  20.     public function getUserQb(QueryBuilder $querybool $enabled true) : QueryBuilder
  21.     {
  22.         if ($enabled) {
  23.             return $query
  24.                 ->andWhere("u.enabled = :enabled")
  25.                 ->setParameter("enabled"$enabled)
  26.                 ->andWhere("u.enabledUntil >= :enabledDate OR u.enabledUntil IS NULL")
  27.                 ->setParameter("enabledDate", (new DateTime())->format('Y-m-d'))
  28.                 ->andWhere("u.profile IS NOT NULL");
  29.         }
  30.         return $query
  31.             ->orWhere("u.enabled = :enabled")
  32.             ->setParameter("enabled"$enabled)
  33.             ->orWhere("u.enabledUntil < :enabledDate")
  34.             ->setParameter("enabledDate", (new DateTime())->format('Y-m-d'))
  35.             ->orWhere("u.profile IS NULL");
  36.     }
  37.     public function disableExpiredUsers()
  38.     {
  39.         $this->createQueryBuilder('u')
  40.             ->update()
  41.             ->where('u.enabledUntil < :now')
  42.             ->set('u.isEnabled',':disable')
  43.             ->set('u.enabledUntil',':empty')
  44.             ->setParameter('now', new DateTime('now'))
  45.             ->setParameter('disable'false)
  46.             ->setParameter('empty'null)
  47.             ->getQuery()
  48.             ->execute();
  49.     }
  50.     /**
  51.      * @param string $userGroupCode
  52.      * @param bool|null $enabled
  53.      * @param bool|null $orderedByName
  54.      * @return User[]
  55.      */
  56.     public function getUsersFromGroup(string $userGroupCode, ?bool $enabled true, ?bool $orderedByName true): array
  57.     {
  58.         $qb $this->createQueryBuilder('u');
  59.         $qb->leftjoin('u.userGroups''ug')
  60.             ->andWhere($qb->expr()->eq('ug.code'':userGroupCode'))
  61.             ->setParameter('userGroupCode'$userGroupCode);
  62.         if ($enabled !== null) {
  63.             $qb->andWhere($qb->expr()->eq('u.enabled'':enabled'))
  64.                 ->setParameter('enabled'$enabled);
  65.         }
  66.         $qb->groupBy('u.id');
  67.         if ($orderedByName === true) {
  68.             $qb->addOrderBy('u.firstName''ASC')
  69.                 ->addOrderBy('u.lastName''ASC');
  70.         }
  71.         return $qb
  72.             ->getQuery()
  73.             ->getResult();
  74.     }
  75. }