public function destroyItem(MenuHandler $handler, $menuId, $itemId)
{
$item = $handler->getItem($itemId);
$menu = $item->menu;
if ($menu->getKey() !== $menuId) {
throw new InvalidArgumentHttpException(400);
}
XeDB::beginTransaction();
try {
$handler->removeItem($item);
foreach (File::getByFileable($item->getKey()) as $file) {
XeStorage::unBind($item->getKey(), $file);
}
$handler->deleteMenuItemTheme($item);
$this->permissionUnregister($handler->permKeyString($item));
} catch (Exception $e) {
XeDB::rollback();
return Redirect::back()->with('alert', ['type' => 'danger', 'message' => $e->getMessage()]);
}
XeDB::commit();
return Redirect::route('settings.menu.index')->with('alert', ['type' => 'success', 'message' => 'MenuItem deleted']);
}