/**
  * @param RecipientEntity   $recipient
  * @param Subscription|null $subscription
  * @param MailingList|null  $mailingList
  *
  * @return string
  * @SuppressWarnings(PHPMD.CamelCaseVariableName)
  */
 protected function generateSubscriptionSubscribeConfirmLink(RecipientEntity $recipient, Subscription $subscription = null, MailingList $mailingList = null)
 {
     if ($subscription) {
         return '';
     }
     global $TL_LANG, $container;
     $eventDispatcher = $container['event-dispatcher'];
     $title = $mailingList ? $TL_LANG['orm_avisota_recipient']['subscribe_confirmed'] : $TL_LANG['orm_avisota_recipient']['subscribe_globally_confirmed'];
     $event = new GenerateHtmlEvent('copychilds.gif', $title, sprintf('title="%s"', specialchars($title)));
     $eventDispatcher->dispatch(ContaoEvents::IMAGE_GET_HTML, $event);
     $icon = $event->getHtml();
     return sprintf(' <a href="contao/main.php?do=avisota_recipients' . '&act=subscribe-confirmed&recipient=%s&mailing-list=%s&ref=%s">%s</a>', $recipient->getId(), $mailingList ? $mailingList->getId() : 'global', defined('TL_REFERER_ID') ? TL_REFERER_ID : '', $icon);
 }
 /**
  * Find existing subscription for a recipient.
  *
  * @param SubscriptionRecipientInterface $recipient   The recipient instance.
  * @param MailingList                    $mailingList One or more mailing lists to check their blacklist status.
  *                                                    To get the global subscription pass null.
  *                                                    To get the mailing list subscription
  *                                                    pass a mailing list instance.
  *
  * @return Subscription[]
  */
 public function getSubscription(SubscriptionRecipientInterface $recipient, MailingList $mailingList = null)
 {
     $recipientType = get_class($recipient);
     $recipientId = $recipient->getId();
     $repository = $this->entityManager->getRepository('Avisota\\Contao:Subscription');
     $queryBuilder = $repository->createQueryBuilder('s');
     $expr = $queryBuilder->expr();
     $queryBuilder->where($expr->eq('s.recipientType', ':recipientType'))->andWhere($expr->eq('s.recipientId', ':recipientId'))->setParameter('recipientType', $recipientType)->setParameter('recipientId', $recipientId);
     if ($mailingList) {
         $queryBuilder->andWhere($expr->eq('s.mailingList', ':mailingList'))->setParameter('mailingList', $mailingList->getId());
     } else {
         $queryBuilder->andWhere($expr->isNull('s.mailingList'));
     }
     $query = $queryBuilder->getQuery();
     try {
         return $query->getSingleResult();
     } catch (NoResultException $e) {
         return null;
     }
 }