diff --git a/db/standard/xuanxuan.10.2.sql b/db/standard/xuanxuan10.2.sql similarity index 100% rename from db/standard/xuanxuan.10.2.sql rename to db/standard/xuanxuan10.2.sql diff --git a/db/standard/xuanxuan.10.3.1.sql b/db/standard/xuanxuan10.3.1.sql similarity index 100% rename from db/standard/xuanxuan.10.3.1.sql rename to db/standard/xuanxuan10.3.1.sql diff --git a/db/standard/xuanxuan.10.3.sql b/db/standard/xuanxuan10.3.sql similarity index 100% rename from db/standard/xuanxuan.10.3.sql rename to db/standard/xuanxuan10.3.sql diff --git a/db/standard/xuanxuan.10.4.sql b/db/standard/xuanxuan10.4.sql similarity index 100% rename from db/standard/xuanxuan.10.4.sql rename to db/standard/xuanxuan10.4.sql diff --git a/db/standard/xuanxuan.10.5.1.sql b/db/standard/xuanxuan10.5.1.sql similarity index 100% rename from db/standard/xuanxuan.10.5.1.sql rename to db/standard/xuanxuan10.5.1.sql diff --git a/db/standard/xuanxuan.10.5.sql b/db/standard/xuanxuan10.5.sql similarity index 100% rename from db/standard/xuanxuan.10.5.sql rename to db/standard/xuanxuan10.5.sql diff --git a/db/standard/xuanxuan.10.6.sql b/db/standard/xuanxuan10.6.sql similarity index 100% rename from db/standard/xuanxuan.10.6.sql rename to db/standard/xuanxuan10.6.sql diff --git a/db/standard/xuanxuan.11.0.sql b/db/standard/xuanxuan11.0.sql similarity index 100% rename from db/standard/xuanxuan.11.0.sql rename to db/standard/xuanxuan11.0.sql diff --git a/db/standard/xuanxuan.11.1.sql b/db/standard/xuanxuan11.1.sql similarity index 100% rename from db/standard/xuanxuan.11.1.sql rename to db/standard/xuanxuan11.1.sql diff --git a/db/standard/xuanxuan.11.2.sql b/db/standard/xuanxuan11.2.sql similarity index 100% rename from db/standard/xuanxuan.11.2.sql rename to db/standard/xuanxuan11.2.sql diff --git a/db/standard/xuanxuan.11.3.sql b/db/standard/xuanxuan11.3.sql similarity index 100% rename from db/standard/xuanxuan.11.3.sql rename to db/standard/xuanxuan11.3.sql diff --git a/db/standard/xuanxuan.11.4.1.sql b/db/standard/xuanxuan11.4.1.sql similarity index 100% rename from db/standard/xuanxuan.11.4.1.sql rename to db/standard/xuanxuan11.4.1.sql diff --git a/db/standard/xuanxuan.11.4.sql b/db/standard/xuanxuan11.4.sql similarity index 100% rename from db/standard/xuanxuan.11.4.sql rename to db/standard/xuanxuan11.4.sql diff --git a/db/standard/xuanxuan.11.5.1.sql b/db/standard/xuanxuan11.5.1.sql similarity index 100% rename from db/standard/xuanxuan.11.5.1.sql rename to db/standard/xuanxuan11.5.1.sql diff --git a/db/standard/xuanxuan.11.5.2.sql b/db/standard/xuanxuan11.5.2.sql similarity index 100% rename from db/standard/xuanxuan.11.5.2.sql rename to db/standard/xuanxuan11.5.2.sql diff --git a/db/standard/xuanxuan.11.5.sql b/db/standard/xuanxuan11.5.sql similarity index 100% rename from db/standard/xuanxuan.11.5.sql rename to db/standard/xuanxuan11.5.sql diff --git a/db/standard/xuanxuan.11.6.1.sql b/db/standard/xuanxuan11.6.1.sql similarity index 100% rename from db/standard/xuanxuan.11.6.1.sql rename to db/standard/xuanxuan11.6.1.sql diff --git a/db/standard/xuanxuan.11.6.2.sql b/db/standard/xuanxuan11.6.2.sql similarity index 100% rename from db/standard/xuanxuan.11.6.2.sql rename to db/standard/xuanxuan11.6.2.sql diff --git a/db/standard/xuanxuan.11.6.3.sql b/db/standard/xuanxuan11.6.3.sql similarity index 100% rename from db/standard/xuanxuan.11.6.3.sql rename to db/standard/xuanxuan11.6.3.sql diff --git a/db/standard/xuanxuan.11.6.4.sql b/db/standard/xuanxuan11.6.4.sql similarity index 100% rename from db/standard/xuanxuan.11.6.4.sql rename to db/standard/xuanxuan11.6.4.sql diff --git a/db/standard/xuanxuan.11.6.5.sql b/db/standard/xuanxuan11.6.5.sql similarity index 100% rename from db/standard/xuanxuan.11.6.5.sql rename to db/standard/xuanxuan11.6.5.sql diff --git a/db/standard/xuanxuan.11.6.sql b/db/standard/xuanxuan11.6.sql similarity index 100% rename from db/standard/xuanxuan.11.6.sql rename to db/standard/xuanxuan11.6.sql diff --git a/db/standard/xuanxuan.11.7.sql b/db/standard/xuanxuan11.7.sql similarity index 100% rename from db/standard/xuanxuan.11.7.sql rename to db/standard/xuanxuan11.7.sql diff --git a/db/standard/xuanxuan.12.0.1.sql b/db/standard/xuanxuan12.0.1.sql similarity index 100% rename from db/standard/xuanxuan.12.0.1.sql rename to db/standard/xuanxuan12.0.1.sql diff --git a/db/standard/xuanxuan.12.0.sql b/db/standard/xuanxuan12.0.sql similarity index 100% rename from db/standard/xuanxuan.12.0.sql rename to db/standard/xuanxuan12.0.sql diff --git a/db/standard/xuanxuan.12.1.sql b/db/standard/xuanxuan12.1.sql similarity index 100% rename from db/standard/xuanxuan.12.1.sql rename to db/standard/xuanxuan12.1.sql diff --git a/db/standard/xuanxuan.12.2.sql b/db/standard/xuanxuan12.2.sql similarity index 100% rename from db/standard/xuanxuan.12.2.sql rename to db/standard/xuanxuan12.2.sql diff --git a/db/standard/xuanxuan.12.3.1.sql b/db/standard/xuanxuan12.3.1.sql similarity index 100% rename from db/standard/xuanxuan.12.3.1.sql rename to db/standard/xuanxuan12.3.1.sql diff --git a/db/standard/xuanxuan.12.3.2.sql b/db/standard/xuanxuan12.3.2.sql similarity index 100% rename from db/standard/xuanxuan.12.3.2.sql rename to db/standard/xuanxuan12.3.2.sql diff --git a/db/standard/xuanxuan.12.3.3.sql b/db/standard/xuanxuan12.3.3.sql similarity index 100% rename from db/standard/xuanxuan.12.3.3.sql rename to db/standard/xuanxuan12.3.3.sql diff --git a/db/standard/xuanxuan.12.3.sql b/db/standard/xuanxuan12.3.sql similarity index 100% rename from db/standard/xuanxuan.12.3.sql rename to db/standard/xuanxuan12.3.sql diff --git a/module/upgrade/model.php b/module/upgrade/model.php index 76d7a00766..9aee9b864c 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -819,61 +819,71 @@ class upgradeModel extends model $standardSQL = $this->app->getAppRoot() . 'db' . DS . 'standard' . DS . 'zentao' . $version . '.sql'; if(!file_exists($standardSQL)) return $alterSQL; - $tableExists = true; - $handle = fopen($standardSQL, 'r'); - if($handle) + $lines = file($standardSQL); + if(!isset($this->config->isINT) or !($this->config->isINT)) { - while(!feof($handle)) + $xVersion = $version; + $version = str_replace('.', '_', $version); + if(strpos($version, 'pro') !== false and isset($this->config->proVersion[$version])) $xVersion = str_replace('_', '.', $this->config->proVersion[$version]); + if(strpos($version, 'biz') !== false and isset($this->config->bizVersion[$version])) $xVersion = str_replace('_', '.', $this->config->bizVersion[$version]); + + $xStandardSQL = $this->app->getAppRoot() . 'db' . DS . 'standard' . DS . 'xuanxuan' . $xVersion . '.sql'; + if(!file_exists($xStandardSQL)) { - $line = trim(fgets($handle)); - if(strpos($line, 'DROP TABLE ') !== false) continue; - if(strpos($line, 'CREATE TABLE ') !== false) + $xLines = file($xstandardSQL); + $lines = array_merge($lines, $xLines); + } + } + + $tableExists = true; + foreach($lines as $line) + { + if(strpos($line, 'DROP TABLE ') !== false) continue; + if(strpos($line, 'CREATE TABLE ') !== false) + { + preg_match_all('/`([^`]*)`/', $line, $out); + if(isset($out[1][0])) { - preg_match_all('/`([^`]*)`/', $line, $out); - if(isset($out[1][0])) + $fields = array(); + $table = str_replace('zt_', $this->config->db->prefix, $out[1][0]); + try { - $fields = array(); - $table = str_replace('zt_', $this->config->db->prefix, $out[1][0]); + $tableExists = true; + $stmt = $this->dbh->query("show fields from `{$table}`"); + while($row = $stmt->fetch()) $fields[$row->Field] = $row->Field; + } + catch(PDOException $e) + { + $errorInfo = $e->errorInfo; + $errorCode = $errorInfo[1]; + $line = str_replace('zt_', $this->config->db->prefix, $line); + if($errorCode == '1146') $tableExists = false; + } + } + } + if(!$tableExists) $alterSQL .= $line . "\n"; + + if(!empty($fields)) + { + if(preg_match('/^`([^`]*)` /', $line)) + { + list($field) = explode(' ', $line); + $field = trim($field, '`'); + if(!isset($fields[$field])) + { + $line = rtrim($line, ','); + if(stripos($line, 'auto_increment') !== false) $line .= ' primary key'; try { - $tableExists = true; - $stmt = $this->dbh->query("show fields from `{$table}`"); - while($row = $stmt->fetch()) $fields[$row->Field] = $row->Field; + $this->dbh->exec("ALTER TABLE `{$table}` ADD $line"); } catch(PDOException $e) { - $errorInfo = $e->errorInfo; - $errorCode = $errorInfo[1]; - $line = str_replace('zt_', $this->config->db->prefix, $line); - if($errorCode == '1146') $tableExists = false; - } - } - } - if(!$tableExists) $alterSQL .= $line . "\n"; - - if(!empty($fields)) - { - if(preg_match('/^`([^`]*)` /', $line)) - { - list($field) = explode(' ', $line); - $field = trim($field, '`'); - if(!isset($fields[$field])) - { - $line = rtrim($line, ','); - if(stripos($line, 'auto_increment') !== false) $line .= ' primary key'; - try - { - $this->dbh->exec("ALTER TABLE `{$table}` ADD $line"); - } - catch(PDOException $e) - { - $alterSQL .= "ALTER TABLE `{$table}` ADD $line;\n"; - } + $alterSQL .= "ALTER TABLE `{$table}` ADD $line;\n"; } } } } - fclose($handle); } return $alterSQL;