public function MenuLinkTreeManipulators::filterByCurrentLanguage in Menu Manipulator 3.0.x
Same name and namespace in other branches
- 8.2 src/Menu/MenuLinkTreeManipulators.php \Drupal\menu_manipulator\Menu\MenuLinkTreeManipulators::filterByCurrentLanguage()
- 8 src/Menu/MenuLinkTreeManipulators.php \Drupal\menu_manipulator\Menu\MenuLinkTreeManipulators::filterByCurrentLanguage()
- 2.0.x src/Menu/MenuLinkTreeManipulators.php \Drupal\menu_manipulator\Menu\MenuLinkTreeManipulators::filterByCurrentLanguage()
Filter a menu tree by current language MenuLinks.
Parameters
\Drupal\Core\Menu\MenuLinkTreeElement[] $tree: The menu link tree to manipulate.
Return value
\Drupal\Core\Menu\MenuLinkTreeElement[] The manipulated menu link tree.
File
- src/
Menu/ MenuLinkTreeManipulators.php, line 76
Class
- MenuLinkTreeManipulators
- Provides a menu link tree manipulators.
Namespace
Drupal\menu_manipulator\MenuCode
public function filterByCurrentLanguage(array $tree) {
foreach ($tree as $key => $element) {
if (!$element->link instanceof MenuLinkBase) {
continue;
}
$access = $this
->checkLinkAccess($element->link);
if (!$access) {
// Deny access and hide children items.
$tree[$key]->link = new InaccessibleMenuLink($tree[$key]->link);
$tree[$key]->access = AccessResult::forbidden();
$tree[$key]->subtree = [];
}
// Filter children items recursively.
if ($element->hasChildren && !empty($tree[$key]->subtree)) {
$element->subtree = $this
->filterByCurrentLanguage($element->subtree);
}
}
return $tree;
}