Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
6 / 6 |
CRAP | |
100.00% |
15 / 15 |
MenuTreeParameters | |
100.00% |
1 / 1 |
|
100.00% |
9 / 9 |
10 | |
100.00% |
15 / 15 |
setRoot | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
setMinDepth | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
setMaxDepth | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
addExpandedParents | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
setActiveTrail | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
addCondition | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
onlyEnabledLinks | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
setTopLevelOnly | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
excludeRoot | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\Menu\MenuTreeParameters. | |
*/ | |
namespace Drupal\Core\Menu; | |
/** | |
* Provides a value object to model menu tree parameters. | |
* | |
* Menu tree parameters are used to determine the set of definitions to be | |
* loaded from \Drupal\Core\Menu\MenuTreeStorageInterface. Hence they determine | |
* the shape and content of the tree: | |
* - Which parent IDs should be used to restrict the tree. Only links with | |
* a parent in the list will be included. | |
* - Which menu links are omitted, depending on the minimum and maximum depth. | |
*/ | |
class MenuTreeParameters { | |
/** | |
* A menu link plugin ID that should be used as the root. | |
* | |
* By default the root ID of empty string '' is used. However, when only the | |
* descendants (subtree) of a certain menu link are needed, a custom root can | |
* be specified. | |
* | |
* @var string | |
*/ | |
public $root = ''; | |
/** | |
* The minimum depth of menu links in the resulting tree relative to the root. | |
* | |
* Defaults to 1, which is the default to build a whole tree for a menu | |
* (excluding the root). | |
* | |
* @var int|null | |
*/ | |
public $minDepth = NULL; | |
/** | |
* The maximum depth of menu links in the resulting tree relative to the root. | |
* | |
* @var int|null | |
*/ | |
public $maxDepth = NULL; | |
/** | |
* An array of parent link IDs. | |
* | |
* This restricts the tree to only menu links that are at the top level or | |
* have a parent ID in this list. If empty, the whole menu tree is built. | |
* | |
* @var string[] | |
*/ | |
public $expandedParents = array(); | |
/** | |
* The IDs from the currently active menu link to the root of the whole tree. | |
* | |
* This is an array of menu link plugin IDs, representing the trail from the | |
* currently active menu link to the ("real") root of that menu link's menu. | |
* This does not affect the way the tree is built. It is only used to set the | |
* value of the inActiveTrail property for each tree element. | |
* | |
* @var string[] | |
*/ | |
public $activeTrail = array(); | |
/** | |
* The conditions used to restrict which links are loaded. | |
* | |
* An associative array of custom query condition key/value pairs. | |
* | |
* @var array | |
*/ | |
public $conditions = array(); | |
/** | |
* Sets a root for menu tree loading. | |
* | |
* @param string $root | |
* A menu link plugin ID, or empty string '' to use the root of the whole | |
* tree. | |
* | |
* @return $this | |
* | |
* @codeCoverageIgnore | |
*/ | |
public function setRoot($root) { | |
$this->root = (string) $root; | |
return $this; | |
} | |
/** | |
* Sets a minimum depth for menu tree loading. | |
* | |
* @param int $min_depth | |
* The (root-relative) minimum depth to apply. | |
* | |
* @return $this | |
*/ | |
public function setMinDepth($min_depth) { | |
$this->minDepth = max(1, $min_depth); | |
return $this; | |
} | |
/** | |
* Sets a maximum depth for menu tree loading. | |
* | |
* @param int $max_depth | |
* The (root-relative) maximum depth to apply. | |
* | |
* @return $this | |
* | |
* @codeCoverageIgnore | |
*/ | |
public function setMaxDepth($max_depth) { | |
$this->maxDepth = $max_depth; | |
return $this; | |
} | |
/** | |
* Adds parent menu links IDs to restrict the tree. | |
* | |
* @param string[] $parents | |
* An array containing parent IDs. If supplied, the tree is limited to | |
* links that have these parents. | |
* | |
* @return $this | |
*/ | |
public function addExpandedParents(array $parents) { | |
$this->expandedParents = array_merge($this->expandedParents, $parents); | |
$this->expandedParents = array_unique($this->expandedParents); | |
return $this; | |
} | |
/** | |
* Sets the active trail IDs used to set the inActiveTrail property. | |
* | |
* @param string[] $active_trail | |
* An array containing the active trail: a list of menu link plugin IDs. | |
* | |
* @return $this | |
* | |
* @see \Drupal\Core\Menu\MenuActiveTrail::getActiveTrailIds() | |
* | |
* @codeCoverageIgnore | |
*/ | |
public function setActiveTrail(array $active_trail) { | |
$this->activeTrail = $active_trail; | |
return $this; | |
} | |
/** | |
* Adds a custom query condition. | |
* | |
* @param string $definition_field | |
* Only conditions that are testing menu link definition fields are allowed. | |
* @param mixed $value | |
* The value to test the link definition field against. In most cases, this | |
* is a scalar. For more complex options, it is an array. The meaning of | |
* each element in the array is dependent on the $operator. | |
* @param string|null $operator | |
* (optional) The comparison operator, such as =, <, or >=. It also accepts | |
* more complex options such as IN, LIKE, or BETWEEN. If NULL, defaults to | |
* the = operator. | |
* | |
* @return $this | |
*/ | |
public function addCondition($definition_field, $value, $operator = NULL) { | |
if (!isset($operator)) { | |
$this->conditions[$definition_field] = $value; | |
} | |
else { | |
$this->conditions[$definition_field] = array($value, $operator); | |
} | |
return $this; | |
} | |
/** | |
* Excludes links that are not enabled. | |
* | |
* @return $this | |
*/ | |
public function onlyEnabledLinks() { | |
$this->addCondition('enabled', 1); | |
return $this; | |
} | |
/** | |
* Ensures only the top level of the tree is loaded. | |
* | |
* @return $this | |
*/ | |
public function setTopLevelOnly() { | |
$this->setMaxDepth(1); | |
return $this; | |
} | |
/** | |
* Excludes the root menu link from the tree. | |
* | |
* Note that this is only necessary when you specified a custom root, because | |
* the normal root ID is the empty string, '', which does not correspond to an | |
* actual menu link. Hence when loading a menu link tree without specifying a | |
* custom root the tree will start at the children even if this method has not | |
* been called. | |
* | |
* @return $this | |
*/ | |
public function excludeRoot() { | |
$this->setMinDepth(1); | |
return $this; | |
} | |
} |