You are here

public function DomainMenusSettingsForm::submitForm in Domain Menus for Domains 3.x

Same name and namespace in other branches
  1. 9.x src/Form/DomainMenusSettingsForm.php \Drupal\domain_menus\Form\DomainMenusSettingsForm::submitForm()
  2. 9.1.x src/Form/DomainMenusSettingsForm.php \Drupal\domain_menus\Form\DomainMenusSettingsForm::submitForm()

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 ConfigFormBase::submitForm

File

src/Form/DomainMenusSettingsForm.php, line 129

Class

DomainMenusSettingsForm
Class DomainMenusSettingsForm.

Namespace

Drupal\domain_menus\Form

Code

public function submitForm(array &$form, FormStateInterface $form_state) {
  $config = $this
    ->config(static::SETTINGS);
  foreach ($this
    ->settingsKeys() as $key) {
    $config
      ->set($key, $form_state
      ->getValue($key));
  }
  $config
    ->save();
  if ($form_state
    ->getValue('domain_menus_delete')) {
    $menus = $this->entityTypeManager
      ->getStorage('menu')
      ->loadMultiple();
    foreach ($menus as $menu) {
      $menu_domains = $menu
        ->getThirdPartySetting("domain_menus", "domains");
      if ($menu_domains !== NULL) {
        $menu
          ->delete();
      }
    }
    $this->messenger
      ->addMessage($this
      ->t('Domain menu(s) deleted.'), 'status');
  }
  if ($form_state
    ->getValue('domain_menus_create')) {
    $count = 0;
    $domain_menus_menu_names = $form_state
      ->getValue('domain_menus_menu_names');
    if (!empty($domain_menus_menu_names)) {
      $menu_names = explode("\r\n", $domain_menus_menu_names);
      $domains = $this->entityTypeManager
        ->getStorage('domain')
        ->loadMultiple();
      if (!empty($domains)) {
        foreach ($domains as $domain) {
          $domain_id = $domain
            ->id();
          $domain_domainid = $domain
            ->getDomainId();
          $domain_label = Markup::create($domain
            ->label());
          foreach ($menu_names as $menu_name) {
            if (!empty($menu_name)) {
              $menu_id = trim($this
                ->t(DOMAIN_MENUS_MENU_ID_PATTERN, [
                '@domain_domainid' => $domain_domainid,
                '@menu_name' => $menu_name,
              ]));
              $menu_label = trim($this
                ->t(DOMAIN_MENUS_MENU_LABEL_PATTERN, [
                '@domain_label' => $domain_label,
                '@menu_name' => $menu_name,
              ]));
              if (!($menu = Menu::load($menu_id))) {
                $menu = Menu::create(array(
                  'id' => $menu_id,
                  'label' => $menu_label,
                ));
                $count++;
              }
              $menu
                ->setThirdPartySetting('domain_menus', 'domains', array(
                $domain_id => $domain_id,
              ));
              $menu
                ->setThirdPartySetting('domain_menus', 'auto-created', 1);
              $menu
                ->save();
            }
          }
        }
      }
    }
    $this->messenger
      ->addMessage($this
      ->t('@count domain menu(s) created.', [
      '@count' => $count,
    ]), 'status');
  }
  parent::submitForm($form, $form_state);
}