You are here

function domain_menus_domain_delete in Domain Menus for Domains 9.1.x

Same name and namespace in other branches
  1. 9.x domain_menus.module \domain_menus_domain_delete()
  2. 3.x domain_menus.module \domain_menus_domain_delete()

Implements hook_ENTITY_TYPE_delete().

Delete domain menus of the domain being deleted. If a domain menu has assignment to multiple domains, remove the deleted domain from assignment instead of deleting the menu.

File

./domain_menus.module, line 163
Domain menus implementation through entity create, delete, and access customizations.

Code

function domain_menus_domain_delete(EntityInterface $entity) {
  $domain = $entity;
  $domain_id = $domain
    ->id();
  $domain_domainid = $domain
    ->getDomainId();
  $menus = \Drupal::entityTypeManager()
    ->getStorage('menu')
    ->loadMultiple();
  if (!empty($menus)) {
    foreach ($menus as $menu) {
      $menu_domains = $menu
        ->getThirdPartySetting("domain_menus", "domains", []);
      if (array_key_exists($domain_id, $menu_domains)) {
        unset($menu_domains[$domain_id]);
        if (empty($menu_domains)) {
          $menu
            ->delete();
        }
        else {
          $menu
            ->setThirdPartySetting('domain_menus', 'domains', $menu_domains);
          $menu
            ->save();
        }
      }
    }
  }
}