/** * {@inheritdoc} */ public function getChangesList(SubscriberInterface $subscriber, $changes = NULL, $langcode = NULL) { if (empty($langcode)) { $language = $this->languageManager->getCurrentLanguage(); $langcode = $language->getId(); } if (empty($changes)) { $changes = $subscriber->getChanges(); } $changes_list = array(); foreach ($changes as $newsletter_id => $action) { $subscribed = $subscriber->isSubscribed($newsletter_id); // Get text for each possible combination. if ($action == 'subscribe' && !$subscribed) { $line = $this->config->get('subscription.confirm_combined_line_subscribe_unsubscribed'); } elseif ($action == 'subscribe' && $subscribed) { $line = $this->config->get('subscription.confirm_combined_line_subscribe_subscribed'); } elseif ($action == 'unsubscribe' && !$subscribed) { $line = $this->config->get('subscription.confirm_combined_line_unsubscribe_unsubscribed'); } elseif ($action == 'unsubscribe' && $subscribed) { $line = $this->config->get('subscription.confirm_combined_line_unsubscribe_subscribed'); } $newsletter_context = array('simplenews_subscriber' => $subscriber, 'newsletter' => simplenews_newsletter_load($newsletter_id)); $changes_list[$newsletter_id] = $this->token->replace($line, $newsletter_context, array('sanitize' => FALSE)); } return $changes_list; }
/** * {@inheritdoc} */ public function sendCombinedConfirmation(SubscriberInterface $subscriber) { $params['from'] = $this->getFrom(); $params['context']['simplenews_subscriber'] = $subscriber; // Send multiple if there is more than one change for this subscriber // single otherwise. $use_combined = $this->config->get('subscription.use_combined'); $changes = $subscriber->getChanges(); if (count($changes) > 1 && $use_combined != 'never' || $use_combined == 'always') { $key = 'subscribe_combined'; $this->mailManager->mail('simplenews', $key, $subscriber->getMail(), $subscriber->getLangcode(), $params, $params['from']['address']); } else { foreach ($changes as $newsletter_id => $key) { $params['context']['newsletter'] = simplenews_newsletter_load($newsletter_id); $this->mailManager->mail('simplenews', $key, $subscriber->getMail(), $subscriber->getLangcode(), $params, $params['from']['address']); } } }