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));
 }
示例#2
0
 /**
  * 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;
 }
示例#4
0
 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;
 }