![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/UserBundle/Entity/ |
<?php namespace Mautic\UserBundle\Entity; use Doctrine\ORM\Tools\Pagination\Paginator; use Mautic\CoreBundle\Entity\CommonRepository; /** * @extends CommonRepository<Role> */ class RoleRepository extends CommonRepository { /** * Get a list of roles. * * @return Paginator */ public function getEntities(array $args = []) { $q = $this->createQueryBuilder('r'); $args['qb'] = $q; return parent::getEntities($args); } /** * Get a list of roles. * * @param string $search * @param int $limit * @param int $start * * @return array */ public function getRoleList($search = '', $limit = 10, $start = 0) { $q = $this->_em->createQueryBuilder(); $q->select('partial r.{id, name}') ->from(Role::class, 'r'); if (!empty($search)) { $q->where('r.name LIKE :search') ->setParameter('search', "{$search}%"); } $q->orderBy('r.name'); if (!empty($limit)) { $q->setFirstResult($start) ->setMaxResults($limit); } return $q->getQuery()->getArrayResult(); } protected function addCatchAllWhereClause($q, $filter): array { return $this->addStandardCatchAllWhereClause( $q, $filter, [ 'r.name', 'r.description', ] ); } protected function addSearchCommandWhereClause($q, $filter): array { $command = $filter->command; $unique = $this->generateRandomParameterName(); $returnParameter = false; // returning a parameter that is not used will lead to a Doctrine error [$expr, $parameters] = parent::addSearchCommandWhereClause($q, $filter); switch ($command) { case $this->translator->trans('mautic.user.user.searchcommand.isadmin'): case $this->translator->trans('mautic.user.user.searchcommand.isadmin', [], null, 'en_US'): $expr = $q->expr()->eq('r.isAdmin', 1); break; case $this->translator->trans('mautic.core.searchcommand.name'): case $this->translator->trans('mautic.core.searchcommand.name', [], null, 'en_US'): $expr = $q->expr()->like('r.name', ':'.$unique); $returnParameter = true; break; } if ($filter->not) { $expr = $q->expr()->not($expr); } if ($returnParameter) { $string = ($filter->strict) ? $filter->string : "%{$filter->string}%"; $parameters = ["$unique" => $string]; } return [ $expr, $parameters, ]; } /** * Get a count of users that belong to the role. * * @return array */ public function getUserCount($roleIds) { $q = $this->_em->getConnection()->createQueryBuilder(); $q->select('count(u.id) as thecount, u.role_id') ->from(MAUTIC_TABLE_PREFIX.'users', 'u'); $returnArray = is_array($roleIds); if (!$returnArray) { $roleIds = [$roleIds]; } $q->where( $q->expr()->in('u.role_id', $roleIds) ) ->groupBy('u.role_id'); $result = $q->executeQuery()->fetchAllAssociative(); $return = []; foreach ($result as $r) { $return[$r['role_id']] = $r['thecount']; } // Ensure lists without leads have a value foreach ($roleIds as $r) { if (!isset($return[$r])) { $return[$r] = 0; } } return ($returnArray) ? $return : $return[$roleIds[0]]; } /** * @return string[] */ public function getSearchCommands(): array { $commands = [ 'mautic.user.user.searchcommand.isadmin', 'mautic.core.searchcommand.name', ]; return array_merge($commands, parent::getSearchCommands()); } protected function getDefaultOrder(): array { return [ ['r.name', 'ASC'], ]; } public function getTableAlias(): string { return 'r'; } }