diff --git a/module/action/model.php b/module/action/model.php index a4482d2472..2ac8da17ba 100755 --- a/module/action/model.php +++ b/module/action/model.php @@ -298,12 +298,12 @@ class actionModel extends model /** * Get actions of an object. * - * @param int $objectType + * @param string $objectType * @param int $objectID * @access public * @return array */ - public function getList($objectType, $objectID) + public function getList(string $objectType, int $objectID): array { $objectID = is_array($objectID) ? $objectID : (int)$objectID; $modules = $objectType == 'module' ? $this->dao->select('id')->from(TABLE_MODULE)->where('root')->in($objectID)->fetchPairs('id') : array(); @@ -334,32 +334,29 @@ class actionModel extends model ->fetchAll('id'); $histories = $this->getHistory(array_keys($actions)); - $this->loadModel('file'); if($objectType == 'project') { - $this->app->loadLang('build'); - $this->app->loadLang('testtask'); $actions = $this->processProjectActions($actions); } foreach($actions as $actionID => $action) { $actionName = strtolower($action->action); - if($actionName == 'svncommited' and isset($commiters[$action->actor])) + if($actionName == 'svncommited' && isset($commiters[$action->actor])) { $action->actor = $commiters[$action->actor]; } - elseif($actionName == 'gitcommited' and isset($commiters[$action->actor])) + elseif($actionName == 'gitcommited' && isset($commiters[$action->actor])) { $action->actor = $commiters[$action->actor]; } - elseif($actionName == 'linked2execution' or $actionName == 'linked2kanban') + elseif($actionName == 'linked2execution' || $actionName == 'linked2kanban') { $execution = $this->dao->select('name,type,multiple')->from(TABLE_PROJECT)->where('id')->eq($action->extra)->fetch(); if(!empty($execution)) { - if($execution->type != 'project' and empty($execution->multiple)) + if($execution->type != 'project' && empty($execution->multiple)) { unset($actions[$actionID]); continue; @@ -367,7 +364,7 @@ class actionModel extends model $name = $execution->name; $method = $execution->type == 'kanban' ? 'kanban' : 'view'; - $action->extra = (!common::hasPriv('execution', $method) or ($method == 'kanban' and isonlybody())) ? $name : html::a(helper::createLink('execution', $method, "executionID=$action->execution"), $name, '', "data-app='execution'"); + $action->extra = (!common::hasPriv('execution', $method) || ($method == 'kanban' && isonlybody())) ? $name : html::a(helper::createLink('execution', $method, "executionID=$action->execution"), $name, '', "data-app='execution'"); } } elseif($actionName == 'linked2project') @@ -403,7 +400,7 @@ class actionModel extends model $name = $this->dao->select('name')->from(TABLE_TESTTASK)->where('id')->eq($action->extra)->fetch('name'); if($name) $action->extra = common::hasPriv('testtask', 'view') ? html::a(helper::createLink('testtask', 'view', "taskID=$action->extra"), $name) : $name; } - elseif($actionName == 'linked2revision' or $actionName == 'unlinkedfromrevision') + elseif($actionName == 'linked2revision' || $actionName == 'unlinkedfromrevision') { $commit = $this->dao->select('repo,revision')->from(TABLE_REPOHISTORY)->where('id')->eq($action->extra)->fetch(); if($commit) @@ -412,12 +409,12 @@ class actionModel extends model $action->extra = common::hasPriv('repo', 'revision') ? html::a(helper::createLink('repo', 'revision', "repoID=$commit->repo&objectID=0&revision=$commit->revision"), $revision) : $revision; } } - elseif($actionName == 'moved' and $action->objectType != 'module') + elseif($actionName == 'moved' && $action->objectType != 'module') { $name = $this->dao->select('name')->from(TABLE_PROJECT)->where('id')->eq($action->extra)->fetch('name'); if($name) $action->extra = common::hasPriv('execution', 'task') ? html::a(helper::createLink('execution', 'task', "executionID=$action->extra"), "#$action->extra " . $name) : "#$action->extra " . $name; } - elseif($actionName == 'frombug' and common::hasPriv('bug', 'view')) + elseif($actionName == 'frombug' && common::hasPriv('bug', 'view')) { $action->extra = html::a(helper::createLink('bug', 'view', "bugID=$action->extra"), $action->extra); } @@ -452,7 +449,7 @@ class actionModel extends model $name = $this->dao->select('name')->from(TABLE_TESTTASK)->where('id')->eq($action->extra)->fetch('name'); if($name) $action->extra = common::hasPriv('testtask', 'view') ? html::a(helper::createLink('testtask', 'view', "taskID=$action->extra"), $name) : $name; } - elseif(strpos('feedback,ticket', $action->objectType) === false and $actionName == 'tostory') + elseif(strpos('feedback,ticket', $action->objectType) === false && $actionName == 'tostory') { $productShadow = $this->dao->select('shadow')->from(TABLE_PRODUCT)->where('id')->in(trim($action->product, ','))->fetch('shadow'); $title = $this->dao->select('title')->from(TABLE_STORY)->where('id')->eq($action->extra)->fetch('title'); @@ -460,7 +457,7 @@ class actionModel extends model if($productShadow) { $projectID = $this->dao->select('project')->from(TABLE_PROJECTSTORY)->where('story')->eq($action->extra)->fetch('project'); - if($title) $action->extra = (common::hasPriv('projectstory', 'view') and $projectID) ? html::a(helper::createLink('projectstory', 'view', "storyID={$action->extra}&projectID=$projectID"), $defaultExtra) : $defaultExtra; + if($title) $action->extra = (common::hasPriv('projectstory', 'view') && $projectID) ? html::a(helper::createLink('projectstory', 'view', "storyID={$action->extra}&projectID=$projectID"), $defaultExtra) : $defaultExtra; } else { @@ -470,7 +467,7 @@ class actionModel extends model elseif($actionName == 'importedcard') { $title = $this->dao->select('name')->from(TABLE_KANBAN)->where('id')->eq($action->extra)->fetch('name'); - if($title) $action->extra = (common::hasPriv('kanban', 'view') and !isonlybody()) ? html::a(helper::createLink('kanban', 'view', "kanbanID=$action->extra"), "#$action->extra " . $title) : "#$action->extra " . $title; + if($title) $action->extra = (common::hasPriv('kanban', 'view') && !isonlybody()) ? html::a(helper::createLink('kanban', 'view', "kanbanID=$action->extra"), "#$action->extra " . $title) : "#$action->extra " . $title; } elseif($actionName == 'createchildren') { @@ -482,7 +479,9 @@ class actionModel extends model } $action->extra = trim(trim($action->extra), ','); } - /* Code for waterfall. */ + + /* 瀑布模型相关的代码。 */ + /* Code for wataerfall mode. */ elseif($actionName == 'createrequirements') { $names = $this->dao->select('id,title')->from(TABLE_STORY)->where('id')->in($action->extra)->fetchPairs('id', 'title'); @@ -493,12 +492,12 @@ class actionModel extends model } $action->extra = trim(trim($action->extra), ','); } - elseif($action->objectType != 'feedback' and (strpos(',totask,linkchildtask,unlinkchildrentask,linkparenttask,unlinkparenttask,deletechildrentask,', ",$actionName,") !== false)) + elseif($action->objectType != 'feedback' && (strpos(',totask,linkchildtask,unlinkchildrentask,linkparenttask,unlinkparenttask,deletechildrentask,', ",$actionName,") !== false)) { $name = $this->dao->select('name')->from(TABLE_TASK)->where('id')->eq($action->extra)->fetch('name'); if($name) $action->extra = common::hasPriv('task', 'view') ? html::a(helper::createLink('task', 'view', "taskID=$action->extra"), "#$action->extra " . $name) : "#$action->extra " . $name; } - elseif($actionName == 'linkchildstory' or $actionName == 'unlinkchildrenstory' or $actionName == 'linkparentstory' or $actionName == 'unlinkparentstory' or $actionName == 'deletechildrenstory') + elseif($actionName == 'linkchildstory' || $actionName == 'unlinkchildrenstory' || $actionName == 'linkparentstory' || $actionName == 'unlinkparentstory' || $actionName == 'deletechildrenstory') { $name = $this->dao->select('title')->from(TABLE_STORY)->where('id')->eq($action->extra)->fetch('title'); if($name) $action->extra = common::hasPriv('story', 'view') ? html::a(helper::createLink('story', 'view', "storyID=$action->extra"), "#$action->extra " . $name) : "#$action->extra " . $name; @@ -508,22 +507,22 @@ class actionModel extends model $name = $this->dao->select('name')->from(TABLE_BUILD)->where('id')->eq($action->objectID)->fetch('name'); if($name) $action->extra = common::hasPriv('build', 'view') ? html::a(helper::createLink('build', 'view', "buildID=$action->objectID"), "#$action->objectID " . $name) : "#$action->objectID " . $name; } - elseif($actionName == 'testtaskopened' or $actionName == 'testtaskstarted' or $actionName == 'testtaskclosed') + elseif($actionName == 'testtaskopened' || $actionName == 'testtaskstarted' || $actionName == 'testtaskclosed') { $name = $this->dao->select('name')->from(TABLE_TESTTASK)->where('id')->eq($action->objectID)->fetch('name'); if($name) $action->extra = common::hasPriv('testtask', 'view') ? html::a(helper::createLink('testtask', 'view', "testtaskID=$action->objectID"), "#$action->objectID " . $name) : "#$action->objectID " . $name; } - elseif($actionName == 'fromlib' and $action->objectType == 'case') + elseif($actionName == 'fromlib' && $action->objectType == 'case') { $name = $this->dao->select('name')->from(TABLE_TESTSUITE)->where('id')->eq($action->extra)->fetch('name'); if($name) $action->extra = common::hasPriv('caselib', 'browse') ? html::a(helper::createLink('caselib', 'browse', "libID=$action->extra"), $name) : $name; } - elseif(strpos(',importfromstorylib,importfromrisklib,importfromissuelib,importfromopportunitylib,', ",{$actionName},") !== false and $this->config->edition == 'max') + elseif(strpos(',importfromstorylib,importfromrisklib,importfromissuelib,importfromopportunitylib,', ",{$actionName},") !== false && $this->config->edition == 'max') { $name = $this->dao->select('name')->from(TABLE_ASSETLIB)->where('id')->eq($action->extra)->fetch('name'); if($name) $action->extra = common::hasPriv('assetlib', $action->objectType) ? html::a(helper::createLink('assetlib', $action->objectType, "libID=$action->extra"), $name) : $name; } - elseif(($actionName == 'closed' and $action->objectType == 'story') or ($actionName == 'resolved' and $action->objectType == 'bug')) + elseif(($actionName == 'closed' && $action->objectType == 'story') || ($actionName == 'resolved' && $action->objectType == 'bug')) { $action->appendLink = ''; if(strpos($action->extra, '|') !== false) $action->extra = substr($action->extra, 0, strpos($action->extra, '|')); @@ -539,7 +538,7 @@ class actionModel extends model } } } - elseif($actionName == 'finished' and $objectType == 'todo') + elseif($actionName == 'finished' && $objectType == 'todo') { $action->appendLink = ''; if(strpos($action->extra, ':')!== false) @@ -555,12 +554,12 @@ class actionModel extends model } } } - elseif(($actionName == 'opened' or $actionName == 'managed' or $actionName == 'edited') and ($objectType == 'execution' || $objectType == 'project')) + elseif(($actionName == 'opened' || $actionName == 'managed' || $actionName == 'edited') && ($objectType == 'execution' || $objectType == 'project')) { $this->app->loadLang('execution'); $linkedProducts = $this->dao->select('id,name')->from(TABLE_PRODUCT)->where('id')->in($action->extra)->fetchPairs('id', 'name'); $action->extra = ''; - if($linkedProducts and $this->config->vision == 'rnd') + if($linkedProducts && $this->config->vision == 'rnd') { foreach($linkedProducts as $productID => $productName) $linkedProducts[$productID] = html::a(helper::createLink('product', 'browse', "productID=$productID"), "#{$productID} {$productName}"); $action->extra = sprintf($this->lang->execution->action->extra, '' . join(', ', $linkedProducts) . ''); @@ -595,7 +594,8 @@ class actionModel extends model foreach(explode(',', $action->extra) as $id) $extra .= common::hasPriv('bug', 'view') ? html::a(helper::createLink('bug', 'view', "bugID=$id"), "#$id ") . ', ' : "#$id, "; $action->extra = trim(trim($extra), ','); } - + + $this->loadModel('file'); $action->comment = $this->file->setImgSize($action->comment, $this->config->action->commonImgSize); $actions[$actionID] = $action; @@ -611,8 +611,9 @@ class actionModel extends model * @access public * @return array */ - public function processProjectActions($actions) + public function processProjectActions(array $actions): array { + /* 定义行动映射表。 */ /* Define the action map table. */ $map = array(); $map['testtask']['opened'] = 'testtaskopened'; @@ -620,7 +621,8 @@ class actionModel extends model $map['testtask']['closed'] = 'testtaskclosed'; $map['build']['opened'] = 'buildopened'; - /* Process actions. */ + /* 处理action数据。 */ + /* Process actions data. */ foreach($actions as $key => $action) { if($action->objectType != 'project' and !isset($map[$action->objectType][$action->action])) unset($actions[$key]); diff --git a/module/action/test/model/getlist.php b/module/action/test/model/getlist.php index e3d90d5ca5..88edd8af78 100755 --- a/module/action/test/model/getlist.php +++ b/module/action/test/model/getlist.php @@ -4,52 +4,53 @@ include dirname(__FILE__, 5) . '/test/lib/init.php'; include dirname(__FILE__, 2) . '/action.class.php'; su('admin'); +zdTable('action')->gen(45); + /** title=测试 actionModel->getList(); cid=1 pid=1 -测试获取objectType product objectId 1的动态信息 >> 1,admin,1 -测试获取objectType story objectId 2的动态信息 >> 2,dev17,1 -测试获取objectType productplan objectId 3的动态信息 >> 3,test18,1 -测试获取objectType release objectId 4的动态信息 >> 4,admin,1 -测试获取objectType project objectId 5的动态信息 >> 5,dev17,11 -测试获取objectType task objectId 6的动态信息 >> 6,test18,1 -测试获取objectType build objectId 7的动态信息 >> 7,admin,1 -测试获取objectType bug objectId 8的动态信息 >> 8,dev17,1 -测试获取objectType testcase objectId 9的动态信息 >> 9,test18,2 -测试获取objectType case objectId 10的动态信息 >> 10,admin,1 -测试获取objectType testtask objectId 11的动态信息 >> 11,dev17,1 -测试获取objectType user objectId 12的动态信息 >> 12,test18,1 -测试获取objectType doc objectId 13的动态信息 >> 13,admin,1 -测试获取objectType doclib objectId 14的动态信息 >> 14,dev17,1 -测试获取objectType todo objectId 15的动态信息 >> 15,test18,1 -测试获取objectType branch objectId 16的动态信息 >> 16,admin,1 -测试获取objectType module objectId 17的动态信息 >> 17,dev17,1 -测试获取objectType testsuite objectId 18的动态信息 >> 18,test18,a -测试获取objectType caselib objectId 19的动态信息 >> 19,admin,1 -测试获取objectType testreport objectId 20的动态信息 >> 20,dev17,1 -测试获取objectType entry objectId 21的动态信息 >> 21,test18,1 -测试获取objectType webhook objectId 22的动态信息 >> 22,admin,a -测试获取objectType review objectId 23的动态信息 >> 23,dev17,1 -测试获取objectType product objectId 24的动态信息 >> 24,test18,1 -测试获取objectType story objectId 25的动态信息 >> 25,admin,1 +测试获取objectType product objectId 1的动态信息 >> 1,admin,1 +测试获取objectType story objectId 2的动态信息 >> 2,dev17,1 +测试获取objectType productplan objectId 3的动态信息 >> 3,test18,1 +测试获取objectType release objectId 4的动态信息 >> 4,admin,1 +测试获取objectType project objectId 5的动态信息 >> 5,dev17,11 +测试获取objectType task objectId 6的动态信息 >> 6,test18,1 +测试获取objectType build objectId 7的动态信息 >> 7,admin,1 +测试获取objectType bug objectId 8的动态信息 >> 8,dev17,1 +测试获取objectType testcase objectId 9的动态信息 >> 9,test18,2 +测试获取objectType case objectId 10的动态信息 >> 10,admin,1 +测试获取objectType testtask objectId 11的动态信息 >> 11,dev17,1 +测试获取objectType user objectId 12的动态信息 >> 12,test18,1 +测试获取objectType doc objectId 13的动态信息 >> 13,admin,1 +测试获取objectType doclib objectId 14的动态信息 >> 14,dev17,1 +测试获取objectType todo objectId 15的动态信息 >> 15,test18,1 +测试获取objectType branch objectId 16的动态信息 >> 16,admin,1 +测试获取objectType module objectId 17的动态信息 >> 17,dev17,1 +测试获取objectType testsuite objectId 18的动态信息 >> 18,test18,a +测试获取objectType caselib objectId 19的动态信息 >> 19,admin,1 +测试获取objectType testreport objectId 20的动态信息 >> 20,dev17,1 +测试获取objectType entry objectId 21的动态信息 >> 21,test18,1 +测试获取objectType webhook objectId 22的动态信息 >> 22,admin,a +测试获取objectType review objectId 23的动态信息 >> 23,dev17,1 +测试获取objectType product objectId 24的动态信息 >> 24,test18,1 +测试获取objectType story objectId 25的动态信息 >> 25,admin,1 测试获取objectType productplan objectId 26的动态信息 >> 26,dev17,1 -测试获取objectType release objectId 27的动态信息 >> 27,test18,1 -测试获取objectType project objectId 28的动态信息 >> 28,admin,33 -测试获取objectType task objectId 29的动态信息 >> 29,dev17,1 -测试获取objectType build objectId 30的动态信息 >> 30,test18,1 -测试获取objectType bug objectId 31的动态信息 >> 31,admin,1 -测试获取objectType testcase objectId 32的动态信息 >> 32,项目经理17,1 -测试获取objectType case objectId 33的动态信息 >> 33,test18,1 -测试获取objectType testtask objectId 34的动态信息 >> 34,admin,1 -测试获取objectType user objectId 35的动态信息 >> 35,dev17,1 -测试获取objectType doc objectId 36的动态信息 >> 36,test18,1 -测试获取objectType doclib objectId 37的动态信息 >> 37,admin,1 -测试获取objectType todo objectId 38的动态信息 >> 38,dev17,1 -测试获取objectType branch objectId 39的动态信息 >> 39,test18,a - +测试获取objectType release objectId 27的动态信息 >> 27,test18,1 +测试获取objectType project objectId 28的动态信息 >> 28,admin,33 +测试获取objectType task objectId 29的动态信息 >> 29,dev17,1 +测试获取objectType build objectId 30的动态信息 >> 30,test18,1 +测试获取objectType bug objectId 31的动态信息 >> 31,admin,1 +测试获取objectType testcase objectId 32的动态信息 >> 32,项目经理17,1 +测试获取objectType case objectId 33的动态信息 >> 33,test18,1 +测试获取objectType testtask objectId 34的动态信息 >> 34,admin,1 +测试获取objectType user objectId 35的动态信息 >> 35,dev17,1 +测试获取objectType doc objectId 36的动态信息 >> 36,test18,1 +测试获取objectType doclib objectId 37的动态信息 >> 37,admin,1 +测试获取objectType todo objectId 38的动态信息 >> 38,dev17,1 +测试获取objectType branch objectId 39的动态信息 >> 39,test18,a */ $objectType = array('product', 'story', 'productplan', 'release', 'project', 'task', 'build', 'bug', 'testcase', 'case', 'testtask', 'user', 'doc', 'doclib', 'todo', 'branch', 'module', 'testsuite', 'caselib', 'testreport', 'entry', 'webhook', 'review'); @@ -57,42 +58,42 @@ $objectId = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, $action = new actionTest(); -r($action->getListTest($objectType[0], $objectId[0])) && p('id,actor,extra') && e("1,admin,1"); // 测试获取objectType product objectId 1的动态信息 -r($action->getListTest($objectType[1], $objectId[1])) && p('id,actor,extra') && e("2,dev17,1"); // 测试获取objectType story objectId 2的动态信息 -r($action->getListTest($objectType[2], $objectId[2])) && p('id,actor,extra') && e("3,test18,1"); // 测试获取objectType productplan objectId 3的动态信息 -r($action->getListTest($objectType[3], $objectId[3])) && p('id,actor,extra') && e("4,admin,1"); // 测试获取objectType release objectId 4的动态信息 -r($action->getListTest($objectType[4], $objectId[4])) && p('id,actor,extra') && e("5,dev17,11"); // 测试获取objectType project objectId 5的动态信息 -r($action->getListTest($objectType[5], $objectId[5])) && p('id,actor,extra') && e("6,test18,1"); // 测试获取objectType task objectId 6的动态信息 -r($action->getListTest($objectType[6], $objectId[6])) && p('id,actor,extra') && e("7,admin,1"); // 测试获取objectType build objectId 7的动态信息 -r($action->getListTest($objectType[7], $objectId[7])) && p('id,actor,extra') && e("8,dev17,1"); // 测试获取objectType bug objectId 8的动态信息 -r($action->getListTest($objectType[8], $objectId[8])) && p('id,actor,extra') && e("9,test18,2"); // 测试获取objectType testcase objectId 9的动态信息 -r($action->getListTest($objectType[9], $objectId[9])) && p('id,actor,extra') && e("10,admin,1"); // 测试获取objectType case objectId 10的动态信息 -r($action->getListTest($objectType[10], $objectId[10])) && p('id,actor,extra') && e("11,dev17,1"); // 测试获取objectType testtask objectId 11的动态信息 -r($action->getListTest($objectType[11], $objectId[11])) && p('id,actor,extra') && e("12,test18,1"); // 测试获取objectType user objectId 12的动态信息 -r($action->getListTest($objectType[12], $objectId[12])) && p('id,actor,extra') && e("13,admin,1"); // 测试获取objectType doc objectId 13的动态信息 -r($action->getListTest($objectType[13], $objectId[13])) && p('id,actor,extra') && e("14,dev17,1"); // 测试获取objectType doclib objectId 14的动态信息 -r($action->getListTest($objectType[14], $objectId[14])) && p('id,actor,extra') && e("15,test18,1"); // 测试获取objectType todo objectId 15的动态信息 -r($action->getListTest($objectType[15], $objectId[15])) && p('id,actor,extra') && e("16,admin,1"); // 测试获取objectType branch objectId 16的动态信息 -r($action->getListTest($objectType[16], $objectId[16])) && p('id,actor,extra') && e("17,dev17,1"); // 测试获取objectType module objectId 17的动态信息 -r($action->getListTest($objectType[17], $objectId[17])) && p('id,actor,extra') && e("18,test18,a"); // 测试获取objectType testsuite objectId 18的动态信息 -r($action->getListTest($objectType[18], $objectId[18])) && p('id,actor,extra') && e("19,admin,1"); // 测试获取objectType caselib objectId 19的动态信息 -r($action->getListTest($objectType[19], $objectId[19])) && p('id,actor,extra') && e("20,dev17,1"); // 测试获取objectType testreport objectId 20的动态信息 -r($action->getListTest($objectType[20], $objectId[20])) && p('id,actor,extra') && e("21,test18,1"); // 测试获取objectType entry objectId 21的动态信息 -r($action->getListTest($objectType[21], $objectId[21])) && p('id,actor,extra') && e("22,admin,a"); // 测试获取objectType webhook objectId 22的动态信息 -r($action->getListTest($objectType[22], $objectId[22])) && p('id,actor,extra') && e("23,dev17,1"); // 测试获取objectType review objectId 23的动态信息 -r($action->getListTest($objectType[0], $objectId[23])) && p('id,actor,extra') && e("24,test18,1"); // 测试获取objectType product objectId 24的动态信息 -r($action->getListTest($objectType[1], $objectId[24])) && p('id,actor,extra') && e("25,admin,1"); // 测试获取objectType story objectId 25的动态信息 -r($action->getListTest($objectType[2], $objectId[25])) && p('id,actor,extra') && e("26,dev17,1"); // 测试获取objectType productplan objectId 26的动态信息 -r($action->getListTest($objectType[3], $objectId[26])) && p('id,actor,extra') && e("27,test18,1"); // 测试获取objectType release objectId 27的动态信息 -r($action->getListTest($objectType[4], $objectId[27])) && p('id,actor,extra') && e("28,admin,33"); // 测试获取objectType project objectId 28的动态信息 -r($action->getListTest($objectType[5], $objectId[28])) && p('id,actor,extra') && e("29,dev17,1"); // 测试获取objectType task objectId 29的动态信息 -r($action->getListTest($objectType[6], $objectId[29])) && p('id,actor,extra') && e("30,test18,1"); // 测试获取objectType build objectId 30的动态信息 -r($action->getListTest($objectType[7], $objectId[30])) && p('id,actor,extra') && e("31,admin,1"); // 测试获取objectType bug objectId 31的动态信息 -r($action->getListTest($objectType[8], $objectId[31])) && p('id,actor,extra') && e("32,项目经理17,1"); // 测试获取objectType testcase objectId 32的动态信息 -r($action->getListTest($objectType[9], $objectId[32])) && p('id,actor,extra') && e("33,test18,1"); // 测试获取objectType case objectId 33的动态信息 -r($action->getListTest($objectType[10], $objectId[33])) && p('id,actor,extra') && e("34,admin,1"); // 测试获取objectType testtask objectId 34的动态信息 -r($action->getListTest($objectType[11], $objectId[34])) && p('id,actor,extra') && e("35,dev17,1"); // 测试获取objectType user objectId 35的动态信息 -r($action->getListTest($objectType[12], $objectId[35])) && p('id,actor,extra') && e("36,test18,1"); // 测试获取objectType doc objectId 36的动态信息 -r($action->getListTest($objectType[13], $objectId[36])) && p('id,actor,extra') && e("37,admin,1"); // 测试获取objectType doclib objectId 37的动态信息 -r($action->getListTest($objectType[14], $objectId[37])) && p('id,actor,extra') && e("38,dev17,1"); // 测试获取objectType todo objectId 38的动态信息 -r($action->getListTest($objectType[15], $objectId[38])) && p('id,actor,extra') && e("39,test18,a"); // 测试获取objectType branch objectId 39的动态信息 +r($action->getListTest($objectType[0], $objectId[0])) && p('id,actor,extra') && e('1,admin,1'); // 测试获取objectType product objectId 1的动态信息 +r($action->getListTest($objectType[1], $objectId[1])) && p('id,actor,extra') && e('2,dev17,1'); // 测试获取objectType story objectId 2的动态信息 +r($action->getListTest($objectType[2], $objectId[2])) && p('id,actor,extra') && e('3,test18,1'); // 测试获取objectType productplan objectId 3的动态信息 +r($action->getListTest($objectType[3], $objectId[3])) && p('id,actor,extra') && e('4,admin,1'); // 测试获取objectType release objectId 4的动态信息 +r($action->getListTest($objectType[4], $objectId[4])) && p('id,actor,extra') && e('5,dev17,11'); // 测试获取objectType project objectId 5的动态信息 +r($action->getListTest($objectType[5], $objectId[5])) && p('id,actor,extra') && e('6,test18,1'); // 测试获取objectType task objectId 6的动态信息 +r($action->getListTest($objectType[6], $objectId[6])) && p('id,actor,extra') && e('7,admin,1'); // 测试获取objectType build objectId 7的动态信息 +r($action->getListTest($objectType[7], $objectId[7])) && p('id,actor,extra') && e('8,dev17,1'); // 测试获取objectType bug objectId 8的动态信息 +r($action->getListTest($objectType[8], $objectId[8])) && p('id,actor,extra') && e('9,test18,2'); // 测试获取objectType testcase objectId 9的动态信息 +r($action->getListTest($objectType[9], $objectId[9])) && p('id,actor,extra') && e('10,admin,1'); // 测试获取objectType case objectId 10的动态信息 +r($action->getListTest($objectType[10], $objectId[10])) && p('id,actor,extra') && e('11,dev17,1'); // 测试获取objectType testtask objectId 11的动态信息 +r($action->getListTest($objectType[11], $objectId[11])) && p('id,actor,extra') && e('12,test18,1'); // 测试获取objectType user objectId 12的动态信息 +r($action->getListTest($objectType[12], $objectId[12])) && p('id,actor,extra') && e('13,admin,1'); // 测试获取objectType doc objectId 13的动态信息 +r($action->getListTest($objectType[13], $objectId[13])) && p('id,actor,extra') && e('14,dev17,1'); // 测试获取objectType doclib objectId 14的动态信息 +r($action->getListTest($objectType[14], $objectId[14])) && p('id,actor,extra') && e('15,test18,1'); // 测试获取objectType todo objectId 15的动态信息 +r($action->getListTest($objectType[15], $objectId[15])) && p('id,actor,extra') && e('16,admin,1'); // 测试获取objectType branch objectId 16的动态信息 +r($action->getListTest($objectType[16], $objectId[16])) && p('id,actor,extra') && e('17,dev17,1'); // 测试获取objectType module objectId 17的动态信息 +r($action->getListTest($objectType[17], $objectId[17])) && p('id,actor,extra') && e('18,test18,a'); // 测试获取objectType testsuite objectId 18的动态信息 +r($action->getListTest($objectType[18], $objectId[18])) && p('id,actor,extra') && e('19,admin,1'); // 测试获取objectType caselib objectId 19的动态信息 +r($action->getListTest($objectType[19], $objectId[19])) && p('id,actor,extra') && e('20,dev17,1'); // 测试获取objectType testreport objectId 20的动态信息 +r($action->getListTest($objectType[20], $objectId[20])) && p('id,actor,extra') && e('21,test18,1'); // 测试获取objectType entry objectId 21的动态信息 +r($action->getListTest($objectType[21], $objectId[21])) && p('id,actor,extra') && e('22,admin,a'); // 测试获取objectType webhook objectId 22的动态信息 +r($action->getListTest($objectType[22], $objectId[22])) && p('id,actor,extra') && e('23,dev17,1'); // 测试获取objectType review objectId 23的动态信息 +r($action->getListTest($objectType[0], $objectId[23])) && p('id,actor,extra') && e('24,test18,1'); // 测试获取objectType product objectId 24的动态信息 +r($action->getListTest($objectType[1], $objectId[24])) && p('id,actor,extra') && e('25,admin,1'); // 测试获取objectType story objectId 25的动态信息 +r($action->getListTest($objectType[2], $objectId[25])) && p('id,actor,extra') && e('26,dev17,1'); // 测试获取objectType productplan objectId 26的动态信息 +r($action->getListTest($objectType[3], $objectId[26])) && p('id,actor,extra') && e('27,test18,1'); // 测试获取objectType release objectId 27的动态信息 +r($action->getListTest($objectType[4], $objectId[27])) && p('id,actor,extra') && e('28,admin,33'); // 测试获取objectType project objectId 28的动态信息 +r($action->getListTest($objectType[5], $objectId[28])) && p('id,actor,extra') && e('29,dev17,1'); // 测试获取objectType task objectId 29的动态信息 +r($action->getListTest($objectType[6], $objectId[29])) && p('id,actor,extra') && e('30,test18,1'); // 测试获取objectType build objectId 30的动态信息 +r($action->getListTest($objectType[7], $objectId[30])) && p('id,actor,extra') && e('31,admin,1'); // 测试获取objectType bug objectId 31的动态信息 +r($action->getListTest($objectType[8], $objectId[31])) && p('id,actor,extra') && e('32,dev17,1'); // 测试获取objectType testcase objectId 32的动态信息 +r($action->getListTest($objectType[9], $objectId[32])) && p('id,actor,extra') && e('33,test18,1'); // 测试获取objectType case objectId 33的动态信息 +r($action->getListTest($objectType[10], $objectId[33])) && p('id,actor,extra') && e('34,admin,1'); // 测试获取objectType testtask objectId 34的动态信息 +r($action->getListTest($objectType[11], $objectId[34])) && p('id,actor,extra') && e('35,dev17,1'); // 测试获取objectType user objectId 35的动态信息 +r($action->getListTest($objectType[12], $objectId[35])) && p('id,actor,extra') && e('36,test18,1'); // 测试获取objectType doc objectId 36的动态信息 +r($action->getListTest($objectType[13], $objectId[36])) && p('id,actor,extra') && e('37,admin,1'); // 测试获取objectType doclib objectId 37的动态信息 +r($action->getListTest($objectType[14], $objectId[37])) && p('id,actor,extra') && e('38,dev17,1'); // 测试获取objectType todo objectId 38的动态信息 +r($action->getListTest($objectType[15], $objectId[38])) && p('id,actor,extra') && e('39,test18,a'); // 测试获取objectType branch objectId 39的动态信息