From 665a620ab4b5d362e56f7db4c8fddb7457607dac Mon Sep 17 00:00:00 2001 From: hufangzhou Date: Thu, 28 Nov 2024 11:05:15 +0800 Subject: [PATCH] * [bug#57536,done,1h] Demand pool requirements and demand pool support for Xuanxuan to send messages. --- .../ext/model/class/xuanxuan.class.php | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/extension/xuanxuan/extension/xuan/message/ext/model/class/xuanxuan.class.php b/extension/xuanxuan/extension/xuan/message/ext/model/class/xuanxuan.class.php index cc445977d4..09a482e0a5 100644 --- a/extension/xuanxuan/extension/xuan/message/ext/model/class/xuanxuan.class.php +++ b/extension/xuanxuan/extension/xuan/message/ext/model/class/xuanxuan.class.php @@ -17,6 +17,7 @@ class xuanxuanMessage extends messageModel if($objectType == 'story') $field = 'obj.*,product.name as productName'; if($objectType == 'bug') $field = 'obj.*,project.name as projectName,product.name as productName,execu.name as execuName'; if($objectType == 'feedback') $field = 'obj.*,product.name as productName'; + if($objectType == 'demand') $field = 'obj.*,pool.name as poolName'; $object = $this->dao->select($field)->from($this->config->objectTables[$objectType])->alias('obj') ->beginIF($objectType == 'task') @@ -34,6 +35,9 @@ class xuanxuanMessage extends messageModel ->beginIF($objectType == 'feedback') ->leftJoin($this->config->objectTables['product'])->alias('product')->on('product.id = obj.product') ->fi() + ->beginIF($objectType == 'demand') + ->leftJoin($this->config->objectTables['demandpool'])->alias('pool')->on('pool.id = obj.pool') + ->fi() ->where('obj.id')->eq($objectID) ->fetch(); $field = $this->config->action->objectNameFields[$objectType]; @@ -70,6 +74,21 @@ class xuanxuanMessage extends messageModel foreach($senderUser as $user) $target .= ',' . $user; } } + elseif($objectType == 'demandpool') + { + if(!empty($object->owner)) $target .= trim($object->owner, ','); + if(!empty($object->reviewer)) $target .= ',' . trim($object->reviewer, ','); + } + elseif($objectType == 'demand') + { + $target .= $object->createdBy; + if(!empty($object->assignedTo)) $target .= $object->assignedTo == 'closed' ? '' : $object->assignedTo; + if(!empty($object->mailto)) $target .= ",{$object->mailto}"; + $reviewers = $this->loadModel('demand')->getReviewerPairs($object->id, $object->version); + $reviewers = array_keys($reviewers); + if($reviewers) $target .= ',' . implode(',', $reviewers); + $target = trim($target, ','); + } else { if(!empty($object->assignedTo)) $target .= $object->assignedTo == 'closed' ? $object->openedBy : $object->assignedTo; @@ -126,18 +145,19 @@ class xuanxuanMessage extends messageModel } elseif($objectType == 'demandpool') { - if(!empty($object->owner)) $target .= trim($object->owner, ','); - if(!empty($object->reviewer)) $target .= ',' . trim($object->reviewer, ','); + $subcontent->headTitle = $object->name; + $subcontent->parentType = ''; + $subcontent->parent = 0; + $subcontent->parentURL = "xxc:openInApp/zentao-integrated/" . urlencode($server . helper::createLink('demandpool', 'browse', '', 'html')); + $subcontent->cardURL = $url; } elseif($objectType == 'demand') { - $target .= $object->createdBy; - if(!empty($object->assignedTo)) $target .= $object->assignedTo == 'closed' ? '' : $object->assignedTo; - if(!empty($object->mailto)) $target .= ",{$object->mailto}"; - $reviewers = $this->loadModel('demand')->getReviewerPairs($object->id, $object->version); - $reviewers = array_keys($reviewers); - if($reviewers) $target .= ',' . implode(',', $reviewers); - $target = trim($target, ','); + $subcontent->headTitle = $object->poolName; + $subcontent->parentType = 'demandpool'; + $subcontent->parent = $object->pool; + $subcontent->parentURL = "xxc:openInApp/zentao-integrated/" . urlencode($server . helper::createLink('demand', 'browse', "id=$object->pool", 'html')); + $subcontent->cardURL = $url; } else { @@ -179,7 +199,7 @@ class xuanxuanMessage extends messageModel $content = json_encode($contentData); $avatarUrl = $server . $this->app->getWebRoot() . 'favicon.ico'; - if($target && ($objectType == 'bug' || $objectType == 'task' || $objectType == 'story' || $objectType == 'feedback')) $this->loadModel('im')->messageCreateNotify($target, $title, $subtitle = '', $content, $contentType = 'object', $url, $actions = array(), $sender = array('id' => 'zentao', 'realname' => $this->lang->message->sender, 'name' => $this->lang->message->sender, 'avatar' => $avatarUrl)); + if($target && ($objectType == 'bug' || $objectType == 'task' || $objectType == 'story' || $objectType == 'feedback' || $objectType == 'demand' || $objectType == 'demandpool')) $this->loadModel('im')->messageCreateNotify($target, $title, $subtitle = '', $content, $contentType = 'object', $url, $actions = array(), $sender = array('id' => 'zentao', 'realname' => $this->lang->message->sender, 'name' => $this->lang->message->sender, 'avatar' => $avatarUrl)); if($objectType == 'mr' and is_array($this->lang->message->mr->$actionType) and !empty($object->assignee)) {