Mercurial > hg > isophonics-drupal-site
comparison core/lib/Drupal/Core/Menu/MenuLinkManagerInterface.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\Core\Menu; | |
4 | |
5 use Drupal\Component\Plugin\PluginManagerInterface; | |
6 | |
7 /** | |
8 * Defines an interface for managing menu links and storing their definitions. | |
9 * | |
10 * Menu link managers support both automatic plugin definition discovery and | |
11 * manually maintaining plugin definitions. | |
12 * | |
13 * MenuLinkManagerInterface::updateDefinition() can be used to update a single | |
14 * menu link's definition and pass this onto the menu storage without requiring | |
15 * a full MenuLinkManagerInterface::rebuild(). | |
16 * | |
17 * Implementations that do not use automatic discovery should call | |
18 * MenuLinkManagerInterface::addDefinition() or | |
19 * MenuLinkManagerInterface::removeDefinition() when they add or remove links, | |
20 * and MenuLinkManagerInterface::updateDefinition() to update links they have | |
21 * already defined. | |
22 */ | |
23 interface MenuLinkManagerInterface extends PluginManagerInterface { | |
24 | |
25 /** | |
26 * Triggers discovery, save, and cleanup of discovered links. | |
27 */ | |
28 public function rebuild(); | |
29 | |
30 /** | |
31 * Deletes all links having a certain menu name. | |
32 * | |
33 * If a link is not deletable but is resettable, the link will be reset to have | |
34 * its original menu name, under the assumption that the original menu is not | |
35 * the one we are deleting it from. Note that when resetting, if the original | |
36 * menu name is the same as the menu name passed to this method, the link will | |
37 * not be moved or deleted. | |
38 * | |
39 * @param string $menu_name | |
40 * The name of the menu whose links will be deleted or reset. | |
41 */ | |
42 public function deleteLinksInMenu($menu_name); | |
43 | |
44 /** | |
45 * Removes a single link definition from the menu tree storage. | |
46 * | |
47 * This is used for plugins not found through discovery to remove definitions. | |
48 * | |
49 * @param string $id | |
50 * The menu link plugin ID. | |
51 * @param bool $persist | |
52 * If TRUE, this method will attempt to persist the deletion from any | |
53 * external storage by invoking MenuLinkInterface::deleteLink() on the | |
54 * plugin that is being deleted. | |
55 * | |
56 * @throws \Drupal\Component\Plugin\Exception\PluginException | |
57 * Thrown if the $id is not a valid, existing, plugin ID or if the link | |
58 * cannot be deleted. | |
59 */ | |
60 public function removeDefinition($id, $persist = TRUE); | |
61 | |
62 /** | |
63 * Loads multiple plugin instances based on route. | |
64 * | |
65 * @param string $route_name | |
66 * The route name. | |
67 * @param array $route_parameters | |
68 * (optional) The route parameters. Defaults to an empty array. | |
69 * @param string $menu_name | |
70 * (optional) Restricts the found links to just those in the named menu. | |
71 * | |
72 * @return \Drupal\Core\Menu\MenuLinkInterface[] | |
73 * An array of instances keyed by plugin ID. | |
74 */ | |
75 public function loadLinksByRoute($route_name, array $route_parameters = [], $menu_name = NULL); | |
76 | |
77 /** | |
78 * Adds a new menu link definition to the menu tree storage. | |
79 * | |
80 * Use this function when you know there is no entry in the tree. This is | |
81 * used for plugins not found through discovery to add new definitions. | |
82 * | |
83 * @param string $id | |
84 * The plugin ID for the new menu link definition that is being added. | |
85 * @param array $definition | |
86 * The values of the link definition. | |
87 * | |
88 * @return \Drupal\Core\Menu\MenuLinkInterface | |
89 * A plugin instance created using the newly added definition. | |
90 * | |
91 * @throws \Drupal\Component\Plugin\Exception\PluginException | |
92 * Thrown when the $id is not valid or is an already existing plugin ID. | |
93 */ | |
94 public function addDefinition($id, array $definition); | |
95 | |
96 /** | |
97 * Updates the values for a menu link definition in the menu tree storage. | |
98 * | |
99 * This will update the definition for a discovered menu link without the | |
100 * need for a full rebuild. It is also used for plugins not found through | |
101 * discovery to update definitions. | |
102 * | |
103 * @param string $id | |
104 * The menu link plugin ID. | |
105 * @param array $new_definition_values | |
106 * The new values for the link definition. This will usually be just a | |
107 * subset of the plugin definition. | |
108 * @param bool $persist | |
109 * TRUE to also have the link instance itself persist the changed values to | |
110 * any additional storage by invoking MenuLinkInterface::updateDefinition() | |
111 * on the plugin that is being updated. | |
112 * | |
113 * @return \Drupal\Core\Menu\MenuLinkInterface | |
114 * A plugin instance created using the updated definition. | |
115 * | |
116 * @throws \Drupal\Component\Plugin\Exception\PluginException | |
117 * Thrown if the $id is not a valid, existing, plugin ID. | |
118 */ | |
119 public function updateDefinition($id, array $new_definition_values, $persist = TRUE); | |
120 | |
121 /** | |
122 * Resets the values for a menu link based on the values found by discovery. | |
123 * | |
124 * @param string $id | |
125 * The menu link plugin ID. | |
126 * | |
127 * @return \Drupal\Core\Menu\MenuLinkInterface | |
128 * The menu link instance after being reset. | |
129 * | |
130 * @throws \Drupal\Component\Plugin\Exception\PluginException | |
131 * Thrown if the $id is not a valid, existing, plugin ID or if the link | |
132 * cannot be reset. | |
133 */ | |
134 public function resetLink($id); | |
135 | |
136 /** | |
137 * Counts the total number of menu links. | |
138 * | |
139 * @param string $menu_name | |
140 * (optional) The menu name to count by. Defaults to all menus. | |
141 * | |
142 * @return int | |
143 * The number of menu links in the named menu, or in all menus if the | |
144 * menu name is NULL. | |
145 */ | |
146 public function countMenuLinks($menu_name = NULL); | |
147 | |
148 /** | |
149 * Loads all parent link IDs of a given menu link. | |
150 * | |
151 * This method is very similar to getActiveTrailIds() but allows the link to | |
152 * be specified rather than being discovered based on the menu name and | |
153 * request. This method is mostly useful for testing. | |
154 * | |
155 * @param string $id | |
156 * The menu link plugin ID. | |
157 * | |
158 * @return array | |
159 * An ordered array of IDs representing the path to the root of the tree. | |
160 * The first element of the array will be equal to $id, unless $id is not | |
161 * valid, in which case the return value will be NULL. | |
162 */ | |
163 public function getParentIds($id); | |
164 | |
165 /** | |
166 * Loads all child link IDs of a given menu link, regardless of visibility. | |
167 * | |
168 * This method is mostly useful for testing. | |
169 * | |
170 * @param string $id | |
171 * The menu link plugin ID. | |
172 * | |
173 * @return array | |
174 * An unordered array of IDs representing the IDs of all children, or NULL | |
175 * if the ID is invalid. | |
176 */ | |
177 public function getChildIds($id); | |
178 | |
179 /** | |
180 * Determines if any links use a given menu name. | |
181 * | |
182 * @param string $menu_name | |
183 * The menu name. | |
184 * | |
185 * @return bool | |
186 * TRUE if any links are present in the named menu, FALSE otherwise. | |
187 */ | |
188 public function menuNameInUse($menu_name); | |
189 | |
190 /** | |
191 * Resets any local definition cache. Used for testing. | |
192 */ | |
193 public function resetDefinitions(); | |
194 | |
195 } |