public function testbuild_related_list_by_user_id() { error_reporting(E_ERROR | E_PARSE); //execute the method and test if it returns true //with rel_users_table manually set $bean = new User(); $bean->rel_users_table = 'users_signatures'; $list = build_related_list_by_user_id($bean, '1', ''); $this->assertTrue(is_array($list)); //with rel_users_table set by default $bean = new Meeting(); $list = build_related_list_by_user_id($bean, '1', ''); $this->assertTrue(is_array($list)); }
/** * Get array of activities * @param string $user_id * @param boolean $show_tasks * @param SugarDateTime $view_start_time start date * @param SugarDateTime $view_end_time end date * @param string $view view; not used for now, left for compatibility * @param boolean $show_calls * @param boolean $show_completed use to allow filtering completed events * @return array */ function get_activities($user_id, $show_tasks, $view_start_time, $view_end_time, $view, $show_calls = true, $show_completed = true) { global $current_user; $act_list = array(); $seen_ids = array(); $completedCalls = ''; $completedMeetings = ''; $completedTasks = ''; if (!$show_completed) { $completedCalls = " AND calls.status = 'Planned' "; $completedMeetings = " AND meetings.status = 'Planned' "; $completedTasks = " AND tasks.status != 'Completed' "; } // get all upcoming meetings, tasks due, and calls for a user if (ACLController::checkAccess('Meetings', 'list', $current_user->id == $user_id)) { $meeting = new Meeting(); if ($current_user->id == $user_id) { $meeting->disable_row_level_security = true; } $where = self::get_occurs_until_where_clause($meeting->table_name, $meeting->rel_users_table, $view_start_time, $view_end_time, 'date_start', $view); $where .= $completedMeetings; $focus_meetings_list = build_related_list_by_user_id($meeting, $user_id, $where); foreach ($focus_meetings_list as $meeting) { if (isset($seen_ids[$meeting->id])) { continue; } $seen_ids[$meeting->id] = 1; $act = new CalendarActivity($meeting); if (!empty($act)) { $act_list[] = $act; } } } if ($show_calls) { if (ACLController::checkAccess('Calls', 'list', $current_user->id == $user_id)) { $call = new Call(); if ($current_user->id == $user_id) { $call->disable_row_level_security = true; } $where = CalendarActivity::get_occurs_within_where_clause($call->table_name, $call->rel_users_table, $view_start_time, $view_end_time, 'date_start', $view); $where .= $completedCalls; $focus_calls_list = build_related_list_by_user_id($call, $user_id, $where); foreach ($focus_calls_list as $call) { if (isset($seen_ids[$call->id])) { continue; } $seen_ids[$call->id] = 1; $act = new CalendarActivity($call); if (!empty($act)) { $act_list[] = $act; } } } } if ($show_tasks) { if (ACLController::checkAccess('Tasks', 'list', $current_user->id == $user_id)) { $task = new Task(); $where = CalendarActivity::get_occurs_within_where_clause('tasks', '', $view_start_time, $view_end_time, 'date_due', $view); $where .= " AND tasks.assigned_user_id='{$user_id}' "; $where .= $completedTasks; $focus_tasks_list = $task->get_full_list("", $where, true); if (!isset($focus_tasks_list)) { $focus_tasks_list = array(); } foreach ($focus_tasks_list as $task) { $act = new CalendarActivity($task); if (!empty($act)) { $act_list[] = $act; } } } } return $act_list; }
/** * Get array of activities * @param array $activities * @param string $user_id * @param boolean $show_tasks * @param SugarDateTime $view_start_time start date * @param SugarDateTime $view_end_time end date * @param string $view view; not used for now, left for compatibility * @param boolean $show_calls * @param boolean $show_completed use to allow filtering completed events * @return array */ function get_activities($activities, $user_id, $show_tasks, $view_start_time, $view_end_time, $view, $show_calls = true, $show_completed = true) { global $current_user; global $beanList; $act_list = array(); $seen_ids = array(); $completedCalls = ''; $completedMeetings = ''; $completedTasks = ''; if (!$show_completed) { $completedCalls = " AND calls.status = 'Planned' "; $completedMeetings = " AND meetings.status = 'Planned' "; $completedTasks = " AND tasks.status != 'Completed' "; } foreach ($activities as $key => $activity) { if (ACLController::checkAccess($key, 'list', true)) { /* END - SECURITY GROUPS */ $class = $beanList[$key]; $bean = new $class(); if ($current_user->id == $user_id) { $bean->disable_row_level_security = true; } $where = self::get_occurs_until_where_clause($bean->table_name, $bean->rel_users_table, $view_start_time, $view_end_time, $activity['start'], $activity['end'], $view); if ($key == "Meeting") { $where .= $completedMeetings; } elseif ($key == "Calls") { $where .= $completedCalls; if (!$show_calls) { continue; } } elseif ($key == "Tasks") { $where .= $completedTasks; if (!$show_tasks) { continue; } } $focus_list = build_related_list_by_user_id($bean, $user_id, $where); foreach ($focus_list as $focusBean) { if (isset($seen_ids[$focusBean->id])) { continue; } /* BEGIN - SECURITY GROUPS */ //Show as busy if current user is not in a group associated to the record require_once "modules/SecurityGroups/SecurityGroup.php"; $in_group = SecurityGroup::groupHasAccess($key, $focusBean->id, 'list'); $show_as_busy = !ACLController::checkAccess($key, 'list', $current_user->id == $user_id, 'module', $in_group); $focusBean->show_as_busy = $show_as_busy; /* END - SECURITY GROUPS */ $seen_ids[$focusBean->id] = 1; $act = new CalendarActivity($focusBean); if (!empty($act)) { $act_list[] = $act; } } } } return $act_list; }
function get_activities($user_id, $show_tasks, $view_start_time, $view_end_time, $view) { global $current_user; $act_list = array(); $seen_ids = array(); // get all upcoming meetings, tasks due, and calls for a user /* BEGIN - SECURITY GROUPS */ /** if(ACLController::checkAccess('Meetings', 'list', $current_user->id == $user_id)) { */ if (ACLController::checkAccess('Meetings', 'list', true)) { //$current_user->id == $user_id)) { /* END - SECURITY GROUPS */ $meeting = new Meeting(); if ($current_user->id == $user_id) { $meeting->disable_row_level_security = true; } $where = CalendarActivity::get_occurs_within_where_clause($meeting->table_name, $meeting->rel_users_table, $view_start_time, $view_end_time, 'date_start', $view); $focus_meetings_list = build_related_list_by_user_id($meeting, $user_id, $where); foreach ($focus_meetings_list as $meeting) { if (isset($seen_ids[$meeting->id])) { continue; } /* BEGIN - SECURITY GROUPS */ require_once "modules/SecurityGroups/SecurityGroup.php"; $in_group = SecurityGroup::groupHasAccess('Meetings', $meeting->id, 'list'); $show_as_busy = !ACLController::checkAccess('Meetings', 'list', $current_user->id == $user_id, 'module', $in_group); $meeting->show_as_busy = $show_as_busy; /* END - SECURITY GROUPS */ $seen_ids[$meeting->id] = 1; $act = new CalendarActivity($meeting); if (!empty($act)) { $act_list[] = $act; } } } /* BEGIN - SECURITY GROUPS */ // get all upcoming meetings, tasks due, and calls for a user /** if(ACLController::checkAccess('Calls', 'list',$current_user->id == $user_id)) { */ if (ACLController::checkAccess('Calls', 'list', true)) { //$current_user->id == $user_id)) { $show_as_busy = !ACLController::checkAccess('Calls', 'list', $current_user->id == $user_id); /* END - SECURITY GROUPS */ $call = new Call(); if ($current_user->id == $user_id) { $call->disable_row_level_security = true; } $where = CalendarActivity::get_occurs_within_where_clause($call->table_name, $call->rel_users_table, $view_start_time, $view_end_time, 'date_start', $view); $focus_calls_list = build_related_list_by_user_id($call, $user_id, $where); foreach ($focus_calls_list as $call) { if (isset($seen_ids[$call->id])) { continue; } /* BEGIN - SECURITY GROUPS */ require_once "modules/SecurityGroups/SecurityGroup.php"; $in_group = SecurityGroup::groupHasAccess('Calls', $call->id, 'list'); $show_as_busy = !ACLController::checkAccess('Calls', 'list', $current_user->id == $user_id, 'module', $in_group); $call->show_as_busy = $show_as_busy; /* END - SECURITY GROUPS */ $seen_ids[$call->id] = 1; $act = new CalendarActivity($call); if (!empty($act)) { $act_list[] = $act; } } } if ($show_tasks) { /* BEGIN - SECURITY GROUPS */ // get all upcoming meetings, tasks due, and calls for a user /** if(ACLController::checkAccess('Tasks', 'list',$current_user->id == $user_id)) { */ if (ACLController::checkAccess('Tasks', 'list', true)) { //$current_user->id == $user_id)) { $show_as_busy = !ACLController::checkAccess('Tasks', 'list', $current_user->id == $user_id); /* END - SECURITY GROUPS */ $task = new Task(); $where = CalendarActivity::get_occurs_within_where_clause('tasks', '', $view_start_time, $view_end_time, 'date_due', $view); $where .= " AND tasks.assigned_user_id='{$user_id}' "; $focus_tasks_list = $task->get_full_list("", $where, true); if (!isset($focus_tasks_list)) { $focus_tasks_list = array(); } foreach ($focus_tasks_list as $task) { /* BEGIN - SECURITY GROUPS */ require_once "modules/SecurityGroups/SecurityGroup.php"; $in_group = SecurityGroup::groupHasAccess('Tasks', $task->id, 'list'); $show_as_busy = !ACLController::checkAccess('Tasks', 'list', $current_user->id == $user_id, 'module', $in_group); $task->show_as_busy = $show_as_busy; /* END - SECURITY GROUPS */ $act = new CalendarActivity($task); if (!empty($act)) { $act_list[] = $act; } } } } usort($act_list, 'sort_func_by_act_date'); return $act_list; }