You are here

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;
}