/** * Send overdue tasks * * @access public */ public function sendOverdueTaskNotifications(InputInterface $input) { $tasks = $this->taskFinder->getOverdueTasks(); if ($input->getOption('group')) { $user_tasks = array(); $user_by_task = array(); $projects = array(); foreach ($this->groupByColumn($tasks, 'project_id') as $project_id => $project_tasks) { $users = $this->userNotification->getUsersWithNotificationEnabled($project_id); foreach ($users as $user) { foreach ($project_tasks as $task) { if ($this->userNotificationFilter->shouldReceiveNotification($user, array('task' => $task))) { $user_tasks[$user['id']][] = $task; $user_by_task[$user['id']][] = $user; $projects[$user['id']][$task['project_id']] = $task['project_name']; } } } } if (!empty($user_tasks)) { $this->sendGroupUserOverdueTaskNotifications($user_tasks, $user_by_task, $projects); } } else { foreach ($this->groupByColumn($tasks, 'project_id') as $project_id => $project_tasks) { $users = $this->userNotification->getUsersWithNotificationEnabled($project_id); foreach ($users as $user) { $this->sendUserOverdueTaskNotifications($user, $project_tasks); } } } if ($input->getOption('admin')) { $overdue_tasks = array(); $projects = array(); $project_managers = array(); foreach ($this->groupByColumn($tasks, 'project_id') as $project_id => $project_tasks) { $users = $this->userNotification->getUsersWithNotificationEnabled($project_id); foreach ($project_tasks as $task) { $managers = ProjectPermission::getManagers($task['project_id']); $overdue_tasks[$project_id][] = $task; $projects[$task['project_id']] = $task['project_name']; $project_managers[$task['project_id']] = $managers; } } if (!empty($overdue_tasks)) { $this->sendOverdueTaskNotificationsToAdmin($overdue_tasks, $projects, $project_managers); } } return $tasks; }