From 977e100d042985b946a29844f28f5ce059e21e2d Mon Sep 17 00:00:00 2001 From: liumengyi Date: Wed, 11 May 2022 09:48:08 +0800 Subject: [PATCH] * Finish task #53647. --- module/bug/config.php | 2 ++ module/bug/model.php | 25 ++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/module/bug/config.php b/module/bug/config.php index 23ccd42efb..a2a00b49c6 100644 --- a/module/bug/config.php +++ b/module/bug/config.php @@ -71,6 +71,7 @@ $config->bug->search['fields']['resolvedBy'] = $lang->bug->resolvedBy; $config->bug->search['fields']['status'] = $lang->bug->status; $config->bug->search['fields']['confirmed'] = $lang->bug->confirmed; +$config->bug->search['fields']['story'] = $lang->bug->story; if($config->systemMode == 'new') $config->bug->search['fields']['project'] = $lang->bug->project; $config->bug->search['fields']['product'] = $lang->bug->product; @@ -116,6 +117,7 @@ $config->bug->search['params']['resolvedBy'] = array('operator' => '=', $config->bug->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->statusList); $config->bug->search['params']['confirmed'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->confirmedList); +$config->bug->search['params']['story'] = array('operator' => 'include', 'control' => 'input', 'values' => ''); if($config->systemMode == 'new') $config->bug->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => ''); $config->bug->search['params']['product'] = array('operator' => '=', 'control' => 'select', 'values' => ''); diff --git a/module/bug/model.php b/module/bug/model.php index a534aded89..4dd3da215f 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -2730,6 +2730,25 @@ class bugModel extends model /* Fix bug #2878. */ if(strpos($bugQuery, ' `resolvedDate` ') !== false) $bugQuery = str_replace(' `resolvedDate` ', " `resolvedDate` != '0000-00-00 00:00:00' AND `resolvedDate` ", $bugQuery); if(strpos($bugQuery, ' `closedDate` ') !== false) $bugQuery = str_replace(' `closedDate` ', " `closedDate` != '0000-00-00 00:00:00' AND `closedDate` ", $bugQuery); + if(strpos($bugQuery, ' `story` ') !== false) + { + preg_match_all("/`story`[ ]+(NOT *)?LIKE[ ]+'%([^%]*)%'/Ui", $bugQuery, $out); + if(!empty($out[2])) + { + foreach($out[2] as $searchValue) + { + $story = $this->dao->select('id')->from(TABLE_STORY)->alias('t1') + ->leftJoin(TABLE_STORYSPEC)->alias('t2')->on('t1.id=t2.story') + ->where('t1.title')->like("%$searchValue%") + ->orWhere('t1.keywords')->like("%$searchValue%") + ->orWhere('t2.spec')->like("%$searchValue%") + ->orWhere('t2.verify')->like("%$searchValue%") + ->fetchPairs('id'); + + $bugQuery = preg_replace("/`story`[ ]+(NOT[ ]*)?LIKE[ ]+'%$searchValue%'/Ui", '`story` $1 IN (' . implode($story, ',') .')', $bugQuery); + } + } + } $bugs = $this->dao->select('*')->from(TABLE_BUG)->where($bugQuery) ->beginIF(!$this->app->user->admin)->andWhere('execution')->in('0,' . $this->app->user->view->sprints)->fi() @@ -3234,9 +3253,9 @@ class bugModel extends model /** * Build bug menu. - * - * @param object $bug - * @param string $type + * + * @param object $bug + * @param string $type * @access public * @return string */