Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
9 / 9 |
| MenuLinkTreeElement | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
3 | |
100.00% |
9 / 9 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
6 / 6 |
|||
| count | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
| anonymous function | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Core\Menu\MenuLinkTreeElement. | |
| */ | |
| namespace Drupal\Core\Menu; | |
| /** | |
| * Provides a value object to model an element in a menu link tree. | |
| * | |
| * \Drupal\Core\Menu\MenuLinkTreeElement objects represent a menu link's data. | |
| * Objects of this class provide complimentary data: the placement in a tree. | |
| * Therefore, we can summarize this split as follows: | |
| * - Menu link objects contain all information about an individual menu link, | |
| * plus what their parent is. But they don't know where exactly in a menu link | |
| * tree they live. | |
| * - Instances of this class are complimentary to those objects, they know: | |
| * - All additional metadata from {menu_tree}, which contains "materialized" | |
| * metadata about a menu link tree, such as whether a link in the tree has | |
| * visible children and the depth relative to the root. | |
| * - Plus all additional metadata that's adjusted for the current tree query, | |
| * such as whether the link is in the active trail, whether the link is | |
| * accessible for the current user, and the link's children (which are only | |
| * loaded if the link was marked as "expanded" by the query). | |
| * | |
| * @see \Drupal\Core\Menu\MenuTreeStorage::loadTreeData() | |
| */ | |
| class MenuLinkTreeElement { | |
| /** | |
| * The menu link for this element in a menu link tree. | |
| * | |
| * @var \Drupal\Core\Menu\MenuLinkInterface | |
| */ | |
| public $link; | |
| /** | |
| * The subtree of this element in the menu link tree (this link's children). | |
| * | |
| * (Children of a link are only loaded if a link is marked as "expanded" by | |
| * the query.) | |
| * | |
| * @var \Drupal\Core\Menu\MenuLinkTreeElement[] | |
| */ | |
| public $subtree; | |
| /** | |
| * The depth of this link relative to the root of the tree. | |
| * | |
| * @var int | |
| */ | |
| public $depth; | |
| /** | |
| * Whether this link has any children at all. | |
| * | |
| * @var bool | |
| */ | |
| public $hasChildren; | |
| /** | |
| * Whether this link is in the active trail. | |
| * | |
| * @var bool | |
| */ | |
| public $inActiveTrail; | |
| /** | |
| * Whether this link is accessible by the current user. | |
| * | |
| * If the value is NULL the access was not determined yet, if an access result | |
| * object, it was determined already. | |
| * | |
| * @var \Drupal\Core\Access\AccessResultInterface|NULL | |
| */ | |
| public $access; | |
| /** | |
| * Additional options for this link. | |
| * | |
| * This is merged (\Drupal\Component\Utility\NestedArray::mergeDeep()) with | |
| * \Drupal\Core\Menu\MenuLinkInterface::getOptions(), to allow menu link tree | |
| * manipulators to add or override link options. | |
| */ | |
| public $options = array(); | |
| /** | |
| * Constructs a new \Drupal\Core\Menu\MenuLinkTreeElement. | |
| * | |
| * @param \Drupal\Core\Menu\MenuLinkInterface $link | |
| * The menu link for this element in the menu link tree. | |
| * @param bool $has_children | |
| * A flag as to whether this element has children even if they are not | |
| * included in the tree (i.e. this may be TRUE even if $subtree is empty). | |
| * @param int $depth | |
| * The depth of this element relative to the tree root. | |
| * @param bool $in_active_trail | |
| * A flag as to whether this link was included in the list of active trail | |
| * IDs used to build the tree. | |
| * @param \Drupal\Core\Menu\MenuLinkTreeElement[] $subtree | |
| * The children of this element in the menu link tree. | |
| */ | |
| public function __construct(MenuLinkInterface $link, $has_children, $depth, $in_active_trail, array $subtree) { | |
| // Essential properties. | |
| $this->link = $link; | |
| $this->hasChildren = $has_children; | |
| $this->depth = $depth; | |
| $this->subtree = $subtree; | |
| $this->inActiveTrail = $in_active_trail; | |
| } | |
| /** | |
| * Counts all menu links in the current subtree. | |
| * | |
| * @return int | |
| * The number of menu links in this subtree (one plus the number of menu | |
| * links in all descendants). | |
| */ | |
| public function count() { | |
| $sum = function ($carry, MenuLinkTreeElement $element) { | |
| return $carry + $element->count(); | |
| }; | |
| return 1 + array_reduce($this->subtree, $sum); | |
| } | |
| } |