/** * @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; } }