/** * Método para crear/modificar un objeto de base de datos * * @param string $medthod: create, update * @param array $data: Data para autocargar el modelo * @param array $optData: Data adicional para autocargar * * return object ActiveRecord */ public static function setMenu($method, $data, $optData = null) { $obj = new Menu($data); //Se carga los datos con los de las tablas if ($optData) { //Se carga información adicional al objeto $obj->dump_result_self($optData); } //Verifico que no exista otro menu, y si se encuentra inactivo lo active $conditions = empty($obj->id) ? "recurso_id='{$obj->recurso_id}' AND visibilidad={$obj->visibilidad}" : "recurso_id='{$obj->recurso_id}' AND visibilidad={$obj->visibilidad} AND id != '{$obj->id}'"; $old = new Menu(); if ($old->find_first($conditions)) { if ($method == 'create' && $old->activo != Menu::ACTIVO) { $obj->id = $old->id; $obj->activo = Menu::ACTIVO; $method = 'update'; } else { DwMessage::info('Ya existe un menú registrado para ese recurso y visibilidad.'); return FALSE; } } return $obj->{$method}() ? $obj : FALSE; }
/** * Método para eliminar */ public function eliminar($key) { if (!($id = Security::getKey($key, 'eliminar_menu', 'int'))) { return Redirect::toAction('listar'); } $menu = new Menu(); if (!$menu->find_first($id)) { Flash::error('Lo sentimos, pero no se ha podido establecer la información del menú'); return Redirect::toAction('listar'); } if ($menu->id <= 2) { Flash::warning('Lo sentimos, pero este menú no se puede eliminar.'); return Redirect::toAction('listar'); } try { if ($menu->delete()) { Flash::valid('El menú se ha eliminado correctamente!'); } else { Flash::warning('Lo sentimos, pero este menú no se puede eliminar.'); } } catch (KumbiaException $e) { Flash::error('Este menú no se puede eliminar porque se encuentra relacionado con otro registro.'); } return Redirect::toAction('listar'); }
/** * Método para actualizar el archivo config.ini según los parámetros enviados * * @param type $data Campos de los formularios * @param type $source Production o Deveploment * @param type $createDb Indica si se crea o no la base de datos * @return boolean */ public static function setConfig($data, $source = 'application') { //Verifico si tiene permisos de escritura para crear y editar un archvivo.ini if (!is_writable(APP_PATH . 'config')) { MkcMessage::warning('Asigna temporalmente el permiso de escritura a la carpeta "config" de tu app!.'); return false; } //Filtro el array $data = Filter::data($data, null, 'trim'); $rs = MkcConfig::write('config', $data, $source); if ($rs && $source == 'custom') { //Para verificar si está habilitado el manejo de sucursales $config = MkcConfig::read('config', 'custom'); $menu = new Menu(); $menu->find_first(Menu::SUCURSAL); $menu->activo = $config['app_office'] == 'Off' ? Menu::INACTIVO : Menu::ACTIVO; $menu->update(); } if ($rs) { MkcAudit::info('Se ha actualizado el archivo de configuración del sistema'); } return $rs; }
/** * Método para eliminar */ public function eliminar($key) { if (!($id = MkcSecurity::isValidKey($key, 'eliminar_menu', 'int'))) { return MkcRedirect::toAction('listar'); } $menu = new Menu(); if (!$menu->find_first($id)) { MkcMessage::get('id_no_found'); return MkcRedirect::toAction('listar'); } if ($menu->id <= 2) { MkcMessage::warning('Lo sentimos, pero este menú no se puede eliminar.'); return MkcRedirect::toAction('listar'); } try { if ($menu->delete()) { MkcMessage::valid('El menú se ha eliminado correctamente!'); } else { MkcMessage::warning('Lo sentimos, pero este menú no se puede eliminar.'); } } catch (KumbiaException $e) { MkcMessage::error('Este menú no se puede eliminar porque se encuentra relacionado con otro registro.'); } return MkcRedirect::toAction('listar'); }