sugarcrm - 引导模块的搜索逻辑

时间:2014-10-14 08:45:31

标签: sugarcrm

我必须创建一个新角色说“主代理”。他下面会有一些用户。这个信息我将保存在数据库表中。当此主代理登录时,我应该只显示分配给他下的用户的那些潜在客户。

当我以管理员身份登录时,我看到了所有潜在客户。 当我以用户身份登录时,我只看到分配给该特定用户的那些潜在客户。

我想操纵搜索逻辑,以便查看master agent下分配给用户的所有潜在客户。

我一直在分析并查看create_new_list_query()文件中的函数LeadsInListView以及负责搜索功能的data/SugarBean.php处的相同函数。该函数非常混淆了它如何执行搜索逻辑。

请帮助操纵搜索逻辑以包含新角色。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以通过将以下文件添加到:

来自定义潜在客户'ListView
<SUGAR_PATH>/custom/modules/Leads/view/view.list.php 

(如果此目录不存在,请创建它,同时创建view.list.php文件)

并添加以下代码

<?php

require_once('include/MVC/View/views/view.list.php');

class LeadsViewList extends ViewList {

    function listViewProcess() {
        global $current_user;
        $uId = $current_user->id;
        $this->processSearchForm();
        // remove this condition, if your Admin should not see all Leads..
        if(!$current_user->is_admin) {
            // Select From Leads and make a inner join on Users Table to get all users, which reports to
            // if you have the Relationship between your master_agent and his worker in another table, join this..
            $this->params['custom_from'] = ' inner join (select id from users u where u.reports_to_id = "'.$uId.'") as p ';
            $this->params['custom_where'] = ' AND p.id = leads.assigned_user_id ';
        }

        if (empty($_REQUEST['search_form_only']) || $_REQUEST['search_form_only'] == false) {
            $this->lv->setup($this->seed, 'include/ListView/ListViewGeneric.tpl', $this->where, $this->params);
            $savedSearchName = empty($_REQUEST['saved_search_select_name']) ? '' : (' - ' . $_REQUEST['saved_search_select_name']);
            echo $this->lv->display();
        }
    }

}
?>

现在,您可以使用Master_Agent帐户登录,并查看所有工作人员的潜在客户。但请注意,现在Leads的ListView是自定义的,只显示Master_Agent的Workers的记录。如果您还想显示Master_Agents的Leads,请像这样扩展custom_where子句:

$this->params['custom_where'] = ' AND p.id = leads.assigned_user_id OR assigned_user_id = "'.$uId.'" ';

我希望这会帮助你,解决你的任务..

帕特里克