znt/module/webhook/tao.php

136 lines
5.7 KiB
PHP

<?php
declare(strict_types=1);
/**
* The tao file of webhook module of ZenTaoPMS.
*
* @copyright Copyright 2009-2021 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.cnezsoft.com)
* @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
* @author Sun Guangming <sunguangming@easycorp.ltd>
* @package kanban
* @version $Id: model.php 5118 2021-10-22 10:18:41Z $
* @link https://www.zentao.net
*/
class webhookTao extends webhookModel
{
/**
* 获取钉钉的密钥。
* Get the secret of dingding.
*
* @param object $webhook
* @access public
* @return object|false
*/
protected function getDingdingSecret(object $webhook): object|false
{
$webhook->secret = array();
$webhook->secret['agentId'] = $webhook->agentId;
$webhook->secret['appKey'] = $webhook->appKey;
$webhook->secret['appSecret'] = $webhook->appSecret;
if(empty($webhook->agentId)) dao::$errors['agentId'] = sprintf($this->lang->error->notempty, $this->lang->webhook->dingAgentId);
if(empty($webhook->appKey)) dao::$errors['appKey'] = sprintf($this->lang->error->notempty, $this->lang->webhook->dingAppKey);
if(empty($webhook->appSecret)) dao::$errors['appSecret'] = sprintf($this->lang->error->notempty, $this->lang->webhook->dingAppSecret);
if(dao::isError()) return false;
$webhook->secret = json_encode($webhook->secret);
$webhook->url = $this->config->webhook->dingapiUrl;
return $webhook;
}
/**
* 获取微信的密钥。
* Get the secret of wechat.
*
* @param object $webhook
* @access public
* @return object|false
*/
protected function getWeixinSecret(object $webhook): object|false
{
$webhook->secret = array();
$webhook->secret['agentId'] = $webhook->wechatAgentId;
$webhook->secret['appKey'] = $webhook->wechatCorpId;
$webhook->secret['appSecret'] = $webhook->wechatCorpSecret;
if(empty($webhook->wechatCorpId)) dao::$errors['wechatCorpId'] = sprintf($this->lang->error->notempty, $this->lang->webhook->wechatCorpId);
if(empty($webhook->wechatCorpSecret)) dao::$errors['wechatCorpSecret'] = sprintf($this->lang->error->notempty, $this->lang->webhook->wechatCorpSecret);
if(empty($webhook->wechatAgentId)) dao::$errors['wechatAgentId'] = sprintf($this->lang->error->notempty, $this->lang->webhook->wechatAgentId);
if(dao::isError()) return false;
$webhook->secret = json_encode($webhook->secret);
$webhook->url = $this->config->webhook->wechatApiUrl;
return $webhook;
}
/**
* 获取飞书的密钥。
* Get the secret of feishu.
*
* @param object $webhook
* @access public
* @return object|false
*/
protected function getFeishuSecret(object $webhook): object|false
{
$webhook->secret = array();
$webhook->secret['appId'] = $webhook->feishuAppId;
$webhook->secret['appSecret'] = $webhook->feishuAppSecret;
if(empty($webhook->feishuAppId)) dao::$errors['feishuAppId'] = sprintf($this->lang->error->notempty, $this->lang->webhook->feishuAppId);
if(empty($webhook->feishuAppSecret)) dao::$errors['feishuAppSecret'] = sprintf($this->lang->error->notempty, $this->lang->webhook->feishuAppSecret);
if(dao::isError()) return false;
$webhook->secret = json_encode($webhook->secret);
$webhook->url = $this->config->webhook->feishuApiUrl;
return $webhook;
}
/**
* 获取动作的文本。
* Get the text of action.
*
* @param object $data
* @param object $action
* @param object $object
* @param array $users
* @access public
* @return string
*/
protected function getActionText(object $data, object $action, object $object, array $users): string
{
$text = '';
if(isset($data->markdown->text))
{
$text = substr($data->markdown->text, 0, strpos($data->markdown->text, '(http'));
}
elseif(isset($data->markdown->content))
{
$text = substr($data->markdown->content, 0, strpos($data->markdown->content, '(http'));
}
elseif(isset($data->text->content))
{
$text = substr($data->text->content, 0, strpos($data->text->content, '(http'));
}
elseif(isset($data->card->elements))
{
$text = $data->card->elements[0]->content;
$text = substr($text, 0, strpos($text, '(http')) ? substr($text, 0, strpos($text, '(http')) : zget($users, $data->user, $this->app->user->realname) . $this->lang->action->label->{$action->action} . $this->lang->action->objectTypes[$action->objectType] . "[#{$action->objectID}::{$object->$field}]";
}
elseif(isset($data->content))
{
$text = empty($data->content->text) ? '' : (string)$data->content->text;
$text = substr($text, 0, strpos($text, '(http')) ? substr($text, 0, strpos($text, '(http')) : zget($users, $data->user, $this->app->user->realname) . $this->lang->action->label->{$action->action} . $this->lang->action->objectTypes[$action->objectType] . "[#{$action->objectID}::{$object->$field}]";
}
else
{
$text = substr($data->text, 0, strpos($data->text, '(http')) ? substr($data->text, 0, strpos($data->text, '(http')) : zget($users, $data->user, $this->app->user->realname) . $this->lang->action->label->{$action->action} . $this->lang->action->objectTypes[$action->objectType] . "[#{$action->objectID}::{$object->$field}]";
}
return $text;
}
}