* Adjust params sort for program getList.

This commit is contained in:
caoyanyi
2023-09-14 09:14:05 +08:00
parent 68a133481a
commit ae036fca50
4 changed files with 22 additions and 29 deletions
+2 -2
View File
@@ -61,7 +61,7 @@ class program extends control
else
{
/* Get top programs and projects. */
$topObjects = $this->program->getList($status == 'unclosed' ? 'doing,suspended,wait' : $status, $orderBy, $pager, 'top');
$topObjects = $this->program->getList($status == 'unclosed' ? 'doing,suspended,wait' : $status, $orderBy, 'top', array(), $pager);
if(!$topObjects) $topObjects = array(0);
$programs = $this->program->getList($status, $orderBy, null, 'child', array_keys($topObjects));
@@ -618,7 +618,7 @@ class program extends control
/* Get and process program list. */
$users = $this->loadModel('user')->getPairs('noletter');
$programs = $this->program->getList($status, $orderBy, null);
$programs = $this->program->getList($status, $orderBy);
$products = $this->program->getProductByProgram(array_keys($programs));
foreach($programs as $programID => $program)
{
+7 -7
View File
@@ -162,13 +162,13 @@ class programModel extends model
*
* @param string $status
* @param string $orderBy
* @param object $pager
* @param string $type top|child
* @param array $topIdList
* @param object $pager
* @access public
* @return array
*/
public function getList($status = 'all', $orderBy = 'id_asc', $pager = null, $type = '', $topIdList = array())
public function getList(string $status = 'all', string $orderBy = 'id_asc', string $type = '', array $topIdList = array(), object $pager = null): array
{
$userViewIdList = trim($this->app->user->view->programs, ',') . ',' . trim($this->app->user->view->projects, ',');
$userViewIdList = array_filter(explode(',', $userViewIdList));
@@ -185,7 +185,7 @@ class programModel extends model
foreach($pathList as $path)
{
if($type == 'child' and !empty($topIdList))
if($type == 'child' && !empty($topIdList))
{
$topID = $this->getTopByPath($path);
if(!in_array($topID, $topIdList)) continue;
@@ -199,11 +199,11 @@ class programModel extends model
->where('type')->in('program,project')
->andWhere('deleted')->eq(0)
->andWhere('vision')->eq($this->config->vision)
->beginIF($status != 'all' and $status != 'unclosed')->andWhere('status')->in($status)->fi()
->beginIF($status != 'all' && $status != 'unclosed')->andWhere('status')->in($status)->fi()
->beginIF($status == 'unclosed')->andWhere('status')->ne('closed')->fi()
->beginIF($this->app->rawMethod == 'browse' and $type === 'top')->andWhere('parent')->eq(0)->fi()
->beginIF($this->app->rawMethod == 'browse' and ($type === 'child' or !$this->app->user->admin))->andWhere('id')->in($objectIdList)->fi()
->beginIF(!$this->app->user->admin and $this->app->rawMethod != 'browse')->andWhere('id')->in($userViewIdList)->fi()
->beginIF($this->app->rawMethod == 'browse' && $type === 'top')->andWhere('parent')->eq(0)->fi()
->beginIF($this->app->rawMethod == 'browse' && ($type === 'child' or !$this->app->user->admin))->andWhere('id')->in($objectIdList)->fi()
->beginIF(!$this->app->user->admin && $this->app->rawMethod != 'browse')->andWhere('id')->in($userViewIdList)->fi()
->orderBy($orderBy)
->page($pager)
->fetchAll('id');
+10 -17
View File
@@ -19,35 +19,28 @@ $program->gen(20);
/**
title=测试 programModel::getList();
timeout=0
cid=1
pid=1
查看所有项目和项目集的个数 >> 20
查看分页后项目集和项目的个数 >> 10
查看所有'closed'的项目和项目集的个数 >> 5
查看所有'suspended'的项目和项目集的个数 >> 5
按照项目和项目集名称倒序获取第一个ID >> 9
按照ID正序获取项目和项目集列表第一个ID >> 1
获取顶级项目集个数 >> 20
获取分页后顶级项目集个数 >> 10
获取所有项目集个数 >> 20
*/
global $tester;
global $tester, $app;
$programTester = new programTest();
$tester->app->loadClass('pager', $static = true);
$app->moduleName = 'program';
$app->methodName = 'browse';
$app->loadClass('pager', true);
$pager = new pager(0, 10, 1);
$allPorgrams = $programTester->getListTest('all');
$pagerPrograms = $programTester->getListTest('all', 'id_asc', $pager);
$pagerPrograms = $programTester->getListTest('all', 'id_asc', '', array(), $pager);
$closedPrograms = $programTester->getListTest('closed');
$suspendedPrograms = $programTester->getListTest('closed');
$namedescPrograms = $programTester->getListTest('all', 'name_desc');
$idascPrograms = $programTester->getListTest('all', 'id_asc');
$topPrograms = $programTester->getListTest('all', 'id_asc', null, 'top');
$topPagePrograms = $programTester->getListTest('all', 'id_asc', $pager, 'top');
$childPrograms = $programTester->getListTest('all', 'id_asc', null, 'child', $topPrograms);
$topPrograms = $programTester->getListTest('all', 'id_asc', 'top');
$topPagePrograms = $programTester->getListTest('all', 'id_asc', 'top', array(), $pager);
$childPrograms = $programTester->getListTest('all', 'id_asc', 'child', $topPrograms);
r(count($allPorgrams)) && p() && e('20'); // 查看所有项目和项目集的个数
r(count($pagerPrograms)) && p() && e('10'); // 查看分页后项目集和项目的个数
+3 -3
View File
@@ -168,16 +168,16 @@ class programTest
*
* @param mixed $status
* @param string $orderBy
* @param object $pager
* @param string $type top|child
* @param mixed $idList
* @param object $pager
* @access public
* @return void
*/
public function getListTest($status = 'all', $orderBy = 'id_asc', $pager = NULL, $type = '', $idList = '')
public function getListTest($status = 'all', $orderBy = 'id_asc', $type = '', $idList = array(), $pager = NULL)
{
$this->program->cookie->showClosed = 'ture';
$programs = $this->program->getList($status, $orderBy, $pager, $type, $idList);
$programs = $this->program->getList($status, $orderBy, $type, $idList, $pager);
if(dao::isError()) return array('message' => dao::getError());