* [bug#66600] Fix the bug of review issue query in my.

This commit is contained in:
xieqiyu
2025-10-31 06:11:12 +00:00
parent c79690a9df
commit d6e76ec39c
2 changed files with 76 additions and 1 deletions
+1 -1
View File
@@ -903,7 +903,7 @@ class my extends control
$currentMethod = $this->app->rawMethod;
$queryID = $type == 'bysearch' ? (int)$param : 0;
$actionURL = $this->createLink('my', $currentMethod, "mode=reviewissue&type=bysearch&param=myQueryID");
$this->my->buildReviewissueSearchForm($queryID, $actionURL, $currentMethod);
$this->my->buildReviewissueSearchForm($queryID, $actionURL);
/* Get reviewissues by type*/
if($type == 'assignedBy')
+75
View File
@@ -297,6 +297,16 @@ class myModel extends model
->page($pager)
->fetchAll('id');
}
if($objectType == 'reviewissue')
{
return $this->dao->select('t1.*, t2.type')->from($this->config->objectTables[$module])->alias('t1')
->leftJoin(TABLE_REVIEW)->alias('t2')->on('t1.review = t2.id')
->where('t1.deleted')->eq(0)
->andWhere('t1.id')->in($objectIdList)
->orderBy('t1.' . $orderBy)
->page($pager)
->fetchAll('id');
}
return $this->dao->select('*')->from($this->config->objectTables[$module])
->where('deleted')->eq(0)
->andWhere('id')->in($objectIdList)
@@ -642,6 +652,7 @@ class myModel extends model
$this->config->reviewissue->search['queryID'] = $queryID;
$this->config->reviewissue->search['params']['project']['values'] = array('') + $projects;
$this->config->reviewissue->search['params']['type']['values'] = arrayUnion(array('' => ''), $this->lang->reviewissue->issueType);
if(!isset($this->config->reviewissue->search['fields'])) $this->config->reviewissue->search['fields'] = array();
unset($this->config->reviewissue->search['fields']['module']);
@@ -710,6 +721,70 @@ class myModel extends model
return $risks;
}
/**
* 通过搜索获取评审问题。
* Get review issues by search.
*
* @param int $queryID
* @param string $type
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getReviewissuesBySearch(int $queryID, string $type, string $orderBy, ?object $pager = null): array
{
$queryName = $type == 'contribute' ? 'contributeReviewissueQuery' : 'workReviewissueQuery';
if($queryID && $queryID != 'myQueryID')
{
$query = $this->loadModel('search')->getQuery($queryID);
if($query)
{
$this->session->set($queryName, $query->sql);
$this->session->set($queryName . 'Form', $query->form);
}
else
{
$this->session->set($queryName, ' 1 = 1');
}
}
else
{
if($this->session->{$queryName} == false) $this->session->set($queryName, ' 1 = 1');
}
$reviewissueQuery = preg_replace('/`([^`]+)`/', 't1.$0', $this->session->{$queryName});
if(strpos($reviewissueQuery, 't1.`review`') !== false) $reviewissueQuery = str_replace('t1.`review`', 't2.`object`', $reviewissueQuery);
if(strpos($reviewissueQuery, 't1.`type`') !== false) $reviewissueQuery = str_replace('t1.`type`', 't2.`type`', $reviewissueQuery);
if($type == 'contribute')
{
$assignedByMe = $this->getAssignedByMe($this->app->user->account, null, 'id_desc', 'reviewissue');
$reviewissues = $this->dao->select('t1.*, t2.type')->from(TABLE_REVIEWISSUE)->alias('t1')
->leftJoin(TABLE_REVIEW)->alias('t2')->on('t1.review = t2.id')
->where($reviewissueQuery)
->andWhere('t1.deleted')->eq('0')
->andWhere('t1.createdBy',1)->eq($this->app->user->account)
->orWhere('t1.id')->in(array_keys($assignedByMe))
->markRight(1)
->orderBy("t1.$orderBy")
->page($pager)
->fetchAll('id', false);
}
elseif($type == 'work')
{
$reviewissues = $this->dao->select('t1.*, t2.type')->from(TABLE_REVIEWISSUE)->alias('t1')
->leftJoin(TABLE_REVIEW)->alias('t2')->on('t1.review = t2.id')
->where($reviewissueQuery)
->andWhere('t1.deleted')->eq('0')
->andWhere('t1.assignedTo')->eq($this->app->user->account)
->orderBy("t1.$orderBy")
->page($pager)
->fetchAll('id', false);
}
return $reviewissues;
}
/**
* 构建需求搜索表单。
* Build Story search form.