/** * @param $object * @throws InvalidInstanceError * @throws NotImplementedError */ function slack_handle_on_object_inserted($object) { if ($object instanceof Task) { $project = $object->getProject(); $channel = slack_get_channel($project->getCustomField1()); $token = slack_get_token($project->getCustomField2()); if ($channel && $token) { $task_id = $object->getTaskId(); $task_name = $object->getName(); $task_url = $object->getViewUrl(); $message = "New task *<{$task_url}|#{$task_id}: {$task_name}>*"; $user = $object->assignees()->getAssignee(); // Tasks can be without assignees if ($user) { $user_name = $user->getName(); // @todo make this an object... if ($slack_user = slack_get_user_by_email($user->getEmail(), $token)) { $user_name = "<@{$slack_user['id']}>"; } $message .= " assigned to *{$user_name}*"; } slack_post_message($message, $channel, $token); } } if ($object instanceof TaskComment) { $project = $object->getProject(); $channel = slack_get_channel($project->getCustomField1()); $token = slack_get_token($project->getCustomField2()); if ($channel && $token) { $task = $object->getParent(); $task_id = $task->getTaskId(); $task_name = $task->getName(); $task_url = $task->getViewUrl(); // Every comment must have a user name $user = $object->getCreatedBy(); $user_name = $user->getName(); // @todo make this an object... if ($slack_user = slack_get_user_by_email($user->getEmail(), $token)) { $user_name = "<@{$slack_user['id']}>"; } # Remove HTML tags but make sure to include line breaks $message = "New comment by *{$user_name}* on task *<{$task_url}|#{$task_id}: {$task_name}>*\n>>>"; $message .= strip_tags(str_replace('</p>', "</p>\n\n", $object->getBody())); slack_post_message($message, $channel, $token); } } }
/** * @param $object * @throws NotImplementedError */ function slack_handle_on_object_completed($object) { if ($object instanceof Task) { $project = $object->getProject(); $channel = slack_get_channel($project->getCustomField1()); $token = slack_get_token($project->getCustomField2()); if ($channel && $token) { $task_id = $object->getTaskId(); $task_name = $object->getName(); $task_url = $object->getViewUrl(); // There's no object named getCompletedBy()... $user_name = $object->getCompletedByName(); // @todo make this an object... if ($slack_user = slack_get_user_by_email($object->getCompletedByEmail(), $token)) { $user_name = "<@{$slack_user['id']}>"; } $message = "Task completed *<{$task_url}|#{$task_id}: {$task_name}>* by *{$user_name}*"; slack_post_message($message, $channel, $token); } } }