public function MailingListImportForm::submitForm in Mailing List 8
Form submission handler.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Overrides FormInterface::submitForm
File
- src/
Form/ MailingListImportForm.php, line 150
Class
- MailingListImportForm
- Mailing list import.
Namespace
Drupal\mailing_list\FormCode
public function submitForm(array &$form, FormStateInterface $form_state) {
$storage = $this->entityTypeManager
->getStorage('mailing_list_subscription');
/** @var \Drupal\mailing_list\SubscriptionInterface[] $existent_subscriptions */
$existent_subscriptions = [];
if ($no_duplicate = $form_state
->getValue('no_duplicate', TRUE)) {
$query = $storage
->getQuery()
->condition('mailing_list', $this->mailingList
->id());
/** @var \Drupal\mailing_list\SubscriptionInterface $subscription */
foreach ($storage
->loadMultiple($query
->execute()) as $subscription) {
$existent_subscriptions[$subscription
->getEmail()] = $subscription;
}
}
$activate = $form_state
->getValue('activate', TRUE);
$activate_existent = !$activate ?: $form_state
->getValue('activate_existent', FALSE);
$uid = $form_state
->getValue('anonymous', TRUE) ? User::getAnonymousUser()
->id() : $this
->currentUser()
->id();
$count = 0;
foreach (preg_split("/\\r\\n|\\r|\\n/", $form_state
->getValue('emails')) as $email) {
if (isset($existent_subscriptions[$email])) {
$subscription = $existent_subscriptions[$email];
if ($activate && $activate_existent && !$subscription
->isActive()) {
$subscription
->setStatus(SubscriptionInterface::ACTIVE)
->save();
$count++;
}
}
else {
$subscription = Subscription::create([
'title' => $email,
'mailing_list' => $this->mailingList
->id(),
'email' => $email,
'status' => $activate ? SubscriptionInterface::ACTIVE : SubscriptionInterface::INACTIVE,
'uid' => $uid,
]);
$existent_subscriptions[$email] = $subscription;
$subscription
->save();
$count++;
}
}
drupal_set_message(!$count ? $this
->t('No subscriptions added.') : $this
->formatPlural($count, '1 subscription added to %label mailing list.', '@count new subscriptions added to %label mailing list.', [
'@count' => $count,
'%label' => $this->mailingList
->label(),
]));
$form_state
->setRedirect('entity.mailing_list.collection');
}