You are here

protected function MenuLinkTree::createInstances in Colossal Menu 8

Same name and namespace in other branches
  1. 2.x src/Menu/MenuLinkTree.php \Drupal\colossal_menu\Menu\MenuLinkTree::createInstances()

Returns a tree containing of MenuLinkTreeElement based upon tree data.

This method converts the tree representation as array coming from the tree storage to a tree containing a list of MenuLinkTreeElement[].

Parameters

array $data_tree: The tree data coming from the menu tree storage.

Return value

\Drupal\Core\Menu\MenuLinkTreeElement[] An array containing the elements of a menu tree.

Overrides MenuLinkTree::createInstances

File

src/Menu/MenuLinkTree.php, line 56

Class

MenuLinkTree
Implements the loading, transforming and rendering of menu link trees.

Namespace

Drupal\colossal_menu\Menu

Code

protected function createInstances(array $data_tree) {
  $tree = [];
  foreach ($data_tree as $key => $element) {
    $subtree = $this
      ->createInstances($element['subtree']);

    // Build a MenuLinkTreeElement out of the menu tree link definition:
    // transform the tree link definition into a link definition and store
    // tree metadata.
    $tree[$key] = new MenuLinkTreeElement($element['link'], (bool) $element['has_children'], (int) $element['depth'], (bool) $element['in_active_trail'], $subtree);
    if ($tree[$key]->link instanceof AccessibleInterface) {
      $tree[$key]->access = $tree[$key]->link
        ->access('view', NULL, TRUE);
    }
  }
  return $tree;
}