function ModuleAdminLinksHelper::getModuleAdminLinks
Generates a list of admin tasks offered by a specified module.
Parameters
string $module: The module name.
Return value
array An array of task links.
File
- 
              core/modules/ system/ src/ ModuleAdminLinksHelper.php, line 43 
Class
- ModuleAdminLinksHelper
- Provides a helper for generating module admin links.
Namespace
Drupal\systemCode
public function getModuleAdminLinks(string $module) : array {
  // Cache the menu tree as it is expensive to load.
  /** @var \Drupal\Core\Menu\MenuLinkTreeElement[]|false $menuTree */
  $cacheItem = $this->memoryCache
    ->get(self::ADMIN_LINKS_MENU_TREE);
  if ($cacheItem) {
    $menuTree = $cacheItem->data;
  }
  else {
    $parameters = (new MenuTreeParameters())->setRoot('system.admin')
      ->excludeRoot()
      ->onlyEnabledLinks();
    $menuTree = $this->menuLinkTree
      ->load('system.admin', $parameters);
    $manipulators = [
      [
        'callable' => 'menu.default_tree_manipulators:checkAccess',
      ],
      [
        'callable' => 'menu.default_tree_manipulators:generateIndexAndSort',
      ],
      [
        'callable' => 'menu.default_tree_manipulators:flatten',
      ],
    ];
    $menuTree = $this->menuLinkTree
      ->transform($menuTree, $manipulators);
    $this->memoryCache
      ->set(self::ADMIN_LINKS_MENU_TREE, $menuTree);
  }
  $admin_tasks = [];
  foreach ($menuTree as $element) {
    if (!$element->access
      ->isAllowed()) {
      // @todo Bubble cacheability metadata of both accessible and
      //   inaccessible links. Currently made impossible by the way admin
      //   tasks are rendered. See https://www.drupal.org/node/2488958
      continue;
    }
    $link = $element->link;
    if ($link->getProvider() !== $module) {
      continue;
    }
    $admin_tasks[] = [
      'title' => $link->getTitle(),
      'description' => $link->getDescription(),
      'url' => $link->getUrlObject(),
    ];
  }
  return $admin_tasks;
}Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.
