function group_content_menu_get_menu_link_default in Group Content Menu 8
Returns the definition for a menu link for the given node.
Parameters
\Drupal\node\NodeInterface $node: The node entity.
array $menu_names: The menu names.
Return value
array An array that contains default values for the menu link form.
1 call to group_content_menu_get_menu_link_default()
- NodeFormAlter::alter in src/
NodeFormAlter.php - Alter node forms to add GroupContentMenu options where appropriate.
File
- ./
group_content_menu.module, line 196 - Provides a group content menu entity type.
Code
function group_content_menu_get_menu_link_default(NodeInterface $node, array $menu_names) {
/** @var \Drupal\node\NodeTypeInterface $node_type */
$node_type = $node->type->entity;
$menu_name = strtok($node_type
->getThirdPartySetting('menu_ui', 'parent', 'main:'), ':');
$defaults = [
'entity_id' => 0,
'id' => '',
'title' => '',
'title_max_length' => 128,
'description' => '',
'description_max_length' => 128,
'menu_name' => $menu_name,
'parent' => '',
'weight' => 0,
];
if (empty($menu_names)) {
// No menu is yet available.
return $defaults;
}
if ($node
->id()) {
$query = \Drupal::entityQuery('menu_link_content')
->condition('link.uri', 'entity:node/' . $node
->id())
->condition('menu_name', $menu_names, 'IN')
->sort('id', 'ASC')
->range(0, 1);
$result = $query
->execute();
$id = !empty($result) ? reset($result) : FALSE;
if ($id) {
$menu_link = MenuLinkContent::load($id);
$menu_link = \Drupal::service('entity.repository')
->getTranslationFromContext($menu_link);
$defaults = [
'entity_id' => $menu_link
->id(),
'id' => $menu_link
->getPluginId(),
'title' => $menu_link
->getTitle(),
'title_max_length' => $menu_link
->getFieldDefinitions()['title']
->getSetting('max_length'),
'description' => $menu_link
->getDescription(),
'description_max_length' => $menu_link
->getFieldDefinitions()['description']
->getSetting('max_length'),
'menu_name' => $menu_link
->getMenuName(),
'parent' => $menu_link
->getParentId(),
'weight' => $menu_link
->getWeight(),
];
}
}
return $defaults;
}