Skip to content
Snippets Groups Projects
Commit abf9620b authored by Eric Bremner's avatar Eric Bremner Committed by Kevin Paxman
Browse files

ISTWCMS-4653: checking children of menu items to ensure that they are published

parent fdc4f813
No related branches found
No related tags found
1 merge request!61ISTWCMS-4653: checking for unpublished nodes when getting the menu
......@@ -293,20 +293,43 @@ class UWService implements UWServiceInterface {
*/
public function uwGetMenu(string $menu_name = 'main', bool $count_menu_items = FALSE, bool $include_parent_in_count = FALSE): array {
// The base path, need this for removing when on subfoldered sites,
// for example d8/fdsu5/, we need to remove the fdsu5 from the path
// alias.
global $base_path;
// Get the main menu from the simplify menu module.
$menu = $this->simplifyMenu->getMenuTree($menu_name);
// Set it to the menu_tree which is done by simplify menu.
$menu = $menu['menu_tree'];
// Ensure that we only get the published menu items.
$this->uwCheckPublishedMenuItems($menu);
// If we want to have the count of menu items, then count them.
if ($count_menu_items) {
// Add the count of the menu items.
$menu = $this->uwSetMenuItems($menu, $include_parent_in_count);
}
return $menu;
}
/**
* {@inheritDoc}
*/
public function uwCheckPublishedMenuItems(&$menu): void {
// The base path, need this for removing when on subfoldered sites,
// for example d8/fdsu5/, we need to remove the fdsu5 from the path
// alias.
global $base_path;
// Step through each menu and ensure that it is published.
foreach ($menu as $key => $m) {
// If there is a submenu (i.e. children), process it first.
if (isset($m['submenu'])) {
$this->uwCheckPublishedMenuItems($menu[$key]['submenu']);
}
// Remove the base path from the url so that we can get
// the actual content from the path alias.
$alias = str_replace($base_path, '', $m['url']);
......@@ -326,15 +349,6 @@ class UWService implements UWServiceInterface {
}
}
}
// If we want to have the count of menu items, then count them.
if ($count_menu_items) {
// Add the count of the menu items.
$menu = $this->uwSetMenuItems($menu, $include_parent_in_count);
}
return $menu;
}
/**
......
......@@ -98,6 +98,14 @@ interface UWServiceInterface {
*/
public function uwGetMenu(string $menu_name = 'main', bool $count_menu_items = FALSE, bool $include_parent_in_count = FALSE): array;
/**
* Function to check that all menu links are published.
*
* @param $menu
* The array of menus.
*/
public function uwCheckPublishedMenuItems(&$menu): void;
/**
* A function to setup the menu for UW display.
*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment