You are here

class MenuLinkContentDeriver in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 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 23
Contains \Drupal\menu_link_content\Plugin\Deriver\MenuLinkContentDeriver.

Namespace

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

  /**
   * The query factory.
   *
   * @var \Drupal\Core\Entity\Query\QueryFactory
   */
  protected $queryFactory;

  /**
   * The entity manager.
   *
   * @var \Drupal\Core\Entity\EntityManagerInterface
   */
  protected $entityManager;

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

  /**
   * Constructs a MenuLinkContentDeriver instance.
   *
   * @param \Drupal\Core\Entity\Query\QueryFactory $query_factory
   *   The query factory.
   *
   * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
   *   The entity manager.
   * @param \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager
   *   The menu link manager.
   */
  public function __construct(QueryFactory $query_factory, EntityManagerInterface $entity_manager, MenuLinkManagerInterface $menu_link_manager) {
    $this->queryFactory = $query_factory;
    $this->entityManager = $entity_manager;
    $this->menuLinkManager = $menu_link_manager;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, $base_plugin_id) {
    return new static($container
      ->get('entity.query'), $container
      ->get('entity.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->queryFactory
      ->get('menu_link_content')
      ->condition('rediscover', TRUE)
      ->execute();
    $plugin_definitions = [];
    $menu_link_content_entities = $this->entityManager
      ->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
DeriverBase::$derivatives protected property List of derivative definitions. 1
DeriverBase::getDerivativeDefinition public function Gets the definition of a derivative plugin. Overrides DeriverInterface::getDerivativeDefinition
MenuLinkContentDeriver::$entityManager protected property The entity manager.
MenuLinkContentDeriver::$menuLinkManager protected property The menu link manager.
MenuLinkContentDeriver::$queryFactory protected property The query factory.
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.