/** * 卸载插件 * @author jry <*****@*****.**> */ public function uninstall() { $addon_object = D('Addon'); $id = trim(I('id')); $db_addons = $addon_object->find($id); $class = get_addon_class($db_addons['name']); $this->assign('jumpUrl', U('index')); if (!$db_addons || !class_exists($class)) { $this->error('插件不存在'); } session('addons_uninstall_error', null); $addons = new $class(); $uninstall_flag = $addons->uninstall(); if (!$uninstall_flag) { $this->error('执行插件预卸载操作失败' . session('addons_uninstall_error')); } $hooks_update = D('Hook')->removeHooks($db_addons['name']); if ($hooks_update === false) { $this->error('卸载插件所挂载的钩子数据失败'); } S('hooks', null); $delete = $addon_object->where("name='{$db_addons['name']}'")->delete(); // 卸载数据库 $sql_file = realpath(C('ADDON_PATH') . $db_addons['name']) . '/Sql/uninstall.sql'; if (file_exists($sql_file)) { $sql_object = new Sql(); $sql_status = $sql_object->execute_sql_from_file($sql_file); if (!$sql_status) { $this->error('执行插件SQL卸载语句失败' . session('addons_uninstall_error')); } } if ($delete === false) { $this->error('卸载插件失败'); } else { $this->success('卸载成功'); } }
/** * 卸载模块 * @author jry <*****@*****.**> */ public function uninstall($id, $clear = false) { $module_object = D('Module'); $module_info = $module_object->find($id); if ($module_info['is_system'] === '1') { $this->error('系统模块不允许卸载!'); } $result = $module_object->delete($id); if ($result) { if ($clear) { $sql_object = new Sql(); $sql_file = realpath(APP_PATH . $module_info['name']) . '/Sql/uninstall.sql'; $sql_status = $sql_object->execute_sql_from_file($sql_file); if ($sql_status) { $this->success('卸载成功,相关数据彻底删除!', U('index')); } } else { $this->success('卸载成功,相关数据未卸载!', U('index')); } } else { $this->error('卸载失败', U('index')); } }