forked from drupal-graphql/graphql
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMenuTreeSubtree.php
43 lines (38 loc) · 1.18 KB
/
MenuTreeSubtree.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
namespace Drupal\graphql\Plugin\GraphQL\DataProducer\Menu\MenuTree;
use Drupal\Core\Menu\MenuLinkTreeElement;
use Drupal\graphql\Plugin\GraphQL\DataProducer\DataProducerPluginBase;
/**
* Returns a list of menu links under the menu tree element.
*
* @todo Fix input and output context type.
*
* @DataProducer(
* id = "menu_tree_subtree",
* name = @Translation("Menu tree subtree"),
* description = @Translation("Returns the subtree of a menu tree element."),
* produces = @ContextDefinition("any",
* label = @Translation("Menu link tree element"),
* multiple = TRUE
* ),
* consumes = {
* "element" = @ContextDefinition("any",
* label = @Translation("Menu link tree element")
* )
* }
* )
*/
class MenuTreeSubtree extends DataProducerPluginBase {
/**
* Resolver.
*
* @param \Drupal\Core\Menu\MenuLinkTreeElement $element
*
* @return \Drupal\Core\Menu\MenuLinkTreeElement[]
*/
public function resolve(MenuLinkTreeElement $element) {
return array_filter($element->subtree, function (MenuLinkTreeElement $item) {
return $item->link->isEnabled() && (!isset($item->access) || $item->access->isAllowed());
});
}
}