You are here

class MenuLinkContentDeriver in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/menu_link_content/src/Plugin/Deriver/MenuLinkContentDeriver.php \Drupal\menu_link_content\Plugin\Deriver\MenuLinkContentDeriver
  2. 10 core/modules/menu_link_content/src/Plugin/Deriver/MenuLinkContentDeriver.php \Drupal\menu_link_content\Plugin\Deriver\MenuLinkContentDeriver

Provides a deriver for user entered paths of menu links.

The assumption is that the number of manually entered menu links are lower compared to entity referenced ones.

Hierarchy

Expanded class hierarchy of MenuLinkContentDeriver

1 string reference to 'MenuLinkContentDeriver'
menu_link_content.links.menu.yml in core/modules/menu_link_content/menu_link_content.links.menu.yml
core/modules/menu_link_content/menu_link_content.links.menu.yml

File

core/modules/menu_link_content/src/Plugin/Deriver/MenuLinkContentDeriver.php, line 18

Namespace

Drupal\menu_link_content\Plugin\Deriver
View source
class MenuLinkContentDeriver extends DeriverBase implements ContainerDeriverInterface {
  use DeprecatedServicePropertyTrait;

  /**
   * {@inheritdoc}
   */
  protected $deprecatedProperties = [
    'entityManager' => 'entity.manager',
  ];

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * The menu link manager.
   *
   * @var \Drupal\Core\Menu\MenuLinkManagerInterface
   */
  protected $menuLinkManager;

  /**
   * Constructs a MenuLinkContentDeriver instance.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   * @param \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager
   *   The menu link manager.
   */
  public function __construct(EntityTypeManagerInterface $entity_type_manager, MenuLinkManagerInterface $menu_link_manager) {
    $this->entityTypeManager = $entity_type_manager;
    $this->menuLinkManager = $menu_link_manager;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, $base_plugin_id) {
    return new static($container
      ->get('entity_type.manager'), $container
      ->get('plugin.manager.menu.link'));
  }

  /**
   * {@inheritdoc}
   */
  public function getDerivativeDefinitions($base_plugin_definition) {

    // Get all custom menu links which should be rediscovered.
    $entity_ids = $this->entityTypeManager
      ->getStorage('menu_link_content')
      ->getQuery()
      ->condition('rediscover', TRUE)
      ->execute();
    $plugin_definitions = [];
    $menu_link_content_entities = $this->entityTypeManager
      ->getStorage('menu_link_content')
      ->loadMultiple($entity_ids);

    /** @var \Drupal\menu_link_content\MenuLinkContentInterface $menu_link_content */
    foreach ($menu_link_content_entities as $menu_link_content) {
      $plugin_definitions[$menu_link_content
        ->uuid()] = $menu_link_content
        ->getPluginDefinition();
    }
    return $plugin_definitions;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DeprecatedServicePropertyTrait::__get public function Allows to access deprecated/removed properties.
DeriverBase::$derivatives protected property List of derivative definitions. 1
DeriverBase::getDerivativeDefinition public function Gets the definition of a derivative plugin. Overrides DeriverInterface::getDerivativeDefinition
MenuLinkContentDeriver::$deprecatedProperties protected property
MenuLinkContentDeriver::$entityTypeManager protected property The entity type manager.
MenuLinkContentDeriver::$menuLinkManager protected property The menu link manager.
MenuLinkContentDeriver::create public static function Creates a new class instance. Overrides ContainerDeriverInterface::create
MenuLinkContentDeriver::getDerivativeDefinitions public function Gets the definition of all derivatives of a base plugin. Overrides DeriverBase::getDerivativeDefinitions
MenuLinkContentDeriver::__construct public function Constructs a MenuLinkContentDeriver instance.