function SettingsForm::submitForm

Same name in this branch
  1. 11.x core/modules/media_library/src/Form/SettingsForm.php \Drupal\media_library\Form\SettingsForm::submitForm()
Same name and namespace in other branches
  1. 9 core/modules/media_library/src/Form/SettingsForm.php \Drupal\media_library\Form\SettingsForm::submitForm()
  2. 9 core/modules/aggregator/src/Form/SettingsForm.php \Drupal\aggregator\Form\SettingsForm::submitForm()
  3. 8.9.x core/modules/media_library/src/Form/SettingsForm.php \Drupal\media_library\Form\SettingsForm::submitForm()
  4. 8.9.x core/modules/aggregator/src/Form/SettingsForm.php \Drupal\aggregator\Form\SettingsForm::submitForm()
  5. 10 core/modules/media_library/src/Form/SettingsForm.php \Drupal\media_library\Form\SettingsForm::submitForm()
  6. 10 core/modules/navigation/src/Form/SettingsForm.php \Drupal\navigation\Form\SettingsForm::submitForm()

Overrides ConfigFormBase::submitForm

File

core/modules/navigation/src/Form/SettingsForm.php, line 183

Class

SettingsForm
Configure Navigation settings for this site.

Namespace

Drupal\navigation\Form

Code

public function submitForm(array &$form, FormStateInterface $form_state) : void {
    $config = $this->config('navigation.settings');
    // Get the previous config settings.
    $previous_logo_provider = $config->get('logo_provider');
    $logo_managed = $config->get('logo_managed');
    $previous_logo_fid = $logo_managed ? reset($logo_managed) : NULL;
    // Get new values from the form.
    $new_logo_provider = $form_state->getValue('logo_provider');
    $logo = $form_state->getValue('logo_managed');
    $new_logo_fid = !empty($logo) ? reset($logo) : NULL;
    // Pre-load files if any for FileUsageInterface.
    $previous_logo_managed = $previous_logo_fid ? File::load($previous_logo_fid) : NULL;
    $new_logo_managed = $new_logo_fid ? File::load($new_logo_fid) : NULL;
    // Decrement if previous logo_provider was 'custom' and has changed to a
    // different fid and there's a change in the logo fid.
    if ($previous_logo_provider === NavigationRenderer::LOGO_PROVIDER_CUSTOM && ($new_logo_provider !== NavigationRenderer::LOGO_PROVIDER_CUSTOM || $previous_logo_fid !== $new_logo_fid) && $previous_logo_managed) {
        $this->fileUsage
            ->delete($previous_logo_managed, 'navigation', 'logo', 1);
    }
    // Increment usage if different from the previous one.
    if ($new_logo_managed && $new_logo_fid !== $previous_logo_fid) {
        $new_logo_managed->setPermanent();
        $new_logo_managed->save();
        $this->fileUsage
            ->add($new_logo_managed, 'navigation', 'logo', 1);
    }
    $config->set('logo_provider', $form_state->getValue('logo_provider'))
        ->set('logo_managed', $form_state->getValue('logo_managed'))
        ->save();
    parent::submitForm($form, $form_state);
}

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