/** * @param array $conditions * @param PagingProperties $pagingProperties * @param ApiUser $user * @return \Doctrine\Common\Collections\Collection|static * @throws \Exception */ public function filter(array &$conditions, PagingProperties $pagingProperties, $user = null) { $qb = $this->_em->createQueryBuilder(); $orderByField = sprintf('%s.%s', self::SELECT_ALIAS, $pagingProperties->getSort()); $offset = ($pagingProperties->getPage() - 1) * $pagingProperties->getLimit(); $qb->select(self::SELECT_ALIAS)->from($this->_entityName, self::SELECT_ALIAS); foreach ($conditions as $condition) { $whereExpression = $this->buildWhereExpression($qb, $condition); $qb->orWhere($whereExpression); } if (!$this->userState->isOroUser()) { $publicComments = sprintf('%s.private = false', self::SELECT_ALIAS); $qb->andWhere($publicComments); } $qb->addOrderBy($orderByField, $pagingProperties->getOrder()); $qb->setFirstResult($offset); $qb->setMaxResults($pagingProperties->getLimit()); $query = $qb->getQuery(); try { $result = $query->getResult(Query::HYDRATE_OBJECT); } catch (\Exception $e) { $result = null; } return $result; }
/** * @param NotificationEvent $event * @return void */ public function processEvent(NotificationEvent $event) { if (false === $this->isNotificationsEnabled()) { return; } if ($event instanceof CommentsEvent && $event->isPrivate() && !$this->userState->isOroUser()) { return; } $changeList = new \ArrayIterator(); if ($event instanceof ChangesProviderEvent) { $event->provideChanges($changeList); } $attachments = array(); if ($event instanceof AttachmentsEvent) { $attachments = $event->attachments(); } $user = $this->securityFacade->getLoggedUser(); $notification = new TicketNotification($event->getAggregateId(), $user, $event->getHeaderText(), $event->getSubject(), $changeList, $attachments); $this->manager->add($notification); }