我必须创建一个新角色说“主代理”。他下面会有一些用户。这个信息我将保存在数据库表中。当此主代理登录时,我应该只显示分配给他下的用户的那些潜在客户。
当我以管理员身份登录时,我看到了所有潜在客户。 当我以用户身份登录时,我只看到分配给该特定用户的那些潜在客户。
我想操纵搜索逻辑,以便查看master agent
下分配给用户的所有潜在客户。
我一直在分析并查看create_new_list_query()
文件中的函数LeadsInListView
以及负责搜索功能的data/SugarBean.php
处的相同函数。该函数非常混淆了它如何执行搜索逻辑。
请帮助操纵搜索逻辑以包含新角色。
提前致谢。
答案 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.'" ';
我希望这会帮助你,解决你的任务..
帕特里克