You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
2.8 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
// error_reporting(0);
include "model.php";
include "YxEnv.php";
define('install', true);
define('INSTALL_ROOT', __DIR__);
define('TESTING_TABLE', 'config');
$step = $_GET['step'] ?? 1;
$installDir = "install";
$modelInstall = new installModel();
// Env设置
$yxEnv = new YxEnv();
// 检查是否有安装过
$envFilePath = $modelInstall->getAppRoot() . '/.env';
if ($modelInstall->appIsInstalled() && in_array($step, [1, 2, 3, 4])) {
die('可能已经安装过本系统了请删除配置目录下面的install.lock文件再尝试');
}
// 加载Example文件
$yxEnv->load($modelInstall->getAppRoot() . '/.example.env');
//尝试生成.env
$yxEnv->makeEnv($modelInstall->getAppRoot() . '/.env');
$post = [
'host' => $_POST['host'] ?? '127.0.0.1',
'port' => $_POST['port'] ?? '3306',
'user' => $_POST['user'] ?? 'root',
'password' => $_POST['password'] ?? '',
'name' => $_POST['name'] ?? 'likeadmin',
'admin_user' => $_POST['admin_user'] ?? '',
'admin_password' => $_POST['admin_password'] ?? '',
'admin_confirm_password' => $_POST['admin_confirm_password'] ?? '',
'prefix' => $_POST['prefix'] ?? 'la_',
'import_test_data' => $_POST['import_test_data'] ?? 'off',
'clear_db' => $_POST['clear_db'] ?? 'off',
];
$message = '';
// 检查数据库正确性
if ($step == 4) {
$canNext = true;
if (empty($post['prefix'])) {
$canNext = false;
$message = '数据表前缀不能为空';
} elseif ($post['admin_user'] == '') {
$canNext = false;
$message = '请填写管理员用户名';
} elseif (empty(trim($post['admin_password']))) {
$canNext = false;
$message = '管理员密码不能为空';
} elseif ($post['admin_password'] != $post['admin_confirm_password']) {
$canNext = false;
$message = '两次密码不一致';
} else {
// 检查 数据库信息
$result = $modelInstall->checkConfig($post['name'], $post);
if ($result->result == 'fail') {
$canNext = false;
$message = $result->error;
}
// 导入测试数据
if ($canNext == true && $post['import_test_data'] == 'on') {
if (!$modelInstall->importDemoData()) {
$canNext = false;
$message = '导入测试数据错误';
}
}
// 写配置文件
if ($canNext) {
$yxEnv->putEnv($envFilePath, $post);
$modelInstall->mkLockFile();
}
// 恢复admin和index入口
if ($canNext) {
$modelInstall->restoreIndexLock();
}
}
if (!$canNext)
$step = 3;
}
// 取得安装成功的表
$successTables = $modelInstall->getSuccessTable();
$nextStep = $step + 1;
include __DIR__ . "/template/main.php";