You are here

public function MenuLinkTreeManipulators::checkLinkAccess in Menu Manipulator 3.0.x

Same name and namespace in other branches
  1. 2.0.x src/Menu/MenuLinkTreeManipulators.php \Drupal\menu_manipulator\Menu\MenuLinkTreeManipulators::checkLinkAccess()
1 call to MenuLinkTreeManipulators::checkLinkAccess()
MenuLinkTreeManipulators::filterByCurrentLanguage in src/Menu/MenuLinkTreeManipulators.php
Filter a menu tree by current language MenuLinks.

File

src/Menu/MenuLinkTreeManipulators.php, line 102

Class

MenuLinkTreeManipulators
Provides a menu link tree manipulators.

Namespace

Drupal\menu_manipulator\Menu

Code

public function checkLinkAccess(MenuLinkBase $link) {
  $langcode = $this
    ->getLinkLanguage($link);
  $not_applicable_langcodes = [
    LanguageInterface::LANGCODE_NOT_APPLICABLE,
    LanguageInterface::LANGCODE_NOT_SPECIFIED,
  ];

  // Allow unspecified languages.
  if (in_array($langcode, $not_applicable_langcodes)) {
    return TRUE;
  }

  // Allow if targeted entity is translated, no matter menu item's language.
  $entity = $this
    ->getLinkEntity($link);
  if ($entity instanceof ContentEntityInterface && method_exists($entity, 'hasTranslation')) {
    return $entity
      ->hasTranslation($this->langcode);
  }

  // Allow by the menu item's language itself.
  return $this->langcode == $langcode;
}