class MenuTreeStorage in Multiversion 8
Same name and namespace in other branches
- 8.2 src/MenuTreeStorage.php \Drupal\multiversion\MenuTreeStorage
Hierarchy
- class \Drupal\Core\Menu\MenuTreeStorage implements MenuTreeStorageInterface
- class \Drupal\multiversion\MenuTreeStorage
Expanded class hierarchy of MenuTreeStorage
File
- src/
MenuTreeStorage.php, line 11
Namespace
Drupal\multiversionView source
class MenuTreeStorage extends CoreMenuTreeStorage {
/**
* @var \Drupal\multiversion\Workspace\WorkspaceManagerInterface
*/
protected $workspaceManager;
/**
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* {@inheritdoc}
*/
public function __construct(Connection $connection, CacheBackendInterface $menu_cache_backend, CacheTagsInvalidatorInterface $cache_tags_invalidator, $table, array $options = []) {
$this->connection = $connection;
$this->cacheTagsInvalidator = $cache_tags_invalidator;
$this->table = $table;
$this->options = $options;
$this->entityTypeManager = \Drupal::service('entity_type.manager');
$this->workspaceManager = \Drupal::service('workspace.manager');
$this->menuCacheBackend = new CacheBackendDecorator($menu_cache_backend, $this->workspaceManager);
}
/**
* {@inheritdoc}
*/
protected function loadLinks($menu_name, MenuTreeParameters $parameters) {
$links = parent::loadLinks($menu_name, $parameters);
// Return links if the menu_link_content is not enabled.
if (!\Drupal::moduleHandler()
->moduleExists('menu_link_content')) {
return $links;
}
$map = [];
// Collect all menu_link_content IDs from the links.
foreach ($links as $i => $link) {
if ($link['provider'] != 'menu_link_content') {
continue;
}
$metadata = unserialize($link['metadata']);
$map[$metadata['entity_id']] = $i;
}
// Load all menu_link_content entities and remove links for the those that
// don't belong to the active workspace.
$entities = $this->entityTypeManager
->getStorage('menu_link_content')
->loadMultiple(array_keys($map));
foreach ($map as $entity_id => $link_id) {
if (!isset($entities[$entity_id])) {
unset($links[$link_id]);
}
}
return $links;
}
/**
* {@inheritdoc}
*/
public function purgeMultiple(array $ids) {
parent::purgeMultiple($ids);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
MenuTreeStorage:: |
protected | property | The cache tags invalidator. | |
MenuTreeStorage:: |
protected | property | The database connection. | |
MenuTreeStorage:: |
protected | property | List of plugin definition fields. | |
MenuTreeStorage:: |
protected | property | Stores definitions that have already been loaded for better performance. | |
MenuTreeStorage:: |
protected | property | ||
MenuTreeStorage:: |
protected | property | Cache backend instance for the extracted tree data. | |
MenuTreeStorage:: |
protected | property | Additional database connection options to use in queries. | |
MenuTreeStorage:: |
protected | property | List of serialized fields. | |
MenuTreeStorage:: |
protected | property | The database table name. | |
MenuTreeStorage:: |
protected | property | ||
MenuTreeStorage:: |
protected | function | Traverses the menu tree and collects all the route names and definitions. | |
MenuTreeStorage:: |
public | function |
Counts the total number of menu links in one menu or all menus. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
protected | function | Determines fields that are part of the plugin definition. | |
MenuTreeStorage:: |
public | function |
Deletes a menu link definition from the storage. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
protected | function | Prepares the data for calling $this->treeDataRecursive(). | |
MenuTreeStorage:: |
protected | function | Collects all the route names and definitions. | |
MenuTreeStorage:: |
protected | function | Purge menu links from the database. | |
MenuTreeStorage:: |
protected | function | Finds the relative depth of this link's deepest child. | |
MenuTreeStorage:: |
protected | function | Saves a link without clearing caches. | |
MenuTreeStorage:: |
protected | function | Checks if the tree table exists and create it if not. | |
MenuTreeStorage:: |
protected | function | Find any previously discovered menu links that no longer exist. | |
MenuTreeStorage:: |
protected | function | Loads the parent definition if it exists. | |
MenuTreeStorage:: |
public | function |
Loads all the IDs for menu links that are below the given ID. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
public | function |
Finds expanded links in a menu given a set of possible parents. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
public | function |
Returns the used menu names in the tree storage. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
public | function |
Returns all the IDs that represent the path to the root of the tree. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
public | function |
Finds the height of a subtree rooted by the given ID. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
public | function |
Loads a menu link plugin definition from the storage. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
public | function |
Loads all the enabled menu links that are below the given ID. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
public | function |
Loads multiple plugin definitions from the storage based on properties. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
public | function |
Loads multiple plugin definitions from the storage based on route. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
protected | function | Loads all table fields, not just those that are in the plugin definition. | |
MenuTreeStorage:: |
protected | function | Loads all table fields for multiple menu link definitions by ID. | |
MenuTreeStorage:: |
protected | function |
Loads links in the given menu, according to the given tree parameters. Overrides MenuTreeStorage:: |
|
MenuTreeStorage:: |
public | function |
Loads multiple plugin definitions from the storage. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
public | function |
Loads a subtree rooted by the given ID. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
public | function |
Loads a menu link tree from the storage. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
public | function |
The maximum depth of tree the storage implementation supports. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
constant | The maximum depth of a menu links tree. | ||
MenuTreeStorage:: |
public | function |
Determines whether a specific menu name is used in the tree. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
protected | function | Re-parents a link's children when the link itself is moved. | |
MenuTreeStorage:: |
protected | function | Prepares a link by unserializing values and saving the definition. | |
MenuTreeStorage:: |
protected | function | Fills in all the fields the database save needs, using the link definition. | |
MenuTreeStorage:: |
public | function |
Purges multiple menu links that no longer exist. Overrides MenuTreeStorage:: |
|
MenuTreeStorage:: |
public | function |
Rebuilds the stored menu link definitions. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
public | function |
Clears all definitions cached in memory. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
protected | function | Executes a select query while making sure the database table exists. | |
MenuTreeStorage:: |
public | function |
Saves a plugin definition to the storage. Overrides MenuTreeStorageInterface:: |
|
MenuTreeStorage:: |
protected | function | Saves menu links recursively. | |
MenuTreeStorage:: |
protected static | function | Defines the schema for the tree table. | |
MenuTreeStorage:: |
protected | function | Determines serialized fields in the storage. | |
MenuTreeStorage:: |
protected | function | Sets the materialized path field values based on the parent. | |
MenuTreeStorage:: |
protected | function | Builds the data representing a menu tree. | |
MenuTreeStorage:: |
protected | function | Sets has_children for the link's parent if it has visible children. | |
MenuTreeStorage:: |
public | function |
Constructs a new \Drupal\Core\Menu\MenuTreeStorage. Overrides MenuTreeStorage:: |