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

时间:2015-11-12 16:09:41

标签: sugarcrm suitecrm

假设我们在引导线上有一个前保存逻辑钩子,现在我们如何检测这个被称为逻辑钩子的是:

  
      
  • 正在保存潜在客户表单的crm用户
  •   
  • 是从入口点开始捕获的线索
  •   
  • 是由肥皂来电启动的保存
  •   
  • 是修改潜在客户字段的工作流程
  •   由于csv import
    而被调用
  •   
  • ...
  •   

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

2 个答案:

答案 0 :(得分:0)

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

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

你的逻辑钩子。然后测试您需要考虑的每个方案,并查看请求的不同之处。还要检查$ _SESSION。您将能够找到一些您可以依赖的逻辑。

答案 1 :(得分:0)

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

  
      
  • 在第三方入口点呼叫$_SESSION为空,在直接入口点呼叫不是这样。在休息时,会话也不是空的。
  •   
  • 其他来电有$_REQUEST[rest_data]而有些则没有。
  •   
  • 数组中的入口点调用$_REQUEST[entryPoint]
  •   
  • 全局$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
}