简单的理解,BearycChat是一种IM,是一种能聚合各种MS系统消息的东西,是团队协作过程中消息流转的利器。

我是工具控,所以不折腾不舒服。

废话不说,上码:

/path_to_zentao/module/action/ext/model/logHistory.php

<?php

/**
* Log histories for an action.
*
* @param int $actionID
* @param array $changes
* @access public
* @return void
*/
public function logHistory($actionID, $changes)
{
foreach($changes as $change)
{
$change['action'] = $actionID;
$result = $this->dao->insert(TABLE_HISTORY)->data($change)->exec(); //bearychat notice
$this->notifyBearychat($actionID, $change['new']);
}
} protected function notifyBearychat($actionID, $text) {
$action = $this->dao->select('*')->from(TABLE_ACTION)
->where('id')->eq($actionID)
->fetch(); $_actions = $this->loadModel('action')->transformActions(array($action));
$action = $_actions[0]; $title = strip_tags(sprintf("%s, %s <em>%s</em> %s %s %s。", $action->date, $action->actor, $action->actionLabel, $action->objectLabel, $action->objectName, 'http://'.(isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '')) . $action->objectLink)); return $this->curlPostPayload2Bearychat($title, $text);//, 'project-' . $action->project . ''
} protected function curlPostPayload2Bearychat($title, $text, $channel = 'pms') { $url = 'https://hook.bearychat.com/your_self_params';//简单的定义于此 $str = array('payload' => json_encode(array('text' => $title, 'markdown' => true, 'channel' => $channel, 'attachments' => array(array('text' => strip_tags($text))))));//
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $str); if (substr($url, 0, 8) == "https://")
{
$opt[CURLOPT_SSL_VERIFYHOST] = 1;
$opt[CURLOPT_SSL_VERIFYPEER] = FALSE;
}
curl_setopt_array($ch, $opt);
curl_exec($ch);
curl_close($ch);
}

最新文章

  1. 取代SharedPreferences的多进程解决方案
  2. iOS之 清理缓存
  3. java -- getOutputStream() has already been called for
  4. AFN设置请求超时时间
  5. JavaBean的toString方法工具类
  6. asp.net还原备份数据库(C#)
  7. 移动端开发(使用webuploader上传图片,客户端交互,修改alert弹窗等)
  8. kafka介绍和集群环境搭建
  9. 只为粗暴看一下ES6的字符串模板的性能
  10. 为何webpack打包后的文件要放在服务器上才能运行
  11. myeclipse中git的使用
  12. [LeetCode] Prime Number of Set Bits in Binary Representation 二进制表示中的非零位个数为质数
  13. windows+Apache+mod_wsgi+flask部署笔记
  14. C#关于xml文件和TreeView之间的转换解析
  15. Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#&lt;Object&gt;‘的解决方法
  16. Unity应用架构设计(1)—— MVVM 模式的设计和实施(Part 2)
  17. 文件打包(.zip)并返回打压缩包存放路径
  18. (转)python类:magic魔术方法
  19. Spark记录-Scala类与对象小例子
  20. js获取网页的url文件名( 例如index.aspx),js获取url的参数(例如获取 ?cid=joeylee的值),给jquery拓展方法

热门文章

  1. Java程序员的日常 —— 注册工厂的妙用
  2. Atitit.异步的实现模式attilax大总结
  3. 【管理心得之三十八】如果“Q”不是高富帅,也吸引不了白富美“A”
  4. jquery 插件开发
  5. C++生成二级制文件过程(预处理-&gt;编译-&gt;链接 )
  6. MVC利用URLRoute实现伪静态
  7. localStorage使用
  8. 记一次裸迁 MySQL 经历
  9. chrome开发总结(交互/权限/存储)-爬虫
  10. Entity Framework 5中应用表值函数进行Linq查询