You are here

public function SubscriberExportForm::getEmails in Simplenews 3.x

Same name and namespace in other branches
  1. 8.2 src/Form/SubscriberExportForm.php \Drupal\simplenews\Form\SubscriberExportForm::getEmails()
  2. 8 src/Form/SubscriberExportForm.php \Drupal\simplenews\Form\SubscriberExportForm::getEmails()

Implement getEmails($states, $subscribed, $newsletters)

1 call to SubscriberExportForm::getEmails()
SubscriberExportForm::buildForm in src/Form/SubscriberExportForm.php
Form constructor.

File

src/Form/SubscriberExportForm.php, line 25

Class

SubscriberExportForm
Do a mass subscription for a list of email addresses.

Namespace

Drupal\simplenews\Form

Code

public function getEmails($states, $subscribed, $newsletters) {

  // Build conditions for active state, subscribed state and newsletter
  // selection.
  if (isset($states['active'])) {
    $condition_active[] = SubscriberInterface::ACTIVE;
  }
  if (isset($states['inactive'])) {
    $condition_active[] = SubscriberInterface::INACTIVE;
  }
  if (isset($subscribed['subscribed'])) {
    $condition_subscribed[] = SIMPLENEWS_SUBSCRIPTION_STATUS_SUBSCRIBED;
  }
  if (isset($subscribed['unsubscribed'])) {
    $condition_subscribed[] = SIMPLENEWS_SUBSCRIPTION_STATUS_UNSUBSCRIBED;
  }
  if (isset($subscribed['unconfirmed'])) {
    $condition_subscribed[] = SIMPLENEWS_SUBSCRIPTION_STATUS_UNCONFIRMED;
  }

  // Get emails from the database.
  $query = \Drupal::entityQuery('simplenews_subscriber')
    ->condition('status', $condition_active, 'IN')
    ->condition('subscriptions.status', $condition_subscribed, 'IN')
    ->condition('subscriptions.target_id', (array) $newsletters, 'IN');
  $subscriber_ids = $query
    ->execute();
  $mails = [];
  foreach ($subscriber_ids as $id) {
    $subscriber = Subscriber::load($id);
    $mails[] = $subscriber
      ->getMail();
  }

  // Return comma separated array of emails or empty text.
  if ($mails) {
    return implode(", ", $mails);
  }
  return $this
    ->t('No addresses were found.');
}