You are here

public function MenuLinkManager::getDefinitions in Drupal 10

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Menu/MenuLinkManager.php \Drupal\Core\Menu\MenuLinkManager::getDefinitions()
  2. 9 core/lib/Drupal/Core/Menu/MenuLinkManager.php \Drupal\Core\Menu\MenuLinkManager::getDefinitions()

Gets the definition of all plugins for this type.

Return value

mixed[] An array of plugin definitions (empty array if no definitions were found). Keys are plugin IDs.

Overrides DiscoveryInterface::getDefinitions

See also

\Drupal\Core\Plugin\FilteredPluginManagerInterface::getFilteredDefinitions()

2 calls to MenuLinkManager::getDefinitions()
MenuLinkManager::rebuild in core/lib/Drupal/Core/Menu/MenuLinkManager.php
Triggers discovery, save, and cleanup of discovered links.
MenuLinkManager::resetInstance in core/lib/Drupal/Core/Menu/MenuLinkManager.php
Resets the menu link to its default settings.

File

core/lib/Drupal/Core/Menu/MenuLinkManager.php, line 162

Class

MenuLinkManager
Manages discovery, instantiation, and tree building of menu link plugins.

Namespace

Drupal\Core\Menu

Code

public function getDefinitions() {

  // Since this function is called rarely, instantiate the discovery here.
  $definitions = $this
    ->getDiscovery()
    ->getDefinitions();
  $this->moduleHandler
    ->alter('menu_links_discovered', $definitions);
  foreach ($definitions as $plugin_id => &$definition) {
    $definition['id'] = $plugin_id;
    $this
      ->processDefinition($definition, $plugin_id);
  }

  // If this plugin was provided by a module that does not exist, remove the
  // plugin definition.
  // @todo Address what to do with an invalid plugin.
  //   https://www.drupal.org/node/2302623
  foreach ($definitions as $plugin_id => $plugin_definition) {
    if (!empty($plugin_definition['provider']) && !$this->moduleHandler
      ->moduleExists($plugin_definition['provider'])) {
      unset($definitions[$plugin_id]);
    }
  }
  return $definitions;
}