// +---------------------------------------------------------------------- // 检测环境是否支持可写 //define('IS_WRITE', true); use Think\Request; use think\facade\Session; use think\facade\Config; use think\facade\Env; /** * 写入配置文件 * @param array $config 配置信息 * @return string */ function write_config($config) { if (is_array($config)) { //读取配置内容 $conf = file_get_contents(Env::get('module_path') . 'data/database.tpl'); //替换配置项 foreach ($config as $name => $value) { $conf = str_replace("[{$name}]", $value, $conf); } //写入应用配置文件 if (file_put_contents(Env::get('config_path') . 'database.php', $conf)) { show_msg('配置文件写入成功!'); } else { show_msg('配置文件写入失败!', 'error'); Session::set('error', true, 'install'); } return true; } } /** * 创建数据表 * @param resource $db 数据库连接资源 * @param string $prefix 数据表前缀 */ function create_tables($db, $prefix = '') { // 导入sql数据并创建表 $sql = file_get_contents('../app/install/data/taoler.sql'); //替换表前缀 $orginal = 'tao_'; ($orginal==$prefix) ? true : $sql = str_replace(" `{$orginal}", " `{$prefix}", $sql); $sql_array=preg_split("/;[\r\n]+/", $sql); //开始安装 //var_dump($sql_array); foreach ($sql_array as $k => $v) { if (!empty($v)) { //$v=$v.';'; if (substr($v, 0, 12) == 'CREATE TABLE') { $name = preg_replace("/^CREATE TABLE `(\w+)` .*/s", "\\1", $v); $msg = "创建数据表{$name}"; if (false !== $db->query($v)) { //echo $msg.'成功'; } else { echo $msg.'失败'; } } else { $db->query($v); } //echo substr($v, 0, 12).'--'; // $db->query($v); } } } function register_administrator($db, $prefix, $admin) { //show_msg('开始注册创始人帐号...'); $password = password_hash($admin['password'], PASSWORD_DEFAULT); $sql="INSERT INTO {$prefix}user(group_id,username,password,email,create_time) VALUE(1,'{$admin['username']}','{$password}','{$admin['email']}','{time()}')"; //执行sql $db->execute($sql); //show_msg('创始人帐号注册完成!'); } /** * 更新数据表 * @param resource $db 数据库连接资源 * @param string $prefix * @author lyq <605415184@qq.com> */ function update_tables($db, $prefix = '') { //读取SQL文件 $sql = file_get_contents(APP_PATH . 'install/data/update.sql'); $sql = str_replace("\r", "\n", $sql); $sql = explode(";\n", $sql); //替换表前缀 $sql = str_replace(" `tao_", " `{$prefix}", $sql); //开始安装 show_msg('开始升级数据库...'); 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}"; if (false !== $db->execute($value)) { show_msg($msg . '...成功!'); } else { show_msg($msg . '...失败!', 'error'); Session::set('error', true, 'install'); } } else { if (substr($value, 0, 8) == 'UPDATE `') { $name = preg_replace("/^UPDATE `(\w+)` .*/s", "\\1", $value); $msg = "更新数据表{$name}"; } else if (substr($value, 0, 11) == 'ALTER TABLE') { $name = preg_replace("/^ALTER TABLE `(\w+)` .*/s", "\\1", $value); $msg = "修改数据表{$name}"; } else if (substr($value, 0, 11) == 'INSERT INTO') { $name = preg_replace("/^INSERT INTO `(\w+)` .*/s", "\\1", $value); $msg = "写入数据表{$name}"; } if (($db->execute($value)) !== false) { show_msg($msg . '...成功!'); } else { show_msg($msg . '...失败!', 'error'); Session::set('error', true, 'install'); } } } } /** * 及时显示提示信息 * @param string $msg 提示信息 * @param string $class * @param string $jump */ function show_msg($msg, $class = '',$jump='') { echo ""; flush(); ob_flush(); }