From c658c271f4ea9706bf1a9aabfedcdabfb0d9f0f7 Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Mon, 23 Nov 2020 20:55:42 +0800 Subject: [PATCH 1/3] * Finish task#8465. --- module/program/lang/de.php | 2 +- module/program/lang/en.php | 2 +- module/program/lang/fr.php | 2 +- module/program/lang/vi.php | 2 +- module/program/lang/zh-cn.php | 2 +- module/program/lang/zh-tw.php | 2 +- module/program/model.php | 34 ++++++++++++++++++++++------------ 7 files changed, 28 insertions(+), 18 deletions(-) diff --git a/module/program/lang/de.php b/module/program/lang/de.php index 7986041dd5..fb1ebcf198 100644 --- a/module/program/lang/de.php +++ b/module/program/lang/de.php @@ -87,7 +87,7 @@ $lang->program->cv = 'CV%'; $lang->program->PRJTeamCount = 'Team'; $lang->program->PRJLongTime = 'Long-Term Project'; -$lang->program->productNotEmpty = 'Affiliated products cannot be empty!'; +$lang->program->productNotEmpty = 'Please link products or create products.'; $lang->program->unitList[''] = ''; $lang->program->unitList['yuan'] = 'Yuan'; diff --git a/module/program/lang/en.php b/module/program/lang/en.php index 7986041dd5..fb1ebcf198 100644 --- a/module/program/lang/en.php +++ b/module/program/lang/en.php @@ -87,7 +87,7 @@ $lang->program->cv = 'CV%'; $lang->program->PRJTeamCount = 'Team'; $lang->program->PRJLongTime = 'Long-Term Project'; -$lang->program->productNotEmpty = 'Affiliated products cannot be empty!'; +$lang->program->productNotEmpty = 'Please link products or create products.'; $lang->program->unitList[''] = ''; $lang->program->unitList['yuan'] = 'Yuan'; diff --git a/module/program/lang/fr.php b/module/program/lang/fr.php index 7986041dd5..fb1ebcf198 100644 --- a/module/program/lang/fr.php +++ b/module/program/lang/fr.php @@ -87,7 +87,7 @@ $lang->program->cv = 'CV%'; $lang->program->PRJTeamCount = 'Team'; $lang->program->PRJLongTime = 'Long-Term Project'; -$lang->program->productNotEmpty = 'Affiliated products cannot be empty!'; +$lang->program->productNotEmpty = 'Please link products or create products.'; $lang->program->unitList[''] = ''; $lang->program->unitList['yuan'] = 'Yuan'; diff --git a/module/program/lang/vi.php b/module/program/lang/vi.php index 7986041dd5..fb1ebcf198 100644 --- a/module/program/lang/vi.php +++ b/module/program/lang/vi.php @@ -87,7 +87,7 @@ $lang->program->cv = 'CV%'; $lang->program->PRJTeamCount = 'Team'; $lang->program->PRJLongTime = 'Long-Term Project'; -$lang->program->productNotEmpty = 'Affiliated products cannot be empty!'; +$lang->program->productNotEmpty = 'Please link products or create products.'; $lang->program->unitList[''] = ''; $lang->program->unitList['yuan'] = 'Yuan'; diff --git a/module/program/lang/zh-cn.php b/module/program/lang/zh-cn.php index 8d97bf3531..67d0badea0 100644 --- a/module/program/lang/zh-cn.php +++ b/module/program/lang/zh-cn.php @@ -87,7 +87,7 @@ $lang->program->cv = 'CV%'; $lang->program->PRJTeamCount = '项目成员'; $lang->program->PRJLongTime = '长期'; -$lang->program->productNotEmpty = '关联产品不能为空!'; +$lang->program->productNotEmpty = '请关联产品或创建产品。'; $lang->program->unitList[''] = ''; $lang->program->unitList['yuan'] = '元'; diff --git a/module/program/lang/zh-tw.php b/module/program/lang/zh-tw.php index 293e20c247..835841cd96 100644 --- a/module/program/lang/zh-tw.php +++ b/module/program/lang/zh-tw.php @@ -85,7 +85,7 @@ $lang->program->cv = 'CV%'; $lang->program->PRJTeamCount = '項目成員'; $lang->program->PRJLongTime = '長期'; -$lang->program->productNotEmpty = '關聯產品不能為空!'; +$lang->program->productNotEmpty = '請關聯產品或創建產品。'; $lang->program->unitList[''] = ''; $lang->program->unitList['yuan'] = '元'; diff --git a/module/program/model.php b/module/program/model.php index 6131826848..b830db1bad 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -1208,13 +1208,18 @@ class programModel extends model if(dao::isError()) return false; } + } - /* Judge products not empty. */ - if(!$_POST['products'][0]) - { - dao::$errors[] = $this->lang->program->productNotEmpty; - return false; - } + /* Judge products not empty. */ + $linkedProductsCount = 0; + foreach($_POST['products'] as $product) + { + if(!empty($product)) $linkedProductsCount++; + } + if(empty($linkedProductsCount)) + { + dao::$errors[] = $this->lang->program->productNotEmpty; + return false; } $requiredFields = $this->config->program->PRJCreate->requiredFields; @@ -1336,13 +1341,18 @@ class programModel extends model if(dao::isError()) return false; } + } - /* Judge products not empty. */ - if(!$_POST['products'][0]) - { - dao::$errors[] = $this->lang->program->productNotEmpty; - return false; - } + /* Judge products not empty. */ + $linkedProductsCount = 0; + foreach($_POST['products'] as $product) + { + if(!empty($product)) $linkedProductsCount++; + } + if(empty($linkedProductsCount)) + { + dao::$errors[] = $this->lang->program->productNotEmpty; + return false; } $project = $this->loadModel('file')->processImgURL($project, $this->config->program->editor->prjedit['id'], $this->post->uid); From fa4bb5a280e1f23d9b62ad9584ba16f4f4251ccb Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Mon, 23 Nov 2020 21:04:41 +0800 Subject: [PATCH 2/3] * Conflict resolution. --- module/group/lang/resource.php | 1 - 1 file changed, 1 deletion(-) diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 10c34974ff..8041e668d7 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -1917,4 +1917,3 @@ if($config->global->flow == 'onlyTest') $lang->resource->product->build = 'build'; $lang->product->methodOrder[5] = 'build'; } ->>>>>>> 12.x From 6f8d41b767b8d0b3a31195d505357345bcbed0f6 Mon Sep 17 00:00:00 2001 From: leiyong <1549684884@qq.com> Date: Tue, 24 Nov 2020 00:17:32 +0800 Subject: [PATCH 3/3] * Adjust install. --- db/zentao.sql | 15 +++++----- module/install/model.php | 59 +++++++++++++++++++++++----------------- 2 files changed, 41 insertions(+), 33 deletions(-) diff --git a/db/zentao.sql b/db/zentao.sql index 7c553bd539..d352840ca2 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -1222,7 +1222,6 @@ CREATE TABLE IF NOT EXISTS `zt_user` ( `type` char(30) NOT NULL default 'inside', `dept` mediumint(8) unsigned NOT NULL default '0', `account` char(30) NOT NULL default '', - `type` char(30) NOT NULL DEFAULT 'inside', `password` char(32) NOT NULL default '', `role` char(10) NOT NULL default '', `realname` varchar(100) NOT NULL default '', @@ -1379,14 +1378,14 @@ CREATE TABLE IF NOT EXISTS `zt_weeklyreport`( UNIQUE KEY `week` (`PRJ`,`weekStart`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `zt_workestimation`; -CREATE TABLE IF NOT EXISTS `zt_workestimation` ( +CREATE TABLE `zt_workestimation` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `PRJ` mediumint(8) unsigned NOT NULL, - `scale` mediumint(8) unsigned NOT NULL, - `productivity` smallint(3) unsigned NOT NULL, - `duration` mediumint(8) unsigned NOT NULL, - `unitLaborCost` mediumint(8) unsigned NOT NULL, - `totalLaborCost` mediumint(8) unsigned NOT NULL, + `scale` decimal(10,2) unsigned NOT NULL, + `productivity` decimal(10,2) unsigned NOT NULL, + `duration` decimal(10,2) unsigned NOT NULL, + `unitLaborCost` decimal(10,2) unsigned NOT NULL, + `totalLaborCost` decimal(10,2) unsigned NOT NULL, `createdBy` varchar(30) NOT NULL, `createdDate` datetime NOT NULL, `editedBy` varchar(30) NOT NULL, @@ -1394,7 +1393,7 @@ CREATE TABLE IF NOT EXISTS `zt_workestimation` ( `assignedTo` varchar(30) NOT NULL, `assignedDate` datetime NOT NULL, `deleted` enum('0','1') NOT NULL DEFAULT '0', - `dayHour` float(5,2) DEFAULT NULL, + `dayHour` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `zt_log`; diff --git a/module/install/model.php b/module/install/model.php index 6bf5de6fd4..0d92cb0be2 100644 --- a/module/install/model.php +++ b/module/install/model.php @@ -445,35 +445,44 @@ class installModel extends model */ public function createTable($version) { - $this->dbh->exec("USE {$this->config->db->name}"); - - $dbFile = $this->app->getAppRoot() . 'db' . DS . 'zentao.sql'; - $tables = explode(';', file_get_contents($dbFile)); - - foreach($tables as $table) + /* Add exception handling to ensure that all SQL is executed successfully. */ + try { - $table = trim($table); - if(empty($table)) continue; + $this->dbh->exec("USE {$this->config->db->name}"); - if(strpos($table, 'CREATE') !== false and $version <= 4.1) + $dbFile = $this->app->getAppRoot() . 'db' . DS . 'zentao.sql'; + $tables = explode(';', file_get_contents($dbFile)); + + foreach($tables as $table) { - $table = str_replace('DEFAULT CHARSET=utf8', '', $table); + $table = trim($table); + if(empty($table)) continue; + + if(strpos($table, 'CREATE') !== false and $version <= 4.1) + { + $table = str_replace('DEFAULT CHARSET=utf8', '', $table); + } + elseif(strpos($table, 'DROP') !== false and $this->post->clearDB != false) + { + $table = str_replace('--', '', $table); + } + + $table = str_replace('__DELIMITER__', ';', $table); + $table = str_replace('__TABLE__', $this->config->db->name, $table); + + /* Skip sql that is note. */ + if(strpos($table, '--') === 0) continue; + + $table = str_replace('`zt_', $this->config->db->name . '.`zt_', $table); + $table = str_replace('`ztv_', $this->config->db->name . '.`ztv_', $table); + $table = str_replace('zt_', $this->config->db->prefix, $table); + if(!$this->dbh->query($table)) return false; } - elseif(strpos($table, 'DROP') !== false and $this->post->clearDB != false) - { - $table = str_replace('--', '', $table); - } - - $table = str_replace('__DELIMITER__', ';', $table); - $table = str_replace('__TABLE__', $this->config->db->name, $table); - - /* Skip sql that is note. */ - if(strpos($table, '--') === 0) continue; - - $table = str_replace('`zt_', $this->config->db->name . '.`zt_', $table); - $table = str_replace('`ztv_', $this->config->db->name . '.`ztv_', $table); - $table = str_replace('zt_', $this->config->db->prefix, $table); - if(!$this->dbh->query($table)) return false; + } + catch (PDOException $exception) + { + echo $exception->getMessage(); + die(); } return true; }