summaryrefslogtreecommitdiff
path: root/app/Integration/HipchatWebhook.php
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2015-04-19 19:33:58 -0400
committerFrederic Guillot <fred@kanboard.net>2015-04-19 19:33:58 -0400
commite30bf47d94e84efe42c05148dddd6cec499d12ae (patch)
treee15c0175387803485ad2f250945193b8b7480ec4 /app/Integration/HipchatWebhook.php
parentf190be9e2d4d285fb71d84e5d3884206067cf7af (diff)
Rename Hipchat class
Diffstat (limited to 'app/Integration/HipchatWebhook.php')
-rw-r--r--app/Integration/HipchatWebhook.php95
1 files changed, 95 insertions, 0 deletions
diff --git a/app/Integration/HipchatWebhook.php b/app/Integration/HipchatWebhook.php
new file mode 100644
index 00000000..03b85232
--- /dev/null
+++ b/app/Integration/HipchatWebhook.php
@@ -0,0 +1,95 @@
+<?php
+
+namespace Integration;
+
+/**
+ * Hipchat webhook
+ *
+ * @package integration
+ * @author Frederic Guillot
+ */
+class HipchatWebhook extends Base
+{
+ /**
+ * Return true if Hipchat is enabled for this project or globally
+ *
+ * @access public
+ * @param integer $project_id
+ * @return boolean
+ */
+ public function isActivated($project_id)
+ {
+ return $this->config->get('integration_hipchat') == 1 || $this->projectIntegration->hasValue($project_id, 'hipchat', 1);
+ }
+
+ /**
+ * Get API parameters
+ *
+ * @access public
+ * @param integer $project_id
+ * @return array
+ */
+ public function getParameters($project_id)
+ {
+ if ($this->config->get('integration_hipchat') == 1) {
+ return array(
+ 'api_url' => $this->config->get('integration_hipchat_api_url'),
+ 'room_id' => $this->config->get('integration_hipchat_room_id'),
+ 'room_token' => $this->config->get('integration_hipchat_room_token'),
+ );
+ }
+
+ $options = $this->projectIntegration->getParameters($project_id);
+
+ return array(
+ 'api_url' => $options['hipchat_api_url'],
+ 'room_id' => $options['hipchat_room_id'],
+ 'room_token' => $options['hipchat_room_token'],
+ );
+ }
+
+ /**
+ * Send the notification if activated
+ *
+ * @access public
+ * @param integer $project_id Project id
+ * @param integer $task_id Task id
+ * @param string $event_name Event name
+ * @param array $event Event data
+ */
+ public function notify($project_id, $task_id, $event_name, array $event)
+ {
+ if ($this->isActivated($project_id)) {
+
+ $params = $this->getParameters($project_id);
+ $project = $this->project->getbyId($project_id);
+
+ $event['event_name'] = $event_name;
+ $event['author'] = $this->user->getFullname($this->session['user']);
+
+ $html = '<img src="http://kanboard.net/assets/img/favicon-32x32.png"/>';
+ $html .= '<strong>'.$project['name'].'</strong>'.(isset($event['task']['title']) ? '<br/>'.$event['task']['title'] : '').'<br/>';
+ $html .= $this->projectActivity->getTitle($event);
+
+ if ($this->config->get('application_url')) {
+ $html .= '<br/><a href="'.$this->config->get('application_url');
+ $html .= $this->helper->u('task', 'show', array('task_id' => $task_id, 'project_id' => $project_id)).'">';
+ $html .= t('view the task on Kanboard').'</a>';
+ }
+
+ $payload = array(
+ 'message' => $html,
+ 'color' => 'yellow',
+ );
+
+ $url = sprintf(
+ '%s/v2/room/%s/notification?auth_token=%s',
+ $params['api_url'],
+ $params['room_id'],
+ $params['room_token']
+ );
+
+ $this->httpClient->post($url, $payload);
+ }
+ }
+}