You are here

function domain_menus_install in Domain Menus for Domains 3.x

Same name and namespace in other branches
  1. 9.x domain_menus.install \domain_menus_install()
  2. 9.1.x domain_menus.install \domain_menus_install()

Implements hook_install().

If domain_menus module was previously enabled and uninstalled, there may be domain menus that had its domain menus third party settings removed as a result of module uninstallation. Add domain menus third party settings back to these menus on module install so the menus are recognized as domain menus.

File

./domain_menus.install, line 19
Install, update, and uninstall functions for the Domain Menus module.

Code

function domain_menus_install() {
  $domains = \Drupal::entityTypeManager()
    ->getStorage('domain')
    ->loadMultiple();
  $menus = \Drupal::entityTypeManager()
    ->getStorage('menu')
    ->loadMultiple();
  foreach ($menus as $menu) {
    foreach ($domains as $domain) {
      $domain_id = $domain
        ->id();
      $domain_domainid = $domain
        ->getDomainId();
      $menu_domainid_partial = trim(new FormattableMarkup(DOMAIN_MENUS_MENU_ID_PATTERN, [
        '@domain_domainid' => $domain_domainid,
        '@menu_name' => '',
      ]));
      $menu_id = $menu
        ->id();
      if (strpos($menu_id, $menu_domainid_partial) === 0) {
        $menu
          ->setThirdPartySetting('domain_menus', 'domains', array(
          $domain_id => $domain_id,
        ));
        $menu
          ->setThirdPartySetting('domain_menus', 'auto-created', 1);
        $menu
          ->save();
      }
    }
    reset($domains);
  }
}