/** * @param EntityInterface $recipient * @param EventDispatcher $eventDispatcher * * @return string * @SuppressWarnings(PHPMD.LongVariable) */ protected function addSubscriptionToLabel(EntityInterface $recipient, EventDispatcher $eventDispatcher) { $mailingListRepository = EntityHelper::getRepository('Avisota\\Contao:MailingList'); $subscriptionRepository = EntityHelper::getRepository('Avisota\\Contao:Subscription'); $queryBuilder = $mailingListRepository->createQueryBuilder('ml'); $queryBuilder->orderBy('ml.title'); $query = $queryBuilder->getQuery(); /** @var MailingList[] $mailingLists */ $mailingLists = $query->getResult(); $queryBuilder = $subscriptionRepository->createQueryBuilder('s'); $expr = $queryBuilder->expr(); $queryBuilder->select('s')->where($expr->eq('s.recipientType', ':type'))->andWhere($expr->eq('s.recipientId', ':id'))->setParameter('type', 'Avisota\\Contao\\Entity\\Recipient')->setParameter('id', $recipient->getId()); $query = $queryBuilder->getQuery(); /** @var Subscription[] $subscriptions */ $subscriptions = array(); /** @var Subscription $subscription */ foreach ($query->getResult() as $subscription) { $mailingListId = $subscription->getMailingList() ? $subscription->getMailingList()->getId() : 'global'; $subscriptions[$mailingListId] = $subscription; } $label = '<table class="tl_listing subscriptions" style="display: none">'; // global subscription $subscription = isset($subscriptions['global']) ? $subscriptions['global'] : null; $label .= $this->generateSubscriptionRow($recipient, $eventDispatcher, null, $subscription); // mailing list subscription foreach ($mailingLists as $mailingList) { $subscription = isset($subscriptions[$mailingList->getId()]) ? $subscriptions[$mailingList->getId()] : null; $label .= $this->generateSubscriptionRow($recipient, $eventDispatcher, $mailingList, $subscription); } $label .= '</table>'; return $label; }
/** * Return layout used information by message. * * @param EntityInterface $entity The Entity. * * @param EnvironmentInterface $environment The Environment. * * @return string */ protected function getLayoutUsedInformation(EntityInterface $entity, EnvironmentInterface $environment) { $dataProvider = $environment->getDataProvider(); $entityManager = $dataProvider->getEntityManager(); $repository = $entityManager->getRepository('Avisota\\Contao:Message'); $messageResult = $repository->findBy(array('layout' => $entity->getId()), array('subject' => 'ASC')); if (count($messageResult) < 1) { return ''; } $information = ''; foreach ($messageResult as $message) { $information .= "\\n"; $information .= $message->getCategory()->getTitle(); $information .= ' => '; $information .= $message->getSubject(); } return $information; }