From bfba4d244f16f14582cf47ed38df3f922e1b793b Mon Sep 17 00:00:00 2001 From: chenfeiCF Date: Mon, 27 Jun 2016 16:19:48 +0800 Subject: [PATCH] * fix bug: Can not get correct data by 'byModule' or 'byProduct' browse type when browse tasks and stories in project module. --- module/project/control.php | 6 +++--- module/project/model.php | 14 +++++++++----- module/project/view/linkstory.html.php | 2 +- module/task/model.php | 3 ++- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/module/project/control.php b/module/project/control.php index 5d1b88b417..623729e239 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -158,8 +158,8 @@ class project extends control /* Set queryID, moduleID and productID. */ $queryID = ($browseType == 'bysearch') ? (int)$param : 0; - $moduleID = ($browseType == 'bymodule') ? (int)$param : ($browseType == 'bysearch' ? 0 : $this->cookie->moduleBrowseParam); - $productID = ($browseType == 'byproduct') ? (int)$param : ($browseType == 'bysearch' ? 0 : $this->cookie->productBrowseParam); + $moduleID = ($browseType == 'bymodule') ? (int)$param : (($browseType == 'bysearch' or $browseType == 'byproduct') ? 0 : $this->cookie->moduleBrowseParam); + $productID = ($browseType == 'byproduct') ? (int)$param : (($browseType == 'bysearch' or $browseType == 'bymodule') ? 0 : $this->cookie->productBrowseParam); /* Save to session. */ $uri = $this->app->getURI(true); @@ -249,7 +249,7 @@ class project extends control /* Get tasks and group them. */ if(empty($groupBy))$groupBy = 'story'; - $tasks = $this->loadModel('task')->getProjectTasks($projectID, $status = 'all', $modules = 0, $groupBy); + $tasks = $this->loadModel('task')->getProjectTasks($projectID, $productID = 0, $status = 'all', $modules = 0, $groupBy); $groupBy = str_replace('`', '', $groupBy); $taskLang = $this->lang->task; $groupByList = array(); diff --git a/module/project/model.php b/module/project/model.php index fdca2c80b6..d01e1373b8 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -766,9 +766,13 @@ class projectModel extends model $this->loadModel('task'); /* Set modules and $browseType. */ - $modules = 0; - if($productID) $modules = $this->loadModel('tree')->getProjectModule($projectID, $productID); - if($moduleID) $modules = $this->loadModel('tree')->getAllChildID($moduleID); + $modules = array(); + if($productID) + { + $modules = $this->loadModel('tree')->getProjectModule($projectID, $productID); + $modules[0] = 0; + } + if($moduleID) $modules = $this->loadModel('tree')->getAllChildID($moduleID); if($browseType == 'bymodule' or $browseType == 'byproduct') { if(($this->session->taskBrowseType) and ($this->session->taskBrowseType != 'bysearch')) $browseType = $this->session->taskBrowseType; @@ -793,7 +797,7 @@ class projectModel extends model unset($queryStatus['closed']); $queryStatus = array_keys($queryStatus); } - $tasks = $this->task->getProjectTasks($projectID, $queryStatus, $modules, $sort, $pager); + $tasks = $this->task->getProjectTasks($projectID, $productID, $queryStatus, $modules, $sort, $pager); } else { @@ -1234,7 +1238,7 @@ class projectModel extends model $versions = $this->loadModel('story')->getVersions($this->post->stories); foreach($this->post->stories as $key => $storyID) { - $productID = $this->post->products[$key]; + $productID = $this->post->products[$storyID]; $data = new stdclass(); $data->project = $projectID; $data->product = $productID; diff --git a/module/project/view/linkstory.html.php b/module/project/view/linkstory.html.php index a448e25776..9325fa805c 100644 --- a/module/project/view/linkstory.html.php +++ b/module/project/view/linkstory.html.php @@ -45,7 +45,7 @@ - + id]", $story->product);?> id));?> story->priList, $story->pri, $story->pri)?>'>story->priList, $story->pri, $story->pri);?> diff --git a/module/task/model.php b/module/task/model.php index 98f7daebbb..ae0f10bbae 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -858,7 +858,7 @@ class taskModel extends model * @access public * @return array */ - public function getProjectTasks($projectID, $type = 'all', $modules = 0, $orderBy = 'status_asc, id_desc', $pager = null) + public function getProjectTasks($projectID, $productID = 0, $type = 'all', $modules = 0, $orderBy = 'status_asc, id_desc', $pager = null) { if(is_string($type)) $type = strtolower($type); $tasks = $this->dao->select('t1.*, t2.id AS storyID, t2.title AS storyTitle, t2.product, t2.branch, t2.version AS latestStoryVersion, t2.status AS storyStatus, t3.realname AS assignedToRealName') @@ -867,6 +867,7 @@ class taskModel extends model ->leftJoin(TABLE_USER)->alias('t3')->on('t1.assignedTo = t3.account') ->where('t1.project')->eq((int)$projectID) ->andWhere('t1.deleted')->eq(0) + ->beginIF($productID)->andWhere('t2.product')->eq((int)$productID)->fi() ->beginIF($type == 'undone')->andWhere("(t1.status = 'wait' or t1.status ='doing')")->fi() ->beginIF($type == 'needconfirm')->andWhere('t2.version > t1.storyVersion')->andWhere("t2.status = 'active'")->fi() ->beginIF($type == 'assignedtome')->andWhere('t1.assignedTo')->eq($this->app->user->account)->fi()