From 5b2d677d173c125a7712aad131e47a03cadb4403 Mon Sep 17 00:00:00 2001 From: buttle Date: Fri, 25 Mar 2022 12:07:14 +0100 Subject: [PATCH] renders a default menu when wordpress api fails --- view/common/wordpress-menu.phtml | 80 +++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 28 deletions(-) diff --git a/view/common/wordpress-menu.phtml b/view/common/wordpress-menu.phtml index 9b9041b..b53d089 100644 --- a/view/common/wordpress-menu.phtml +++ b/view/common/wordpress-menu.phtml @@ -10,35 +10,60 @@ $items = new ArrayObject; $items[0] = new ArrayObject(); // top level menu items go here if ($wordpress_endpoint) { - $client = new Client($wordpress_endpoint); - $client->setOptions(array("timeout"=>1)); - $response = $client->send(); - $response_data = json_decode($response->getBody()); - - if (!$response->isClientError() && $response_data) { - foreach ($response_data as $menu_item) { - $lowered_title = strtolower($menu_item->title); - $item_url = $menu_item->url; - if ($lowered_title == 'login') { // manipulate login url - $item_url = "/login"; + try { + $client = new Client($wordpress_endpoint); + $client->setOptions(array("timeout"=>1)); + $response = $client->send(); + } + catch (exception $e) { + $response = null; + } + if ($response) { + $response_data = json_decode($response->getBody()); + if (!$response->isClientError() && $response_data) { + foreach ($response_data as $menu_item) { + $lowered_title = strtolower($menu_item->title); + $item_url = $menu_item->url; + if ($lowered_title == 'login') { // manipulate login url + $item_url = "/login"; + } + $item_title = $menu_item->title; + if ($lowered_title == 'collections') { // change Collections item + $item_title = "Project"; + $item_url = $wordpress_site; + } + $item = [ + "id" => $menu_item->ID, + "title" => $item_title, + "url" => $item_url + ]; + if (!array_key_exists($menu_item->menu_item_parent, $items)) { + $items[$menu_item->menu_item_parent] = new ArrayObject(); + } + $items[$menu_item->menu_item_parent][$menu_item->ID] =$item; } - $item_title = $menu_item->title; - if ($lowered_title == 'collections') { // change Collections item - $item_title = "Project"; - $item_url = $wordpress_site; - } - $item = [ - "id" => $menu_item->ID, - "title" => $item_title, - "url" => $item_url - ]; - if (!array_key_exists($menu_item->menu_item_parent, $items)) { - $items[$menu_item->menu_item_parent] = new ArrayObject(); - } - $items[$menu_item->menu_item_parent][$menu_item->ID] =$item; } } } + +if (count($items[0]) == 0) { + // we did not retrieve a menu from the wordpress site + // let's create a default menu + if ($wordpress_site) { + $project_item = [ + "id" => 2, + "title" => "Project", + "url" => $wordpress_site + ]; + $items[0][2] = $project_item; + } + $login_item = [ + "id" => 1, + "title" => "Login", + "url" => "/login" + ]; + $items[0][1] = $login_item; +} //print_r($items); if (!function_exists('render_menu')) { @@ -55,8 +80,7 @@ if (!function_exists('render_menu')) { echo '' . PHP_EOL; } } -if (count($items[0]) > 0) { - render_menu($items, 0); -} + +render_menu($items, 0); ?>