From cbf08b828a0b37be332f16b280459f4ad4076520 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BB=94=E5=93=A5?= Date: Thu, 28 Dec 2017 18:03:48 +0800 Subject: [PATCH] * Task#3561 --- db/update9.7.sql | 4 + module/convert/converter/redmine1.1.php | 132 +++---- module/doc/model.php | 121 +++---- module/my/control.php | 92 ++--- module/my/view/project.html.php | 4 +- module/product/model.php | 10 +- module/project/model.php | 447 ++++++++++++------------ module/score/model.php | 6 +- module/story/model.php | 9 +- module/task/control.php | 11 +- module/task/model.php | 75 ++-- module/user/model.php | 147 ++++---- module/user/view/project.html.php | 6 +- 13 files changed, 565 insertions(+), 499 deletions(-) create mode 100644 db/update9.7.sql diff --git a/db/update9.7.sql b/db/update9.7.sql new file mode 100644 index 0000000000..a02909c04c --- /dev/null +++ b/db/update9.7.sql @@ -0,0 +1,4 @@ +ALTER TABLE `zt_team` DROP PRIMARY KEY; +ALTER TABLE `zt_team` CHANGE `project` `root` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0'; +ALTER TABLE `zt_team` DROP `task`; +ALTER TABLE `zt_team` ADD `type` ENUM('project', 'task') NOT NULL DEFAULT 'project' AFTER `root`; diff --git a/module/convert/converter/redmine1.1.php b/module/convert/converter/redmine1.1.php index 0d7c93071a..563a1f5026 100644 --- a/module/convert/converter/redmine1.1.php +++ b/module/convert/converter/redmine1.1.php @@ -34,7 +34,7 @@ class redmine11ConvertModel extends redmineConvertModel } /** * Execute the converter. - * + * * @access public * @return array */ @@ -74,11 +74,11 @@ class redmine11ConvertModel extends redmineConvertModel $result['docs'] = self::$convertDocCount; $result['files'] = self::$convertFileCount; return $result; - } - - /** - * Set table names. - * + } + + /** + * Set table names. + * * @access public * @return void */ @@ -137,9 +137,9 @@ class redmine11ConvertModel extends redmineConvertModel /** * Convert groups. - * + * * @access public - * @return void + * @return void */ public function convertGroup() { @@ -176,9 +176,9 @@ class redmine11ConvertModel extends redmineConvertModel /** * Convert users. - * + * * @access public - * @return void + * @return void */ public function convertUser() { @@ -217,8 +217,8 @@ class redmine11ConvertModel extends redmineConvertModel } /** - * convert relationship between user and group. - * + * convert relationship between user and group. + * * @access public * @return void */ @@ -255,10 +255,10 @@ class redmine11ConvertModel extends redmineConvertModel } /** - * convert products. - * + * convert products. + * * @access public - * @return void + * @return void */ public function convertProduct() { @@ -280,9 +280,9 @@ class redmine11ConvertModel extends redmineConvertModel /** * Convert projects. - * + * * @access public - * @return void + * @return void */ public function convertProject() { @@ -313,12 +313,12 @@ class redmine11ConvertModel extends redmineConvertModel $convertCount = count($projects) + count($this->map['projectOfProduct']); self::$convertProjectCount += $convertCount; } - + /** - * convert builds and releases - * + * convert builds and releases + * * @access public - * @return void + * @return void */ public function convertBuildAndRelease() { @@ -370,10 +370,10 @@ class redmine11ConvertModel extends redmineConvertModel } /** - * convert productPlans - * + * convert productPlans + * * @access public - * @return void + * @return void */ public function convertProductPlan() { @@ -401,11 +401,11 @@ class redmine11ConvertModel extends redmineConvertModel } $convertCount = count($this->map['products']) + count($productPlans); self::$convertProductPlanCount += $convertCount; - } + } /** - * convert relationship between project and product. - * + * convert relationship between project and product. + * * @access public * @return void */ @@ -424,8 +424,8 @@ class redmine11ConvertModel extends redmineConvertModel } /** - * convert teams. - * + * convert teams. + * * @access public * @return void */ @@ -454,10 +454,10 @@ class redmine11ConvertModel extends redmineConvertModel } /** - * convert docLibs. - * + * convert docLibs. + * * @access public - * @return void + * @return void */ public function convertDocLib() { @@ -478,10 +478,10 @@ class redmine11ConvertModel extends redmineConvertModel } /** - * convert docs. - * + * convert docs. + * * @access public - * @return void + * @return void */ public function convertDoc() { @@ -507,10 +507,10 @@ class redmine11ConvertModel extends redmineConvertModel } /** - * convert news. - * + * convert news. + * * @access public - * @return void + * @return void */ public function convertNews() { @@ -541,12 +541,12 @@ class redmine11ConvertModel extends redmineConvertModel } /** - * convert issue - * + * convert issue + * * @param array $aimTypes //aimTypes['issueTypeID'] = aimtype eg. aimTypes[1] = 'bug'; * @param array $statusTypes //statusTypes['task']['statusTypeID'] = statusType eg. statusTypes['task'][1] = 'wait'; * //statusTypes['bug']['statusTypeID'] = statusType eg. statusTypes['bug'][1] = 'active'; - * @param array $priTypes //priTypes['task']['priTypeID'] = priType; eg. priTypes['task'][1] = 1; + * @param array $priTypes //priTypes['task']['priTypeID'] = priType; eg. priTypes['task'][1] = 1; * @access public * @return void */ @@ -574,13 +574,13 @@ class redmine11ConvertModel extends redmineConvertModel } /** - * convert story - * - * @param array $issueType - * @param array $statusTypes - * @param array $priTypes + * convert story + * + * @param array $issueType + * @param array $statusTypes + * @param array $priTypes * @access public - * @return void + * @return void */ public function convertStory($issueType, $statusTypes, $priTypes) { @@ -623,13 +623,13 @@ class redmine11ConvertModel extends redmineConvertModel } /** - * convert task - * - * @param array $issueType - * @param array $statusTypes - * @param array $priTypes + * convert task + * + * @param array $issueType + * @param array $statusTypes + * @param array $priTypes * @access public - * @return void + * @return void */ public function convertTask($issueType, $statusTypes, $priTypes) { @@ -651,7 +651,7 @@ class redmine11ConvertModel extends redmineConvertModel $task->pri = $priTypes['task'][$task->pri]; $task->status = $statusTypes['task'][$task->status]; if($task->project == 0) - { + { $task->project = $this->map['projectOfProduct'][$task->product]; } else @@ -668,13 +668,13 @@ class redmine11ConvertModel extends redmineConvertModel } /** - * convert bug - * - * @param array $issueType - * @param array $statusTypes - * @param array $priTypes + * convert bug + * + * @param array $issueType + * @param array $statusTypes + * @param array $priTypes * @access public - * @return void + * @return void */ public function convertBug($issueType, $statusTypes, $priTypes) { @@ -704,7 +704,7 @@ class redmine11ConvertModel extends redmineConvertModel $bug->caseVersion = 1; $bug->result = 0; if($bug->project == 0) - { + { $bug->project = $this->map['projectOfProduct'][$bug->product]; } else @@ -712,7 +712,7 @@ class redmine11ConvertModel extends redmineConvertModel $bug->project = $this->map['project'][$bug->project]; } unset($bug->id); - $this->dao->dbh($this->dbh)->insert(TABLE_BUG)->data($bug)->exec(); + $this->dao->dbh($this->dbh)->insert(TABLE_BUG)->data($bug)->exec(); $this->map['issueID'][$issueID] = $this->dao->lastInsertID(); $this->map['issueType'][$issueID] = 'bug'; } @@ -721,9 +721,9 @@ class redmine11ConvertModel extends redmineConvertModel /** * Convert attachments. - * + * * @access public - * @return void + * @return void */ public function convertFile() { @@ -752,7 +752,7 @@ class redmine11ConvertModel extends redmineConvertModel /* Transform objectType and objectID */ if($file->objectType == 'Issue') { - $file->objectType = $this->map['issueType'][$file->objectID]; + $file->objectType = $this->map['issueType'][$file->objectID]; $file->objectID = $this->map['issueID'][$file->objectID]; } elseif($file->objectType == 'Document') @@ -808,7 +808,7 @@ class redmine11ConvertModel extends redmineConvertModel /** * Clear the converted records. - * + * * @access public * @return void */ diff --git a/module/doc/model.php b/module/doc/model.php index 9345c10628..574f7ec20a 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -15,10 +15,10 @@ class docModel extends model { /** * Set menus - * - * @param array $libs - * @param int $libID - * @param string $moduleID + * + * @param array $libs + * @param int $libID + * @param string $moduleID * @access public * @return void */ @@ -80,8 +80,8 @@ class docModel extends model /** * Get library by id. - * - * @param int $libID + * + * @param int $libID * @access public * @return object */ @@ -92,7 +92,7 @@ class docModel extends model /** * Get libraries. - * + * * @access public * @return array */ @@ -127,7 +127,7 @@ class docModel extends model /** * Create a library. - * + * * @access public * @return void */ @@ -151,8 +151,8 @@ class docModel extends model /** * Update a library. - * - * @param int $libID + * + * @param int $libID * @access public * @return void */ @@ -373,7 +373,7 @@ class docModel extends model /** * Create a doc. - * + * * @access public * @return void */ @@ -438,8 +438,8 @@ class docModel extends model /** * Update a doc. - * - * @param int $docID + * + * @param int $docID * @access public * @return void */ @@ -541,7 +541,7 @@ class docModel extends model /** * Get pairs of project modules. - * + * * @access public * @return array */ @@ -556,9 +556,9 @@ class docModel extends model /** * Get doc menu. - * - * @param int $libID - * @param int $parent + * + * @param int $libID + * @param int $parent * @access public * @return array */ @@ -576,8 +576,8 @@ class docModel extends model * Extract css styles for tables created in kindeditor. * * Like this: - * - * @param string $content + * + * @param string $content * @access public * @return void */ @@ -611,8 +611,8 @@ class docModel extends model /** * Check priv. - * - * @param object $object + * + * @param object $object * @access public * @return bool */ @@ -639,13 +639,13 @@ class docModel extends model if(strpos(",$object->groups,", ",$groupID,") !== false) return true; } } - + if(isset($object->lib)) { static $libs; if(empty($libs)) $libs = $this->getLibs('all'); if(!isset($libs[$object->lib])) return false; - + } if($object->project) @@ -667,10 +667,10 @@ class docModel extends model /** * Get all libs by type. - * - * @param string $type - * @param int $pager - * @param string $extra + * + * @param string $type + * @param int $pager + * @param string $extra * @access public * @return array */ @@ -708,7 +708,7 @@ class docModel extends model /** * Get all lib groups. - * + * * @access public * @return array */ @@ -792,9 +792,9 @@ class docModel extends model /** * Get limit libs. - * - * @param string $type - * @param int $limit + * + * @param string $type + * @param int $limit * @access public * @return array */ @@ -836,11 +836,11 @@ class docModel extends model } /** - * Get project or product libs groups. - * - * @param string $type - * @param array $idList - * @param int $limit + * Get project or product libs groups. + * + * @param string $type + * @param array $idList + * @param int $limit * @access public * @return array */ @@ -879,10 +879,10 @@ class docModel extends model /** * Get libs by object. - * - * @param string $type - * @param int $objectID - * @param string $mode + * + * @param string $type + * @param int $objectID + * @param string $mode * @access public * @return array */ @@ -983,8 +983,8 @@ class docModel extends model /** * Get doc tree. - * - * @param int $libID + * + * @param int $libID * @access public * @return array */ @@ -1003,9 +1003,9 @@ class docModel extends model /** * Fill docs in tree. - * - * @param object $node - * @param int $libID + * + * @param object $node + * @param int $libID * @access public * @return array */ @@ -1063,11 +1063,11 @@ class docModel extends model } /** - * Get crumbs. - * - * @param int $libID - * @param int $moduleID - * @param int $docID + * Get crumbs. + * + * @param int $libID + * @param int $moduleID + * @param int $docID * @access public * @return string */ @@ -1076,7 +1076,7 @@ class docModel extends model if(empty($libID)) return ''; $lib = $this->getLibById($libID); - if(!$this->checkPriv($lib)) + if(!$this->checkPriv($lib)) { echo(js::alert($this->lang->doc->accessDenied)); $loginLink = $this->config->requestType == 'GET' ? "?{$this->config->moduleVar}=user&{$this->config->methodVar}=login" : "user{$this->config->requestFix}login"; @@ -1116,9 +1116,9 @@ class docModel extends model /** * Get product crumb. - * - * @param int $productID - * @param int $projectID + * + * @param int $productID + * @param int $projectID * @access public * @return string */ @@ -1147,9 +1147,9 @@ class docModel extends model /** * Set lib users. - * - * @param string $type - * @param int $objectID + * + * @param string $type + * @param int $objectID * @access public * @return bool */ @@ -1159,15 +1159,16 @@ class docModel extends model if($type == 'product') { $teams = $this->dao->select('t1.account')->from(TABLE_TEAM)->alias('t1') - ->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.project=t2.project') - ->leftJoin(TABLE_PROJECT)->alias('t3')->on('t1.project=t3.id') + ->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.root=t2.project') + ->leftJoin(TABLE_PROJECT)->alias('t3')->on('t1.root=t3.id') ->where('t2.product')->eq($objectID) + ->andWhere('t1.type')->eq('project') ->andWhere('t3.deleted')->eq('0') ->fetchPairs('account', 'account'); } elseif($type == 'project') { - $teams = $this->dao->select('account')->from(TABLE_TEAM)->where('project')->eq($objectID)->fetchPairs('account', 'account'); + $teams = $this->dao->select('account')->from(TABLE_TEAM)->where('root')->eq($objectID)->andWhere('type')->eq('project')->fetchPairs('account', 'account'); } return $teams; diff --git a/module/my/control.php b/module/my/control.php index e1791ea6fe..64edbca388 100644 --- a/module/my/control.php +++ b/module/my/control.php @@ -13,7 +13,7 @@ class my extends control { /** * Construct function. - * + * * @access public * @return void */ @@ -27,7 +27,7 @@ class my extends control /** * Index page, goto todo. - * + * * @access public * @return void */ @@ -63,14 +63,14 @@ class my extends control } /** - * My todos. - * - * @param string $type - * @param string $account - * @param string $status - * @param int $recTotal - * @param int $recPerPage - * @param int $pageID + * My todos. + * + * @param string $type + * @param string $account + * @param string $status + * @param int $recTotal + * @param int $recPerPage + * @param int $pageID * @access public * @return void */ @@ -114,12 +114,12 @@ class my extends control } /** - * My stories - - * @param string $type - * @param int $recTotal - * @param int $recPerPage - * @param int $pageID + * My stories + + * @param string $type + * @param int $recTotal + * @param int $recPerPage + * @param int $pageID * @access public * @return void */ @@ -153,11 +153,11 @@ class my extends control /** * My tasks - * - * @param string $type - * @param int $recTotal - * @param int $recPerPage - * @param int $pageID + * + * @param string $type + * @param int $recTotal + * @param int $recPerPage + * @param int $pageID * @access public * @return void */ @@ -195,12 +195,12 @@ class my extends control /** * My bugs. - * - * @param string $type - * @param string $orderBy - * @param int $recTotal - * @param int $recPerPage - * @param int $pageID + * + * @param string $type + * @param string $orderBy + * @param int $recTotal + * @param int $recPerPage + * @param int $pageID * @access public * @return void */ @@ -209,7 +209,7 @@ class my extends control /* Save session. load Lang. */ if($this->app->viewType != 'json') $this->session->set('bugList', $this->app->getURI(true)); $this->app->loadLang('bug'); - + /* Load pager. */ $this->app->loadClass('pager', $static = true); if($this->app->getViewType() == 'mhtml') $recPerPage = 10; @@ -239,7 +239,7 @@ class my extends control /** * My test task. - * + * * @access public * @return void */ @@ -260,7 +260,7 @@ class my extends control $this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->testTask; $this->view->position[] = $this->lang->my->testTask; $this->view->tasks = $this->loadModel('testtask')->getByUser($this->app->user->account, $pager, $sort, $type); - + $this->view->recTotal = $recTotal; $this->view->recPerPage = $recPerPage; $this->view->pageID = $pageID; @@ -327,7 +327,7 @@ class my extends control /** * My projects. - * + * * @access public * @return void */ @@ -344,8 +344,8 @@ class my extends control } /** - * Edit profile - * + * Edit profile + * * @access public * @return void */ @@ -369,8 +369,8 @@ class my extends control } /** - * Change password - * + * Change password + * * @access public * @return void */ @@ -495,7 +495,7 @@ class my extends control /** * View my profile. - * + * * @access public * @return void */ @@ -509,18 +509,18 @@ class my extends control $this->view->position[] = $this->lang->my->profile; $this->view->user = $user; $this->view->groups = $this->loadModel('group')->getByAccount($this->app->user->account); - $this->view->deptPath = $this->dept->getParents($user->dept); + $this->view->deptPath = $this->dept->getParents($user->dept); $this->display(); } /** * My dynamic. - * - * @param string $type - * @param string $orderBy - * @param int $recTotal - * @param int $recPerPage - * @param int $pageID + * + * @param string $type + * @param string $orderBy + * @param int $recTotal + * @param int $recPerPage + * @param int $pageID * @access public * @return void */ @@ -562,9 +562,9 @@ class my extends control } /** - * Unbind ranzhi - * - * @param string $confirm + * Unbind ranzhi + * + * @param string $confirm * @access public * @return void */ diff --git a/module/my/view/project.html.php b/module/my/view/project.html.php index 9e1e9b2abd..70adaf0273 100644 --- a/module/my/view/project.html.php +++ b/module/my/view/project.html.php @@ -23,7 +23,7 @@ - + @@ -52,5 +52,5 @@ -
idAB;?> project->code;?>project->name;?>project->name;?> project->begin;?> project->end;?> statusAB;?>
+ diff --git a/module/product/model.php b/module/product/model.php index 9f9a0f8f3f..202a89ffa1 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -614,10 +614,11 @@ class productModel extends model } if(empty($teams)) { - $teams = $this->dao->select('t1.project, t1.account')->from(TABLE_TEAM)->alias('t1') - ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id') + $teams = $this->dao->select('t1.root, t1.account')->from(TABLE_TEAM)->alias('t1') + ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.root = t2.id') ->where('t2.deleted')->eq(0) - ->fetchGroup('project', 'account'); + ->andWhere('t1.type')->eq('project') + ->fetchGroup('root', 'account'); } if(!isset($projects[$product->id])) return $members; @@ -788,7 +789,7 @@ class productModel extends model $products = $this->dao->select('distinct t1.id')->from(TABLE_PRODUCT)->alias('t1') ->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id = t2.product') - ->leftJoin(TABLE_TEAM)->alias('t3')->on('t2.project = t3.project') + ->leftJoin(TABLE_TEAM)->alias('t3')->on('t2.project = t3.root') ->leftJoin(TABLE_PROJECT)->alias('t4')->on('t2.project = t4.id') ->beginIF($this->app->user->admin)->where('t1.deleted')->eq(0)->fi() ->beginIF(!$this->app->user->admin) @@ -800,6 +801,7 @@ class productModel extends model ->orWhere('t1.createdBy')->eq($this->app->user->account) ->orWhere('t3.account')->eq($this->app->user->account) ->andWhere('t1.deleted')->eq(0) + ->andWhere('t3.type')->eq('project') ->andWhere('t4.deleted')->eq(0) ->fi() ->fetchAll('id'); diff --git a/module/project/model.php b/module/project/model.php index 63ea757374..8b0914a30f 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -17,16 +17,16 @@ class projectModel extends model const LINK_MEMBERS_ONE_TIME = 20; /** - * Check the privilege. - * - * @param object $project + * Check the privilege. + * + * @param object $project * @access public * @return bool */ public function checkPriv($project) { /* If is admin, return true. */ - if($this->app->user->admin) return true; + if($this->app->user->admin) return true; $acls = $this->app->user->rights['acls']; if(!empty($acls['projects']) and !in_array($project->id, $acls['projects'])) return false; @@ -36,7 +36,7 @@ class projectModel extends model /* Get all teams of all projects and group by projects, save it as static. */ static $teams; - if(empty($teams)) $teams = $this->dao->select('project, account')->from(TABLE_TEAM)->fetchGroup('project', 'account'); + if(empty($teams)) $teams = $this->dao->select('root, account')->from(TABLE_TEAM)->where('type')->eq('project')->fetchGroup('root', 'account'); $currentTeam = isset($teams[$project->id]) ? $teams[$project->id] : array(); /* If project is private, only members can access. */ @@ -61,9 +61,9 @@ class projectModel extends model /** * Set menu. - * - * @param array $projects - * @param int $projectID + * + * @param array $projects + * @param int $projectID * @param string $extra * @access public * @return void @@ -74,7 +74,7 @@ class projectModel extends model $project = $this->getById($projectID); /* Unset story, bug, build and testtask if type is ops. */ - if($project and $project->type == 'ops') + if($project and $project->type == 'ops') { unset($this->lang->project->menu->story); unset($this->lang->project->menu->bug); @@ -93,7 +93,7 @@ class projectModel extends model $moduleName = $this->app->getModuleName(); $methodName = $this->app->getMethodName(); - if($this->cookie->projectMode == 'noclosed' and $project->status == 'done') + if($this->cookie->projectMode == 'noclosed' and $project->status == 'done') { setcookie('projectMode', 'all'); $this->cookie->projectMode = 'all'; @@ -108,12 +108,12 @@ class projectModel extends model } /** - * Create the select code of projects. - * - * @param array $projects - * @param int $projectID - * @param string $currentModule - * @param string $currentMethod + * Create the select code of projects. + * + * @param array $projects + * @param int $projectID + * @param string $currentModule + * @param string $currentMethod * @param string $extra * @access public * @return string @@ -133,7 +133,7 @@ class projectModel extends model /** * Get project tree menu. - * + * * @access public * @return void */ @@ -150,7 +150,7 @@ class projectModel extends model $productName = isset($products[$productID]) ? $products[$productID] : $this->lang->project->noProduct; $projectTree .= "
  • $productName