<?php

/*
 * ----------------------------------------------------
 * 程序名称: 牛叉广告管理系统(NiuXams)
 * 程序功能: 实现专业的广告投放、管理和统计等管理系统！
 * 程序开发: 牛叉软件(NiuXSoft.com)
 * 版权所有: [NiuXams] (C)2013-2099 NiuXSoft.com
 * 官方网站: www.niuxsoft.com  Email: niuxsoft@163.com
 * ----------------------------------------------------
 * 使用条款:
 * 1.为构建创新型经济社会,请尊重保护知识产权！
 * 2.该软件个人非商业用途免费使用.
 * 3.免费使用禁止修改版权信息和官方推广链接.
 * 4.禁止任何衍生版本.禁止任何非法修改源代码贩卖.
 * ----------------------------------------------------
 */

defined('NIUX_INCLUDED') or exit('Access Denied.');
$name = inSql($_POST['name']);
preg_match('/^([0-9a-zA-Z@._]){3,20}$/', $name) or die("超级管理员名称不能有特殊字符！");
$pwd = md5($name . inSql($_POST['pwd']) . $name); 
$sqlServer = htmlspecialchars(inSql($_POST['sqlServer']));
$sqlName = htmlspecialchars(inSql($_POST['sqlName']));
$sqlPwd = htmlspecialchars(inSql($_POST['sqlPwd']));
$sqlDataBase = htmlspecialchars(inSql($_POST['sqlDataBase']));
$prefix = htmlspecialchars(inSql($_POST['prefix']));
preg_match('/^([0-9a-zA-Z_])*$/', $prefix) or die("前缀不能有特殊字符！");
$output = htmlspecialchars(inSql($_POST['output']));
preg_match('/^([0-9a-zA-Z_\/])+$/', $output) or die("输出目录不能有特殊字符！");
file_put_contents(ROOT_DIR . $output . '/install_tapf.php', '<?php echo 1 ?>') or die('测试文件写出错！请检查输出目录名称、权限设置是否正确。');
unlink(ROOT_DIR . $output . '/install_tapf.php') or die('测试删除文件出错！请检查输出目录名称、权限设置是否正确。');
$includeConfig = '<?php ' . PHP_EOL . 'require_once \'' . ADMIN_DIR . 'common_init.php\';';
file_put_contents(ROOT_DIR . $output . '/config.php', $includeConfig) or die('测试文件修改出错！请检查输出目录权限设置是否正确。');
$nxsql->connect($sqlServer, $sqlName, $sqlPwd);
mysqli_connect_error() && die('连接数据库错误： (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
$nxsql->query("CREATE DATABASE IF NOT EXISTS $sqlDataBase DEFAULT CHARACTER SET utf8");
$nxsql->errno && die('创建数据库错误： (' . $nxsql->errno . ') ' . $nxsql->error);
$nxsql->select_db($sqlDataBase);
$query = '';
$fp = file('./install_table.php');
array_shift($fp);
foreach ($fp as $line) {
    $line = rtrim($line);
    if (preg_match('/;$/', $line)) {
        $query .= $line . "\n";
        $query = str_replace('#@__', $prefix, $query);
        $nxsql->query($query);
        $nxsql->errno && die('创建数据表错误： (' . $nxsql->errno . ') ' . $nxsql->error);
        $query = '';
    } else if ($line) {
        $query .= $line;
    }
}
$nxsql->query('set names utf8');
$query = '';
$fp = file('./install_tabledata.php');
array_shift($fp);
foreach ($fp as $line) {
    $line = rtrim($line);
    if (preg_match('/;$/', $line)) {
        $query .= $line . "\n";
        $query = str_replace('#@__', $prefix, $query);
        $nxsql->query($query);
        $nxsql->errno && die('导入默认数据错误： (' . $nxsql->errno . ') ' . $nxsql->error);
        $query = '';
    } else if ($line) {
        $query .= $line;
    }
}
$query = "INSERT INTO `${prefix}admin` (name,pwd,power_id,power_lb) VALUES ('$name','$pwd','255','2');";
$nxsql->query($query);
$nxsql->errno && die('插入超级管理员数据错误： (' . $nxsql->errno . ') ' . $nxsql->error);
$amsUrl = htmlspecialchars(dirname(dirname(selfUrl())));
$config_data = "<?php
defined('NIUX_INCLUDED') or exit('Access Denied.');
\$cfg_dbhost = '$sqlServer';
\$cfg_dbuser = '$sqlName';
\$cfg_dbpwd = '$sqlPwd';
\$cfg_dbname = '$sqlDataBase';
\$cfg_dbprefix = '$prefix';
\$cfg_amsUrl = '$amsUrl';
\$cfg_output = '$output';
\$cfg_timeZone = '$cfg_timeZone';
\$cfg_strictLogin = $cfg_strictLogin;
\$cfg_strictLog = $cfg_strictLog;
";
file_put_contents('./data/config_common.php', $config_data) or die('更新配置文件出错！请将程序目录和所有文件的文件权限设置属性0755或0777。');
file_put_contents('./install_lock.php', '<?php echo 1 ?>') or die('无法给程序加安装锁，请将程序目录和所有文件的文件权限设置属性0755或0777。');
unlink('./install.php') or die('无法删除安装文件自身，请将程序目录和所有文件的文件权限设置属性0755或0777。');
$nxsql->inLog('安装', 1, $name, $prefix);
echo 1;
