91 lines
2.3 KiB
PHP
91 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Providers;
|
|
|
|
use View;
|
|
use Illuminate\Support\ServiceProvider;
|
|
use App\Exceptions\PrettyPageException;
|
|
|
|
class BootServiceProvider extends ServiceProvider
|
|
{
|
|
/**
|
|
* Bootstrap any application services.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function boot()
|
|
{
|
|
View::addExtension('tpl', 'blade');
|
|
|
|
$this->checkFileExists();
|
|
$this->checkDbConfig();
|
|
$this->checkInstallation();
|
|
}
|
|
|
|
protected function checkFileExists()
|
|
{
|
|
if (!file_exists(BASE_DIR."/.env")) {
|
|
throw new PrettyPageException('.env 文件不存在', -1);
|
|
}
|
|
}
|
|
|
|
protected function checkDbConfig()
|
|
{
|
|
// use error control to hide shitty connect warnings
|
|
@$conn = new \mysqli(
|
|
config('database.connections.mysql.host'),
|
|
config('database.connections.mysql.username'),
|
|
config('database.connections.mysql.password'),
|
|
config('database.connections.mysql.database'),
|
|
config('database.connections.mysql.port')
|
|
);
|
|
|
|
if ($conn->connect_error)
|
|
throw new PrettyPageException("无法连接至 MySQL 服务器,请检查你的配置:".$conn->connect_error, $conn->connect_errno);
|
|
|
|
return true;
|
|
}
|
|
|
|
protected function checkInstallation()
|
|
{
|
|
if (!$this->checkTableExist()) {
|
|
return redirect('/setup/index.php')->send();
|
|
}
|
|
|
|
if (!is_dir(BASE_DIR.'/storage/textures/')) {
|
|
if (!mkdir(BASE_DIR.'/storage/textures/'))
|
|
throw new PrettyPageException('textures 文件夹创建失败,请确认目录权限是否正确,或者手动放置一个。', -1);
|
|
}
|
|
|
|
if (config('app.version') != \Option::get('version', '')) {
|
|
return redirect('/setup/update.php')->send();
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public static function checkTableExist()
|
|
{
|
|
$tables = ['users', 'closets', 'players', 'textures', 'options'];
|
|
|
|
foreach ($tables as $table_name) {
|
|
// prefix will be added automatically
|
|
if (!\Schema::hasTable($table_name)) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Register any application services.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function register()
|
|
{
|
|
//
|
|
}
|
|
}
|