www.gusucode.com > DouPHP轻量PHP企业网站管理系统 v1.3 Release 源码程序 > DouPHP_v1.3.0502/upgrade/index.php
<?php /** * DOUCO TEAM * ============================================================================ * COPYRIGHT DOUCO 2014-2015. * http://www.douco.com; * ---------------------------------------------------------------------------- * Author:DouCo * Release Date: 2014-06-05 */ define('IN_DOUCO', true); require (dirname(__FILE__) . '/include/init.php'); // rec操作项的初始化 $step = $_REQUEST['step'] ? trim($_REQUEST['step']) : 'upgrade'; // 更新后的版本 $new_version = 'v1.3 Release 20160502'; /** * +---------------------------------------------------------- * 升级提示 * +---------------------------------------------------------- */ if ($step == 'maual') { $title = $_LANG['douphp'] . " › " . $_LANG['maual']; $smarty->assign('title', $title); $smarty->display('maual.htm'); } /** * +---------------------------------------------------------- * 升级检测 * +---------------------------------------------------------- */ elseif ($step == 'upgrade') { $title = $_LANG['douphp'] . " › " . $_LANG['upgrade']; // 版本号 $ver_cur = number_format(substr($_CFG['douphp_version'], 1, 4), 1); // 历史版本 $ver_list = array (1.0, 1.1, 1.2, 1.3); // 根据版本显示升级提示 foreach ($ver_list as $ver) { $ver = number_format($ver, 1); $file_txt = U_PATH . 'data/txt/upgrade_' . $ver . '.txt'; if ($ver >= $ver_cur && file_exists($file_txt)) $up_txt .= file_get_contents($file_txt) . "\n"; } $up_array = explode("\n", $up_txt); foreach ($up_array as $replace) { if (strstr($replace, '修正')) { $replace = '<i class="x">问题修复</i><em>' . $replace . '</em>'; } if (strstr($replace, '增加') || strstr($replace, '新增')) { $replace = '<i class="z">新功能</i><em>' . $replace . '</em>'; } if (strstr($replace, '优化')) { $replace = '<i class="y">优化</i><em>' . $replace . '</em>'; } if (strstr($replace, '安全')) { $replace = '<i class="a">安全升级</i><em>' . $replace . '</em>'; } if ($replace) $up_list[] = $replace; } // 检查目录 $check_dirs = array ( 'cache', 'cache/admin', 'cache/m', 'data', 'data/slide', 'data/backup', 'images/article', 'images/product', 'images/upload' ); // 如果目录不存在则建立 foreach ($check_dirs as $dir) { $full_dir = ROOT_PATH . $dir; if (!file_exists($full_dir)) mkdir($full_dir, 0777); } // 检查数据库连接 if (!$link = @mysql_connect($dbhost, $dbuser, $dbpass)) $up_info['wrong'] = $_LANG['wrong_connect']; // 如果提交表单执行以下 if ($_POST['upgrade']) { // 嵌入config配置文件 $file_config = ROOT_PATH . "data/config.php"; include_once ($file_config); // 修改config文件内容 $config_str = "<?php\n"; $config_str .= "/**\n"; $config_str .= " * DouPHP\n"; $config_str .= " * --------------------------------------------------------------------------------------------------\n"; $config_str .= " * 版权所有 2013-2014 漳州豆壳网络科技有限公司,并保留所有权利。\n"; $config_str .= " * 网站地址: http://www.douco.com\n"; $config_str .= " * --------------------------------------------------------------------------------------------------\n"; $config_str .= " * 这不是一个自由软件!您只能在遵守授权协议前提下对程序代码进行修改和使用;不允许对程序代码以任何形式任何目的的再发布。\n"; $config_str .= " * 授权协议:http://www.douco.com/license.html\n"; $config_str .= " * --------------------------------------------------------------------------------------------------\n"; $config_str .= " * Author: DouCo\n"; $config_str .= " * Release Date: 2014-06-05\n"; $config_str .= " */\n\n"; $config_str .= "// database host\n"; $config_str .= '$dbhost = "' . $dbhost . '";' . "\n\n"; $config_str .= "// database name\n"; $config_str .= '$dbname = "' . $dbname . '";' . "\n\n"; $config_str .= "// database username\n"; $config_str .= '$dbuser = "' . $dbuser . '";' . "\n\n"; $config_str .= "// database password\n"; $config_str .= '$dbpass = "' . $dbpass . '";' . "\n\n"; $config_str .= "// table prefix\n"; $config_str .= '$prefix = "' . $prefix . '";' . "\n\n"; $config_str .= "// charset\n"; $config_str .= "define('DOU_CHARSET','utf-8');" . "\n\n"; $config_str .= "// administrator path\n"; $config_str .= "define('ADMIN_PATH','admin');\n\n"; $config_str .= "// mobile path\n"; $config_str .= "define('M_PATH','m');\n\n\n"; $config_str .= "?>"; file_put_contents($file_config, $config_str); // 根据版本执行数据库升级 foreach ($ver_list as $ver) { $ver = number_format($ver, 1); $file_sql = U_PATH . 'data/sql/upgrade_' . $ver . '.sql'; if ($ver >= $ver_cur && file_exists($file_sql)) $sql .= file_get_contents($file_sql) . "\n\n\n"; } // 数据表前缀替换 $sql = preg_replace('/dou_/Ums', "$prefix", $sql); // 进行安装的常规替换 $sql_head = "SET SQL_MODE='NO_AUTO_VALUE_ON_ZERO';\n"; $sql_head .= "SET time_zone = '+00:00';\n\n\n"; $sql_head .= "/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n"; $sql_head .= "/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n"; $sql_head .= "/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n"; $sql_head .= "/*!40101 SET NAMES utf8 */;\n\n"; $sql = $sql_head . $sql; // 导入数据 $upgrade->sql_execute($sql); /* 写入 hash_code,做为网站唯一性密钥 */ $hash_code = md5(md5(time()) . md5(md5(ROOT_URL . $dbhost . $dbname . $dbuser . $dbpass))); // 生成初始化数据查询语句 foreach ($_CFG as $key => $value) { $up_sql .= "UPDATE " . $dou->table('config') . " SET value = '$value' WHERE name = '$key';\n"; } $up_sql .= "UPDATE " . $dou->table('config') . " SET value = '" . $new_version . "' WHERE name = 'douphp_version';\n"; $up_sql .= "UPDATE " . $dou->table('config') . " SET value = '$hash_code' WHERE name = 'hash_code';\n"; $up_sql .= "UPDATE " . $dou->table('config') . " SET box = '' WHERE name = 'language';\n"; // 写入更新日期 $need_update = array('update', 'patch', 'article', 'product'); // 系统升级时需要同步写入更新日期的 $date = substr(trim($new_version), -8);; if ($_CFG['update_date']) { $update_date = unserialize($_CFG['update_date']); foreach ($update_date as $key_class=>$class) { foreach ($class as $key_item=>$item) { if (in_array($key_item, $need_update)) { $update_date[$key_class][$key_item] = $date; } else { $update_date[$key_class][$key_item] = $item; } } } $update_date = serialize($update_date); } else { $update_date = 'a:2:{s:6:"system";a:2:{s:6:"update";i:' . $date . ';s:5:"patch";i:' . $date . ';}s:6:"module";a:2:{s:7:"article";i:' . $date . ';s:7:"product";i:' . $date . ';}}'; } $up_sql .= "UPDATE " . $dou->table('config') . " SET value = '$update_date' WHERE name = 'update_date'"; // 根据版本进行功能升级 foreach ($ver_list as $ver) { $ver = number_format($ver, 1); $file_php = U_PATH . 'data/php/upgrade_' . $ver . '.php'; if ($ver >= $ver_cur && file_exists($file_php)) include($file_php); } // 还原站点原始数据 $upgrade->sql_execute($up_sql); header("Location:index.php?step=finish"); } $smarty->assign('title', $title); $smarty->assign('up_list', $up_list); $smarty->assign('up_info', $up_info); $smarty->display('upgrade.htm'); } /** * +---------------------------------------------------------- * 升级完成 * +---------------------------------------------------------- */ elseif ($step == 'finish') { // 生成system.dou文件 if (!file_exists($system_file)) { $content .= "// DOUPHP INSTALLED\r\n"; $content .= "column_module:product,article\r\n"; $content .= "single_module:guestbook,link\r\n"; file_put_contents($system_file, $content); // 删除旧的系统安装标志 @unlink(ROOT_PATH . 'data/install.lock'); } // 清除缓存 $upgrade->dou_clear_cache(ROOT_PATH . "cache"); $title = $_LANG['douphp'] . " › " . $_LANG['finish']; $smarty->assign('title', $title); $smarty->display('finish.htm'); } ?>