/** * @param BuildAfter $event */ public function onBuildAfter(BuildAfter $event) { $datagrid = $event->getDatagrid(); $datasource = $datagrid->getDatasource(); if ($datasource instanceof OrmDatasource) { $queryBuilder = $datasource->getQueryBuilder(); $this->emailQueryFactory->applyAcl($queryBuilder); $this->emailQueryFactory->prepareQuery($queryBuilder); } }
public function testFilterQueryByUserIdWhenNoMailboxesFound() { $user = new User(); $organization = new Organization(); $em = $this->getTestEntityManager(); $qb = $em->createQueryBuilder(); $this->securityFacade->expects($this->once())->method('getLoggedUser')->will($this->returnValue($user)); $this->securityFacade->expects($this->once())->method('getOrganization')->will($this->returnValue($organization)); $this->mailboxManager->expects($this->any())->method('findAvailableMailboxIds')->with($user, $organization)->will($this->returnValue([1, 3, 5])); $qb->select('eu')->from('EmailUser', 'eu'); $this->factory->applyAcl($qb, 1); $this->assertEquals("SELECT eu FROM EmailUser eu" . " WHERE (eu.owner = :owner AND eu.organization = :organization) OR eu.mailboxOwner IN(:mailboxIds)", $qb->getQuery()->getDQL()); }
/** * Add required filters * * @param BuildAfter $event */ public function onBuildAfter(BuildAfter $event) { /** @var OrmDatasource $ormDataSource */ $ormDataSource = $event->getDatagrid()->getDatasource(); $queryBuilder = $ormDataSource->getQueryBuilder(); $parameters = $event->getDatagrid()->getParameters(); $this->factory->applyAcl($queryBuilder); if ($parameters->has('emailIds')) { $emailIds = $parameters->get('emailIds'); if (!is_array($emailIds)) { $emailIds = explode(',', $emailIds); } $queryBuilder->andWhere($queryBuilder->expr()->in('e.id', $emailIds)); } }
/** * @param BuildAfter $event */ public function onBuildAfter(BuildAfter $event) { $datagrid = $event->getDatagrid(); $datasource = $datagrid->getDatasource(); if ($datasource instanceof OrmDatasource) { $parameters = $datagrid->getParameters(); $userId = $parameters->get('userId'); $queryBuilder = $datasource->getQueryBuilder(); $this->emailQueryFactory->applyAcl($queryBuilder); $this->emailQueryFactory->prepareQuery($queryBuilder); // bind 'origin_ids' parameter $originIds = []; $emailOrigins = $this->emailGridHelper->getEmailOrigins($userId); foreach ($emailOrigins as $emailOrigin) { $originIds[] = $emailOrigin->getId(); } $queryBuilder->setParameter('origin_ids', $originIds); } }