Loading module/Oscar/src/Oscar/Entity/PersonRepository.php +29 −17 Original line number Diff line number Diff line Loading @@ -24,7 +24,8 @@ class PersonRepository extends EntityRepository implements IConnectedRepository private $_cacheSelectebleRolesOrganisation; public function removePersonById(int $personId){ public function removePersonById(int $personId) { $sql = "DELETE FROM person WHERE id = :id"; $params = array('id' => $personId); $stmt = $this->getEntityManager()->getConnection()->prepare($sql); Loading @@ -32,18 +33,21 @@ class PersonRepository extends EntityRepository implements IConnectedRepository } public function removePerson(Person $person){ public function removePerson(Person $person) { $this->getEntityManager()->remove($person); } public function removePersons( array $ids ){ public function removePersons(array $ids) { return $this->createQueryBuilder('p')->delete()->where('p.id IN(:ids)') ->setParameter('ids', $ids) ->getQuery() ->execute(); } public function getPersonsByIds( array $ids ){ public function getPersonsByIds(array $ids) { $qb = $this->getBaseQuery() ->where('p.id IN (:ids)') ->setParameter('ids', $ids); Loading @@ -58,7 +62,8 @@ class PersonRepository extends EntityRepository implements IConnectedRepository * @param $connector * @return array */ public function getUidsConnector($connector){ public function getUidsConnector($connector) { $qb = $this->getEntityManager()->createQueryBuilder(); $search = sprintf('s:%s:"%s";', strlen($connector), $connector); Loading @@ -74,7 +79,8 @@ class PersonRepository extends EntityRepository implements IConnectedRepository return $uids; } public function getPersonsIdsForActivitiesids( $activitiesIds ){ public function getPersonsIdsForActivitiesids($activitiesIds) { $queryActivity = $this->createQueryBuilder('p') ->select('DISTINCT p.id') ->innerJoin('p.activities', 'ap') Loading Loading @@ -102,7 +108,8 @@ class PersonRepository extends EntityRepository implements IConnectedRepository * @param $organisationIds * @return array */ public function getPersonIdsInOrganizations( $organisationIds ){ public function getPersonIdsInOrganizations($organisationIds) { $result = $this->createQueryBuilder('p') ->select('p.id') ->innerJoin('p.organizations', 'op') Loading @@ -113,7 +120,8 @@ class PersonRepository extends EntityRepository implements IConnectedRepository return array_map('current', $result); } public function getPersonIdsForOrganizationsActivities( $organizationIds ){ public function getPersonIdsForOrganizationsActivities($organizationIds) { $activityMembers = $this->getEntityManager()->getRepository(Person::class)->createQueryBuilder('p') ->select('DISTINCT p.id') ->innerJoin('p.activities', 'ap') Loading Loading @@ -141,18 +149,19 @@ class PersonRepository extends EntityRepository implements IConnectedRepository return array_unique(array_merge($idsFromActivities, $idsFromProjects)); } public function getSubordinates( $idReferent ){ public function getSubordinates($idReferent) { $ids = $this->getSubordinatesIds($idReferent); return $this->createQueryBuilder('p') ->where('p.id IN(:ids)') ->setParameter('ids', $ids) ->getQuery() ->getResult() ; ->getResult(); } public function getSubordinatesIds( $referentId ){ public function getSubordinatesIds($referentId) { $result = $this->getEntityManager()->getRepository(Referent::class)->createQueryBuilder('r') ->select('p.id') ->innerJoin('r.person', 'p') Loading @@ -169,11 +178,14 @@ class PersonRepository extends EntityRepository implements IConnectedRepository * * @return mixed */ public function getPersonsWithUnreadNotificationsAndAuthentification(){ public function getPersonsWithUnreadNotificationsAndAuthentification($normalize = false) { $qb = $this->createQueryBuilder('p'); $persons = $qb ->select('p') ->innerJoin(Authentification::class, 'a', Join::WITH, $qb->expr()->eq('p.ladapLogin', 'a.username')) ->innerJoin(Authentification::class, 'a', Join::WITH, $qb->expr()->eq( $normalize ? 'lower(p.ladapLogin)' : 'p.ladapLogin', $normalize ? 'lower(a.username)' : 'a.username')) ->innerJoin(NotificationPerson::class, 'n', Join::WITH, $qb->expr()->eq('p.id', 'n.person')) ->where('n.read IS NULL') ->getQuery() Loading module/Oscar/src/Oscar/Service/PersonService.php +4 −1 Original line number Diff line number Diff line Loading @@ -476,7 +476,10 @@ class PersonService implements UseOscarConfigurationService, UseEntityManager, U $this->getLoggerService()->info("Notifications des inscrits à '$cron'"); // Liste des personnes ayant des notifications non-lues $persons = $this->getRepository()->getPersonsWithUnreadNotificationsAndAuthentification(); $persons = $this->getRepository()->getPersonsWithUnreadNotificationsAndAuthentification( $this->getOscarConfigurationService()->getConfiguration('authPersonNormalize', false) ); $this->getLoggerService()->info(sprintf(" %s personne(s) ont des notifications non-lues", count($persons))); /** @var Person $person */ Loading Loading
module/Oscar/src/Oscar/Entity/PersonRepository.php +29 −17 Original line number Diff line number Diff line Loading @@ -24,7 +24,8 @@ class PersonRepository extends EntityRepository implements IConnectedRepository private $_cacheSelectebleRolesOrganisation; public function removePersonById(int $personId){ public function removePersonById(int $personId) { $sql = "DELETE FROM person WHERE id = :id"; $params = array('id' => $personId); $stmt = $this->getEntityManager()->getConnection()->prepare($sql); Loading @@ -32,18 +33,21 @@ class PersonRepository extends EntityRepository implements IConnectedRepository } public function removePerson(Person $person){ public function removePerson(Person $person) { $this->getEntityManager()->remove($person); } public function removePersons( array $ids ){ public function removePersons(array $ids) { return $this->createQueryBuilder('p')->delete()->where('p.id IN(:ids)') ->setParameter('ids', $ids) ->getQuery() ->execute(); } public function getPersonsByIds( array $ids ){ public function getPersonsByIds(array $ids) { $qb = $this->getBaseQuery() ->where('p.id IN (:ids)') ->setParameter('ids', $ids); Loading @@ -58,7 +62,8 @@ class PersonRepository extends EntityRepository implements IConnectedRepository * @param $connector * @return array */ public function getUidsConnector($connector){ public function getUidsConnector($connector) { $qb = $this->getEntityManager()->createQueryBuilder(); $search = sprintf('s:%s:"%s";', strlen($connector), $connector); Loading @@ -74,7 +79,8 @@ class PersonRepository extends EntityRepository implements IConnectedRepository return $uids; } public function getPersonsIdsForActivitiesids( $activitiesIds ){ public function getPersonsIdsForActivitiesids($activitiesIds) { $queryActivity = $this->createQueryBuilder('p') ->select('DISTINCT p.id') ->innerJoin('p.activities', 'ap') Loading Loading @@ -102,7 +108,8 @@ class PersonRepository extends EntityRepository implements IConnectedRepository * @param $organisationIds * @return array */ public function getPersonIdsInOrganizations( $organisationIds ){ public function getPersonIdsInOrganizations($organisationIds) { $result = $this->createQueryBuilder('p') ->select('p.id') ->innerJoin('p.organizations', 'op') Loading @@ -113,7 +120,8 @@ class PersonRepository extends EntityRepository implements IConnectedRepository return array_map('current', $result); } public function getPersonIdsForOrganizationsActivities( $organizationIds ){ public function getPersonIdsForOrganizationsActivities($organizationIds) { $activityMembers = $this->getEntityManager()->getRepository(Person::class)->createQueryBuilder('p') ->select('DISTINCT p.id') ->innerJoin('p.activities', 'ap') Loading Loading @@ -141,18 +149,19 @@ class PersonRepository extends EntityRepository implements IConnectedRepository return array_unique(array_merge($idsFromActivities, $idsFromProjects)); } public function getSubordinates( $idReferent ){ public function getSubordinates($idReferent) { $ids = $this->getSubordinatesIds($idReferent); return $this->createQueryBuilder('p') ->where('p.id IN(:ids)') ->setParameter('ids', $ids) ->getQuery() ->getResult() ; ->getResult(); } public function getSubordinatesIds( $referentId ){ public function getSubordinatesIds($referentId) { $result = $this->getEntityManager()->getRepository(Referent::class)->createQueryBuilder('r') ->select('p.id') ->innerJoin('r.person', 'p') Loading @@ -169,11 +178,14 @@ class PersonRepository extends EntityRepository implements IConnectedRepository * * @return mixed */ public function getPersonsWithUnreadNotificationsAndAuthentification(){ public function getPersonsWithUnreadNotificationsAndAuthentification($normalize = false) { $qb = $this->createQueryBuilder('p'); $persons = $qb ->select('p') ->innerJoin(Authentification::class, 'a', Join::WITH, $qb->expr()->eq('p.ladapLogin', 'a.username')) ->innerJoin(Authentification::class, 'a', Join::WITH, $qb->expr()->eq( $normalize ? 'lower(p.ladapLogin)' : 'p.ladapLogin', $normalize ? 'lower(a.username)' : 'a.username')) ->innerJoin(NotificationPerson::class, 'n', Join::WITH, $qb->expr()->eq('p.id', 'n.person')) ->where('n.read IS NULL') ->getQuery() Loading
module/Oscar/src/Oscar/Service/PersonService.php +4 −1 Original line number Diff line number Diff line Loading @@ -476,7 +476,10 @@ class PersonService implements UseOscarConfigurationService, UseEntityManager, U $this->getLoggerService()->info("Notifications des inscrits à '$cron'"); // Liste des personnes ayant des notifications non-lues $persons = $this->getRepository()->getPersonsWithUnreadNotificationsAndAuthentification(); $persons = $this->getRepository()->getPersonsWithUnreadNotificationsAndAuthentification( $this->getOscarConfigurationService()->getConfiguration('authPersonNormalize', false) ); $this->getLoggerService()->info(sprintf(" %s personne(s) ont des notifications non-lues", count($persons))); /** @var Person $person */ Loading