type) { return; } $task = Task::findOrFail($comment->task_id); if ( ! $task) { return; } // $assignees = $task->assignees; $board = $task->board; $page_url = fluent_boards_page_url(); $user = $task->user($comment->created_by); $userData = $this->getUserData($current_user_id); $boardUrl = $page_url.'boards/'.$board->id; $taskUrl = $page_url.'boards/'.$board->id.'/tasks/'.$task->id.'-' .substr($task->title, 0, 10); $userLinkTag = ''.htmlspecialchars($user->display_name) .''; $taskLinkTag = '' .htmlspecialchars($task->title).''; $boardLinkTag = '' .htmlspecialchars($board->title).''; $data = [ 'body' => 'commented on '.$taskLinkTag.' on ' .$boardLinkTag.' board.', 'pre_header' => 'comment added in fluent task', 'show_footer' => true, 'comment' => $comment->description, 'userData' => $userData, 'site_url' => site_url(), 'site_title' => get_bloginfo('name'), 'site_logo' => fluent_boards_site_logo(), ]; $mailSubject = 'new comment added on task'; $message = Helper::loadView('emails.comment2', $data); $headers = ['Content-Type: text/html; charset=UTF-8']; foreach ($usersToSendEmail as $email) { \wp_mail($email, $mailSubject, $message, $headers); } } catch (\Exception $e) { // do nothing // better to log here } } public function sendEmailForAddAssignee( $taskId, $newAssigneeId, $current_user_id ) { try { $task = Task::findOrFail($taskId); $board = $task->board; $assignee = User::findOrFail($newAssigneeId); $userData = $this->getUserData($current_user_id); $page_url = fluent_boards_page_url(); $boardUrl = $page_url.'boards/'.$board->id; $boardLinkTag = '' .htmlspecialchars($board->title).''; if (null == $task->parent_id) { // this is a task $taskUrl = $page_url.'boards/'.$board->id.'/tasks/' .$task->id.'-'.substr($task->title, 0, 10); $taskLinkTag = '' .htmlspecialchars($task->title).''; $data = [ 'body' => 'has assigned you to task '.$taskLinkTag .' on the board '.$boardLinkTag, 'pre_header' => 'you have been assigned to task', 'show_footer' => true, 'userData' => $userData, 'site_url' => site_url(), 'site_title' => get_bloginfo('name'), 'site_logo' => fluent_boards_site_logo(), ]; } else { // this is a subtask $task = $task->parentTask($task->parent_id); $taskUrl = $page_url.'boards/'.$board->id.'/tasks/' .$task->id.'-'.substr($task->title, 0, 10); $taskLinkTag = '' .htmlspecialchars($task->title).''; $data = [ 'body' => 'has assigned you to subtask ' .$task->title.' of task ' .$taskLinkTag.' on the board ' .$boardLinkTag, 'pre_header' => 'you have been assigned to subtask', 'show_footer' => true, 'user' => $assignee, 'userData' => $userData, 'site_url' => site_url(), 'site_title' => get_bloginfo('name'), 'site_logo' => fluent_boards_site_logo(), ]; } $mailSubject = 'You have been assigned to task'; $message = Helper::loadView('emails.assignee2', $data); $headers = ['Content-Type: text/html; charset=UTF-8']; \wp_mail($assignee->user_email, $mailSubject, $message, $headers); } catch (\Exception $e) { throw new \Exception('Error in sending mail to new assignees', 1); } } public function sendEmailForRemoveAssignee( $taskId, $newAssigneeId, $current_user_id ) { try { $task = Task::findOrFail($taskId); $board = $task->board; $assignee = User::findOrFail($newAssigneeId); $userData = $this->getUserData($current_user_id); $page_url = fluent_boards_page_url(); $boardUrl = $page_url.'boards/'.$board->id; $boardLinkTag = '' .htmlspecialchars($board->title).''; if (null == $task->parent_id) { // this is a task $taskUrl = $page_url.'boards/'.$board->id.'/tasks/' .$task->id.'-'.substr($task->title, 0, 10); $taskLinkTag = '' .htmlspecialchars($task->title).''; $data = [ 'body' => 'has removed you from task '.$taskLinkTag .' on the board '.$boardLinkTag, 'pre_header' => 'you have been removed from task', 'show_footer' => true, 'userData' => $userData, 'site_url' => site_url(), 'site_title' => get_bloginfo('name'), 'site_logo' => fluent_boards_site_logo(), ]; } else { // this is a subtask $task = $task->parentTask($task->parent_id); $taskUrl = $page_url.'boards/'.$board->id.'/tasks/' .$task->id.'-'.substr($task->title, 0, 10); $taskLinkTag = '' .htmlspecialchars($task->title).''; $data = [ 'body' => 'has removed you from subtask ' .$task->title.' of task ' .$taskLinkTag.' on the board ' .$boardLinkTag, 'pre_header' => 'you have been removed from subtask', 'show_footer' => true, 'userData' => $userData, ]; } $mailSubject = 'You have been removed from task'; $message = Helper::loadView('emails.assignee2', $data); $headers = ['Content-Type: text/html; charset=UTF-8']; \wp_mail($assignee->user_email, $mailSubject, $message, $headers); } catch (\Exception $e) { throw new \Exception('Error in sending mail to new assignees', 1); } } public function sendEmailForChangeStage( $taskId, $newAssigneeEmails, $current_user_id ) { try { $task = Task::findOrFail($taskId); $board = $task->board; $userData = $this->getUserData($current_user_id); $page_url = fluent_boards_page_url(); $boardUrl = $page_url.'boards/'.$board->id; $boardLinkTag = '' .htmlspecialchars($board->title).''; $taskUrl = $page_url.'boards/'.$board->id.'/tasks/'.$task->id .'-'.substr($task->title, 0, 10); $taskLinkTag = '' .htmlspecialchars($task->title).''; $data = [ 'body' => 'has moved '.$taskLinkTag.' task to ' .$task->stage->title .' stage of board '.$boardLinkTag, 'pre_header' => 'Task stage has been changed', 'show_footer' => true, 'userData' => $userData, 'site_url' => site_url(), 'site_title' => get_bloginfo('name'), 'site_logo' => fluent_boards_site_logo(), ]; $mailSubject = 'Task stage has been changed'; $message = Helper::loadView('emails.assignee2', $data); $headers = ['Content-Type: text/html; charset=UTF-8']; foreach ($newAssigneeEmails as $assignee_email) { \wp_mail($assignee_email, $mailSubject, $message, $headers); } } catch (\Exception $e) { throw new \Exception('Error in sending mail to new assignees', 1); } } public function sendEmailForDueDateUpdate( $taskId, $newAssigneeEmails, $current_user_id ) { try { $task = Task::findOrFail($taskId); $board = $task->board; $userData = $this->getUserData($current_user_id); $page_url = fluent_boards_page_url(); $boardUrl = $page_url.'boards/'.$board->id; $boardLinkTag = '' .htmlspecialchars($board->title).''; $taskUrl = $page_url.'boards/'.$board->id.'/tasks/'.$task->id .'-'.substr($task->title, 0, 10); $taskLinkTag = '' .htmlspecialchars($task->title).''; $data = [ 'body' => 'has updated due date of '.$taskLinkTag .' task to '.$task->due_at .' of board '.$boardLinkTag, 'pre_header' => 'Task due date has been changed', 'show_footer' => true, 'userData' => $userData, 'site_url' => site_url(), 'site_title' => get_bloginfo('name'), 'site_logo' => fluent_boards_site_logo(), ]; $mailSubject = 'Task due date has been changed'; $message = Helper::loadView('emails.assignee2', $data); $headers = ['Content-Type: text/html; charset=UTF-8']; foreach ($newAssigneeEmails as $assignee_email) { \wp_mail($assignee_email, $mailSubject, $message, $headers); } } catch (\Exception $e) { throw new \Exception('Error in sending mail to new assignees', 1); } } public function sendEmailForArchivedTask( $taskId, $newAssigneeEmails, $current_user_id ) { try { $task = Task::findOrFail($taskId); $board = $task->board; $userData = $this->getUserData($current_user_id); $page_url = fluent_boards_page_url(); $boardUrl = $page_url.'boards/'.$board->id; $boardLinkTag = '' .htmlspecialchars($board->title).''; $taskUrl = $page_url.'boards/'.$board->id.'/tasks/'.$task->id .'-'.substr($task->title, 0, 10); $taskLinkTag = '' .htmlspecialchars($task->title).''; $data = [ 'body' => 'has archived '.$taskLinkTag.' task of board ' .$boardLinkTag, 'pre_header' => 'Task has been archived', 'show_footer' => true, 'userData' => $userData, 'site_url' => site_url(), 'site_title' => get_bloginfo('name'), 'site_logo' => fluent_boards_site_logo(), ]; $mailSubject = 'Task has been archived'; $message = Helper::loadView('emails.assignee2', $data); $headers = ['Content-Type: text/html; charset=UTF-8']; foreach ($newAssigneeEmails as $assignee_email) { \wp_mail($assignee_email, $mailSubject, $message, $headers); } } catch (\Exception $e) { throw new \Exception('Error in sending mail to new assignees', 1); } } private function getUserData($userId) { $currentUser = User::findOrFail($userId); $gravaterPhoto = fluent_boards_user_avatar($currentUser->user_email, $currentUser->display_name); return [ 'display_name' => $currentUser->display_name, 'photo' => $gravaterPhoto, ]; } }