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 }