diff --git a/app/Services/Boot.php b/app/Services/Boot.php index da6fa77f..1c5ffed1 100644 --- a/app/Services/Boot.php +++ b/app/Services/Boot.php @@ -60,7 +60,7 @@ class Boot throw new E("检测到 `textures` 文件夹已被删除,请重新运行 安装程序,或者手动放置一个。", -1, true); } - if (Application::getVersion() != @Option::get('version')) { + if (Application::getVersion() != Option::get('version', '')) { Http::redirect(Http::getBaseUrl().'/setup/update.php'); exit; } diff --git a/app/Services/Option.php b/app/Services/Option.php index 77896c78..c694347e 100644 --- a/app/Services/Option.php +++ b/app/Services/Option.php @@ -3,41 +3,60 @@ namespace App\Services; use Illuminate\Database\Eloquent\Model; -use App\Exceptions\E; +use \Exception; class Option { - public static function get($key) { + public static function get($key, $default_value = null) + { $option = OptionModel::where('option_name', $key)->first(); - if (!$option) throw new E('Unexistent option.', 1); + + if (!$option) { + if (!is_null($default_value)) { + return $default_value; + } else { + throw new Exception('Unexistent option.', 1); + } + } + return $option->option_value; } - public static function set($key, $value) { + public static function set($key, $value) + { $option = OptionModel::where('option_name', $key)->first(); - if (!$option) throw new E('Unexistent option.', 1); + + if (!$option) + throw new Exception('Unexistent option.', 1); + $option->option_value = $value; return $option->save(); } - public static function add($key, $value) { + public static function add($key, $value) + { + if (self::has($key)) + return true; + $option = new OptionModel; $option->option_name = $key; $option->option_value = $value; $option->save(); } - public static function has($key) { + public static function has($key) + { try { OptionModel::where('option_name', $key)->firstOrFail(); - } catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) { + } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) { return false; } return true; } - public static function delete($key) { - OptionModel::where('option_name', $key)->first()->delete(); + public static function delete($key) + { + OptionModel::where('option_name', $key)->delete(); } } diff --git a/setup/update.php b/setup/update.php index 69a88219..059bbf38 100644 --- a/setup/update.php +++ b/setup/update.php @@ -24,7 +24,7 @@ if (Config::checkDbConfig($db_config)) { } // If no update is available -if (App::getVersion() == @Option::get('version')) { +if (App::getVersion() == Option::get('version', '')) { View::show('setup.locked'); exit; }