znt/module/webhook/zen.php

93 lines
3.5 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
declare(strict_types=1);
/**
* The zen file of webhook module of ZenTaoPMS.
*
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
* @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
* @author Sun Guangming<sunguangming@easysoft.ltd>
* @package webhook
* @link https://www.zentao.net
*/
class webhookZen extends webhook
{
/**
* 通过API获取人员列表。
* Get users by API.
*
* @param object $webhook
* @access public
* @return array
*/
protected function getResponse(object $webhook): array
{
$response = array();
$selectedDepts = $this->cookie->selectedDepts ? $this->cookie->selectedDepts : '';
if($webhook->type == 'dinguser')
{
$this->app->loadClass('dingapi', true);
$dingapi = new dingapi($webhook->secret->appKey, $webhook->secret->appSecret, $webhook->secret->agentId);
$response = $dingapi->getUsers($selectedDepts);
}
elseif($webhook->type == 'wechatuser')
{
$this->app->loadClass('wechatapi', true);
$wechatApi = new wechatapi($webhook->secret->appKey, $webhook->secret->appSecret, $webhook->secret->agentId);
$response = $wechatApi->getAllUsers();
}
elseif($webhook->type == 'feishuuser')
{
$this->app->loadClass('feishuapi', true);
$feishuApi = new feishuapi($webhook->secret->appId, $webhook->secret->appSecret);
$response = $feishuApi->getAllUsers($selectedDepts);
}
$this->view->selectedDepts = $selectedDepts;
return $response;
}
/**
* 获取已绑定的open_id键值对并追加未查询出的open_id。
* Get bound open_id and name pairs, and append no fetch oauth users.
*
* @param object $webhook
* @param array $users
* @param array $boundUsers
* @param array $oauthUsers
* @access public
* @return array
*/
public function getBoundUseridPairs(object $webhook, array $users, array $boundUsers, array $oauthUsers): array
{
$boundUseridPairs = array();
$useridPairs = array_flip($oauthUsers);
$noFetchOauth = array();
foreach($users as $user)
{
if(isset($boundUsers[$user->account])) $userid = $boundUsers[$user->account];
if(isset($oauthUsers[$user->realname])) $userid = $oauthUsers[$user->realname];
if(!isset($userid)) continue;
if(!isset($useridPairs[$userid])) $noFetchOauth[$userid] = $userid;
$boundUseridPairs[$userid] = zget($useridPairs, $userid);
}
if($noFetchOauth)
{
if($webhook->type == 'dinguser')
{
$this->app->loadClass('dingapi', true);
$dingapi = new dingapi($webhook->secret->appKey, $webhook->secret->appSecret, $webhook->secret->agentId);
foreach($dingapi->batchGetUsers($noFetchOauth) as $userid => $name) $boundUseridPairs[$userid] = $name;
}
elseif($webhook->type == 'feishuuser')
{
$this->app->loadClass('feishuapi', true);
$feishuApi = new feishuapi($webhook->secret->appId, $webhook->secret->appSecret);
foreach($feishuApi->batchGetUsers($noFetchOauth) as $openid => $name) $boundUseridPairs[$openid] = $name;
}
}
return $boundUseridPairs;
}
}