diff --git a/db/init.sql b/db/init.sql new file mode 100644 index 0000000000..c35e728b60 --- /dev/null +++ b/db/init.sql @@ -0,0 +1,507 @@ +SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; + + + + +CREATE TABLE IF NOT EXISTS `zt_action` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `company` mediumint(8) unsigned NOT NULL default '0', + `objectType` varchar(30) NOT NULL default '', + `objectID` mediumint(8) unsigned NOT NULL default '0', + `actor` varchar(30) NOT NULL default '', + `action` varchar(30) NOT NULL default '', + `date` int(10) unsigned NOT NULL default '0', + `comment` text NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_bug` ( + `id` mediumint(8) NOT NULL auto_increment, + `product` mediumint(8) unsigned NOT NULL default '0', + `module` mediumint(8) unsigned NOT NULL default '0', + `project` mediumint(8) unsigned NOT NULL default '0', + `story` mediumint(8) unsigned NOT NULL default '0', + `task` mediumint(8) unsigned NOT NULL default '0', + `title` varchar(150) NOT NULL default '', + `severity` tinyint(4) NOT NULL default '0', + `type` varchar(30) NOT NULL default '', + `os` varchar(30) NOT NULL default '', + `browser` varchar(30) NOT NULL default '', + `hardware` varchar(30) NOT NULL, + `found` varchar(30) NOT NULL default '', + `steps` text NOT NULL, + `status` enum('active','resolved','closed') NOT NULL default 'active', + `mailto` varchar(255) NOT NULL default '', + `openedBy` varchar(30) NOT NULL default '', + `openedDate` datetime NOT NULL, + `openedBuild` varchar(30) NOT NULL default '', + `assignedTo` varchar(30) NOT NULL default '', + `assignedDate` datetime NOT NULL, + `resolvedBy` varchar(30) NOT NULL default '', + `resolution` varchar(30) NOT NULL default '', + `resolvedBuild` varchar(30) NOT NULL default '', + `resolvedDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL default '', + `closedDate` datetime NOT NULL, + `lastEditedBy` varchar(30) NOT NULL default '', + `lastEditedDate` datetime NOT NULL, + `field1` varchar(255) NOT NULL default '', + `field2` varchar(255) NOT NULL default '', + `feild3` varchar(255) NOT NULL default '', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_build` ( + `id` mediumint(8) unsigned NOT NULL default '0', + `product` mediumint(8) unsigned NOT NULL default '0', + `sprintprj` mediumint(8) unsigned NOT NULL default '0', + `name` char(30) NOT NULL default '', + `scmPath` char(255) NOT NULL default '', + `buildDate` int(10) unsigned NOT NULL default '0', + `builder` char(30) NOT NULL default '', + `tasks` char(255) NOT NULL default '', + `desc` char(255) NOT NULL default '' +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_burn` ( + `project` mediumint(8) unsigned NOT NULL, + `date` date NOT NULL, + `left` float NOT NULL, + `consumed` float NOT NULL, + PRIMARY KEY (`project`,`date`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + + + +CREATE TABLE IF NOT EXISTS `zt_case` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `product` mediumint(8) unsigned NOT NULL default '0', + `module` mediumint(8) unsigned NOT NULL default '0', + `path` mediumint(8) unsigned NOT NULL default '0', + `story` mediumint(30) unsigned NOT NULL default '0', + `title` char(30) NOT NULL default '', + `pri` tinyint(3) unsigned NOT NULL default '0', + `type` char(30) NOT NULL default '1', + `status` char(30) NOT NULL default '1', + `steps` text NOT NULL, + `frequency` enum('1','2','3') NOT NULL default '1', + `order` tinyint(30) unsigned NOT NULL default '0', + `openedBy` char(30) NOT NULL default '', + `openedDate` datetime NOT NULL, + `lastEditedBy` char(30) NOT NULL default '', + `lastEditedDate` datetime NOT NULL, + `field1` char(30) NOT NULL default '', + `field2` char(30) NOT NULL default '', + `feidl3` char(30) NOT NULL default '', + `version` tinyint(3) unsigned NOT NULL default '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_caseResult` ( + `id` mediumint(8) unsigned NOT NULL default '0', + `plan` mediumint(30) unsigned NOT NULL default '0', + `build` mediumint(30) unsigned NOT NULL default '0', + `case` mediumint(30) unsigned NOT NULL default '0', + `result` enum('pass','fail','skip') NOT NULL default 'pass', + `status` enum('finished','blocked') NOT NULL default 'finished', + `executedBy` char(30) NOT NULL default '', + `executedDate` int(30) unsigned NOT NULL default '0', + `os` char(30) NOT NULL default '', + `browser` char(30) NOT NULL default '', + `hardware` char(30) NOT NULL default '' +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_caseStep` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `case` mediumint(8) unsigned NOT NULL default '0', + `caseVersion` tinyint(3) unsigned NOT NULL default '0', + `step` char(255) NOT NULL default '', + `expect` char(255) NOT NULL default '', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_company` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `name` char(120) NOT NULL default '', + `phone` char(20) NOT NULL, + `fax` char(20) NOT NULL default '', + `address` char(120) NOT NULL default '', + `zipcode` char(10) NOT NULL default '', + `website` char(120) NOT NULL default '', + `backyard` char(120) NOT NULL default '', + `pms` char(120) NOT NULL default '', + `guest` enum('1','0') NOT NULL default '0', + `admins` char(255) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_config` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `company` mediumint(8) unsigned NOT NULL default '0', + `owner` char(30) NOT NULL default '', + `section` char(30) NOT NULL default '', + `key` char(30) NOT NULL default '', + `value` char(255) NOT NULL default '', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_division` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `company` mediumint(8) unsigned NOT NULL default '0', + `name` char(30) NOT NULL default '', + `parent` mediumint(8) unsigned NOT NULL default '0', + `path` char(255) NOT NULL default '', + `grade` tinyint(3) unsigned NOT NULL default '0', + `order` tinyint(3) unsigned NOT NULL default '0', + `position` char(30) NOT NULL default '', + `function` char(255) NOT NULL default '', + `manager` char(30) NOT NULL default '', + PRIMARY KEY (`id`), + KEY `company` (`company`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_effort` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `user` char(30) NOT NULL default '', + `todo` enum('1','0') NOT NULL default '1', + `date` date NOT NULL default '0000-00-00', + `begin` datetime NOT NULL default '0000-00-00 00:00:00', + `end` datetime NOT NULL default '0000-00-00 00:00:00', + `type` enum('1','2','3') NOT NULL default '1', + `idvalue` mediumint(8) unsigned NOT NULL default '0', + `name` char(30) NOT NULL default '', + `desc` char(255) NOT NULL default '', + `status` enum('1','2','3') NOT NULL default '1', + PRIMARY KEY (`id`), + KEY `user` (`user`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_file` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `company` mediumint(8) unsigned NOT NULL default '0', + `file` char(50) NOT NULL, + `type` char(30) NOT NULL, + `size` mediumint(8) unsigned NOT NULL default '0', + `addedBy` char(30) NOT NULL default '', + `addedDate` datetime NOT NULL, + `downloads` mediumint(8) unsigned NOT NULL default '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_group` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `company` mediumint(8) unsigned NOT NULL, + `name` char(30) NOT NULL, + `desc` char(255) NOT NULL default '', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_groupPriv` ( + `group` mediumint(8) unsigned NOT NULL default '0', + `module` char(30) NOT NULL default '', + `method` char(30) NOT NULL default '', + UNIQUE KEY `group` (`group`,`module`,`method`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_history` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `action` mediumint(8) unsigned NOT NULL default '0', + `field` varchar(30) NOT NULL default '', + `old` text NOT NULL, + `new` text NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_module` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `product` mediumint(8) unsigned NOT NULL default '0', + `name` char(30) NOT NULL default '', + `parent` mediumint(8) unsigned NOT NULL default '0', + `path` char(255) NOT NULL default '', + `grade` tinyint(3) unsigned NOT NULL default '0', + `order` tinyint(3) unsigned NOT NULL default '0', + `view` char(30) NOT NULL default '', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_planCase` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `plan` mediumint(8) unsigned NOT NULL default '0', + `case` mediumint(8) unsigned NOT NULL default '0', + `caseVersion` tinyint(3) unsigned NOT NULL default '0', + `assignedTo` char(30) NOT NULL default '', + `assignedDate` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_product` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `company` mediumint(8) unsigned NOT NULL default '0', + `name` varchar(30) NOT NULL default '', + `code` varchar(10) NOT NULL default '', + `order` tinyint(3) unsigned NOT NULL default '0', + `status` varchar(30) NOT NULL default '', + `desc` text NOT NULL, + PRIMARY KEY (`id`), + KEY `company` (`company`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_project` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `company` mediumint(8) unsigned NOT NULL default '0', + `isCat` enum('1','0') NOT NULL default '0', + `catID` mediumint(8) unsigned NOT NULL, + `type` enum('sprint','project') NOT NULL default 'sprint', + `parent` mediumint(8) unsigned NOT NULL default '0', + `name` varchar(30) NOT NULL default '', + `code` varchar(20) NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `status` varchar(10) NOT NULL, + `statge` enum('1','2','3','4','5') NOT NULL default '1', + `pri` enum('1','2','3','4') NOT NULL default '1', + `desc` text NOT NULL, + `goal` text NOT NULL, + `openedBy` varchar(30) NOT NULL default '', + `openedDate` int(10) unsigned NOT NULL default '0', + `closedBy` varchar(30) NOT NULL default '', + `closedDate` int(10) unsigned NOT NULL default '0', + `canceledBy` varchar(30) NOT NULL default '', + `canceledDate` int(10) unsigned NOT NULL default '0', + `PO` varchar(30) NOT NULL default '', + `PM` varchar(30) NOT NULL default '', + `QM` varchar(30) NOT NULL default '', + `team` varchar(30) NOT NULL, + PRIMARY KEY (`id`), + KEY `company` (`company`,`type`,`parent`,`begin`,`end`,`status`,`statge`,`pri`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_projectProduct` ( + `project` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + PRIMARY KEY (`project`,`product`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + + + +CREATE TABLE IF NOT EXISTS `zt_projectStory` ( + `project` mediumint(8) unsigned NOT NULL default '0', + `product` mediumint(8) unsigned NOT NULL, + `story` mediumint(8) unsigned NOT NULL default '0', + UNIQUE KEY `project` (`project`,`story`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_release` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `product` mediumint(8) unsigned NOT NULL default '0', + `name` varchar(30) NOT NULL default '', + `desc` text NOT NULL, + `status` varchar(30) NOT NULL default '', + `planDate` date NOT NULL default '0000-00-00', + `releaseDate` datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (`id`), + KEY `product` (`product`,`status`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_releation` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `type` char(30) NOT NULL default '', + `id1` mediumint(8) unsigned NOT NULL default '0', + `id2` mediumint(8) unsigned NOT NULL default '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_resultStep` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `result` mediumint(8) unsigned NOT NULL default '0', + `step` mediumint(8) unsigned NOT NULL default '0', + `stepResult` enum('pass','fail','block','n/a') NOT NULL default 'pass', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_story` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `product` mediumint(8) unsigned NOT NULL default '0', + `module` mediumint(8) unsigned NOT NULL default '0', + `replease` mediumint(8) unsigned NOT NULL default '0', + `bug` mediumint(8) unsigned NOT NULL default '0', + `title` varchar(90) NOT NULL default '', + `spec` text NOT NULL, + `type` varchar(30) NOT NULL default '', + `pri` tinyint(3) unsigned NOT NULL default '3', + `estimate` float unsigned NOT NULL, + `status` varchar(30) NOT NULL default '', + `mailto` varchar(255) NOT NULL default '', + `openedBy` varchar(30) NOT NULL default '', + `openedDate` datetime NOT NULL, + `assignedTo` varchar(30) NOT NULL default '', + `assignedDate` datetime NOT NULL, + `lastEditedBy` varchar(30) NOT NULL default '', + `lastEditedDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL default '', + `closedDate` datetime NOT NULL, + `version` float(4,1) NOT NULL default '0.0', + `attatchment` varchar(30) NOT NULL default '', + PRIMARY KEY (`id`), + KEY `product` (`product`,`module`,`replease`,`type`,`pri`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_task` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `project` mediumint(8) unsigned NOT NULL default '0', + `story` mediumint(8) unsigned NOT NULL default '0', + `name` varchar(90) NOT NULL, + `pri` tinyint(3) unsigned NOT NULL default '0', + `owner` char(30) NOT NULL default '', + `estimate` float unsigned NOT NULL, + `consumed` float unsigned NOT NULL, + `status` enum('wait','doing','done','cancel') NOT NULL default 'wait', + `desc` text NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_taskEstimate` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `task` mediumint(8) unsigned NOT NULL default '0', + `date` int(10) unsigned NOT NULL default '0', + `estimate` tinyint(3) unsigned NOT NULL default '0', + `estimater` char(30) NOT NULL default '', + PRIMARY KEY (`id`), + KEY `task` (`task`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_team` ( + `project` mediumint(8) unsigned NOT NULL default '0', + `account` char(30) NOT NULL default '', + `role` char(30) NOT NULL default '', + `joinDate` date NOT NULL default '0000-00-00', + `workingHour` tinyint(3) unsigned NOT NULL default '0', + PRIMARY KEY (`project`,`account`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_testPlan` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `name` char(30) NOT NULL default '', + `sprintprj` mediumint(8) unsigned NOT NULL default '0', + `planBegin` int(10) unsigned NOT NULL default '0', + `planEnd` int(10) unsigned NOT NULL default '0', + `realBegin` int(10) unsigned NOT NULL default '0', + `realEnd` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_todo` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `account` char(30) NOT NULL, + `date` date NOT NULL default '0000-00-00', + `begin` smallint(4) unsigned zerofill NOT NULL, + `end` smallint(4) unsigned zerofill NOT NULL, + `type` char(10) NOT NULL, + `idvalue` mediumint(8) unsigned NOT NULL default '0', + `pri` tinyint(3) unsigned NOT NULL, + `name` char(150) NOT NULL, + `desc` text NOT NULL, + `status` enum('wait','doing','done') NOT NULL default 'wait', + PRIMARY KEY (`id`), + KEY `user` (`account`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_user` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `company` mediumint(8) unsigned NOT NULL default '0', + `division` mediumint(8) unsigned NOT NULL default '0', + `account` char(30) NOT NULL default '', + `password` char(32) NOT NULL default '', + `realname` char(30) NOT NULL default '', + `nickname` char(60) NOT NULL default '', + `avatar` char(30) NOT NULL default '', + `birthyear` smallint(5) unsigned NOT NULL default '0', + `birthday` date NOT NULL default '0000-00-00', + `gendar` enum('f','m') NOT NULL default 'f', + `email` char(90) NOT NULL default '', + `msn` char(90) NOT NULL default '', + `qq` char(20) NOT NULL default '', + `yahoo` char(90) NOT NULL default '', + `gtalk` char(90) NOT NULL default '', + `wangwang` char(90) NOT NULL default '', + `mobile` char(11) NOT NULL default '', + `phone` char(20) NOT NULL default '', + `address` char(120) NOT NULL default '', + `zipcode` char(10) NOT NULL default '', + `join` date NOT NULL default '0000-00-00', + `visits` mediumint(8) unsigned NOT NULL default '0', + `ip` char(15) NOT NULL, + `last` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`id`), + KEY `company` (`company`,`division`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +CREATE TABLE IF NOT EXISTS `zt_userGroup` ( + `account` char(30) NOT NULL default '', + `group` mediumint(8) unsigned NOT NULL default '0', + UNIQUE KEY `account` (`account`,`group`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/db/update0.1.sql b/db/update0.1.sql index 23556d395e..1dc3b5f256 100644 --- a/db/update0.1.sql +++ b/db/update0.1.sql @@ -1,21 +1,21 @@ -- story优先级的默认值。 -ALTER TABLE `zt_story` CHANGE `pri` `pri` TINYINT( 3 ) UNSIGNED NOT NULL DEFAULT '3' +ALTER TABLE `zt_story` CHANGE `pri` `pri` TINYINT( 3 ) UNSIGNED NOT NULL DEFAULT '3'; -- 修改project code字段的长度。 -ALTER TABLE `zt_project` CHANGE `code` `code` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL +ALTER TABLE `zt_project` CHANGE `code` `code` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; -- task 暂时增加left字段: - ALTER TABLE `zt_task` ADD `left` tinyINT(3) NOT NULL AFTER `consumed` + ALTER TABLE `zt_task` ADD `left` tinyINT(3) NOT NULL AFTER `consumed`; -- 修改日期字段 ALTER TABLE `zt_bug` CHANGE `openedDate` `openedDate` DATETIME NOT NULL , CHANGE `assignedDate` `assignedDate` DATETIME NOT NULL , CHANGE `resolvedDate` `resolvedDate` DATETIME NOT NULL , CHANGE `closedDate` `closedDate` DATETIME NOT NULL , -CHANGE `lastEditedDate` `lastEditedDate` DATETIME NOT NULL +CHANGE `lastEditedDate` `lastEditedDate` DATETIME NOT NULL; -RENAME TABLE `zentao`.`zt_division` TO `zentao`.`zt_dept` ; -ALTER TABLE `zt_user` CHANGE `division` `dept` MEDIUMINT( 8 ) UNSIGNED NOT NULL DEFAULT '0' +RENAME TABLE `zt_division` TO `zt_dept` ; +ALTER TABLE `zt_user` CHANGE `division` `dept` MEDIUMINT( 8 ) UNSIGNED NOT NULL DEFAULT '0'; -- 0.2版本: @@ -24,7 +24,7 @@ ALTER TABLE `zt_user` CHANGE `division` `dept` MEDIUMINT( 8 ) UNSIGNED NOT NULL -- 修改task表的时间的类型,可以是浮点数。 ALTER TABLE `zt_task` CHANGE `estimate` `estimate` FLOAT UNSIGNED NOT NULL , CHANGE `consumed` `consumed` FLOAT UNSIGNED NOT NULL , -CHANGE `left` `left` FLOAT UNSIGNED NOT NULL +CHANGE `left` `left` FLOAT UNSIGNED NOT NULL; -- todo表 @@ -49,28 +49,28 @@ update zt_product set company = 1; update zt_project set company = 1; -- 更新story字段里面的estimate字段: -ALTER TABLE `zt_story` CHANGE `estimate` `estimate` FLOAT UNSIGNED NOT NULL +ALTER TABLE `zt_story` CHANGE `estimate` `estimate` FLOAT UNSIGNED NOT NULL; -- 还是使用datetime字段。 ALTER TABLE `zt_story` CHANGE `openedDate` `openedDate` DATETIME NOT NULL , CHANGE `assignedDate` `assignedDate` DATETIME NOT NULL , CHANGE `lastEditedDate` `lastEditedDate` DATETIME NOT NULL , -CHANGE `closedDate` `closedDate` DATETIME NOT NULL +CHANGE `closedDate` `closedDate` DATETIME NOT NULL; --- 增加diff字段。 -ALTER TABLE `zt_history` ADD `diff` TEXT NOT NULL +-- 增加diff字段。 +ALTER TABLE `zt_history` ADD `diff` TEXT NOT NULL; -- 10.27 -ALTER TABLE `zt_todo` CHANGE `desc` `desc` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL -ALTER TABLE `zt_task` CHANGE `name` `name` VARCHAR( 90 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL +ALTER TABLE `zt_todo` CHANGE `desc` `desc` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; +ALTER TABLE `zt_task` CHANGE `name` `name` VARCHAR( 90 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; ALTER TABLE `zt_task` CHANGE `estimate` `estimate` FLOAT UNSIGNED NOT NULL , CHANGE `consumed` `consumed` FLOAT UNSIGNED NOT NULL , -CHANGE `left` `left` FLOAT UNSIGNED NOT NULL +CHANGE `left` `left` FLOAT UNSIGNED NOT NULL; -- 11.2 todo表增加private字段: -ALTER TABLE `zt_todo` ADD `private` BOOL NOT NULL +ALTER TABLE `zt_todo` ADD `private` BOOL NOT NULL; -- 11.4 增加消耗表。 CREATE TABLE IF NOT EXISTS `zt_burn` ( @@ -82,7 +82,7 @@ CREATE TABLE IF NOT EXISTS `zt_burn` ( ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- 11.5 project status字段更改。 -ALTER TABLE `zt_project` CHANGE `status` `status` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL +ALTER TABLE `zt_project` CHANGE `status` `status` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; -- 11.10. @@ -90,18 +90,18 @@ ALTER TABLE `zt_bug` CHANGE `openedDate` `openedDate` DATETIME NOT NULL , CHANGE `assignedDate` `assignedDate` DATETIME NOT NULL , CHANGE `resolvedDate` `resolvedDate` DATETIME NOT NULL , CHANGE `closedDate` `closedDate` DATETIME NOT NULL , -CHANGE `lastEditedDate` `lastEditedDate` DATETIME NOT NULL +CHANGE `lastEditedDate` `lastEditedDate` DATETIME NOT NULL; --- 11.12 +-- 11.12 ALTER TABLE `zt_bug` ADD `duplicateBug` MEDIUMINT UNSIGNED NOT NULL AFTER `closedDate` , ADD `linkBug` VARCHAR( 255 ) NOT NULL AFTER `duplicateBug` , ADD `case` MEDIUMINT UNSIGNED NOT NULL AFTER `linkBug` , -ADD `result` MEDIUMINT UNSIGNED NOT NULL AFTER `case` +ADD `result` MEDIUMINT UNSIGNED NOT NULL AFTER `case`; -- 11.13 ALTER TABLE `zt_case` CHANGE `openedDate` `openedDate` DATETIME NOT NULL , -CHANGE `lastEditedDate` `lastEditedDate` DATETIME NOT NULL +CHANGE `lastEditedDate` `lastEditedDate` DATETIME NOT NULL; -- 11.16 ALTER TABLE `zt_file` CHANGE `addedDate` `addedDate` DATETIME NOT NULL; @@ -112,41 +112,41 @@ ADD `objectID` MEDIUMINT NOT NULL AFTER `objectType` ; ALTER TABLE `zt_file` CHANGE `file` `pathname` CHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; ALTER TABLE `zt_file` CHANGE `type` `extension` CHAR( 30 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; -ALTER TABLE `zt_task` CHANGE `status` `status` ENUM( 'wait', 'doing', 'done', 'cancel' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'wait' +ALTER TABLE `zt_task` CHANGE `status` `status` ENUM( 'wait', 'doing', 'done', 'cancel' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'wait'; -ALTER TABLE `zt_todo` CHANGE `name` `name` CHAR( 150 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL +ALTER TABLE `zt_todo` CHANGE `name` `name` CHAR( 150 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; -- 12.10 新增productPlan表。 -CREATE TABLE `zentao`.`zt_productPlan` ( +CREATE TABLE `zt_productPlan` ( `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `product` MEDIUMINT UNSIGNED NOT NULL , `title` VARCHAR( 90 ) NOT NULL , `desc` VARCHAR( 255 ) NOT NULL , `begin` DATE NOT NULL , - `end` DATE NOT NULL + `end` DATE NOT NULL ) ENGINE = MYISAM ; --- 将zt_story中的release改为plan。 -ALTER TABLE `zt_story` CHANGE `replease` `plan` MEDIUMINT( 8 ) UNSIGNED NOT NULL DEFAULT '0' +-- 将zt_story中的release改为plan。 +ALTER TABLE `zt_story` CHANGE `replease` `plan` MEDIUMINT( 8 ) UNSIGNED NOT NULL DEFAULT '0'; -- 12.11 修改case表。 ALTER TABLE `zt_case` CHANGE `type` `type` CHAR( 30 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '1', CHANGE `status` `status` CHAR( 30 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '1', CHANGE `openedDate` `openedDate` DATETIME NOT NULL , -CHANGE `lastEditedDate` `lastEditedDate` DATETIME NOT NULL +CHANGE `lastEditedDate` `lastEditedDate` DATETIME NOT NULL; -ALTER TABLE `zt_case` CHANGE `title` `title` CHAR( 90 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL +ALTER TABLE `zt_case` CHANGE `title` `title` CHAR( 90 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; -- 12.28 zt_task字段增加自定义排序字段。 ALTER TABLE `zt_task` ADD `statusCustom` TINYINT UNSIGNED NOT NULL AFTER `status` , ADD INDEX ( statusCustom ); -update zt_task set statusCustom = locate(status, 'wait,doing,done,cancel') +update zt_task set statusCustom = locate(status, 'wait,doing,done,cancel'); -- 增加类型字段。-- ALTER TABLE `zt_task` ADD `type` VARCHAR( 20 ) NOT NULL AFTER `name` , -ADD INDEX ( TYPE ) +ADD INDEX ( TYPE ); -- todo 增加状态-- -ALTER TABLE `zt_todo` CHANGE `status` `status` CHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'wait' +ALTER TABLE `zt_todo` CHANGE `status` `status` CHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'wait'; diff --git a/db/update0.3.sql b/db/update0.3.sql index 3e34b220ea..a11d0f00e9 100644 --- a/db/update0.3.sql +++ b/db/update0.3.sql @@ -26,10 +26,10 @@ CREATE TABLE IF NOT EXISTS `zt_release` ( UNIQUE KEY `name` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; --- 20100115: fix bug 14 +-- 20100115: fix bug 14 ALTER TABLE `zt_productPlan` CHANGE `title` `title` VARCHAR( 90 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , CHANGE `desc` `desc` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; -- 20100125 user表增加status字段。 ALTER TABLE `zt_user` ADD `status` VARCHAR( 30 ) NOT NULL DEFAULT 'active', -ADD INDEX ( STATUS ) +ADD INDEX ( STATUS ); diff --git a/db/update0.4.sql b/db/update0.4.sql index ba344d1287..106c1f40cb 100644 --- a/db/update0.4.sql +++ b/db/update0.4.sql @@ -104,10 +104,10 @@ DROP TABLE `zt_releation`; ALTER TABLE `zt_action` ADD `extra` VARCHAR( 255 ) NOT NULL; UPDATE zt_action SET extra = substr( ACTION , 13 ) , ACTION = 'Resolved' WHERE ACTION LIKE 'Resolved%'; ---20100210 adjust the reviewedDate -ALTER TABLE `zt_story` CHANGE `reviewedDate` `reviewedDate` DATE NOT NULL; +-- 20100210 adjust the reviewedDate +ALTER TABLE `zt_story` CHANGE `reviewedDate` `reviewedDate` DATE NOT NULL; ---20100220 action: convert the date from timestamp to datetime +-- 20100220 action: convert the date from timestamp to datetime ALTER TABLE `zt_action` ADD `datetmp` VARCHAR( 255 ) NOT NULL AFTER `date`; UPDATE zt_action SET datetmp = FROM_UNIXTIME( date ) ; ALTER TABLE `zt_action` DROP `date`; diff --git a/db/update1.0.1.sql b/db/update1.0.1.sql index bb0f75b302..db950bf19c 100644 --- a/db/update1.0.1.sql +++ b/db/update1.0.1.sql @@ -1,7 +1,7 @@ -- 2010-07-01 task table. ALTER TABLE `zt_task` ADD `mailto` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' AFTER `statusCustom`; ---2010-07-05 userquery table. +-- 2010-07-05 userquery table. CREATE TABLE IF NOT EXISTS `zt_userQuery` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `company` mediumint(8) unsigned NOT NULL default '0', diff --git a/db/update16.0.sql b/db/update16.0.sql deleted file mode 100644 index 53d062a7c2..0000000000 --- a/db/update16.0.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE zt_productplan ADD `status` enum('wait','doing','done','closed') NOT NULL default 'wait' AFTER `title`; diff --git a/db/zentao.sql b/db/zentao.sql index 2b864ada9c..5aab29f9f2 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -950,7 +950,6 @@ CREATE TABLE IF NOT EXISTS `zt_productplan` ( `branch` mediumint(8) unsigned NOT NULL, `parent` mediumint(9) NOT NULL DEFAULT '0', `title` varchar(90) NOT NULL, - `status` enum('wait','doing','done','closed') NOT NULL default 'wait', `desc` text NOT NULL, `begin` date NOT NULL, `end` date NOT NULL, diff --git a/framework/api/router.class.php b/framework/api/router.class.php index e0cbc41d60..e23ae61c1b 100644 --- a/framework/api/router.class.php +++ b/framework/api/router.class.php @@ -82,11 +82,16 @@ class api extends router $this->httpMethod = strtolower($_SERVER['REQUEST_METHOD']); + /* $documentRoot = zget($_SERVER, 'CONTEXT_DOCUMENT_ROOT', $_SERVER['DOCUMENT_ROOT']); $fileName = ltrim(substr($_SERVER['SCRIPT_FILENAME'], strlen($documentRoot)), '/'); $webRoot = ltrim($this->config->webRoot, '/'); $this->path = substr(ltrim($_SERVER['REQUEST_URI'], '/'), strlen($webRoot . $fileName) + 1); + if(strpos($this->path, '?') > 0) $this->path = strstr($this->path, '?', true); + */ + + $this->path = trim(substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], 'api.php') + 7), '/'); $subPos = $this->path ? strpos($this->path, '/') : false; $this->version = $subPos !== false ? substr($this->path, 0, $subPos) : ''; diff --git a/framework/base/control.class.php b/framework/base/control.class.php index 065ee20d3f..39758ad74c 100644 --- a/framework/base/control.class.php +++ b/framework/base/control.class.php @@ -840,7 +840,7 @@ class baseControl * Call the method and use ob function to get the output. */ ob_start(); - call_user_func_array(array($module, $methodName), $params); + call_user_func_array(array($module, $methodName), array_values($params)); $output = ob_get_contents(); ob_end_clean(); diff --git a/framework/base/router.class.php b/framework/base/router.class.php index 570e004f23..bc154790f7 100644 --- a/framework/base/router.class.php +++ b/framework/base/router.class.php @@ -2792,7 +2792,7 @@ class EndResponseException extends \Exception /** * @param string $content - * + * * @return sellf */ public static function create($content = '') diff --git a/module/branch/control.php b/module/branch/control.php index 5c9b516a1d..25a6266d33 100644 --- a/module/branch/control.php +++ b/module/branch/control.php @@ -205,7 +205,7 @@ class branch extends control * @access public * @return void */ - public function ajaxGetDropMenu($productID, $branch = 0, $module, $method, $extra = '') + public function ajaxGetDropMenu($productID, $branch, $module, $method, $extra = '') { parse_str($extra, $output); $branches = $this->branch->getPairs($productID, 'all', isset($output['projectID']) ? $output['projectID'] : 0); diff --git a/module/branch/lang/en.php b/module/branch/lang/en.php index 7ba74642b6..de6a6dd0fa 100644 --- a/module/branch/lang/en.php +++ b/module/branch/lang/en.php @@ -46,7 +46,7 @@ $lang->branch->confirmClose = 'Do you want to close this @branch@?'; $lang->branch->confirmActivate = 'Do you want to activate this @branch@?'; $lang->branch->existName = '@branch@ name already exists.'; $lang->branch->mergedMain = 'Trunk does not support being merged.'; -$lang->branch->mergeTips = 'After the branch is merged, the corresponding releases, plans, modules, requirements, bugs, and cases under the branch will be merged into the new branch.'; +$lang->branch->mergeTips = 'After the branch is merged, the corresponding releases, plans, builds, modules, requirements, bugs, and cases under the branch will be merged into the new branch.'; $lang->branch->targetBranchTips = 'You can merge it into an existing branch, merge it into the trunk, or create a new branch.'; $lang->branch->confirmMerge = 'The data of "mergedBranch" will be merged into "targetBranch", please confirm whether you want to perform the branch merge operation, the data will not be restored after the merge!'; diff --git a/module/branch/lang/zh-cn.php b/module/branch/lang/zh-cn.php index 06fa52e475..d94dd0d59b 100644 --- a/module/branch/lang/zh-cn.php +++ b/module/branch/lang/zh-cn.php @@ -46,7 +46,7 @@ $lang->branch->confirmClose = '是否关闭该@branch@?'; $lang->branch->confirmActivate = '是否激活该@branch@?'; $lang->branch->existName = '@branch@名称已存在'; $lang->branch->mergedMain = '主干不支持被合并。'; -$lang->branch->mergeTips = '合并@branch@后,会将@branch@下面对应的发布、计划、模块、需求、Bug、用例都合并到新的@branch@下。'; +$lang->branch->mergeTips = '合并@branch@后,会将@branch@下面对应的发布、计划、版本、模块、需求、Bug、用例都合并到新的@branch@下。'; $lang->branch->targetBranchTips = '您可以将其合并到已有的一个@branch@,也可以合并到主干,也可以新创建一个@branch@。'; $lang->branch->confirmMerge = '"mergedBranch"的数据将被合并到"targetBranch",请确认是否要执行分支合并操作,合并后数据将不可再恢复!'; diff --git a/module/branch/model.php b/module/branch/model.php index 866edef7f9..d32b12b34a 100644 --- a/module/branch/model.php +++ b/module/branch/model.php @@ -618,6 +618,9 @@ class branchModel extends model /* Release. */ $this->dao->update(TABLE_RELEASE)->set('branch')->eq($targetBranch)->where('branch')->in($mergedBranches)->exec(); + /* Build. */ + $this->dao->update(TABLE_BUILD)->set('branch')->eq($targetBranch)->where('branch')->in($mergedBranches)->exec(); + /* Plan. */ $this->dao->update(TABLE_PRODUCTPLAN)->set('branch')->eq($targetBranch)->where('branch')->in($mergedBranches)->exec(); diff --git a/module/bug/model.php b/module/bug/model.php index f1518ab47e..e2a5cc576a 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -749,7 +749,6 @@ class bugModel extends model $bug->type = $data->types[$bugID]; $bug->severity = $data->severities[$bugID]; $bug->pri = $data->pris[$bugID]; - $bug->status = $data->statuses[$bugID]; $bug->color = $data->colors[$bugID]; $bug->title = $data->titles[$bugID]; $bug->plan = empty($data->plans[$bugID]) ? 0 : $data->plans[$bugID]; @@ -764,15 +763,15 @@ class bugModel extends model $bug->resolution = $data->resolutions[$bugID]; $bug->duplicateBug = $data->duplicateBugs[$bugID] ? $data->duplicateBugs[$bugID] : $oldBug->duplicateBug; - if($bug->assignedTo != $oldBug->assignedTo) $bug->assignedDate = $now; - if(($bug->resolvedBy != '' or $bug->resolution != '') and $oldBug->status != 'resolved' and $bug->status != 'closed') $bug->resolvedDate = $now; - if($bug->resolution != '' and $bug->resolvedBy == '') $bug->resolvedBy = $this->app->user->account; - if($bug->resolution != '' and $bug->status != 'closed') + if($bug->assignedTo != $oldBug->assignedTo) $bug->assignedDate = $now; + if($bug->resolution != '') $bug->confirmed = 1; + if(($bug->resolvedBy != '' or $bug->resolution != '') and $oldBug->status != 'closed') { - $bug->status = 'resolved'; - $bug->confirmed = 1; + $bug->resolvedDate = $now; + $bug->status = 'resolved'; } - if($bug->resolution != '' and $bug->assignedTo == '') + if($bug->resolution != '' and $bug->resolvedBy == '') $bug->resolvedBy = $this->app->user->account; + if($bug->resolution != '' and $bug->assignedTo == '') { $bug->assignedTo = $oldBug->openedBy; $bug->assignedDate = $now; diff --git a/module/common/model.php b/module/common/model.php index 41dac7f075..86162c6714 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -2721,7 +2721,7 @@ EOD; global $lang, $app; if(!extension_loaded('curl')) { - if($dataType == 'json') die($this->lang->error->noCurlExt); + if($dataType == 'json') die($lang->error->noCurlExt); return json_encode(array('result' => 'fail', 'message' => $lang->error->noCurlExt)); } diff --git a/module/design/control.php b/module/design/control.php index 129deb37be..cc945d7328 100644 --- a/module/design/control.php +++ b/module/design/control.php @@ -78,7 +78,7 @@ class design extends control /* Print top and right actions. */ $this->lang->TRActions = '