You are here

function reroute_email_update_8001 in Reroute Email 2.x

Same name and namespace in other branches
  1. 8 reroute_email.install \reroute_email_update_8001()

Implements hook_update_N().

Now we have a separate fields for `Rerouting email addresses` and `Allowed email addresses`. Previously all emails was rerouted to the first email from `Rerouting email addresses`.

File

./reroute_email.install, line 47
Reroute Email installation and upgrade tasks.

Code

function reroute_email_update_8001() {

  // A map of changed config names.
  $old = [
    REROUTE_EMAIL_ENABLE => 'reroute_email_enable',
    REROUTE_EMAIL_ADDRESS => 'reroute_email_address',
    REROUTE_EMAIL_DESCRIPTION => 'reroute_email_enable_message',
  ];
  $config = \Drupal::configFactory()
    ->getEditable('reroute_email.settings');

  // Do not update values if the user sets them manually already.
  // `Allowed list addresses` is a new variable, so it couldn't exist before.
  if (NULL !== $config
    ->get(REROUTE_EMAIL_ALLOWLIST)) {
    return t('The setting form was updated manually already. This update is to be skipped.');
  }

  // Update the list of allowed email addresses.
  $addresses = $config
    ->get($old[REROUTE_EMAIL_ADDRESS]);
  $config
    ->set(REROUTE_EMAIL_ALLOWLIST, $addresses);

  // Update rerouting email addresses value.
  $addresses = reroute_email_split_string($addresses);
  $config
    ->set(REROUTE_EMAIL_ADDRESS, !empty($addresses[0]) ? $addresses[0] : '');

  // Update other configs to new names.
  $config
    ->set(REROUTE_EMAIL_ENABLE, $config
    ->get($old[REROUTE_EMAIL_ENABLE]));
  $config
    ->set(REROUTE_EMAIL_DESCRIPTION, $config
    ->get($old[REROUTE_EMAIL_DESCRIPTION]));

  // Remove old configs.
  $config
    ->clear($old[REROUTE_EMAIL_ENABLE]);
  $config
    ->clear($old[REROUTE_EMAIL_ADDRESS]);
  $config
    ->clear($old[REROUTE_EMAIL_DESCRIPTION]);

  // Save configuration values.
  $config
    ->save();

  // Return a message to the user.
  return t('Reroute email module updates completed successfully. Please visit configuration page to check.');
}