diff --git a/db/update11.7.sql b/db/update11.7.sql index d1a3049229..c029523b9b 100644 --- a/db/update11.7.sql +++ b/db/update11.7.sql @@ -64,3 +64,5 @@ ALTER TABLE `zt_bug` ADD `v1` varchar(40) COLLATE 'utf8_general_ci' NOT NULL AFT ALTER TABLE `zt_bug` ADD `v2` varchar(40) COLLATE 'utf8_general_ci' NOT NULL AFTER `v1`; ALTER TABLE `zt_bug` ADD `repoType` varchar(30) COLLATE 'utf8_general_ci' NOT NULL DEFAULT '' AFTER `v2`; ALTER TABLE `zt_bug` ADD `entry` varchar(255) COLLATE 'utf8_general_ci' NOT NULL AFTER `repo`; + +DELETE FROM `zt_grouppriv` WHERE `module` = 'api' AND `method` = 'sql'; diff --git a/db/zentao.sql b/db/zentao.sql index 72676a4f86..aaadbd4059 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -91,6 +91,12 @@ CREATE TABLE IF NOT EXISTS `zt_bug` ( `case` mediumint(8) unsigned NOT NULL, `caseVersion` smallint(6) NOT NULL default '1', `result` mediumint(8) unsigned NOT NULL, + `repo` mediumint(8) unsigned NOT NULL, + `entry` varchar(255) unsigned NOT NULL, + `lines` varchar(10) unsigned NOT NULL, + `v1` varchar(40) unsigned NOT NULL, + `v2` varchar(40) unsigned NOT NULL, + `repoType` varchar(30) unsigned NOT NULL DEFAULT '', `testtask` mediumint(8) unsigned NOT NULL, `lastEditedBy` varchar(30) NOT NULL default '', `lastEditedDate` datetime NOT NULL, @@ -566,6 +572,61 @@ CREATE TABLE IF NOT EXISTS `zt_release` ( KEY `product` (`product`), KEY `build` (`build`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; +-- DROP TABLE IF EXISTS `zt_repo`; +CREATE TABLE IF NOT EXISTS `zt_repo` ( + `id` mediumint(9) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `path` varchar(255) NOT NULL, + `prefix` varchar(100) NOT NULL, + `encoding` varchar(20) NOT NULL, + `SCM` varchar(10) NOT NULL, + `client` varchar(100) NOT NULL, + `commits` mediumint(8) unsigned NOT NULL, + `account` varchar(30) NOT NULL, + `password` varchar(30) NOT NULL, + `encrypt` varchar(30) NOT NULL DEFAULT 'plain', + `acl` text NOT NULL, + `synced` tinyint(1) NOT NULL DEFAULT '0', + `lastSync` datetime NOT NULL, + `deleted` tinyint(1) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +-- DROP TABLE IF EXISTS `zt_repobranch`; +CREATE TABLE IF NOT EXISTS `zt_repobranch` ( + `repo` mediumint(8) unsigned NOT NULL, + `revision` mediumint(8) unsigned NOT NULL, + `branch` varchar(255) NOT NULL, + UNIQUE KEY `repo_revision_branch` (`repo`,`revision`,`branch`), + KEY `branch` (`branch`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +-- DROP TABLE IF EXISTS `zt_repofiles`; +CREATE TABLE IF NOT EXISTS `zt_repofiles` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `repo` mediumint(8) unsigned NOT NULL, + `revision` mediumint(8) unsigned NOT NULL, + `path` varchar(255) NOT NULL, + `parent` varchar(255) NOT NULL, + `type` varchar(20) NOT NULL, + `action` char(1) NOT NULL, + PRIMARY KEY (`id`), + KEY `path` (`path`), + KEY `parent` (`parent`), + KEY `repo` (`repo`), + KEY `revision` (`revision`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +-- DROP TABLE IF EXISTS `zt_repohistory`; +CREATE TABLE IF NOT EXISTS `zt_repohistory` ( + `id` mediumint(9) NOT NULL AUTO_INCREMENT, + `repo` mediumint(9) NOT NULL, + `revision` varchar(40) NOT NULL, + `commit` mediumint(8) unsigned NOT NULL, + `comment` text NOT NULL, + `committer` varchar(100) NOT NULL, + `time` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `repo` (`repo`), + KEY `revision` (`revision`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `zt_story`; CREATE TABLE IF NOT EXISTS `zt_story` ( `id` mediumint(8) unsigned NOT NULL auto_increment, @@ -1102,6 +1163,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (1, 'doc', 'createLib'), (1, 'doc', 'delete'), (1, 'doc', 'deleteLib'), +(1, 'doc', 'deleteFile'), (1, 'doc', 'edit'), (1, 'doc', 'editLib'), (1, 'doc', 'index'), @@ -1878,6 +1940,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (4, 'doc', 'createLib'), (4, 'doc', 'delete'), (4, 'doc', 'deleteLib'), +(4, 'doc', 'deleteFile'), (4, 'doc', 'edit'), (4, 'doc', 'editLib'), (4, 'doc', 'index'), @@ -2106,6 +2169,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (5, 'doc', 'createLib'), (5, 'doc', 'delete'), (5, 'doc', 'deleteLib'), +(5, 'doc', 'deleteFile'), (5, 'doc', 'edit'), (5, 'doc', 'editLib'), (5, 'doc', 'index'), @@ -2380,6 +2444,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (6, 'doc', 'createLib'), (6, 'doc', 'delete'), (6, 'doc', 'deleteLib'), +(6, 'doc', 'deleteFile'), (6, 'doc', 'edit'), (6, 'doc', 'editLib'), (6, 'doc', 'index'), @@ -2606,6 +2671,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (7, 'doc', 'createLib'), (7, 'doc', 'delete'), (7, 'doc', 'deleteLib'), +(7, 'doc', 'deleteFile'), (7, 'doc', 'edit'), (7, 'doc', 'editLib'), (7, 'doc', 'index'), @@ -2859,6 +2925,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (8, 'doc', 'createLib'), (8, 'doc', 'delete'), (8, 'doc', 'deleteLib'), +(8, 'doc', 'deleteFile'), (8, 'doc', 'edit'), (8, 'doc', 'editLib'), (8, 'doc', 'index'), @@ -3099,6 +3166,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (9, 'doc', 'createLib'), (9, 'doc', 'delete'), (9, 'doc', 'deleteLib'), +(9, 'doc', 'deleteFile'), (9, 'doc', 'edit'), (9, 'doc', 'editLib'), (9, 'doc', 'index'), diff --git a/module/block/control.php b/module/block/control.php index ffb3c3522d..87b53ee798 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -752,7 +752,7 @@ class block extends control $status = isset($this->params->type) ? $this->params->type : ''; $num = isset($this->params->num) ? $this->params->num : ''; - $products = $this->block->getProducts($status, $num); + $products = $this->loadModel('product')->getOrderedProducts($status, $num); $productIdList = array_keys($products); if(empty($products)) @@ -883,7 +883,7 @@ class block extends control $num = isset($this->params->num) ? (int)$this->params->num : 0; /* Get projects. */ - $projects = $this->block->getProjects($status, $num); + $projects = $this->loadModel('project')->getOrderedProjects($status, $num); if(empty($projects)) { $this->view->projects = $projects; @@ -992,7 +992,7 @@ class block extends control $status = isset($this->params->type) ? $this->params->type : ''; $num = isset($this->params->num) ? (int)$this->params->num : 0; - $products = $this->block->getProducts($status, $num); + $products = $this->loadModel('product')->getOrderedProducts($status, $num); $productIdList = array_keys($products); if(empty($products)) diff --git a/module/block/model.php b/module/block/model.php index 2b2b1aa0d8..4ca702ab2e 100644 --- a/module/block/model.php +++ b/module/block/model.php @@ -660,92 +660,4 @@ class blockModel extends model return $key == $hash; } - - /** - * Get products like drop menu order - * - * @param strint $status - * @param int $num - * @access public - * @return array - */ - public function getProducts($status, $num) - { - $products = $this->loadModel('product')->getList($status); - if(empty($products)) return $products; - - $lines = $this->loadModel('tree')->getLinePairs($useShort = true); - $productList = array(); - foreach($lines as $id => $name) - { - foreach($products as $key => $product) - { - if($product->line == $id) - { - $product->name = $name . '/' . $product->name; - $productList[] = $product; - unset($products[$key]); - } - } - } - $productList = array_merge($productList, $products); - - $products = $mineProducts = $otherProducts = $closedProducts = array(); - foreach($productList as $product) - { - if(!$this->app->user->admin and !$this->product->checkPriv($product->id)) continue; - if($product->status == 'normal' and $product->PO == $this->app->user->account) - { - $mineProducts[$product->id] = $product; - } - elseif($product->status == 'normal' and $product->PO != $this->app->user->account) - { - $otherProducts[$product->id] = $product; - } - elseif($product->status == 'closed') - { - $closedProducts[$product->id] = $product; - } - } - $products = $mineProducts + $otherProducts + $closedProducts; - - if(empty($num)) return $products; - return array_slice($products, 0, $num, true); - } - - /** - * Get projects like drop menu order - * - * @param string $status - * @param int $num - * @access public - * @return array - */ - public function getProjects($status, $num) - { - $projectList = $this->loadModel('project')->getList($status); - if(empty($projectList)) return $projectList; - - $projects = $mineProjects = $otherProjects = $closedProjects = array(); - foreach($projectList as $project) - { - if(!$this->app->user->admin and !$this->project->checkPriv($project->id)) continue; - if($project->status != 'done' and $project->status != 'closed' and $project->PM == $this->app->user->account) - { - $mineProjects[$project->id] = $project; - } - elseif($project->status != 'done' and $project->status != 'closed' and !($project->PM == $this->app->user->account)) - { - $otherProjects[$project->id] = $project; - } - elseif($project->status == 'done' or $project->status == 'closed') - { - $closedProjects[$project->id] = $project; - } - } - $projects = $mineProjects + $otherProjects + $closedProjects; - - if(empty($num)) return $projects; - return array_slice($projects, 0, $num, true); - } } diff --git a/module/bug/control.php b/module/bug/control.php index d48e71ddd4..cf7dd372b8 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -408,7 +408,7 @@ class bug extends control $moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'bug', $startModuleID = 0, $branch); if(empty($moduleOptionMenu)) die(js::locate(helper::createLink('tree', 'browse', "productID=$productID&view=story"))); - $productList = $this->loadModel('block')->getProducts('noclosed', ''); + $productList = $this->product->getOrderedProducts('all'); foreach($productList as $product) $products[$product->id] = $product->name; /* Set custom. */ @@ -1322,7 +1322,7 @@ class bug extends control if($bug->toTask != 0) { $task = $this->task->getById($bug->toTask); - if($task->deleted != '1') + if(!$task->deleted) { $confirmURL = $this->createLink('task', 'view', "taskID=$bug->toTask"); unset($_GET['onlybody']); diff --git a/module/bug/model.php b/module/bug/model.php index 154f8cc4ca..81701faa5c 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -1688,6 +1688,7 @@ class bugModel extends model $projects = $this->loadModel('project')->getPairs(); $maxLength = 12; + if(common::checkNotCN()) $maxLength = 22; foreach($datas as $projectID => $data) { $data->name = isset($projects[$projectID]) ? $projects[$projectID] : $this->lang->report->undefined; @@ -2311,7 +2312,7 @@ class bugModel extends model if($branch and strpos($bugQuery, '`branch` =') === false) $bugQuery .= " AND `branch` in('0','$branch')"; if(strpos($bugQuery, $allBranch) !== false) $bugQuery = str_replace($allBranch, '1', $bugQuery); - /* Fix bug #2877. */ + /* Fix bug #2878. */ if(strpos($bugQuery, '`resolvedDate`') !== false) $bugQuery .= " AND `resolvedDate` != '0000-00-00 00:00:00'"; if(strpos($bugQuery, '`closedDate`') !== false) $bugQuery .= " AND `closedDate` != '0000-00-00 00:00:00'"; diff --git a/module/build/view/create.html.php b/module/build/view/create.html.php index c22cee3054..67c6d0ae1e 100644 --- a/module/build/view/create.html.php +++ b/module/build/view/create.html.php @@ -44,7 +44,7 @@