文件
mashangyoujiu/Install/Home/Controller/IndexController.class.php

307 行
9.9 KiB
PHP
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
namespace Home\Controller;
use Think\Controller;
use Think\Db;
use Think\Storage;
class IndexController extends Controller
{
static private $Version = "1.9.23";
Public function _initialize()
{
if (is_file(APPS_PATH . 'Common/Conf/config.php')) {
header('Location: ./index.php');
exit;
}
}
/**
* 安装系统首页
*/
public function index()
{
$this->display();
}
/**
* 环境检测页面
*/
public function pull()
{
// 取PHP版本前三位
$subPhpversion = substr(PHP_VERSION, 0, 3);
$gdInfo = gd_info();
$zend = zend_version();
//环境配置
$sceneConf = [
['name' => '操作系统', 'value' => php_uname('s'), 'need' => '不限制', 'state' => true],
['name' => 'PHP版本', 'value' => PHP_VERSION, 'need' => '5.4', 'state' => $subPhpversion == '5.4' ? true : false],
['name' => '附件上传', 'value' => ini_get('upload_max_filesize'), 'need' => '不限制', 'state' => true],
['name' => 'GD库', 'value' => $gdInfo['GD Version'], 'need' => '2.1', 'state' => $gdInfo['GD Version'] ? true : false],
['name' => 'Zend Guard Loader', 'value' => $zend, 'need' => '启用', 'state' => $zend ? true : false],
];
//文件目录权限
$fileAuth = [
// ['name' => './Addons',],
['name' => './Application',],
['name' => './Public',],
['name' => './appPath',],
['name' => './tempApp',],
['name' => './Uploads',],
];
foreach ($fileAuth as &$value) {
// 转换成四进制权限格式
$value['need'] = '0777';
$value['value'] = substr(sprintf("%o", fileperms($value['name'])), -4);
$value['state'] = $value['value'] == $value['need'] ? true : false;
}
//系统环境配置赋值
$this->assign('sceneConf', json_encode($sceneConf));
// 目录/文件权限赋值
$this->assign('fileAuth', json_encode($fileAuth));
$this->display();
}
/**
* 数据库信息填写页面
*/
public function home()
{
//检测服务器参数是否正确
if (IS_POST) {
//参数获取,安装数据信息
$DB['DB_TYPE'] = "mysql";
$DB["DB_NAME"] = I('post.sql_name');
$DB["DB_USER"] = I('post.sql_user_name');
$DB["DB_PWD"] = I('post.sql_password');
$DB["DB_HOST"] = I('post.sql_path');
$DB["DB_PREFIX"] = "ls_";
$DB["DB_PORT"] = "3306";
//缓存数据库数据
if (empty($DB["DB_NAME"]) || empty($DB["DB_USER"]) || empty($DB["DB_USER"]) || empty($DB["DB_HOST"]) || empty($DB["DB_PREFIX"]) || empty($DB["DB_PWD"])) {
$data["status"] = 0;
$data["message"] = "数据库参数不全";
$this->ajaxReturn($data);
}
session('db_config', $DB);
//验证数据库是否可以使用
$dbName = $DB['DB_NAME'];
unset($DB['DB_NAME']);
$db = Db::getInstance($DB);
//创建数据库
$sql = "CREATE DATABASE IF NOT EXISTS `{$dbName}` DEFAULT CHARACTER SET utf8";
//创建数据库
if (!$db->execute($sql)) {
$error = $db->getError();
$data["status"] = 0;
$data["message"] = $error;
} else {
//这是数据库创建成功了
$data["status"] = 1;
$data["message"] = $db . "数据库已经创建成功";
session("stop", 1);
}
$this->ajaxReturn($data);
} else {
$this->display();
}
}
/**
* 填写合伙人信息页面
*/
public function push()
{
if (IS_POST) {
$data = I('post.');
if (!empty($data)) {
$res['status'] = 1;
$res['msg'] = '成功';
session('userInfo', $data);
}
$this->ajaxReturn($res);
} else {
$this->display();
}
}
/**
* 安装页面
*/
public function install()
{
$this->display();
}
/**
* 初始化数据库
*/
public function unitSQL()
{
//链接数据库
$dbConfig = session('db_config');
$db = Db::getInstance($dbConfig);
//创建数据表
$sql = file_get_contents('./Data/install.sql');
$sql = str_replace("\r", "\n", $sql);
$sql = explode(";\n", $sql);
//创建数据
$message = [];
$status = true;
foreach ($sql as $value) {
$value = trim($value);
if (empty($value)) {
continue;
}
if (substr($value, 0, 12) == 'CREATE TABLE') {
$name = preg_replace("/^CREATE TABLE `(\w+)` .*/s", "\\1", $value);
$msg = "创建数据表{$name}";
$class = 'tips success';
if (false !== $db->execute($value)) {
$msg .= '...成功';
} else {
$class = 'tips error';
$msg .= '...失败!';
$status = false;
session('error', true);
}
$message[] = [
'name' => $msg,
'class' => $class,
];
} else {
$db->execute($value);
}
}
if ($status) {
$this->ajaxReturn([
'status' => 1,
'message' => '成功',
'data' => $message,
]);
} else {
$this->ajaxReturn([
'status' => 0,
'message' => '失败',
'data' => $message,
]);
}
}
/**
* 初始化用户
*/
public function unitTable()
{
if (IS_POST) {
//链接数据库
$dbConfig = session('db_config');
$db = Db::getInstance($dbConfig);
$userData = session("userInfo");
$username = $userData["name"];
$add_time = time();
$pwd = strtolower($userData['password']);
$NowTime = $add_time;
$CryptrModel = new \Addons\Api\Crypto();
$password = $CryptrModel->encrypt($pwd, date('YmdHis', $NowTime));
$phone = $userData["phone"];
$start_time = time();
$end_time = time() + 86400 * 365;
$sql = "INSERT INTO `ls_retail_admin` (`id`, `name`, `addtime`, `status`, `last_time`, `password`, `type`, `partnerid`, `phone`, `address`, `image`, `begin_time`, `end_time`, `province`, `city`, `area`, `templateid`, `juris`, `qq`, `entry`) VALUES ('1', '{$username}', '{$add_time}', '1', NULL, '{$password}', '0', '43', '{$phone}', '', NULL, '{$start_time}', '{$end_time}', '', '', '', '1', '1', '', '1');";
$db->execute($sql);
$server = $_SERVER["HTTP_HOST"];
$sql = "INSERT INTO `ls_retail_domain` VALUES ('1', '{$server}', '1', '2', null, null);";
$db->execute($sql);
$sql = "INSERT INTO `ls_jurisdiction_user` VALUES ('1','{$phone}','{$password}','{$username}','{$add_time}','1','1','1','1','1', '0', null, null, '0', '0');";
$db->execute($sql);
$message = [
[
'name' => '成功添加合作伙伴信息',
'class' => 'tips success',
]
];
$this->ajaxReturn([
'status' => 1,
'message' => '成功',
'data' => $message,
]);
}
}
/**
* 设置版本信息
*/
public function setVersion()
{
$dbConfig = session('db_config');
$db = Db::getInstance($dbConfig);
$Version = self::$Version;
$sql = "INSERT INTO `ls_webset` VALUES ('1', '{$Version}'); ";
$db->execute($sql);
$message = [
[
'name' => '版本已设置完毕,版本号:V' . $Version,
'class' => 'tips success',
]
];
$this->ajaxReturn([
'status' => 1,
'message' => '成功',
'data' => $message,
]);
}
/**
* 设置配置文件
*/
public function setConfig()
{
$dbConfig = session('db_config');
$conf = file_get_contents('./Data/conf.tpl');
foreach ($dbConfig as $name => $value) {
$conf = str_replace("[{$name}]", $value, $conf);
}
$conf = str_replace('[HTTP]', $_SERVER["HTTP_HOST"], $conf);
if (file_put_contents('./Application/Common/Conf/config.php', $conf)) {
$this->ajaxReturn([
'status' => 1,
'message' => '成功',
'data' => [
[
'name' => '配置文件写入成功',
'class' => 'tips success',
],
[
'name' => '安装成功之后,请删除根目录文件夹install,避免重复安装',
'class' => 'tips',
],
[
'name' => '安装成功',
'class' => 'tips big-title success',
]
],
]);
} else {
session('error', true);
$this->ajaxReturn([
'status' => 0,
'message' => '失败',
'data' => [
[
'name' => '配置文件写入失败!',
'class' => 'tips error',
],
],
]);
}
}
}