0

假设我们在线索上有一个保存前的逻辑钩子,现在我们如何检测这个所谓的逻辑钩子是否是:

  • 正在保存潜在客户表单的 crm 用户
  • 是从一个入口点捕获的线索
  • 是由肥皂调用触发的保存
  • 是修改潜在客户字段的工作流
  • 由于 csv 导入而被调用
  • ...

我检查了一些行为,似乎没有在工作流上调用逻辑钩子(至少在我的测试中)
我希望在全局变量中找出这个问题,但是有很多全局变量。
那么我如何检测逻辑钩子的调用者呢?

4

2 回答 2

0

我发现解决这个问题的最好方法是添加:

$GLOBALS['log']->fatal(print_r($_REQUEST,true));

到你的逻辑钩子。然后测试您需要考虑的每个场景并查看请求有何不同。还要检查 $_SESSION。您将能够找到一些您的逻辑可以依赖的东西。

于 2015-11-12T17:57:55.493 回答
0

这就是我最终所做的。我分享了我的一些观察结果,因此它可能对其他人有所帮助(这些是陈述,基于其中一些可能适用的情况)

  • 在第三方入口点调用$_SESSION中是空的,在直接入口点调用中不是这样。同样在休息通话会话中也不为空。
  • 休息电话有$_REQUEST[rest_data],其他电话没有。
  • 入口点调用$_REQUEST[entryPoint]在数组中可用
  • global$current_user可用,但 id var ( $current_user->id) 仅在用户在 crm 中提交表单的情况下为字符串。
  • 在内联编辑$_REQUEST[action]中等于saveHTMLField
  • 在用户调用$_SERVER[HTTP_USER_AGENT]中可用,而在其他调用中则不可用。

在一个简单的例子中,这段代码展示了如何检测用户调用:

$trigger = false;
global $current_user;
if (!isset($current_user->id) || !strlen($current_user->id) > 2)
    $trigger = true;
if ($trigger) {
    //#My Custome Code
}
于 2015-11-12T19:49:34.540 回答