diff --git a/api/v1/entries/productprojects.php b/api/v1/entries/productprojects.php index b493ed3fcd..c6540ea7a4 100644 --- a/api/v1/entries/productprojects.php +++ b/api/v1/entries/productprojects.php @@ -25,7 +25,7 @@ class productProjectsEntry extends entry $appendFields = $this->param('fields', ''); $control = $this->loadController('product', 'project'); - $control->project($this->param('status', 'all'), $productID, $this->param('branch', 0), $this->param('involved', 0), $this->param('order', 'order_desc')); + $control->project($this->param('status', 'all'), $productID, $this->param('branch', 0), $this->param('involved', 0), $this->param('order', 'order_desc'), 0, $this->param('limit', 20), $this->param('page', 1)); $data = $this->getData(); if(isset($data->status) and $data->status == 'success') diff --git a/module/product/control.php b/module/product/control.php index 66833d346f..65847d39ff 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -73,10 +73,13 @@ class product extends control * @param int $branch * @param int $involved * @param string $orderBy + * @param int $recTotal + * @param int $recPerPage + * @param int $pageID * @access public * @return void */ - public function project($status = 'all', $productID = 0, $branch = '', $involved = 0, $orderBy = 'order_desc') + public function project($status = 'all', $productID = 0, $branch = '', $involved = 0, $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) { $this->app->loadLang('execution'); $this->loadModel('project'); @@ -87,9 +90,13 @@ class product extends control $this->product->setMenu($productID, $branch); + /* Load pager. */ + $this->app->loadClass('pager', $static = true); + $pager = new pager($recTotal, $recPerPage, $pageID); + /* Get PM id list. */ $accounts = array(); - $projectStats = $this->product->getProjectStatsByProduct($productID, $status, $branch, $involved, $orderBy); + $projectStats = $this->product->getProjectStatsByProduct($productID, $status, $branch, $involved, $orderBy, $pager); $product = $this->product->getByID($productID); $projects = $this->project->getPairsByProgram($product->program, 'all', false, 'order_asc'); @@ -112,6 +119,10 @@ class product extends control $this->view->users = $this->loadModel('user')->getPairs('noletter'); $this->view->branchID = $branch; $this->view->branchStatus = $this->loadModel('branch')->getByID($branch, 0, 'status'); + $this->view->recTotal = $recTotal; + $this->view->recPerPage = $recPerPage; + $this->view->pageID = $pageID; + $this->view->pager = $pager; $this->display(); } diff --git a/module/product/model.php b/module/product/model.php index 1999ef3c02..4537e9b12d 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -1183,15 +1183,16 @@ class productModel extends model /** * Get project list by product. * - * @param int $productID - * @param string $browseType - * @param int $branch - * @param int $involved - * @param string $orderBy + * @param int $productID + * @param string $browseType + * @param int $branch + * @param int $involved + * @param string $orderBy + * @param object $pager * @access public * @return array */ - public function getProjectListByProduct($productID, $browseType = 'all', $branch = 0, $involved = 0, $orderBy = 'order_desc') + public function getProjectListByProduct($productID, $browseType = 'all', $branch = 0, $involved = 0, $orderBy = 'order_desc', $pager = null) { $projectList = $this->dao->select('t2.*')->from(TABLE_PROJECTPRODUCT)->alias('t1') ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id') @@ -1210,6 +1211,7 @@ class productModel extends model ->beginIF($branch !== '' and $branch !== 'all')->andWhere('t1.branch')->in($branch)->fi() ->andWhere('t2.deleted')->eq('0') ->orderBy($orderBy) + ->page($pager) ->fetchAll('id'); /* Determine how to display the name of the program. */ @@ -1231,12 +1233,13 @@ class productModel extends model * @param int $branch * @param int $involved * @param string $orderBy + * @param object $pager * @access public * @return array */ - public function getProjectStatsByProduct($productID, $browseType = 'all', $branch = 0, $involved = 0, $orderBy = 'order_desc') + public function getProjectStatsByProduct($productID, $browseType = 'all', $branch = 0, $involved = 0, $orderBy = 'order_desc', $pager = null) { - $projects = $this->getProjectListByProduct($productID, $browseType, $branch, $involved, $orderBy); + $projects = $this->getProjectListByProduct($productID, $browseType, $branch, $involved, $orderBy, $pager); if(empty($projects)) return array(); $projectKeys = array_keys($projects); diff --git a/module/product/view/project.html.php b/module/product/view/project.html.php index c20a70ebfb..7e6c9a6fe5 100644 --- a/module/product/view/project.html.php +++ b/module/product/view/project.html.php @@ -107,6 +107,7 @@ + diff --git a/module/projectrelease/model.php b/module/projectrelease/model.php index 442861fac7..a976dbebc6 100644 --- a/module/projectrelease/model.php +++ b/module/projectrelease/model.php @@ -61,7 +61,7 @@ class projectreleaseModel extends model ->beginIF($type == 'review')->andWhere("FIND_IN_SET('{$this->app->user->account}', t1.reviewers)")->fi() ->andWhere('t1.deleted')->eq(0) ->orderBy($orderBy) - ->beginIF($pager)->page($pager)->fi() + ->page($pager) ->fetchAll(); }