protected function createNewMenuItems($menu, $items, $order)
{
$newlyCreated = array();
// create new items if there are any found
foreach ($items as $id => $item) {
if (!is_numeric($id)) {
if ($item['url_or_page'] == 'page' && (!isset($item['page_id']) || $item['page_id'] == '')) {
unset($items[$id]);
unset($order[$id]);
continue;
}
if ($item['url_or_page'] == 'url') {
$item['page_id'] = NULL;
}
$menuItem = $this->MenuItem->create(['menu_id' => $menu->id, 'parent_item_id' => null, 'page_id' => $item['page_id'], 'url' => $item['url'], 'image' => array_get($item, 'image', NULL), 'name' => $item['name'], 'permission' => array_get($item, 'permission', NULL), 'position' => 0]);
unset($items[$id]);
$items[$menuItem->id] = array('url' => $menuItem->url, 'name' => $menuItem->name, 'page_id' => $menuItem->page_id, 'permission' => $menuItem->permission);
$newlyCreated[$id] = $menuItem->id;
}
}
// replace all the order ids with newly created ids
$newOrder = array();
foreach ($order as $key => $value) {
$id = array_key_exists($key, $newlyCreated) ? $newlyCreated[$key] : $key;
$nestedId = array_key_exists($value, $newlyCreated) ? $newlyCreated[$value] : $value;
$newOrder[$id] = $nestedId;
}
$newItems = array();
// rearrange items to be in the correct order listed
foreach ($newOrder as $id => $parentId) {
$newItems[$id] = $items[$id];
}
return array($newItems, $newOrder);
}