/** * findMenuIdOnMap * * @param string $itemId menu item object id * * @return string */ protected function findMenuIdOnMap($itemId) { $menuMap = $this->cache->getMenuMap(); if (isset($menuMap[$itemId])) { $menuId = $menuMap[$itemId]; if ($menuId !== null) { return $menuId; } } $menuId = $this->menuRepository->getMenuIdByItem($itemId); return $menuId; }
/** * testGetCachedMenuThrowException * * @return void */ public function testGetCachedMenuThrowException() { $this->setExpectedException('\\XpressEngine\\Menu\\Exceptions\\NotFoundMenuException'); $cache = $this->cache; $cache->shouldReceive('has')->andReturn(false); $menuCacheHandler = new MenuCacheHandler($cache, false); $menuCacheHandler->getCachedMenu('testMenuId'); }
/** * setOrder * * @param MenuItem $menuItem to change ordering menu item instance * @param int $ordering new ordering number * * @return void */ public function setOrder(MenuItem $menuItem, $ordering) { $items = $this->menuRepository->children(new MenuItem(['id' => $menuItem->parentId])); $children = array_filter($items, function ($child) use($menuItem) { return $child->id != $menuItem->id; }); $children = array_merge(array_slice($children, 0, $ordering), [$menuItem], array_slice($children, $ordering)); $seq = 0; foreach ($children as $child) { $child->ordering = $seq; $this->menuRepository->updateItem($child); $this->cache->deleteCachedMenu($child->id); $seq++; } $this->cache->deleteCachedMenu($menuItem->menuId); }
/** * updateItemPermission * * @param MenuRetrieveHandler $menuHandler menu handler * @param MenuCacheHandler $cacheHandler menu cache handler * @param MenuPermissionHandler $permissionHandler menu permission handler * @param string $menuId menu id * @param string $itemId menu item id * * @return RedirectResponse */ public function updateItemPermission(MenuRetrieveHandler $menuHandler, MenuCacheHandler $cacheHandler, MenuPermissionHandler $permissionHandler, $menuId, $itemId) { XeDB::beginTransaction(); try { $inputs = Request::all(); $menu = $menuHandler->getMenu($menuId); $item = $menu->getItem($itemId); $menuGrant = $permissionHandler->createAccessGrant($inputs); $menuGrant = $permissionHandler->createVisibleGrant($inputs, $menuGrant); $permissionHandler->registerItemPermission($item, $menuGrant); $cacheHandler->deleteCachedMenu($item->menuId); } catch (Exception $e) { XeDB::rollback(); Request::flash(); return Redirect::back()->with('alert', ['type' => 'danger', 'message' => $e->getMessage()]); } XeDB::commit(); return Redirect::route('settings.menu.index'); }