diff --git a/module/bug/control.php b/module/bug/control.php index c103fdc20e..df86e72fe9 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -103,13 +103,8 @@ class bug extends control elseif($browseType == 'needconfirm') $bugs = $this->bug->getByNeedconfirm($productID, $projects, $orderBy, $pager); elseif($browseType == 'bysearch') $bugs = $this->bug->getBySearch($productID, $projects, $queryID, $orderBy, $pager); - /* Process the sql, get the conditon partion, save it to session. Thus the report page can use the same condition. */ - if($browseType != 'needconfirm') - { - $sql = explode('WHERE', $this->dao->get()); - $sql = explode('ORDER', $sql[1]); - $this->session->set('bugReportCondition', $sql[0]); - } + /* Process the sql, get the conditon partion, save it to session. */ + if($browseType != 'needconfirm') $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'bug'); /* Get custom fields. */ $customFields = $this->cookie->bugFields != false ? $this->cookie->bugFields : $this->config->bug->list->defaultFields; @@ -348,11 +343,6 @@ class bug extends control $productID = $bug->product; $productName = $this->products[$productID]; - /* Get the previous and next bug. */ - $tmpBugIDs = $this->dao->select('id')->from(TABLE_BUG)->where($this->session->bugReport)->fetchPairs('id'); - $bugIDs = ',' . implode(',', $tmpBugIDs) . ','; - $this->view->preAndNext = $this->loadModel('common')->getPreAndNextObject('bug', $bugIDs, $bugID); - /* Header and positon. */ $this->view->header->title = $this->products[$productID] . $this->lang->colon . $this->lang->bug->view; $this->view->position[] = html::a($this->createLink('bug', 'browse', "productID=$productID"), $productName); @@ -366,6 +356,7 @@ class bug extends control $this->view->users = $this->user->getPairs('noletter'); $this->view->actions = $this->action->getList('bug', $bugID); $this->view->builds = $this->loadModel('build')->getProductBuildPairs($productID); + $this->view->preAndNext = $this->loadModel('common')->getPreAndNextObject('bug', $bugID); $this->display(); } @@ -850,7 +841,7 @@ class bug extends control } /* Get bugs. */ - $bugs = $this->dao->select('*')->from(TABLE_BUG)->alias('t1')->where($this->session->bugReportCondition)->orderBy($orderBy)->fetchAll('id'); + $bugs = $this->dao->select('*')->from(TABLE_BUG)->where($this->session->bugQueryCondition)->orderBy($orderBy)->fetchAll('id'); /* Get users, products and projects. */ $users = $this->loadModel('user')->getPairs('noletter'); diff --git a/module/bug/model.php b/module/bug/model.php index 9cd3507c18..fc023fec99 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -403,11 +403,15 @@ class bugModel extends model */ public function getProjectBugs($projectID, $orderBy = 'id_desc', $pager = null, $build = 0) { - return $this->dao->select('*')->from(TABLE_BUG) + $bugs = $this->dao->select('*')->from(TABLE_BUG) ->where('project')->eq((int)$projectID) ->beginIF($build != 0)->andWhere('openedBuild')->eq($build)->fi() ->andWhere('deleted')->eq(0) ->orderBy($orderBy)->page($pager)->fetchAll(); + + $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'bug'); + + return $bugs; } /** @@ -471,7 +475,7 @@ class bugModel extends model */ public function getDataOfBugsPerProject() { - $datas = $this->dao->select('project as name, count(project) as value')->from(TABLE_BUG)->where($this->session->bugReportCondition)->groupBy('project')->orderBy('value DESC')->fetchAll('name'); + $datas = $this->dao->select('project as name, count(project) as value')->from(TABLE_BUG)->where($this->session->bugQueryCondition)->groupBy('project')->orderBy('value DESC')->fetchAll('name'); if(!$datas) return array(); $projects = $this->loadModel('project')->getPairs(); foreach($datas as $projectID => $data) $data->name = isset($projects[$projectID]) ? $projects[$projectID] : $this->lang->report->undefined; @@ -486,7 +490,7 @@ class bugModel extends model */ public function getDataOfBugsPerBuild() { - $datas = $this->dao->select('openedBuild as name, count(openedBuild) as value')->from(TABLE_BUG)->where($this->session->bugReportCondition)->groupBy('openedBuild')->orderBy('value DESC')->fetchAll('name'); + $datas = $this->dao->select('openedBuild as name, count(openedBuild) as value')->from(TABLE_BUG)->where($this->session->bugQueryCondition)->groupBy('openedBuild')->orderBy('value DESC')->fetchAll('name'); if(!$datas) return array(); $builds = $this->loadModel('build')->getProductBuildPairs($this->session->product); @@ -527,7 +531,7 @@ class bugModel extends model */ public function getDataOfBugsPerModule() { - $datas = $this->dao->select('module as name, count(module) as value')->from(TABLE_BUG)->where($this->session->bugReportCondition)->groupBy('module')->orderBy('value DESC')->fetchAll('name'); + $datas = $this->dao->select('module as name, count(module) as value')->from(TABLE_BUG)->where($this->session->bugQueryCondition)->groupBy('module')->orderBy('value DESC')->fetchAll('name'); if(!$datas) return array(); $modules = $this->dao->select('id, name')->from(TABLE_MODULE)->where('id')->in(array_keys($datas))->fetchPairs(); foreach($datas as $moduleID => $data) $data->name = isset($modules[$moduleID]) ? $modules[$moduleID] : '/'; @@ -542,7 +546,7 @@ class bugModel extends model */ public function getDataOfOpenedBugsPerDay() { - return $this->dao->select('DATE_FORMAT(openedDate, "%Y-%m-%d") AS name, COUNT(*) AS value')->from(TABLE_BUG)->where($this->session->bugReportCondition)->groupBy('name')->orderBy('openedDate')->fetchAll(); + return $this->dao->select('DATE_FORMAT(openedDate, "%Y-%m-%d") AS name, COUNT(*) AS value')->from(TABLE_BUG)->where($this->session->bugQueryCondition)->groupBy('name')->orderBy('openedDate')->fetchAll(); } /** @@ -554,7 +558,7 @@ class bugModel extends model public function getDataOfResolvedBugsPerDay() { return $this->dao->select('DATE_FORMAT(resolvedDate, "%Y-%m-%d") AS name, COUNT(*) AS value')->from(TABLE_BUG) - ->where($this->session->bugReportCondition)->groupBy('name') + ->where($this->session->bugQueryCondition)->groupBy('name') ->having('name != 0000-00-00') ->orderBy('resolvedDate') ->fetchAll(); @@ -569,7 +573,7 @@ class bugModel extends model public function getDataOfClosedBugsPerDay() { return $this->dao->select('DATE_FORMAT(closedDate, "%Y-%m-%d") AS name, COUNT(*) AS value')->from(TABLE_BUG) - ->where($this->session->bugReportCondition)->groupBy('name') + ->where($this->session->bugQueryCondition)->groupBy('name') ->having('name != 0000-00-00') ->orderBy('closedDate')->fetchAll(); } @@ -582,7 +586,7 @@ class bugModel extends model */ public function getDataOfOpenedBugsPerUser() { - $datas = $this->dao->select('openedBy AS name, COUNT(*) AS value')->from(TABLE_BUG)->where($this->session->bugReportCondition)->groupBy('name')->orderBy('value DESC')->fetchAll('name'); + $datas = $this->dao->select('openedBy AS name, COUNT(*) AS value')->from(TABLE_BUG)->where($this->session->bugQueryCondition)->groupBy('name')->orderBy('value DESC')->fetchAll('name'); if(!$datas) return array(); if(!isset($this->users)) $this->users = $this->loadModel('user')->getPairs('noletter'); foreach($datas as $account => $data) if(isset($this->users[$account])) $data->name = $this->users[$account]; @@ -598,7 +602,7 @@ class bugModel extends model public function getDataOfResolvedBugsPerUser() { $datas = $this->dao->select('resolvedBy AS name, COUNT(*) AS value') - ->from(TABLE_BUG)->where($this->session->bugReportCondition) + ->from(TABLE_BUG)->where($this->session->bugQueryCondition) ->andWhere('resolvedBy')->ne('') ->groupBy('name') ->orderBy('value DESC')->fetchAll('name'); @@ -618,7 +622,7 @@ class bugModel extends model { $datas = $this->dao->select('closedBy AS name, COUNT(*) AS value') ->from(TABLE_BUG) - ->where($this->session->bugReportCondition) + ->where($this->session->bugQueryCondition) ->andWhere('closedBy')->ne('') ->groupBy('name') ->orderBy('value DESC')->fetchAll('name'); @@ -636,7 +640,7 @@ class bugModel extends model */ public function getDataOfBugsPerSeverity() { - $datas = $this->dao->select('severity AS name, COUNT(*) AS value')->from(TABLE_BUG)->where($this->session->bugReportCondition)->groupBy('name')->orderBy('value DESC')->fetchAll('name'); + $datas = $this->dao->select('severity AS name, COUNT(*) AS value')->from(TABLE_BUG)->where($this->session->bugQueryCondition)->groupBy('name')->orderBy('value DESC')->fetchAll('name'); if(!$datas) return array(); foreach($datas as $severity => $data) if(isset($this->lang->bug->severityList[$severity])) $data->name = $this->lang->bug->severityList[$severity]; return $datas; @@ -652,7 +656,7 @@ class bugModel extends model { $datas = $this->dao->select('resolution AS name, COUNT(*) AS value') ->from(TABLE_BUG) - ->where($this->session->bugReportCondition) + ->where($this->session->bugQueryCondition) ->andWhere('resolution')->ne('') ->groupBy('name')->orderBy('value DESC') ->fetchAll('name'); @@ -669,7 +673,7 @@ class bugModel extends model */ public function getDataOfBugsPerStatus() { - $datas = $this->dao->select('status AS name, COUNT(*) AS value')->from(TABLE_BUG)->where($this->session->bugReportCondition)->groupBy('name')->orderBy('value DESC')->fetchAll('name'); + $datas = $this->dao->select('status AS name, COUNT(*) AS value')->from(TABLE_BUG)->where($this->session->bugQueryCondition)->groupBy('name')->orderBy('value DESC')->fetchAll('name'); if(!$datas) return array(); foreach($datas as $status => $data) if(isset($this->lang->bug->statusList[$status])) $data->name = $this->lang->bug->statusList[$status]; return $datas; @@ -683,7 +687,7 @@ class bugModel extends model */ public function getDataOfBugsPerActivatedCount() { - $datas = $this->dao->select('activatedCount AS name, COUNT(*) AS value')->from(TABLE_BUG)->where($this->session->bugReportCondition)->groupBy('name')->orderBy('value DESC')->fetchAll('name'); + $datas = $this->dao->select('activatedCount AS name, COUNT(*) AS value')->from(TABLE_BUG)->where($this->session->bugQueryCondition)->groupBy('name')->orderBy('value DESC')->fetchAll('name'); if(!$datas) return array(); foreach($datas as $data) $data->name = $this->lang->bug->report->bugsPerActivatedCount->graph->xAxisName . ':' . $data->name; return $datas; @@ -697,7 +701,7 @@ class bugModel extends model */ public function getDataOfBugsPerType() { - $datas = $this->dao->select('type AS name, COUNT(*) AS value')->from(TABLE_BUG)->where($this->session->bugReportCondition)->groupBy('name')->orderBy('value DESC')->fetchAll('name'); + $datas = $this->dao->select('type AS name, COUNT(*) AS value')->from(TABLE_BUG)->where($this->session->bugQueryCondition)->groupBy('name')->orderBy('value DESC')->fetchAll('name'); if(!$datas) return array(); foreach($datas as $type => $data) if(isset($this->lang->bug->typeList[$type])) $data->name = $this->lang->bug->typeList[$type]; return $datas; @@ -712,7 +716,7 @@ class bugModel extends model public function getDataOfBugsPerAssignedTo() { $datas = $this->dao->select('assignedTo AS name, COUNT(*) AS value') - ->from(TABLE_BUG)->where($this->session->bugReportCondition) + ->from(TABLE_BUG)->where($this->session->bugQueryCondition) ->groupBy('name') ->orderBy('value DESC')->fetchAll('name'); if(!$datas) return array(); @@ -807,10 +811,14 @@ class bugModel extends model */ public function getAllBugs($productID, $projects, $orderBy, $pager) { - return $this->dao->select('*')->from(TABLE_BUG)->where('product')->eq($productID) + $bugs = $this->dao->select('*')->from(TABLE_BUG)->where('product')->eq($productID) ->andWhere('project')->in(array_keys($projects)) ->andWhere('deleted')->eq(0) ->orderBy($orderBy)->page($pager)->fetchAll(); + + $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'bug'); + + return $bugs; } /** diff --git a/module/bug/view/view.html.php b/module/bug/view/view.html.php index 5998f553d2..0aac32b154 100644 --- a/module/bug/view/view.html.php +++ b/module/bug/view/view.html.php @@ -47,7 +47,7 @@ } if($preAndNext->next) { - echo "next->id}{$lang->colon}{$preAndNext->pre->title}>" . html::a($this->inLink('view', "storyID={$preAndNext->next->id}"), '>') . ""; + echo "next->id}{$lang->colon}{$preAndNext->next->title}>" . html::a($this->inLink('view', "storyID={$preAndNext->next->id}"), '>') . ""; } ?> diff --git a/module/build/control.php b/module/build/control.php index 5a5ff0d1a6..4f8fa5a50d 100644 --- a/module/build/control.php +++ b/module/build/control.php @@ -115,8 +115,13 @@ class build extends control /* Set menu. */ $build = $this->build->getById((int)$buildID, true); if(!$build) die(js::error($this->lang->notFound) . js::locate('back')); + $stories = $this->dao->select('*')->from(TABLE_STORY)->where('id')->in($build->stories)->fetchAll(); + $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story'); + $bugs = $this->dao->select('*')->from(TABLE_BUG)->where('id')->in($build->bugs)->fetchAll(); + $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'bug'); + $this->loadModel('project')->setMenu($this->project->getPairs(), $build->project); /* Assign. */ diff --git a/module/product/control.php b/module/product/control.php index 1a7143a193..214f2916c8 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -123,6 +123,9 @@ class product extends control if($browseType == 'changedstory')$stories = $this->story->getByStatus($productID, 'changed', $orderBy, $pager); if($browseType == 'closedstory') $stories = $this->story->getByStatus($productID, 'closed', $orderBy, $pager); + /* Process the sql, get the conditon partion, save it to session. */ + $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story'); + /* Build search form. */ $this->config->product->search['actionURL'] = $this->createLink('product', 'browse', "productID=$productID&browseType=bySearch&queryID=myQueryID"); $this->config->product->search['queryID'] = $queryID; diff --git a/module/release/control.php b/module/release/control.php index 051736d809..d8131e2673 100644 --- a/module/release/control.php +++ b/module/release/control.php @@ -128,11 +128,16 @@ class release extends control { $this->loadModel('story'); $this->loadModel('bug'); + $release = $this->release->getById((int)$releaseID, true); if(!$release) die(js::error($this->lang->notFound) . js::locate('back')); + $stories = $this->dao->select('*')->from(TABLE_STORY)->where('id')->in($release->stories)->fetchAll(); $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story'); + $bugs = $this->dao->select('*')->from(TABLE_BUG)->where('id')->in($release->bugs)->fetchAll(); + $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'bug'); + $this->commonAction($release->product); $this->view->header->title = $this->lang->release->view; diff --git a/module/story/model.php b/module/story/model.php index dae81c0049..d9388a1030 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -626,7 +626,7 @@ class storyModel extends model */ public function getProductStories($productID = 0, $moduleIds = 0, $status = 'all', $orderBy = 'id_desc', $pager = null) { - $stories = $this->dao->select('t1.*, t2.title as planTitle') + return $this->dao->select('t1.*, t2.title as planTitle') ->from(TABLE_STORY)->alias('t1') ->leftJoin(TABLE_PRODUCTPLAN)->alias('t2')->on('t1.plan = t2.id') ->where('t1.product')->in($productID) @@ -634,10 +634,6 @@ class storyModel extends model ->beginIF($status != 'all')->andWhere('status')->in($status)->fi() ->andWhere('t1.deleted')->eq(0) ->orderBy($orderBy)->page($pager)->fetchAll(); - - $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story'); - - return $stories; } /** @@ -753,7 +749,7 @@ class storyModel extends model */ public function getByField($productID, $fieldName, $fieldValue, $orderBy, $pager, $operator = 'equal') { - $stories = $this->dao->select('t1.*, t2.title as planTitle') + return $this->dao->select('t1.*, t2.title as planTitle') ->from(TABLE_STORY)->alias('t1') ->leftJoin(TABLE_PRODUCTPLAN)->alias('t2')->on('t1.plan = t2.id') ->where('t1.product')->in($productID) @@ -763,10 +759,6 @@ class storyModel extends model ->orderBy($orderBy) ->page($pager) ->fetchAll(); - - $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story'); - - return $stories; } /** @@ -832,8 +824,6 @@ class storyModel extends model ->page($pager) ->fetchAll('id'); - $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story'); - if(!$tmpStories) return array(); /* Get plans. */