* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ namespace Chill\MainBundle\Repository; /** * * */ class UserRepository extends \Doctrine\ORM\EntityRepository { public function countByUsernameOrEmail($pattern) { $qb = $this->queryByUsernameOrEmail($pattern); $qb->select('COUNT(u)'); return (int) $qb->getQuery()->getSingleScalarResult(); } public function findByUsernameOrEmail($pattern) { $qb = $this->queryByUsernameOrEmail($pattern); return $qb->getQuery()->getResult(); } public function findOneByUsernameOrEmail($pattern) { $qb = $this->queryByUsernameOrEmail($pattern); return $qb->getQuery()->getSingleResult(); } protected function queryByUsernameOrEmail($pattern) { $qb = $this->createQueryBuilder('u'); $searchByPattern = $qb->expr()->orX(); $searchByPattern ->add($qb->expr()->eq('u.usernameCanonical', 'LOWER(UNACCENT(:pattern))')) ->add($qb->expr()->eq('u.emailCanonical', 'LOWER(UNACCENT(:pattern))')) ; $qb ->where($searchByPattern) ->setParameter('pattern', $pattern) ; return $qb; } }