/**
  * @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;
 }
Esempio n. 2
0
 /**
  * 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;
 }