1 layout.class.inc Layout::setAdditionalMenuItems($path)

Set additional menu items based on the path provided.

File

core/modules/layout/includes/layout.class.inc, line 778
Class for loading, modifying, and executing a layout.

Class

Layout
Class representing a layout.

Code

function setAdditionalMenuItems($path) {
  $item_exists = FALSE;
  if (empty($this->additional_menu_items)) {
    $item_exists = FALSE;
  }
  else {
    foreach ($this->additional_menu_items as $item) {
      if ($item->path === $path) {
        $item_exists = TRUE;
      }
    }
  }
  if (!$item_exists) {
    // Use an existing menu item if one exists at this path.
    if ($existing_item = layout_menu_item_load_multiple_by_path($path)) {
      $this->additional_menu_items[$path] = $existing_item;
    }
    // If this layout doesn't have a menu item, make one. If the path is
    // provided by another module, no menu item is necessary.
    elseif (layout_provides_path($path) === NULL) {
      if (!isset($this->additional_menu_items[$path])) {
        $menu_item_settings = array(
          'path' => $path,
          'name' => $this->name . '_' . system_transliterate_machine_name($path),
        );
        $this->additional_menu_items[$path] = new LayoutMenuItem($menu_item_settings);
      }
      else {
        $this->additional_menu_items[$path]->path = $path;
      }
    }
    else {
      if (isset($this->additional_menu_items[$path])) {
        $this->additional_menu_items[$path]->delete();
        unset($this->additional_menu_items[$path]);
      }
    }
  }
}