Mercurial > hg > isophonics-drupal-site
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Menu/MenuLinkManagerInterface.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,195 @@ +<?php + +namespace Drupal\Core\Menu; + +use Drupal\Component\Plugin\PluginManagerInterface; + +/** + * Defines an interface for managing menu links and storing their definitions. + * + * Menu link managers support both automatic plugin definition discovery and + * manually maintaining plugin definitions. + * + * MenuLinkManagerInterface::updateDefinition() can be used to update a single + * menu link's definition and pass this onto the menu storage without requiring + * a full MenuLinkManagerInterface::rebuild(). + * + * Implementations that do not use automatic discovery should call + * MenuLinkManagerInterface::addDefinition() or + * MenuLinkManagerInterface::removeDefinition() when they add or remove links, + * and MenuLinkManagerInterface::updateDefinition() to update links they have + * already defined. + */ +interface MenuLinkManagerInterface extends PluginManagerInterface { + + /** + * Triggers discovery, save, and cleanup of discovered links. + */ + public function rebuild(); + + /** + * Deletes all links having a certain menu name. + * + * If a link is not deletable but is resettable, the link will be reset to have + * its original menu name, under the assumption that the original menu is not + * the one we are deleting it from. Note that when resetting, if the original + * menu name is the same as the menu name passed to this method, the link will + * not be moved or deleted. + * + * @param string $menu_name + * The name of the menu whose links will be deleted or reset. + */ + public function deleteLinksInMenu($menu_name); + + /** + * Removes a single link definition from the menu tree storage. + * + * This is used for plugins not found through discovery to remove definitions. + * + * @param string $id + * The menu link plugin ID. + * @param bool $persist + * If TRUE, this method will attempt to persist the deletion from any + * external storage by invoking MenuLinkInterface::deleteLink() on the + * plugin that is being deleted. + * + * @throws \Drupal\Component\Plugin\Exception\PluginException + * Thrown if the $id is not a valid, existing, plugin ID or if the link + * cannot be deleted. + */ + public function removeDefinition($id, $persist = TRUE); + + /** + * Loads multiple plugin instances based on route. + * + * @param string $route_name + * The route name. + * @param array $route_parameters + * (optional) The route parameters. Defaults to an empty array. + * @param string $menu_name + * (optional) Restricts the found links to just those in the named menu. + * + * @return \Drupal\Core\Menu\MenuLinkInterface[] + * An array of instances keyed by plugin ID. + */ + public function loadLinksByRoute($route_name, array $route_parameters = [], $menu_name = NULL); + + /** + * Adds a new menu link definition to the menu tree storage. + * + * Use this function when you know there is no entry in the tree. This is + * used for plugins not found through discovery to add new definitions. + * + * @param string $id + * The plugin ID for the new menu link definition that is being added. + * @param array $definition + * The values of the link definition. + * + * @return \Drupal\Core\Menu\MenuLinkInterface + * A plugin instance created using the newly added definition. + * + * @throws \Drupal\Component\Plugin\Exception\PluginException + * Thrown when the $id is not valid or is an already existing plugin ID. + */ + public function addDefinition($id, array $definition); + + /** + * Updates the values for a menu link definition in the menu tree storage. + * + * This will update the definition for a discovered menu link without the + * need for a full rebuild. It is also used for plugins not found through + * discovery to update definitions. + * + * @param string $id + * The menu link plugin ID. + * @param array $new_definition_values + * The new values for the link definition. This will usually be just a + * subset of the plugin definition. + * @param bool $persist + * TRUE to also have the link instance itself persist the changed values to + * any additional storage by invoking MenuLinkInterface::updateDefinition() + * on the plugin that is being updated. + * + * @return \Drupal\Core\Menu\MenuLinkInterface + * A plugin instance created using the updated definition. + * + * @throws \Drupal\Component\Plugin\Exception\PluginException + * Thrown if the $id is not a valid, existing, plugin ID. + */ + public function updateDefinition($id, array $new_definition_values, $persist = TRUE); + + /** + * Resets the values for a menu link based on the values found by discovery. + * + * @param string $id + * The menu link plugin ID. + * + * @return \Drupal\Core\Menu\MenuLinkInterface + * The menu link instance after being reset. + * + * @throws \Drupal\Component\Plugin\Exception\PluginException + * Thrown if the $id is not a valid, existing, plugin ID or if the link + * cannot be reset. + */ + public function resetLink($id); + + /** + * Counts the total number of menu links. + * + * @param string $menu_name + * (optional) The menu name to count by. Defaults to all menus. + * + * @return int + * The number of menu links in the named menu, or in all menus if the + * menu name is NULL. + */ + public function countMenuLinks($menu_name = NULL); + + /** + * Loads all parent link IDs of a given menu link. + * + * This method is very similar to getActiveTrailIds() but allows the link to + * be specified rather than being discovered based on the menu name and + * request. This method is mostly useful for testing. + * + * @param string $id + * The menu link plugin ID. + * + * @return array + * An ordered array of IDs representing the path to the root of the tree. + * The first element of the array will be equal to $id, unless $id is not + * valid, in which case the return value will be NULL. + */ + public function getParentIds($id); + + /** + * Loads all child link IDs of a given menu link, regardless of visibility. + * + * This method is mostly useful for testing. + * + * @param string $id + * The menu link plugin ID. + * + * @return array + * An unordered array of IDs representing the IDs of all children, or NULL + * if the ID is invalid. + */ + public function getChildIds($id); + + /** + * Determines if any links use a given menu name. + * + * @param string $menu_name + * The menu name. + * + * @return bool + * TRUE if any links are present in the named menu, FALSE otherwise. + */ + public function menuNameInUse($menu_name); + + /** + * Resets any local definition cache. Used for testing. + */ + public function resetDefinitions(); + +}