From 956deac89fa5958ccd76d0f4a4588bfdfd76eab3 Mon Sep 17 00:00:00 2001 From: HFO4 <912394456@qq.com> Date: Sun, 11 Mar 2018 11:39:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/index/controller/Admin.php | 32 ++++++++++++++++++++++++ application/index/model/AdminHandler.php | 11 ++++++++ application/version.json | 2 +- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/application/index/controller/Admin.php b/application/index/controller/Admin.php index bebe45de..f7380f13 100644 --- a/application/index/controller/Admin.php +++ b/application/index/controller/Admin.php @@ -29,12 +29,44 @@ class Admin extends Controller{ } public function index(){ + if($this->adminObj->checkDbVersion()){ + $this->redirect(url('/Admin/UpdateDb','','')); + exit(); + } return view('admin_index', [ 'options' => $this->siteOptions, 'statics' => $this->adminObj->getStatics(), ]); } + public function UpdateDb(){ + if(!$this->adminObj->checkDbVersion()){ + $this->redirect(url('/Admin','','')); + exit(); + } + echo ""; + echo "准备升级数据库,当前数据库版本:".$this->adminObj->dbVerInfo["now"]; + echo ", 目标数据库版本:".$this->adminObj->dbVerInfo["require"].";
"; + $updatePath = ROOT_PATH . "update_".$this->adminObj->dbVerInfo["now"]."to".$this->adminObj->dbVerInfo["require"].".sql"; + if(!file_exists($updatePath)){ + die("数据库更新文件(".$updatePath.")不存在,升级中止."); + } + echo "获取升级SQL文件(".$updatePath.")
"; + $updateContent = file_get_contents($updatePath); + echo "将执行以下指令:
"; + echo "".htmlspecialchars($updateContent)."
"; + $sqlSingle = explode(";", $updateContent); + foreach ($sqlSingle as $key => $value){ + if(empty($value)){ + continue; + } + if(!Db::execute($value)){ + echo "执行$value 时出现错误
"; + } + } + echo "升级完成,返回管理面板"; + } + public function Setting(){ return view('basic_setting', [ 'options' => $this->siteOptions, diff --git a/application/index/model/AdminHandler.php b/application/index/model/AdminHandler.php index bb3ebe19..0fa28a24 100644 --- a/application/index/model/AdminHandler.php +++ b/application/index/model/AdminHandler.php @@ -14,11 +14,22 @@ class AdminHandler extends Model{ public $pageNow; public $pageTotal; public $dataTotal; + public $dbVerInfo; public function __construct($options){ $this->siteOptions = $options; } + public function checkDbVersion(){ + $versionInfo = json_decode(@file_get_contents(ROOT_PATH. "application/version.json"),true); + $dbVerNow = Option::getValue("database_version"); + if(!isset($versionInfo["db_version"]) || $dbVerNow < (int)$versionInfo["db_version"]){ + $this->dbVerInfo = array('now' => $dbVerNow, 'require' => $versionInfo["db_version"]); + return true; + } + return false; + } + public function getStatics(){ $statics["fileNum"] = Db::name('files')->count(); $statics["privateShareNum"] = Db::name('shares')->where("type","private")->count(); diff --git a/application/version.json b/application/version.json index 3c509e4d..fcc78cb2 100644 --- a/application/version.json +++ b/application/version.json @@ -1 +1 @@ -{"type":"","version":"1.0.2","version_id":3} \ No newline at end of file +{"type":"","version":"1.0.2","version_id":3,"db_version":2} \ No newline at end of file