Browse Source

老版本更新处理

tags/6.2.0
tianya 2 years ago
parent
commit
e6f89245d1
5 changed files with 68 additions and 17 deletions
  1. +48
    -3
      src/admin/api.php
  2. +1
    -1
      src/install/index.php
  3. +1
    -2
      src/install/sql-dftables.txt
  4. +4
    -4
      src/install/update.txt
  5. +14
    -7
      src/system/database/dedesqlite.class.php

+ 48
- 3
src/admin/api.php View File

@@ -17,6 +17,24 @@ AjaxHead();
helper('cache'); helper('cache');
$action = isset($action) && in_array($action, array('is_need_check_code', 'has_new_version', 'get_changed_files', 'update_backup', 'get_update_versions', 'update')) ? $action : ''; $action = isset($action) && in_array($action, array('is_need_check_code', 'has_new_version', 'get_changed_files', 'update_backup', 'get_update_versions', 'update')) ? $action : '';
$curDir = dirname(GetCurUrl()); //当前目录 $curDir = dirname(GetCurUrl()); //当前目录
/**
* 表中是否存在某个字段
*
* @param mixed $tablename 表名称
* @param mixed $field 字段名
* @return void
*/
function TableHasField($tablename,$field)
{
global $dsql;
$dsql->GetTableFields($tablename,"tfd");
while ($r = $dsql->GetFieldObject("tfd")) {
if ($r->name === $field) {
return true;
}
}
return false;
}
/** /**
* 登录鉴权 * 登录鉴权
* *
@@ -46,6 +64,33 @@ if ($action === 'is_need_check_code') {
)); ));
exit; exit;
} else if ($action === 'has_new_version') { } else if ($action === 'has_new_version') {
//判断版本更新差异sql
$unQueryVer = array();
if (!TableHasField("#@__tagindex", "keywords")) {
$unQueryVer[] = "6.0.2";
}
if (!TableHasField("#@__feedback", "replycount")) {
$unQueryVer[] = "6.0.3";
}
if (!TableHasField("#@__arctype", "litimg")) {
$unQueryVer[] = "6.1.0";
}
if (!$dsql->IsTable("#@__statistics")) {
$unQueryVer[] = "6.1.7";
}
if (TableHasField("#@__tagindex", "tag_pinyin")) {
$unQueryVer[] = "6.1.8";
}
if (!TableHasField("#@__admin", "pwd_new")) {
$unQueryVer[] = "6.1.9";
}
if (!TableHasField("#@__arctype", "cnoverview")) {
$unQueryVer[] = "6.1.10";
}
if (!TableHasField("#@__admin", "loginerr")) {
$unQueryVer[] = "6.2.0";
}

require_once(DEDEINC.'/libraries/dedehttpdown.class.php'); require_once(DEDEINC.'/libraries/dedehttpdown.class.php');
checkLogin(); checkLogin();
//是否存在更新版本 //是否存在更新版本
@@ -64,7 +109,7 @@ if ($action === 'is_need_check_code') {
} else if ($action === 'get_changed_files') { } else if ($action === 'get_changed_files') {
require_once(DEDEINC.'/libraries/dedehttpdown.class.php'); require_once(DEDEINC.'/libraries/dedehttpdown.class.php');
checkLogin(); checkLogin();
// 获取本地更改过的文件
//获取本地更改过的文件
$hashUrl = DEDEBIZCDN.'/release/'.$cfg_version_detail.'.json'; $hashUrl = DEDEBIZCDN.'/release/'.$cfg_version_detail.'.json';
$dhd = new DedeHttpDown(); $dhd = new DedeHttpDown();
$dhd->OpenUrl($hashUrl); $dhd->OpenUrl($hashUrl);
@@ -95,7 +140,7 @@ if ($action === 'is_need_check_code') {
} else if ($action === 'update_backup') { } else if ($action === 'update_backup') {
require_once(DEDEINC.'/libraries/dedehttpdown.class.php'); require_once(DEDEINC.'/libraries/dedehttpdown.class.php');
checkLogin(); checkLogin();
// 获取本地更改过的文件
//获取本地更改过的文件
$hashUrl = DEDEBIZCDN.'/release/'.$cfg_version_detail.'.json'; $hashUrl = DEDEBIZCDN.'/release/'.$cfg_version_detail.'.json';
$dhd = new DedeHttpDown(); $dhd = new DedeHttpDown();
$dhd->OpenUrl($hashUrl); $dhd->OpenUrl($hashUrl);
@@ -115,7 +160,7 @@ if ($action === 'is_need_check_code') {
foreach ($data as $file) { foreach ($data as $file) {
$realFile = DEDEROOT.str_replace("\\", '/', $file->filename); $realFile = DEDEROOT.str_replace("\\", '/', $file->filename);
if (file_exists($realFile) && md5_file($realFile) !== $file->hash) { if (file_exists($realFile) && md5_file($realFile) !== $file->hash) {
// 备份文件
//备份文件
$dstFile = $backupPath.'/'.str_replace("\\", '/', $file->filename); $dstFile = $backupPath.'/'.str_replace("\\", '/', $file->filename);
@mkdir(dirname($dstFile), 0777, true); @mkdir(dirname($dstFile), 0777, true);
copy($realFile, $dstFile); copy($realFile, $dstFile);


+ 1
- 1
src/install/index.php View File

@@ -176,7 +176,7 @@ else if ($step==2)
if ( $dbtype == 'sqlite' ) if ( $dbtype == 'sqlite' )
{ {
$query = preg_replace('/character set (.*?) /i','',$query); $query = preg_replace('/character set (.*?) /i','',$query);
$query = str_replace('unsigned','',$query);
$query = preg_replace('/unsigned/i','',$query);
$query = str_replace('TYPE=MyISAM','',$query); $query = str_replace('TYPE=MyISAM','',$query);
$query = preg_replace ('/TINYINT\(([\d]+)\)/i','INTEGER',$query); $query = preg_replace ('/TINYINT\(([\d]+)\)/i','INTEGER',$query);
$query = preg_replace ('/mediumint\(([\d]+)\)/i','INTEGER',$query); $query = preg_replace ('/mediumint\(([\d]+)\)/i','INTEGER',$query);


+ 1
- 2
src/install/sql-dftables.txt View File

@@ -974,12 +974,11 @@ CREATE TABLE `#@__sysconfig` (
DROP TABLE IF EXISTS `#@__tagindex`; DROP TABLE IF EXISTS `#@__tagindex`;
CREATE TABLE `#@__tagindex` ( CREATE TABLE `#@__tagindex` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`id` INT(10) NOT NULL AUTO_INCREMENT,
`tag` CHAR(12) NOT NULL DEFAULT '', `tag` CHAR(12) NOT NULL DEFAULT '',
`keywords` varchar(255) DEFAULT NULL, `keywords` varchar(255) DEFAULT NULL,
`description` varchar(255) DEFAULT NULL, `description` varchar(255) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL, `title` varchar(255) DEFAULT NULL,
`tag_pinyin` varchar(255) DEFAULT NULL,
`typeid` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0', `typeid` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
`count` INT(10) UNSIGNED NOT NULL DEFAULT '0', `count` INT(10) UNSIGNED NOT NULL DEFAULT '0',
`total` INT(10) UNSIGNED NOT NULL DEFAULT '0', `total` INT(10) UNSIGNED NOT NULL DEFAULT '0',


+ 4
- 4
src/install/update.txt View File

@@ -22,12 +22,12 @@ CREATE TABLE `#@__feedback_goodbad` (
`fid` INT(11) NOT NULL DEFAULT '0', `fid` INT(11) NOT NULL DEFAULT '0',
`fgtype` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '0:good 1:bad', `fgtype` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '0:good 1:bad',
PRIMARY KEY (`fgid`) PRIMARY KEY (`fgid`)
) ENGINE=MyISAM;
) TYPE=MyISAM;
CREATE TABLE `#@__search_limits` ( CREATE TABLE `#@__search_limits` (
`ip` VARCHAR(200) NOT NULL, `ip` VARCHAR(200) NOT NULL,
`searchtime` INT(11) NULL DEFAULT NULL, `searchtime` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`ip`) PRIMARY KEY (`ip`)
) ENGINE=MyISAM;
) TYPE=MyISAM;


-- 6.1.0 -- 6.1.0
ALTER TABLE `#@__arctype` ALTER TABLE `#@__arctype`
@@ -46,7 +46,7 @@ CREATE TABLE `#@__statistics` (
`ip` int DEFAULT NULL COMMENT 'IP', `ip` int DEFAULT NULL COMMENT 'IP',
`vv` int DEFAULT NULL COMMENT 'vv', `vv` int DEFAULT NULL COMMENT 'vv',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=MyISAM;
) TYPE=MyISAM;
CREATE TABLE `#@__statistics_detail` ( CREATE TABLE `#@__statistics_detail` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`t` int DEFAULT NULL COMMENT 'unixtime', `t` int DEFAULT NULL COMMENT 'unixtime',
@@ -67,7 +67,7 @@ CREATE TABLE `#@__statistics_detail` (
KEY `idx_created_date_dduuid` (`created_date`,`dduuid`), KEY `idx_created_date_dduuid` (`created_date`,`dduuid`),
KEY `idx_created_date_ip` (`created_date`,`ip`), KEY `idx_created_date_ip` (`created_date`,`ip`),
KEY `idx_created_date_ssid` (`created_date`,`ssid`) KEY `idx_created_date_ssid` (`created_date`,`ssid`)
) ENGINE=MyISAM;
) TYPE=MyISAM;
ALTER TABLE `#@__addonarticle` MODIFY COLUMN `userip` char(46) NOT NULL DEFAULT '' AFTER `templet`; ALTER TABLE `#@__addonarticle` MODIFY COLUMN `userip` char(46) NOT NULL DEFAULT '' AFTER `templet`;
ALTER TABLE `#@__addonimages` MODIFY COLUMN `userip` char(46) NOT NULL DEFAULT '' AFTER `templet`; ALTER TABLE `#@__addonimages` MODIFY COLUMN `userip` char(46) NOT NULL DEFAULT '' AFTER `templet`;
ALTER TABLE `#@__addoninfos` MODIFY COLUMN `userip` varchar(46) NOT NULL DEFAULT '' AFTER `litpic`; ALTER TABLE `#@__addoninfos` MODIFY COLUMN `userip` varchar(46) NOT NULL DEFAULT '' AFTER `litpic`;


+ 14
- 7
src/system/database/dedesqlite.class.php View File

@@ -57,6 +57,7 @@ class DedeSqlite
var $isInit = false; var $isInit = false;
var $pconnect = false; var $pconnect = false;
var $_fixObject; var $_fixObject;
var $_fieldIdx = 1; //这里最好是数组,对应id,但由于用的地方不多,暂时先这样处理
//用外部定义的变量初始类,并连接数据库 //用外部定义的变量初始类,并连接数据库
function __construct($pconnect = FALSE, $nconnect = FALSE) function __construct($pconnect = FALSE, $nconnect = FALSE)
{ {
@@ -391,20 +392,27 @@ class DedeSqlite
} }
$prefix = "#@__"; $prefix = "#@__";
$tbname = str_replace($prefix, $GLOBALS['cfg_dbprefix'], $tbname); $tbname = str_replace($prefix, $GLOBALS['cfg_dbprefix'], $tbname);
$query = "SELECT * FROM {$tbname} LIMIT 0,1";
$query = "SELECT * FROM {$tbname} LIMIT 1";
$this->result[$id] = $this->linkID->query($query); $this->result[$id] = $this->linkID->query($query);
} }
//获取字段详细信息 //获取字段详细信息
function GetFieldObject($id = "me") function GetFieldObject($id = "me")
{ {
$cols = $this->result[$id]->numColumns(); $cols = $this->result[$id]->numColumns();
$fields = array();
while ($row = $this->result[$id]->fetchArray()) {
for ($i = 1; $i < $cols; $i++) {
$fields[] = $this->result[$id]->columnName($i);
if ($this->_fieldIdx >= $cols) {
$this->_fieldIdx = 1;
return false;
}
for ($i = 1; $i <= $cols; $i++) {
$field = new stdClass;
$n = $this->result[$id]->columnName($i);
$field->name = $n;
if ($this->_fieldIdx === $i) {
$this->_fieldIdx++;
return $field;
} }
} }
return (object)$fields;
return false;
} }
//获得查询的总记录数 //获得查询的总记录数
function GetTotalRow($id = "me") function GetTotalRow($id = "me")
@@ -543,4 +551,3 @@ function CopySQLiPoint(&$ndsql)
{ {
$GLOBALS['dsqlite'] = $ndsql; $GLOBALS['dsqlite'] = $ndsql;
} }
?>

Loading…
Cancel
Save