Пример #1
0
 public function previewAction()
 {
     $id = $this->params()->fromRoute('id', 0);
     $viewModel = new NewsletterModel(null, ['parse_images' => true]);
     $viewModel->setTemplate('template/' . $id);
     return $viewModel;
 }
Пример #2
0
 /**
  * @param int $id
  * @return int
  * @throws UthandoException
  */
 public function sendMessage($id)
 {
     $message = $this->getById($id);
     if ($message->isSent()) {
         throw new UthandoException('Cannot send message out again.');
     }
     // we need to set the server url before add to mail queue
     $serverUrlHelper = $this->getService('ViewHelperManager')->get('ServerUrl');
     $basePathUrlHelper = $this->getService('ViewHelperManager')->get('BasePath');
     $serverUrl = $serverUrlHelper() . $basePathUrlHelper();
     $iniReader = new IniReader();
     $iniWriter = new IniWriter();
     $params = $iniReader->fromString($message->getParams());
     $params['server_url'] = $serverUrl;
     $message->setParams($iniWriter->toString($params));
     $viewModel = new NewsletterModel();
     $viewModel->setTemplate('message/' . $message->getMessageId());
     /* @var $subscriptionMapper SubscriptionMapper */
     $subscriptionMapper = $this->getService('UthandoNewsletterSubscription')->getMapper();
     $subscriptions = $subscriptionMapper->getSubscriptionsByNewsletterId($message->getNewsletterId());
     $subscriberIds = [];
     /* @var $subscription SubscriptionModel */
     foreach ($subscriptions as $subscription) {
         $subscriberIds[] = $subscription->getSubscriberId();
     }
     /* @var $subscriberMapper SubscriberMapper */
     $subscriberMapper = $this->getService('UthandoNewsletterSubscriber')->getMapper();
     $subscribers = $subscriberMapper->getSubscribersById($subscriberIds);
     $count = 0;
     /* @var $subscriber SubscriberModel */
     foreach ($subscribers as $subscriber) {
         $this->getEventManager()->trigger('mail.queue', $this, ['recipient' => ['name' => $subscriber->getName(), 'address' => $subscriber->getEmail()], 'layout' => $viewModel, 'body' => null, 'subject' => $message->getSubject(), 'renderer' => 'ViewNewsletterRenderer', 'transport' => 'default']);
         $count++;
     }
     // set message as sent and save to database.
     $message->setDateSent(null)->setSent(true);
     $this->save($message);
     return $count;
 }