/** * @SuppressWarnings(PHPMD.LongVariable) */ public function injectMenu() { global $container, $TL_LANG; // initialize the entity manager and class loaders $container['doctrine.orm.entityManager']; $beModules = array(); if (class_exists('Avisota\\Contao\\Entity\\MessageCategory')) { try { $messageCategoryRepository = EntityHelper::getRepository('Avisota\\Contao:MessageCategory'); $queryBuilder = $messageCategoryRepository->createQueryBuilder('mc'); $queryBuilder->select('mc')->where('mc.showInMenu=:showInMenu')->setParameter('showInMenu', true)->orderBy('mc.title'); $query = $queryBuilder->getQuery(); /** @var MessageCategory[] $messageCategories */ $messageCategories = $query->getResult(); foreach ($messageCategories as $messageCategory) { $id = $messageCategory->getId(); $icon = $messageCategory->getUseCustomMenuIcon() ? $messageCategory->getMenuIcon() : 'assets/avisota/message/images/newsletter.png'; $title = $messageCategory->getTitle(); $beModules['avisota_category_' . $id] = array('callback' => 'Avisota\\Contao\\Message\\Core\\Backend\\CustomMenu', 'icon' => $icon); $TL_LANG['MOD']['avisota_category_' . $id] = array($title); } } catch (\Exception $e) { // silently ignore } } if (count($beModules)) { $GLOBALS['BE_MOD']['avisota'] = array_merge($beModules, $GLOBALS['BE_MOD']['avisota']); } }
/** * @param DC_General $dc */ public function renderPreviewView(EnvironmentInterface $environment) { /** @var EventDispatcher $eventDispatcher */ $eventDispatcher = $GLOBALS['container']['event-dispatcher']; $eventDispatcher->dispatch(ContaoEvents::SYSTEM_LOAD_LANGUAGE_FILE, new LoadLanguageFileEvent('avisota_message_preview')); $eventDispatcher->dispatch(ContaoEvents::SYSTEM_LOAD_LANGUAGE_FILE, new LoadLanguageFileEvent('orm_avisota_message')); $input = \Input::getInstance(); $messageRepository = EntityHelper::getRepository('Avisota\\Contao:Message'); $messageId = IdSerializer::fromSerialized($input->get('id') ? $input->get('id') : $input->get('pid')); $message = $messageRepository->find($messageId->getId()); if (!$message) { $environment = \Environment::getInstance(); $eventDispatcher->dispatch(ContaoEvents::CONTROLLER_REDIRECT, new RedirectEvent(preg_replace('#&(act=preview|id=[a-f0-9\\-]+)#', '', $environment->request))); } $modules = new \StringBuilder(); /** @var \Avisota\Contao\Message\Core\Send\SendModuleInterface $module */ foreach ($GLOBALS['AVISOTA_SEND_MODULE'] as $className) { $class = new \ReflectionClass($className); $module = $class->newInstance(); $modules->append($module->run($message)); } $context = array('message' => $message, 'modules' => $modules); $template = new \TwigTemplate('avisota/backend/preview', 'html5'); return $template->parse($context); }
/** * @return EntityRepository */ public function getEntityRepository() { if (!$this->entityRepository) { $this->entityRepository = EntityHelper::getRepository($this->entityClassName); } return $this->entityRepository; }
/** * Compile the current element. * * @return void * * @SuppressWarnings(PHPMD.Superglobals) */ protected function compile() { /** @var EventDispatcher $eventDispatcher */ $eventDispatcher = $GLOBALS['container']['event-dispatcher']; $eventDispatcher->dispatch(ContaoEvents::SYSTEM_LOAD_LANGUAGE_FILE, new LoadLanguageFileEvent('avisota_outbox')); $queueRepository = EntityHelper::getRepository('Avisota\\Contao:Queue'); $this->executeQueue($queueRepository); $this->addQueuesToTemplate($queueRepository); }
/** * @return MessageCategory|null */ public static function resolveCategoryFromInput() { $input = \Input::getInstance(); $id = $input->get('id'); $pid = $input->get('pid'); $modelId = null; $parentModelId = null; /** @var MessageCategory $category */ $category = null; /** @var Message $message */ $message = null; /** @var MessageContent $content */ $content = null; if ($id) { $modelId = IdSerializer::fromSerialized($id); } if ($pid) { $parentModelId = IdSerializer::fromSerialized($pid); } // $id or $pid is a category ID if ($modelId && $modelId->getDataProviderName() == 'orm_avisota_message_category') { $repository = EntityHelper::getRepository('Avisota\\Contao:MessageCategory'); $category = $repository->find($modelId->getId()); } else { if ($parentModelId && $parentModelId->getDataProviderName() == 'orm_avisota_message_category') { $repository = EntityHelper::getRepository('Avisota\\Contao:MessageCategory'); $category = $repository->find($parentModelId->getId()); } else { if ($modelId && $modelId->getDataProviderName() == 'orm_avisota_message') { $repository = EntityHelper::getRepository('Avisota\\Contao:Message'); $message = $repository->find($modelId->getId()); $category = $message->getCategory(); } else { if ($parentModelId && $parentModelId->getDataProviderName() == 'orm_avisota_message') { $repository = EntityHelper::getRepository('Avisota\\Contao:Message'); $message = $repository->find($parentModelId->getId()); $category = $message->getCategory(); } else { if ($modelId && $modelId->getDataProviderName() == 'orm_avisota_message_content') { $repository = EntityHelper::getRepository('Avisota\\Contao:MessageContent'); $content = $repository->find($modelId->getId()); $message = $content->getMessage(); $category = $message->getCategory(); } else { if ($parentModelId && $parentModelId->getDataProviderName() == 'orm_avisota_message_content') { $repository = EntityHelper::getRepository('Avisota\\Contao:MessageContent'); $content = $repository->find($parentModelId->getId()); $message = $content->getMessage(); $category = $message->getCategory(); } } } } } } return $category; }
/** * @param array $options * * @return array * @SuppressWarnings(PHPMD.LongVariable) */ public function getMessageCategoryOptions($options = array()) { $messageCategoryRepository = EntityHelper::getRepository('Avisota\\Contao:MessageCategory'); $messageCategories = $messageCategoryRepository->findBy(array(), array('title' => 'ASC')); /** @var \Avisota\Contao\Entity\MessageCategory $messageCategory */ foreach ($messageCategories as $messageCategory) { $options[$messageCategory->getId()] = $messageCategory->getTitle(); } return $options; }
public static function getSalutationGroupOptions() { $arrOptions = array(); $salutationGroupRepository = \Contao\Doctrine\ORM\EntityHelper::getRepository('Avisota\\Contao:SalutationGroup'); /** @var SalutationGroup[] $salutationGroups */ $salutationGroups = $salutationGroupRepository->findAll(); foreach ($salutationGroups as $salutationGroup) { $arrOptions[$salutationGroup->getId()] = $salutationGroup->getTitle(); } return $arrOptions; }
/** * Load multiple mailing lists by ID. * * @param $mailingListIds * * @return array|MailingList[] * @SuppressWarnings(PHPMD.LongVariable) */ protected function loadMailingLists($mailingListIds) { // Todo if the variable $mailingLists in use #$mailingLists = array(); $mailingListRepository = EntityHelper::getRepository('Avisota\\Contao:MailingList'); $queryBuilder = $mailingListRepository->createQueryBuilder('ml'); $expr = $queryBuilder->expr(); $queryBuilder->select('ml')->where($expr->in('ml.id', ':ids'))->setParameter('ids', $mailingListIds); $query = $queryBuilder->getQuery(); /** @var MailingList[] $result */ return $query->getResult(); }
/** * @param CollectSubscriptionListsEvent $event * @SuppressWarnings(PHPMD.LongVariable) * TODO is this method really in use */ public static function collectSubscriptionLists(CollectSubscriptionListsEvent $event) { $mailingListRepository = EntityHelper::getRepository('Avisota\\Contao:MailingList'); /** @var MailingList[] $mailingLists */ $mailingLists = $mailingListRepository->findAll(); $mailingListOptions = array(); foreach ($mailingLists as $mailingList) { $mailingListOptions['mailing_list:' . $mailingList->id()] = $mailingList->getTitle(); } $options = $event->getOptions(); $options['mailing_list'] = $mailingListOptions; }
/** * Compile the current element * @SuppressWarnings(PHPMD.Superglobals) * @SuppressWarnings(PHPMD.LongVariable) */ protected function compile() { if (TL_MODE == 'BE') { return; } if (\Config::get('useAutoItem') && \Input::get('auto_item')) { $messageAlias = \Input::get('auto_item'); } else { $messageAlias = \Input::get('items'); } $repository = EntityHelper::getRepository('Avisota\\Contao:Message'); $queryBuilder = $repository->createQueryBuilder('m'); $expr = $queryBuilder->expr(); $queryBuilder->innerJoin('m.category', 'c')->where($expr->eq(is_numeric($messageAlias) ? 'm.id' : 'm.alias', ':alias'))->andWhere($expr->in('c.id', ':categories'))->andWhere($expr->gt('m.sendOn', 0))->orderBy('m.sendOn', 'DESC')->setParameter('alias', $messageAlias)->setParameter('categories', deserialize($this->avisota_message_categories, true)); $query = $queryBuilder->getQuery(); try { $message = $query->getSingleResult(); $repository = EntityHelper::getRepository('Avisota\\Contao:Layout'); $layout = $repository->find($this->avisota_message_layout); $cells = deserialize($this->avisota_message_cell, true); $contents = array(); /** @var EventDispatcherInterface $eventDispatcher */ $eventDispatcher = $GLOBALS['container']['event-dispatcher']; $event = new CreatePublicEmptyRecipientEvent($message); $eventDispatcher->dispatch(CoreEvents::CREATE_PUBLIC_EMPTY_RECIPIENT, $event); $recipient = $event->getRecipient(); if (!isset($additionalData['recipient'])) { /** @var SynonymizerService $synonymizer */ $synonymizer = $GLOBALS['container']['avisota.recipient.synonymizer']; $additionalData['recipient'] = $synonymizer->expandDetailsWithSynonyms($recipient); } $additionalData['_recipient'] = $recipient; /** @var TagReplacementService $tagReplacementService */ $tagReplacementService = $GLOBALS['container']['avisota.message.tagReplacementEngine']; foreach ($cells as $cell) { /** @var MessageRenderer $renderer */ $renderer = $GLOBALS['container']['avisota.message.renderer']; $content = $renderer->renderCell($message, $cell, $layout); $content = array_map(function ($content) use($tagReplacementService, $additionalData) { return $tagReplacementService->parse($content, $additionalData); }, (array) $content); $contents[$cell] = $content; } $this->Template->message = $message; $this->Template->contents = $contents; } catch (NoResultException $e) { $objHandler = new $GLOBALS['TL_PTY']['error_404'](); $objHandler->generate($GLOBALS['objPage']->id); } }
/** * @SuppressWarnings(PHPMD.ExitExpression) */ public function run() { $messageRepository = EntityHelper::getRepository('Avisota\\Contao:Message'); $messageId = \Input::get('id'); $message = $messageRepository->find($messageId); /** @var \Avisota\Contao\Entity\Message $message */ if (!$message) { header("HTTP/1.0 404 Not Found"); echo '<h1>404 Not Found</h1>'; exit; } $user = \BackendUser::getInstance(); $user->authenticate(); $this->execute($message, $user); }
/** * {@inheritdoc} */ protected function compile() { $repository = EntityHelper::getRepository('Avisota\\Contao:Message'); $queryBuilder = $repository->createQueryBuilder('m'); $expr = $queryBuilder->expr(); $queryBuilder->innerJoin('m.category', 'c')->where($expr->in('c.id', ':categories'))->andWhere($expr->gt('m.sendOn', 0))->orderBy('m.sendOn', 'DESC')->setParameter('categories', deserialize($this->avisota_message_categories, true)); $query = $queryBuilder->getQuery(); $messages = $query->getResult(); $jumpTo = \PageModel::findByPk($this->jumpTo); if (!$jumpTo) { $jumpTo = $GLOBALS['objPage']; } $this->Template->messages = $messages; $this->Template->jumpTo = $jumpTo->row(); }
/** * {@inheritdoc} */ public function renderCell(Message $message, $cell, Layout $layout = null) { $messageContentRepository = EntityHelper::getRepository('Avisota\\Contao:MessageContent'); $queryBuilder = $messageContentRepository->createQueryBuilder('mc'); $queryBuilder->select('mc')->where('mc.message=:message')->andWhere('mc.cell=:cell')->orderBy('mc.sorting')->setParameter('message', $message->getId())->setParameter('cell', $cell); if (TL_MODE != 'BE' && (!defined('BE_USER_LOGGED_IN') || !BE_USER_LOGGED_IN)) { $queryBuilder->andWhere('mc.invisible=:invisible')->setParameter('invisible', false); } $query = $queryBuilder->getQuery(); $contents = $query->getResult(); $elements = array(); foreach ($contents as $content) { $elements[] = $this->renderContent($content, $layout ?: $message->getLayout()); } return $elements; }
/** * @param ModelInterface $objItem * * @return ModelInterface|void * @SuppressWarnings(PHPMD.ExitExpression) */ public function save(ModelInterface $objItem) { $exportSettings = $objItem->getPropertiesAsArray(); $session = \Session::getInstance(); $recipientRepository = EntityHelper::getRepository('Avisota\\Contao:Recipient'); $session->set(static::SESSION_NAME, $exportSettings); switch ($exportSettings['delimiter']) { case 'semicolon': $delimiter = ';'; break; case 'space': $delimiter = ' '; break; case 'tabulator': $delimiter = "\t"; break; case 'linebreak': $delimiter = "\n"; break; default: $delimiter = ','; } switch ($exportSettings['enclosure']) { case 'single': $enclosure = "'"; break; default: $enclosure = '"'; } $length = 0; $csv = tmpfile(); $recipients = $recipientRepository->findAll(); /** @var Recipient $recipient */ foreach ($recipients as $recipient) { $row = $this->generateCSVRows($recipient, $exportSettings); $length += fputcsv($csv, $row, $delimiter, $enclosure); } if (!headers_sent()) { header('Content-Type: text/csv; charset=utf-8'); header('Content-Length: ' . $length); header('Content-Disposition: attachment; filename="export.csv"'); } rewind($csv); fpassthru($csv); fclose($csv); exit; }
/** * @SuppressWarnings(PHPMD.LongVariable) */ public function regenerateDynamics() { $dynamics = array(); // $mailingListRepository = EntityHelper::getRepository('Avisota\Contao:MailingList'); $recipientSourceRepository = EntityHelper::getRepository('Avisota\\Contao:RecipientSource'); // $themeRepository = EntityHelper::getRepository('Avisota\Contao:Theme'); $transportRepository = EntityHelper::getRepository('Avisota\\Contao:Transport'); $queueRepository = EntityHelper::getRepository('Avisota\\Contao:Queue'); /** @var EntityRepository[] $repositories */ $repositories = array($queueRepository, $recipientSourceRepository, $transportRepository); foreach ($repositories as $repository) { $entityName = $repository->getClassName(); $entityName = str_replace('Avisota\\Contao\\Entity\\', '', $entityName); $entityName = lcfirst($entityName); $entities = $repository->findAll(); $dynamics[$entityName] = array(); foreach ($entities as $entity) { /** @noinspection PhpUndefinedMethodInspection */ $dynamics[$entityName][] = array('id' => $entity->id(), 'alias' => $entity->getAlias(), 'title' => $entity->getTitle()); } } $queryBuilder = EntityHelper::getEntityManager()->createQueryBuilder(); $query = $queryBuilder->select('c')->from('Avisota\\Contao:MessageCategory', 'c')->where('c.showInMenu=:showInMenu')->andWhere('c.boilerplates=:boilerplates')->setParameter(':showInMenu', true)->setParameter(':boilerplates', false)->orderBy('c.title')->getQuery(); $categories = $query->getResult(); $dynamics['category'] = array(); /** @var MessageCategory $category */ foreach ($categories as $category) { /** @noinspection PhpUndefinedMethodInspection */ $dynamics['category'][] = array('id' => $category->id(), 'label' => $category->getTitle(), 'icon' => $category->getUseCustomMenuIcon() ? $category->getMenuIcon() : false); } $array = var_export($dynamics, true); $fileContents = <<<EOF <?php return {$array}; EOF; $tempFile = new \File('system/modules/avisota/config/dynamics.php'); $tempFile->write($fileContents); $tempFile->close(); }
public function run(Request $request) { $queueRepository = \Contao\Doctrine\ORM\EntityHelper::getRepository('Avisota\\Contao:Queue'); $queueId = $request->get('id'); $queue = $queueRepository->find($queueId); /** @var \Avisota\Contao\Entity\Queue $queue */ if (!$queue) { header("HTTP/1.0 404 Not Found"); echo '<h1>404 Not Found</h1>'; exit; } $user = \BackendUser::getInstance(); $user->authenticate(); try { return $this->execute($request, $queue, $user); } catch (\Exception $exception) { $response = new JsonResponse(array('error' => sprintf('%s in %s:%d', $exception->getMessage(), $exception->getFile(), $exception->getLine())), 500); $response->prepare($request); return $response; } }
public function addHeader($add, $dc) { // TODO refactore for DCG return; $newsletterCategoryRepository = EntityHelper::getRepository('Avisota\\Contao:MessageCategory'); /** @var \Avisota\Contao\Entity\MessageCategory $newsletterCategory */ $newsletterCategory = $newsletterCategoryRepository->find($dc->id); $key = $GLOBALS['TL_LANG']['orm_avisota_message_category']['recipients'][0]; if (!$newsletterCategory->getBoilerplates() && $newsletterCategory->getRecipientsMode() != 'byMessage') { $fallback = $newsletterCategory->getRecipientsMode() == 'byMessageOrCategory'; /** @var RecipientSource $recipientSource */ $recipientSource = $newsletterCategory->getRecipients(); if ($recipientSource) { $add[$key] = sprintf('<a href="contao/main.php?do=avisota_recipient_source&act=edit&id=%d">%s</a>%s', $recipientSource->getId(), $recipientSource->getTitle(), $fallback ? ' ' . $GLOBALS['TL_LANG']['orm_avisota_message']['fallback'] : ''); } else { unset($add[$key]); } } else { unset($add[$key]); } $key = $GLOBALS['TL_LANG']['orm_avisota_message_category']['layout'][0]; if (!$newsletterCategory->getBoilerplates() && $newsletterCategory->getLayoutMode() != 'byMessage') { $add[$key] = $newsletterCategory->getLayout()->getTitle(); if ($newsletterCategory->getLayoutMode() == 'byMessageOrCategory') { $add[$key] .= ' ' . $GLOBALS['TL_LANG']['orm_avisota_message']['fallback']; } } else { unset($add[$key]); } $key = $GLOBALS['TL_LANG']['orm_avisota_message_category']['queue'][0]; if (!$newsletterCategory->getBoilerplates() && $newsletterCategory->getQueueMode() != 'byMessage') { $add[$key] = $newsletterCategory->getQueue()->getTitle(); if ($newsletterCategory->getQueueMode() == 'byMessageOrCategory') { $add[$key] .= ' ' . $GLOBALS['TL_LANG']['orm_avisota_message']['fallback']; } } else { unset($add[$key]); } return $add; }
public function handleAction(ActionEvent $event) { $environment = $event->getEnvironment(); if ($environment->getDataDefinition()->getName() != 'orm_avisota_queue') { return; } $action = $event->getAction(); if ($action->getName() == 'clear') { $input = $environment->getInputProvider(); $id = IdSerializer::fromSerialized($input->getParameter('id')); $repository = EntityHelper::getRepository('Avisota\\Contao:Queue'); /** @var \Avisota\Contao\Entity\Queue $queueData */ $queueData = $repository->find($id->getId()); /** @var QueueInterface $queue */ $queue = $GLOBALS['container'][sprintf('avisota.queue.%s', $queueData->getAlias())]; $queue->execute(new NullTransport()); $message = new AddMessageEvent(sprintf($GLOBALS['TL_LANG']['orm_avisota_queue']['queueCleared'], $queueData->getTitle()), AddMessageEvent::TYPE_CONFIRM); $event->getDispatcher()->dispatch(ContaoEvents::MESSAGE_ADD, $message); $redirect = new RedirectEvent('contao/main.php?do=avisota_queue&ref=' . TL_REFERER_ID); $event->getDispatcher()->dispatch(ContaoEvents::CONTROLLER_REDIRECT, $redirect); } }
public function run() { global $container; $general = new \ContaoCommunityAlliance\DcGeneral\DC_General('orm_avisota_message'); $environment = $general->getEnvironment(); $translator = $environment->getTranslator(); /** @var \Symfony\Component\EventDispatcher\EventDispatcher $eventDispatcher */ $eventDispatcher = $GLOBALS['container']['event-dispatcher']; $messageRepository = \Contao\Doctrine\ORM\EntityHelper::getRepository('Avisota\\Contao:Message'); $messageId = \Input::get('id'); /** @var \Avisota\Contao\Entity\Message $message */ $message = $messageRepository->find($messageId); if (!$message) { header("HTTP/1.0 404 Not Found"); echo '<h1>404 Not Found</h1>'; exit; } $GLOBALS['TL_LANGUAGE'] = $message->getLanguage(); $event = new \Avisota\Contao\Core\Event\CreateFakeRecipientEvent($message); $eventDispatcher->dispatch(\Avisota\Contao\Core\CoreEvents::CREATE_FAKE_RECIPIENT, $event); $recipient = $event->getRecipient(); if ($message->getCategory()->getViewOnlinePage()) { // Fixme can rmove this? $event = new LoadLanguageFileEvent('avisota_message'); $eventDispatcher->dispatch(ContaoEvents::SYSTEM_LOAD_LANGUAGE_FILE, $event); $url = sprintf($translator->translate('viewOnline', 'avisota_message'), sprintf('%ssystem/modules/avisota-message/web/preview.php?id=%s', \Environment::get('base'), $message->getId())); } else { $url = false; } $additionalData = array('view_online_link' => $url); /** @var \Avisota\Contao\Message\Core\Renderer\MessageRendererInterface $renderer */ $renderer = $container['avisota.message.renderer']; $messageTemplate = $renderer->renderMessage($message); $messagePreview = $messageTemplate->renderPreview($recipient, $additionalData); header('Content-Type: ' . $messageTemplate->getContentType() . '; charset=' . $messageTemplate->getContentEncoding()); header('Content-Disposition: inline; filename="' . $messageTemplate->getContentName() . '"'); echo $messagePreview; exit; }
/** * Return the "toggle visibility" button * * @param array * @param string * @param string * @param string * @param string * @param string * * @return string * @SuppressWarnings(PHPMD.ShortVariable) * @SuppressWarnings(PHPMD.LongVariable) */ public function toggleIcon($row, $href, $label, $title, $icon, $attributes) { $subscriptionRepository = EntityHelper::getRepository('Avisota\\Contao:Subscription'); /** @var \Avisota\Contao\Entity\Subscription $subscription */ if (strlen(\Input::get('tid'))) { $id = \Input::get('tid'); $confirmed = \Input::get('state') == 1; /** @var \Avisota\Contao\Entity\Subscription $subscription */ $subscription = $subscriptionRepository->find($id); $subscription->setConfirmed($confirmed); $entityManager = EntityHelper::getEntityManager(); $entityManager->persist($subscription); $entityManager->flush($subscription); $this->redirect($this->getReferer()); } $subscription = $subscriptionRepository->findOneBy(array('recipient' => $row['recipient'], 'list' => $row['list'])); $href .= '&tid=' . $subscription->id() . '&state=' . ($row['confirmed'] ? '' : 1); if (!$row['confirmed']) { $icon = 'invisible.gif'; } return '<a href="' . $this->addToUrl($href) . '" title="' . specialchars($title) . '"' . $attributes . '>' . $this->generateImage($icon, $label) . '</a> '; }
/** * @param $subscriptions * @param $recipient * @SuppressWarnings(PHPMD.CamelCaseVariableName) */ protected function subscribeConfirmationMessage($subscriptions, $recipient) { if (!$this->avisota_subscribe_confirmation_message) { return; } global $container, $objPage, $TL_LANG; /** @var EventDispatcher $eventDispatcher */ $eventDispatcher = $container['event-dispatcher']; /** @var TransportInterface $transport */ $transport = $container['avisota.transport.default']; $messageRepository = EntityHelper::getRepository('Avisota\\Contao:Message'); $message = $messageRepository->find($this->avisota_subscribe_confirmation_message); if ($message) { /** @var MessageRendererInterface $renderer */ $renderer = $container['avisota.message.renderer']; $pageDetails = $objPage->row(); if ($this->avisota_subscribe_activation_page) { $event = new GetPageDetailsEvent($this->avisota_subscribe_activation_page); $eventDispatcher->dispatch(ContaoEvents::CONTROLLER_GET_PAGE_DETAILS, $event); $pageDetails = $event->getPageDetails(); } $event = new GenerateFrontendUrlEvent($pageDetails); $eventDispatcher->dispatch(ContaoEvents::CONTROLLER_GENERATE_FRONTEND_URL, $event); $query = array('token' => array()); foreach ($subscriptions as $subscription) { $query['token'][] = $subscription->getActivationToken(); } $base = \Environment::get('base'); $url = $base . $event->getUrl() . '?' . http_build_query($query); $data = array('link' => array('url' => $url, 'text' => $TL_LANG['fe_avisota_subscription']['confirm']), 'subscriptions' => $subscriptions); $template = $renderer->renderMessage($message); $mail = $template->render($recipient, $data); $transport->send($mail); } }
/** * @param array $options * * @return array */ public function getLayoutOptions($options = array()) { $layoutRepository = EntityHelper::getRepository('Avisota\\Contao:Layout'); $layouts = $layoutRepository->findBy(array(), array('title' => 'ASC')); /** @var \Avisota\Contao\Entity\Layout $layout */ foreach ($layouts as $layout) { $options[$layout->getTheme()->getTitle()][$layout->getId()] = $layout->getTitle(); } return $options; }
/** * @param array $options * * @return array */ public function getRecipientOptions($options = array()) { $recipientRepository = EntityHelper::getRepository('Avisota\\Contao:Recipient'); $recipients = $recipientRepository->findBy(array(), array('forename' => 'ASC', 'surname' => 'ASC', 'email' => 'ASC')); /** @var \Avisota\Contao\Entity\Recipient $recipient */ foreach ($recipients as $recipient) { if ($recipient->getForename() && $recipient->getSurname()) { $options[$recipient->getId()] = sprintf('%s, %s <%s>', $recipient->getSurname(), $recipient->getForename(), $recipient->getEmail()); } else { if ($recipient->getForename()) { $options[$recipient->getId()] = sprintf('%s <%s>', $recipient->getForename(), $recipient->getEmail()); } else { if ($recipient->getSurname()) { $options[$recipient->getId()] = sprintf('%s <%s>', $recipient->getSurname(), $recipient->getEmail()); } else { $options[$recipient->getId()] = $recipient->getEmail(); } } } } return $options; }
public function handleListAction(EnvironmentInterface $environment) { $input = $environment->getInputProvider(); $id = IdSerializer::fromSerialized($input->getParameter('id')); $repository = EntityHelper::getRepository('Avisota\\Contao:RecipientSource'); /** @var \Avisota\Contao\Entity\RecipientSource $recipientSourceEntity */ $recipientSourceEntity = $repository->find($id->getId()); /** @var RecipientSourceInterface $recipientSource */ $recipientSource = $GLOBALS['container'][sprintf('avisota.recipientSource.%s', $recipientSourceEntity->getId())]; if ($input->getValue('page')) { /** @var EventDispatcher $eventDispatcher */ $eventDispatcher = $GLOBALS['container']['event-dispatcher']; $addToUrlEvent = new AddToUrlEvent('page=' . (int) $input->getValue('page')); $eventDispatcher->dispatch(ContaoEvents::BACKEND_ADD_TO_URL, $addToUrlEvent); $redirectEvent = new RedirectEvent($addToUrlEvent->getUrl()); $eventDispatcher->dispatch(ContaoEvents::CONTROLLER_REDIRECT, $redirectEvent); } $total = $recipientSource->countRecipients(); $page = $input->getParameter('page') ?: 0; $pages = ceil($total / 30); $recipients = $recipientSource->getRecipients(30, $page * 30); $template = new \TwigBackendTemplate('avisota/backend/recipient_source_list'); $template->total = $total; $template->page = $page; $template->pages = $pages; $template->recipients = $recipients; return $template->parse(); }
/** * @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; }
public static function getAvisotaMessage($intMessageId) { if ($intMessageId) { $messageRepository = EntityHelper::getRepository('Avisota\\Contao:Message'); return $messageRepository->find($intMessageId); } }
public function getTransportOptions($options = array()) { if (!is_array($options) && !$options instanceof \ArrayAccess) { $options = array(); } $transportRepository = EntityHelper::getRepository('Avisota\\Contao:Transport'); $transports = $transportRepository->findBy(array(), array('title' => 'ASC')); /** @var \Avisota\Contao\Entity\Transport $transport */ foreach ($transports as $transport) { $options[$transport->getId()] = $transport->getTitle(); } return $options; }
/** * @param array $options * * @return array|\ArrayAccess */ public function getMessageLayoutOptions($options = array()) { if (!is_array($options) && !$options instanceof \ArrayAccess) { $options = array(); } $repository = EntityHelper::getRepository('Avisota\\Contao:Layout'); $queryBuilder = $repository->createQueryBuilder('l'); $queryBuilder->select('l')->orderBy('l.title'); $query = $queryBuilder->getQuery(); /** @var Layout[] $layouts */ $layouts = $query->getResult(); foreach ($layouts as $layout) { $options[$layout->getId()] = $layout->getTitle(); } return $options; }
/** * Create the transport service. * * @return void * * @SuppressWarnings(PHPMD.Superglobals) */ protected function createTransportService() { global $container; $factory = $this; $verbose = TL_MODE == 'BE'; $session = \Session::getInstance(); try { $transportRepository = EntityHelper::getRepository('Avisota\\Contao:Transport'); /** @var Transport[] $transports */ $transports = $transportRepository->findAll(); foreach ($transports as $transport) { $container[sprintf('avisota.transport.%s', $transport->getId())] = $container->share(function ($container) use($transport, $factory) { return $factory->createTransport($transport); }); $container[sprintf('avisota.transport.%s', $transport->getAlias())] = function ($container) use($transport) { return $container[sprintf('avisota.transport.%s', $transport->getId())]; }; } $container['avisota.transport.default'] = function ($container) { return $container[sprintf('avisota.transport.%s', $GLOBALS['TL_CONFIG']['avisota_default_transport'])]; }; } catch (\Exception $e) { $message = 'Could not create avisota transport service: ' . $e->getMessage(); if ($e instanceof \ReflectionException) { $message .= PHP_EOL . 'You may need to run the database update!'; } if ($verbose) { $tlRaw = $session->get('TL_RAW'); $tlRaw[] = sprintf('<p class="tl_error">%s</p>', nl2br($message)); $session->set('TL_RAW', $tlRaw); } log_message($message . PHP_EOL . $e->getTraceAsString()); } }
/** * @param \Pimple $container */ public function init($container) { try { // preserve object initialisation order if (TL_MODE == 'FE') { \FrontendUser::getInstance(); } else { \BackendUser::getInstance(); } $factory = $this; // initialize the entity manager and class loaders $container['doctrine.orm.entityManager']; $verbose = TL_MODE == 'BE'; if (class_exists('Avisota\\Contao\\Entity\\RecipientSource')) { try { $recipientSourceRepository = EntityHelper::getRepository('Avisota\\Contao:RecipientSource'); /** @var RecipientSource[] $recipientSources */ $recipientSources = $recipientSourceRepository->findAll(); foreach ($recipientSources as $recipientSource) { $container[sprintf('avisota.recipientSource.%s', $recipientSource->getId())] = $container->share(function ($container) use($recipientSource, $factory) { return $factory->createRecipientSource($recipientSource); }); $container[sprintf('avisota.recipientSource.%s', $recipientSource->getAlias())] = function ($container) use($recipientSource) { return $container[sprintf('avisota.recipientSource.%s', $recipientSource->getId())]; }; } } catch (\Exception $e) { $message = 'Could not create avisota recipient source service:' . PHP_EOL . $e->getMessage(); if ($e instanceof \ReflectionException) { $message .= PHP_EOL . 'You may need to run the database update!'; } if ($verbose) { $_SESSION['TL_RAW'][] = sprintf('<p class="tl_error">%s</p>', nl2br($message)); } log_message($message . PHP_EOL . $e->getTraceAsString()); } } if (class_exists('Avisota\\Contao\\Entity\\Queue')) { try { $queueRepository = EntityHelper::getRepository('Avisota\\Contao:Queue'); /** @var Queue[] $queues */ $queues = $queueRepository->findAll(); foreach ($queues as $queue) { $container[sprintf('avisota.queue.%s', $queue->getId())] = $container->share(function ($container) use($queue, $factory) { return $factory->createQueue($queue); }); $container[sprintf('avisota.queue.%s', $queue->getAlias())] = function ($container) use($queue) { return $container[sprintf('avisota.queue.%s', $queue->getId())]; }; } } catch (\Exception $e) { $message = 'Could not create avisota queue service: ' . $e->getMessage(); if ($e instanceof \ReflectionException) { $message .= PHP_EOL . 'You may need to run the database update!'; } if ($verbose) { $_SESSION['TL_RAW'][] = sprintf('<p class="tl_error">%s</p>', nl2br($message)); } log_message($message . PHP_EOL . $e->getTraceAsString()); } } if (class_exists('Avisota\\Contao\\Entity\\Transport')) { try { $transportRepository = EntityHelper::getRepository('Avisota\\Contao:Transport'); /** @var Transport[] $transports */ $transports = $transportRepository->findAll(); foreach ($transports as $transport) { $container[sprintf('avisota.transport.%s', $transport->getId())] = $container->share(function ($container) use($transport, $factory) { return $factory->createTransport($transport); }); $container[sprintf('avisota.transport.%s', $transport->getAlias())] = function ($container) use($transport) { return $container[sprintf('avisota.transport.%s', $transport->getId())]; }; } $container['avisota.transport.default'] = function ($container) { return $container[sprintf('avisota.transport.%s', $GLOBALS['TL_CONFIG']['avisota_default_transport'])]; }; } catch (\Exception $e) { $message = 'Could not create avisota transport service: ' . $e->getMessage(); if ($e instanceof \ReflectionException) { $message .= PHP_EOL . 'You may need to run the database update!'; } if ($verbose) { $_SESSION['TL_RAW'][] = sprintf('<p class="tl_error">%s</p>', nl2br($message)); } log_message($message . PHP_EOL . $e->getTraceAsString()); } } } catch (\Exception $e) { $message = 'Could not create avisota services: ' . $e->getMessage(); if ($e instanceof \ReflectionException) { $message .= PHP_EOL . 'You may need to run the database update!'; } log_message($message . PHP_EOL . $e->getTraceAsString()); } }