From cdc297ef0c2e2a842a68cdaee30e88d9eec1eccf Mon Sep 17 00:00:00 2001 From: wangyidong Date: Sat, 12 Oct 2024 16:35:29 +0800 Subject: [PATCH] * [perf story #67964] Merge fields for all linked project products. --- module/datatable/model.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/module/datatable/model.php b/module/datatable/model.php index e1f6449844..6462a56200 100644 --- a/module/datatable/model.php +++ b/module/datatable/model.php @@ -477,6 +477,27 @@ class datatableModel extends model $flow = $this->loadModel('workflow')->getByModule($module); if(empty($flow)) return []; + $this->loadModel('workflowgroup'); + $this->loadModel('workflowaction'); + if($this->app->tab == 'project' && in_array($module, $this->config->workflowgroup->modules['product'])) + { + $groupIdList = array(); + $fields = array(); + $projectID = (int)$this->session->project; + $products = $this->dao->select('t2.*')->from(TABLE_PROJECTPRODUCT)->alias('t1') + ->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product = t2.id') + ->where('t1.project')->eq($projectID) + ->fetchAll('id'); + + foreach($products as $product) $groupIdList[] = $this->workflowgroup->getGroupIDByData($module, $product); + foreach(array_unique($groupIdList) as $groupID) $fields += $this->workflowaction->getPageFields($module, $method, true, array(), 0, $groupID); + } + else + { + $groupID = $this->workflowgroup->getGroupIDBySession($module); + $fields = $this->workflowaction->getPageFields($module, $method, true, array(), 0, $groupID); + } + if($flow->buildin) { $action = $this->loadModel('workflowaction')->getByModuleAndAction($module, $method);