diff --git a/module/build/control.php b/module/build/control.php index 0abe7eb54e..45fae6f3d5 100644 --- a/module/build/control.php +++ b/module/build/control.php @@ -255,7 +255,7 @@ class build extends control $bugPager = new pager($type == 'bug' ? $recTotal : 0, $recPerPage, $type == 'bug' ? $pageID : 1); $bugs = $this->dao->select('*')->from(TABLE_BUG) - ->where('id')->in($build->bugs) + ->where('id')->in($build->allBugs) ->andWhere('deleted')->eq(0) ->beginIF($type == 'bug')->orderBy($sort)->fi() ->page($bugPager) @@ -264,7 +264,7 @@ class build extends control /* Get stories and stages. */ $storyPager = new pager($type == 'story' ? $recTotal : 0, $recPerPage, $type == 'story' ? $pageID : 1); $stories = $this->dao->select("*, IF(`pri` = 0, {$this->config->maxPriValue}, `pri`) as priOrder")->from(TABLE_STORY) - ->where('id')->in($build->stories) + ->where('id')->in($build->allStories) ->andWhere('deleted')->eq(0) ->beginIF($type == 'story')->orderBy($sort)->fi() ->page($storyPager) @@ -277,10 +277,14 @@ class build extends control if($this->app->tab == 'project') { $this->loadModel('project')->setMenu($build->project); + $objectType = 'project'; + $objectID = $build->project; } elseif($this->app->tab == 'execution') { $this->loadModel('execution')->setMenu($build->execution); + $objectType = 'execution'; + $objectID = $build->execution; } $executions = $this->loadModel('execution')->getPairs($this->session->project, 'all', 'empty'); @@ -297,18 +301,6 @@ class build extends control $this->executeHooks($buildID); - if($this->app->tab == 'execution') - { - $objectType = 'execution'; - $objectID = $build->execution; - } - else - { - $objectType = 'project'; - $objectID = $build->project; - } - - /* Assign. */ $this->view->canBeChanged = common::canBeChanged('build', $build); // Determines whether an object is editable. $this->view->users = $this->loadModel('user')->getPairs('noletter'); @@ -611,11 +603,11 @@ class build extends control $executionID = $build->execution ? $build->execution : $build->project; if($browseType == 'bySearch') { - $allStories = $this->story->getBySearch($build->product, $build->branch, $queryID, 'id', $executionID, 'story', $build->stories, $pager); + $allStories = $this->story->getBySearch($build->product, $build->branch, $queryID, 'id', $executionID, 'story', $build->allStories, $pager); } else { - $allStories = $this->story->getExecutionStories($executionID, $build->product, 0, 't1.`order`_desc', 'byBranch', $build->branch, 'story', $build->stories, $pager); + $allStories = $this->story->getExecutionStories($executionID, $build->product, 0, 't1.`order`_desc', 'byBranch', $build->branch, 'story', $build->allStories, $pager); } $this->view->allStories = $allStories; @@ -735,11 +727,11 @@ class build extends control $executionID = $build->execution ? $build->execution : $build->project; if($browseType == 'bySearch') { - $allBugs = $this->bug->getBySearch($build->product, $build->branch, $queryID, 'id_desc', $build->bugs, $pager, $build->project); + $allBugs = $this->bug->getBySearch($build->product, $build->branch, $queryID, 'id_desc', $build->allBugs, $pager, $build->project); } else { - $allBugs = $this->bug->getExecutionBugs($executionID, 0, 'all', $buildID, 'noclosed', 0, 'status_desc,id_desc', $build->bugs, $pager); + $allBugs = $this->bug->getExecutionBugs($executionID, 0, 'all', $buildID, 'noclosed', 0, 'status_desc,id_desc', $build->allBugs, $pager); } $this->view->allBugs = $allBugs; diff --git a/module/build/model.php b/module/build/model.php index 695656a2f1..02698c30e5 100644 --- a/module/build/model.php +++ b/module/build/model.php @@ -31,6 +31,7 @@ class buildModel extends model ->fetch(); if(!$build) return false; + $build = $this->linkChildBuilds($build); $build = $this->loadModel('file')->replaceImgURL($build, 'desc'); $build->files = $this->file->getByObject('build', $buildID); if($setImgSize) $build->desc = $this->file->setImgSize($build->desc); @@ -349,7 +350,6 @@ class buildModel extends model if(!dao::isError()) { $buildID = $this->dao->lastInsertID(); - $this->linkChildBuilds($buildID, $build->builds); $this->file->updateObjectID($this->post->uid, $buildID, 'build'); $this->file->saveUpload('build', $buildID); $this->loadModel('score')->create('build', 'create', $buildID); @@ -389,8 +389,6 @@ class buildModel extends model if(isset($build->branch) and $oldBuild->branch != $build->branch) $this->dao->update(TABLE_RELEASE)->set('branch')->eq($build->branch)->where('build')->eq($buildID)->exec(); if(!dao::isError()) { - $addBuilds = array_diff(explode(',', $build->builds), explode(',', $oldBuild->builds)); - if($addBuilds) $this->linkChildBuilds($buildID, $addBuilds); $this->file->updateObjectID($this->post->uid, $buildID, 'build'); return common::createChanges($oldBuild, $build); } @@ -569,28 +567,28 @@ class buildModel extends model /** * Bugs and stories associated with child builds. * - * @param int $buildID - * @param string $childBuildIDList + * @param object $build * @access public - * @return void + * @return object */ - public function linkChildBuilds($buildID, $childBuildIDList) + public function linkChildBuilds($build) { - $build = $this->dao->select('bugs, stories')->from(TABLE_BUILD)->where('id')->eq($buildID)->fetch(); - $childBuilds = $this->dao->select('bugs, stories')->from(TABLE_BUILD)->where('id')->in($childBuildIDList)->fetchAll(); + $build->allBugs = $build->bugs; + $build->allStories = $build->stories; + $childBuilds = $this->dao->select('bugs, stories')->from(TABLE_BUILD)->where('id')->in($build->builds)->fetchAll(); foreach($childBuilds as $childBuild) { - if($childBuild->bugs) $build->bugs .= ",{$childBuild->bugs}"; - if($childBuild->stories) $build->stories .= ",{$childBuild->stories}"; + if($childBuild->bugs) $build->allBugs .= ",{$childBuild->bugs}"; + if($childBuild->stories) $build->allStories .= ",{$childBuild->stories}"; } - $build->bugs = explode(',', $build->bugs); - $build->bugs = join(',', array_unique(array_filter($build->bugs))); - $build->stories = explode(',', $build->stories); - $build->stories = join(',', array_unique(array_filter($build->stories))); + $build->allBugs = explode(',', $build->allBugs); + $build->allBugs = join(',', array_unique(array_filter($build->allBugs))); + $build->allStories = explode(',', $build->allStories); + $build->allStories = join(',', array_unique(array_filter($build->allStories))); - $this->dao->update(TABLE_BUILD)->data($build)->where('id')->eq($buildID)->exec(); + return $build; } /** diff --git a/module/build/view/view.html.php b/module/build/view/view.html.php index 9ca7217e2d..048b6082b1 100644 --- a/module/build/view/view.html.php +++ b/module/build/view/view.html.php @@ -98,7 +98,7 @@ tbody tr td:first-child input {display: none;} - id => sprintf('%03d', $story->id)));?> + id => sprintf('%03d', $story->id)), '', strpos(",$build->stories,", ",$story->id,") !== false ? '' : "disabled");?> id);?> @@ -198,7 +198,7 @@ tbody tr td:first-child input {display: none;} - id => sprintf('%03d', $bug->id)));?> + id => sprintf('%03d', $bug->id)), '', strpos(",$build->bugs,", ",$bug->id,") !== false ? '' : "disabled");?> id);?>