function menu_enable

Implements hook_enable().

Add a link for each custom menu.

File

drupal/core/modules/menu/menu.module, line 200
Allows administrators to customize the site's navigation menus.

Code

function menu_enable() {
  drupal_container()
    ->get('router.builder')
    ->rebuild();
  menu_router_rebuild();
  $system_link = entity_load_multiple_by_properties('menu_link', array(
    'link_path' => 'admin/structure/menu',
    'module' => 'system',
  ));
  $system_link = reset($system_link);
  $base_link = entity_create('menu_link', array(
    'menu_name' => $system_link->menu_name,
    'router_path' => 'admin/structure/menu/manage/%',
    'module' => 'menu',
  ));
  $menus = entity_load_multiple('menu');
  foreach ($menus as $menu) {
    $link = $base_link
      ->createDuplicate();
    $link->plid = $system_link
      ->id();
    $link->link_title = $menu
      ->label();
    $link->link_path = 'admin/structure/menu/manage/' . $menu
      ->id();
    $query = Drupal::entityQuery('menu_link')
      ->condition('link_path', $link->link_path)
      ->condition('plid', $link->plid);
    $result = $query
      ->execute();
    if (empty($result)) {
      $link
        ->save();
    }
  }
  menu_cache_clear_all();
}