$vars = array('id' => $_GET['itemid'], 'key' => $vars); Menus::update($vars); $data['alertgreen'][] = 'Menu Updated'; Token::remove($_POST['token']); } break; default: # code... break; } if (isset($_GET['id'])) { $menuid = $_GET['id']; } else { $menuid = ''; } $data['menus'] = Menus::getId($_GET['itemid']); $data['parent'] = Menus::isHadParent('', $menuid); Theme::admin('header', $data); System::inc('menus_form_edit', $data); Theme::admin('footer'); break; case 'del': if (isset($_GET['itemid'])) { if (!isset($_GET['token']) || !Token::isExist($_GET['token'])) { // VALIDATE ALL $alertred[] = TOKEN_NOT_EXIST; } if (isset($alertred)) { $data['alertred'] = $alertred; } else { Menus::delete($_GET['itemid']);
protected function _save(\Menus $menu, &$error) { if ($menu->isNew() && ($parent_id = $this->request()->get('parent_id', 'INT', 0))) { } else { $parent_id = $this->request()->post('parent_id', 'INT', 0); } if ($parent_id) { $parent = \Menus::retrieveById($parent_id); } else { $parent = \Menus::retrieveRoot(); } if (!$parent) { $error['parent'] = t('Not found menu parent with id:' . $parent_id); return false; } $isNew = $menu->isNew(); $menu->hydrate($this->request()->post('menus', 'ARRAY', array())); if ($menu->type == \Menus::INTERNAL) { if (!$menu->route) { $error['menus.route'] = t("Menu's route is required."); } } else { if ($menu->type == \Menus::EXTERNAL) { if (!$menu->link || !filter_var($menu->link, FILTER_VALIDATE_URL)) { $error['menus.link'] = t("Menu's link is invalid."); } } } if (!empty($error)) { return false; } if ($isNew) { $menu->insertAsLastChildOf($parent); } else { if ($parent->getId() == $menu->getId()) { $error['parent'] = t('Could not make child of itself'); return false; } $currentParent = $menu->getParent(); if ($currentParent->id != $parent->id) { //change parent $menu->moveToLastChildOf($parent); } else { //save normal if ($menu->save()) { // only save information return true; } else { if (!$menu->isValid()) { $failures = $menu->getValidationFailures(); foreach ($failures as $failure) { if (!isset($error[$failure->getColumn()])) { $error[$failure->getColumn()] = array(); } $error[$failure->getColumn()][] = $failure->getMessage(); } return empty($error); } return false; } } //end save normal } if (!$menu->isValid()) { $failures = $menu->getValidationFailures(); foreach ($failures as $failure) { $error[$failure->getColumn()] = $failure->getMessage(); } } return empty($error); }