SugarCrm:如何找到逻辑钩子的调用者

SugarCrm:如何找到逻辑钩子的调用者,sugarcrm,suitecrm,Sugarcrm,Suitecrm,假设我们在Lead上有一个before save逻辑钩子,现在我们如何检测这个所谓的逻辑钩子是: 正在保存潜在客户表单的crm用户 是否从多个入口点捕获潜在客户 是由soap调用触发的保存 是一个正在修改潜在客户字段的工作流 由于csv导入而调用 ... 我已经检查了一些行为,似乎至少在我的测试中,工作流上没有调用逻辑挂钩 我也希望在全局变量中解决这个问题,但是有很多全局变量。 那么如何检测逻辑钩子的调用方呢?我发现解决这个问题的最好方法是添加一个: $GLOBALS['log']->fa

假设我们在Lead上有一个before save逻辑钩子,现在我们如何检测这个所谓的逻辑钩子是:

正在保存潜在客户表单的crm用户 是否从多个入口点捕获潜在客户 是由soap调用触发的保存 是一个正在修改潜在客户字段的工作流 由于csv导入而调用 ... 我已经检查了一些行为,似乎至少在我的测试中,工作流上没有调用逻辑挂钩 我也希望在全局变量中解决这个问题,但是有很多全局变量。
那么如何检测逻辑钩子的调用方呢?

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

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

你的逻辑钩。然后测试您需要考虑的每个场景,并查看请求的差异。同时检查$\u会话。你将能够找到一些你的逻辑可以依赖的东西。

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

在第三方入口点调用中,$\会话为空,而在直接入口点调用中则不是这样。另外,在rest调用中,会话不是空的。 rest调用有$\u请求[rest\u数据],其他调用没有。 入口点调用在数组中有可用的$u请求[entryPoint] 全局$current\u user可用,但id var$current\u user->id仅在用户在crm中提交表单时才是字符串。 在内联编辑中,$\u请求[action]等于saveHTMLField 在用户调用中,$\u服务器[HTTP\u user\u AGENT]可用,而在其他调用中则不可用。 在一个简单的例子中,此代码显示了如何检测用户调用:

$trigger = false;
global $current_user;
if (!isset($current_user->id) || !strlen($current_user->id) > 2)
    $trigger = true;
if ($trigger) {
    //#My Custome Code
}