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,
];
}
}