X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/22509e0a4cfeb5125196242104c8c4b562286e33..eb7ffdec9dc02d4f65e2955b677b849e58d857a9:/Repository/UserRepository.php diff --git a/Repository/UserRepository.php b/Repository/UserRepository.php index 9e869e1..9b34057 100644 --- a/Repository/UserRepository.php +++ b/Repository/UserRepository.php @@ -11,19 +11,23 @@ namespace Rapsys\AirBundle\Repository; +use Doctrine\ORM\AbstractQuery; use Doctrine\ORM\Query\ResultSetMapping; + use Symfony\Component\Routing\Generator\UrlGeneratorInterface; +use Rapsys\AirBundle\Repository; + /** * UserRepository */ -class UserRepository extends EntityRepository { +class UserRepository extends Repository { /** * Find users with translated highest group and civility * * @return array The user ids keyed by group and pseudonym */ - public function findIndexByGroupPseudonym(): array { + public function findChoicesAsArray(): array { //Set the request $req =<< 'User' + ORDER BY g.id DESC, u.pseudonym ASC LIMIT 0, :limit ) AS a GROUP BY a.id @@ -74,10 +79,11 @@ SQL; //Process result foreach($res as $data) { //Without group or simple user - if (empty($data['g_title']) || $data['g_title'] == 'User') { - //Skip it - continue; - } + #XXX: moved in sql by removing LEFT JOIN and excluding user group + #if (empty($data['g_title']) || $data['g_title'] == 'User') { + # //Skip it + # continue; + #} //Get translated group $group = $this->translator->trans($data['g_title']); @@ -89,13 +95,57 @@ SQL; //Set data //XXX: ChoiceType use display string as key - $ret[$group][$data['pseudonym']] = $data['id']; + $ret[$group][trim($data['pseudonym'].' ('.$data['id'].')')] = intval($data['id']); } //Send result return $ret; } + /** + * Find user ids by pseudonym + * + * @param array $pseudonym The pseudonym filter + * @return array The user ids + */ + public function findIdByPseudonymAsArray(array $pseudonym): array { + //Set the request + $req =<<tableKeys, $this->tableValues, $req); + + //Get result set mapping instance + //XXX: DEBUG: see ../blog.orig/src/Rapsys/BlogBundle/Repository/ArticleRepository.php + $rsm = new ResultSetMapping(); + + //Declare all fields + //XXX: see vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/Types.php + //XXX: we don't use a result set as we want to translate group and civility + $rsm->addScalarResult('id', 'id', 'integer'); + + //Return result + return $this->_em + ->createNativeQuery($req, $rsm) + ->setParameter('pseudonym', $pseudonym) + //XXX: instead of array_column on the result + ->getResult(AbstractQuery::HYDRATE_SCALAR_COLUMN); + } + /** * Find applicant by session id *