class MenuTokenContextManager in Menu Token 9.1.x
Same name and namespace in other branches
- 8 src/Service/MenuTokenContextManager.php \Drupal\menu_token\Service\MenuTokenContextManager
Menu token context manager service.
Hierarchy
- class \Drupal\menu_token\Service\MenuTokenContextManager
Expanded class hierarchy of MenuTokenContextManager
1 file declares its use of MenuTokenContextManager
- MenuTokenSubscriber.php in src/EventSubscriber/ MenuTokenSubscriber.php 
1 string reference to 'MenuTokenContextManager'
1 service uses MenuTokenContextManager
File
- src/Service/ MenuTokenContextManager.php, line 15 
Namespace
Drupal\menu_token\ServiceView source
class MenuTokenContextManager {
  protected $tokenService;
  protected $contextRepository;
  protected $tokenEntityMapper;
  protected $state;
  protected $entityTypeManager;
  protected $menuTokenMenuLinkManager;
  protected $contextualReplacementLinks;
  /**
   * {@inheritdoc}
   */
  public function __construct(TokenInterface $tokenService, ContextRepositoryInterface $c, TokenEntityMapperInterface $tem, EntityTypeManagerInterface $en, StateInterface $state, MenuLinkManagerInterface $mlm) {
    $this->tokenService = $tokenService;
    $this->contextRepository = $c;
    $this->tokenEntityMapper = $tem;
    $this->entityTypeManager = $en;
    $this->state = $state;
    $this->menuTokenMenuLinkManager = $mlm;
    $this->contextualReplacementLinks = unserialize($this->state
      ->get('menu_token_links_contextual_replacements'));
    if (empty($this->contextualReplacementLinks)) {
      $this->contextualReplacementLinks = [];
    }
  }
  /**
   * {@inheritdoc}
   */
  public function getUndiscoveredMenuDefinitions() {
    // Get all custom menu links which should be rediscovered.
    $entity_ids = $this->entityTypeManager
      ->getStorage('menu_link_content')
      ->getQuery()
      ->condition('rediscover', FALSE)
      ->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:' . $menu_link_content
        ->uuid()] = $menu_link_content
        ->getPluginDefinition();
    }
    return $plugin_definitions;
  }
  /**
   * {@inheritdoc}
   */
  public function prepareContextualLinks($relevantLink, $config) {
    $this->contextualReplacementLinks = unserialize($this->state
      ->get('menu_token_links_contextual_replacements'));
    $text_tokens = $this->tokenService
      ->scan($relevantLink["url"]);
    $text_tokens = array_merge($text_tokens, $this->tokenService
      ->scan($relevantLink["title"]));
    $use_in_context = FALSE;
    foreach ($text_tokens as $token_type => $tokens) {
      $entity_type = $this->tokenEntityMapper
        ->getEntityTypeForTokenType($token_type);
      if (empty($config[$entity_type][0]) || $config[$entity_type][0] === "context") {
        $use_in_context = TRUE;
      }
      if ($entity_type === FALSE) {
        $use_in_context = TRUE;
      }
    }
    if ($use_in_context) {
      $this->contextualReplacementLinks[$relevantLink['id']] = [
        "link" => $relevantLink,
        "config" => $config,
      ];
    }
    else {
      unset($this->contextualReplacementLinks[$relevantLink['id']]);
    }
    $this->state
      ->set('menu_token_links_contextual_replacements', serialize($this->contextualReplacementLinks));
  }
  /**
   * @param $uuid_from_link
   */
  public function removeFromState($uuid_from_link) {
    unset($this->contextualReplacementLinks[$uuid_from_link]);
  }
  /**
   * Reset menu_token_links_contextual_replacements.
   */
  public function clear() {
    $this->contextualReplacementLinks = [];
    $this->state
      ->set('menu_token_links_contextual_replacements', serialize($this->contextualReplacementLinks));
  }
  /**
   * Replace contextual links.
   */
  public function replaceContextualLinks() {
    $contextual_replacement_links = unserialize($this->state
      ->get('menu_token_links_contextual_replacements'));
    if (empty($contextual_replacement_links)) {
      return TRUE;
    }
    $this->menuTokenMenuLinkManager
      ->rebuildMenuToken($contextual_replacement_links);
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| MenuTokenContextManager:: | protected | property | ||
| MenuTokenContextManager:: | protected | property | ||
| MenuTokenContextManager:: | protected | property | ||
| MenuTokenContextManager:: | protected | property | ||
| MenuTokenContextManager:: | protected | property | ||
| MenuTokenContextManager:: | protected | property | ||
| MenuTokenContextManager:: | protected | property | ||
| MenuTokenContextManager:: | public | function | Reset menu_token_links_contextual_replacements. | |
| MenuTokenContextManager:: | public | function | ||
| MenuTokenContextManager:: | public | function | ||
| MenuTokenContextManager:: | public | function | ||
| MenuTokenContextManager:: | public | function | Replace contextual links. | |
| MenuTokenContextManager:: | public | function | 
