function SiteConfigureForm::submitForm

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php \Drupal\Core\Installer\Form\SiteConfigureForm::submitForm()
  2. 8.9.x core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php \Drupal\Core\Installer\Form\SiteConfigureForm::submitForm()
  3. 11.x core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php \Drupal\Core\Installer\Form\SiteConfigureForm::submitForm()

Overrides ConfigFormBase::submitForm

File

core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php, line 293

Class

SiteConfigureForm
Provides the site configuration form.

Namespace

Drupal\Core\Installer\Form

Code

public function submitForm(array &$form, FormStateInterface $form_state) {
  global $install_state;
  if (empty($install_state['config_install_path'])) {
    $this->config('system.site')
      ->set('name', (string) $form_state->getValue('site_name'))
      ->set('mail', (string) $form_state->getValue('site_mail'))
      ->save(TRUE);
    $this->config('system.date')
      ->set('timezone.default', (string) $form_state->getValue('date_default_timezone'))
      ->save(TRUE);
  }
  $account_values = $form_state->getValue('account');
  // Enable update.module if this option was selected.
  $update_status_module = $form_state->getValue('enable_update_status_module');
  if (empty($install_state['config_install_path']) && $update_status_module) {
    $this->moduleInstaller
      ->install([
      'update',
    ]);
    // Add the site maintenance account's email address to the list of
    // addresses to be notified when updates are available, if selected.
    $email_update_status_emails = $form_state->getValue('enable_update_status_emails');
    if ($email_update_status_emails) {
      // Reset the configuration factory so it is updated with the new module.
      $this->resetConfigFactory();
      $this->config('update.settings')
        ->set('notification.emails', [
        $account_values['mail'],
      ])
        ->save(TRUE);
    }
  }
  // We created user 1 with placeholder values. Let's save the real values.
  /** @var \Drupal\user\UserInterface $account */
  $account = $this->userStorage
    ->load(1);
  $account->init = $account->mail = $account_values['mail'];
  $account->roles = $account->getRoles();
  $account->activate();
  $account->timezone = $form_state->getValue('date_default_timezone');
  $account->pass = $account_values['pass'];
  $account->name = $account_values['name'];
  // Ensure user 1 has an administrator role if one exists.
  /** @var \Drupal\user\RoleInterface[] $admin_roles */
  $admin_roles = $this->getAdminRoles();
  if (count(array_intersect($account->getRoles(), array_keys($admin_roles))) === 0) {
    if (count($admin_roles) > 0) {
      foreach ($admin_roles as $role) {
        $account->addRole($role->id());
      }
    }
    elseif ($this->superUserAccessPolicy === FALSE) {
      $this->messenger()
        ->addWarning($this->t('The user %username does not have administrator access. For more information, see the documentation on <a href="@secure-user-1-docs">securing the admin super user</a>.', [
        '%username' => $account->getDisplayName(),
        '@secure-user-1-docs' => 'https://www.drupal.org/docs/administering-a-drupal-site/security-in-drupal/securing-the-admin-super-user-1#s-disable-the-super-user-access-policy',
      ]));
    }
  }
  $account->save();
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.