You are here

public function SiteConfigureForm::buildForm in Configuration installer 8

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides FormInterface::buildForm

File

src/Form/SiteConfigureForm.php, line 102

Class

SiteConfigureForm
Updates the user 1 account.

Namespace

Drupal\config_installer\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $form['#title'] = $this
    ->t('Configure site');

  // Warn about settings.php permissions risk.
  $settings_file = $this->sitePath . '/settings.php';

  // Check that $_POST is empty so we only show this message when the form is
  // first displayed, not on the next page after it is submitted. We do not
  // want to repeat it multiple times because it is a general warning that is
  // not related to the rest of the installation process; it would also be
  // especially out of place on the last page of the installer, where it would
  // distract from the message that the Drupal installation has completed
  // successfully.
  $post_params = $this
    ->getRequest()->request
    ->all();
  if (empty($post_params)) {
    $original_profile_name = _config_installer_get_original_install_profile();
    $need_to_write_settings = $original_profile_name !== Settings::get('install_profile');

    // In Drupal 8.3.x it is not necessary to have an install profile written
    // to settings.php.
    if (version_compare(\Drupal::VERSION, '8.3', '>=') && !is_writable(\Drupal::service('site.path') . '/settings.php')) {
      \Drupal::service('kernel')
        ->invalidateContainer();
      $need_to_write_settings = FALSE;
    }
    if ($need_to_write_settings) {
      $settings['settings']['install_profile'] = (object) [
        'value' => $original_profile_name,
        'required' => TRUE,
      ];
      drupal_rewrite_settings($settings);
    }
    if (!drupal_verify_install_file($this->root . '/' . $settings_file, FILE_EXIST | FILE_READABLE | FILE_NOT_WRITABLE) || !drupal_verify_install_file($this->root . '/' . $this->sitePath, FILE_NOT_WRITABLE, 'dir')) {
      drupal_set_message(t('All necessary changes to %dir and %file have been made, so you should remove write permissions to them now in order to avoid security risks. If you are unsure how to do so, consult the <a href="@handbook_url">online handbook</a>.', [
        '%dir' => $this->sitePath,
        '%file' => $settings_file,
        '@handbook_url' => 'http://drupal.org/server-permissions',
      ]), 'warning');
    }
  }
  $form['#attached']['library'][] = 'system/drupal.system';
  $form['admin_account'] = [
    '#type' => 'fieldgroup',
    '#title' => $this
      ->t('Site maintenance account'),
  ];
  $form['admin_account']['account']['name'] = [
    '#type' => 'textfield',
    '#title' => $this
      ->t('Username'),
    '#maxlength' => USERNAME_MAX_LENGTH,
    '#description' => $this
      ->t('Spaces are allowed; punctuation is not allowed except for periods, hyphens, and underscores.'),
    '#required' => TRUE,
    '#attributes' => [
      'class' => [
        'username',
      ],
    ],
  ];
  $form['admin_account']['account']['pass'] = [
    '#type' => 'password_confirm',
    '#required' => TRUE,
    '#size' => 25,
  ];
  $form['admin_account']['account']['#tree'] = TRUE;
  $form['admin_account']['account']['mail'] = [
    '#type' => 'email',
    '#title' => $this
      ->t('Email address'),
    '#required' => TRUE,
  ];

  // Check drush context and use default drush options if available.
  if (function_exists('drush_get_option')) {
    $form['admin_account']['account']['name']['#default_value'] = drush_get_option('account-name', 'admin');
    $form['admin_account']['account']['pass']['#type'] = 'textfield';

    // Targets Drush 9 or higher.
    if (class_exists('\\Drush\\Utils\\StringUtils')) {
      $default_password = drush_get_option('account-pass', \Drush\Utils\StringUtils::generatePassword());
    }
    elseif (function_exists('drush_generate_password')) {
      $default_password = drush_get_option('account-pass', drush_generate_password());
    }
    $form['admin_account']['account']['pass']['#default_value'] = $default_password;
    $form['admin_account']['account']['mail']['#default_value'] = drush_get_option('account-mail', 'admin@example.com');
  }
  $form['actions'] = [
    '#type' => 'actions',
  ];
  $form['actions']['submit'] = [
    '#type' => 'submit',
    '#value' => $this
      ->t('Save and continue'),
    '#weight' => 15,
    '#button_type' => 'primary',
  ];
  return $form;
}