从Oracle RightNow的客户门户中的事件报告中删除内置过滤器联系人ID



这是关于在客户门户上显示基于"组织"的"事件报告"。我们将在输入框中输入本组织,然后点击"提交"。事件报告应仅为该组织显示。

这正在发生,但是"登录"联系人Id (c_id)也被作为过滤器传递到事件报告。

是否有可能删除对上述事件报告施加的c_id过滤器?如何从事件报告中删除此联系人ID过滤器?

有人建议使用pre_report_get_data钩子,然后取消设置联系人ID (c_id)过滤器。但是我不知道该怎么做。

有人能给我一个代码片段,以删除c_id过滤器使用pre_report_get_data挂钩?或者其他解决方法

将要编辑的报告复制到新版本,然后根据需要编辑报告的过滤器。您将无法直接编辑默认的罐装报告,但使用副本,您可以完全编辑它。

<标题>编辑

联系人过滤器总是应用于Customer Portal过滤器,因为Customer Portal上的用户模型。CP期望web上的用户是一个特定的客户,并且应该只能访问用户会话中特定于特定联系人的联系人数据。这是一种安全机制,并按预期工作。

如果目标是显示可能与之相关的联系人数据的报告中的数据,但应该向所有联系人公开,那么您可能应该编写一个直接运行ROQL或Analytics API查询的自定义小部件,但如果实现不正确,则要警惕暴露其他客户数据的可能性。

如果您想使用pre_report_get_data钩子,那么在settings/hooks.php文件中启用该钩子非常简单。将钩子指向你想让钩子调用的模型和方法。然后,编辑传递的数据数组,从过滤器数组中取消设置c_id,正如在另一篇文章中提到的。

$rnHooks['pre_report_get'][] = array(
   'class' => 'filter_report',
   'function' => 'report_run',
   'filepath' => ''
); 

告诉钩子引擎调用filter_report模型中的report_run()方法。这些是CP中典型的示例代码文件,因此您应该已经完成了实现该钩子的大部分工作。

function report_run($hookData)
{
    if($hookData['data']['reportId'] == '100335') //Change the report ID to the report that you need to call  
    {
        unset($hookData['data']['filters']['c_id']); //you'll need to lookup the key of the filter in the report to figure out which one to unset
    }
}

相关内容

  • 没有找到相关文章

最新更新