diff --git a/PHPCI/Plugin/FlowdockNotify.php b/PHPCI/Plugin/FlowdockNotify.php
new file mode 100644
index 00000000..8ac9f2ab
--- /dev/null
+++ b/PHPCI/Plugin/FlowdockNotify.php
@@ -0,0 +1,73 @@
+
+ * @package PHPCI
+ * @subpackage Plugins
+ */
+class FlowdockNotify implements \PHPCI\Plugin
+{
+ private $api_key;
+ private $email;
+ const MESSAGE_DEFAULT = 'Build %BUILD% has finished for commit %SHORT_COMMIT%
+ (%COMMIT_EMAIL%)> on branch %BRANCH%';
+
+ /**
+ * Set up the plugin, configure options, etc.
+ * @param Builder $phpci
+ * @param Build $build
+ * @param array $options
+ * @throws \Exception
+ */
+ public function __construct(Builder $phpci, Build $build, array $options = array())
+ {
+ $this->phpci = $phpci;
+ $this->build = $build;
+ if (!is_array($options) || !isset($options['api_key'])) {
+ throw new \Exception('Please define the api_key for Flowdock Notify plugin!');
+ }
+ $this->api_key = trim($options['api_key']);
+ $this->message = isset($options['message']) ? $options['message'] : self::MESSAGE_DEFAULT;
+ $this->email = isset($options['email']) ? $options['email'] : 'PHPCI';
+ }
+
+ /**
+ * Run the Flowdock plugin.
+ * @return bool
+ * @throws \Exception
+ */
+ public function execute()
+ {
+
+ $message = $this->phpci->interpolate($this->message);
+ $successfulBuild = $this->build->isSuccessful() ? 'Success' : 'Failed';
+ $push = new Push($this->api_key);
+ $flowMessage = TeamInboxMessage::create()
+ ->setSource("PHPCI")
+ ->setFromAddress($this->email)
+ ->setFromName($this->build->getProject()->getTitle())
+ ->setSubject($successfulBuild)
+ ->setTags(['#ci'])
+ ->setLink($this->build->getBranchLink())
+ ->setContent($message);
+
+ if (!$push->sendTeamInboxMessage($flowMessage, array('connect_timeout' => 5000, 'timeout' => 5000))) {
+ throw new \Exception(sprintf('Flowdock Failed: %s', $flowMessage->getResponseErrors()));
+ }
+ return true;
+ }
+}
diff --git a/composer.json b/composer.json
index eadd9a81..3de523e5 100644
--- a/composer.json
+++ b/composer.json
@@ -76,6 +76,7 @@
"behat/behat": "Behat BDD Testing",
"hipchat/hipchat-php": "Hipchat integration",
"phptal/phptal": "PHPTAL templating engine",
- "maknz/slack": "Slack integration"
+ "maknz/slack": "Slack integration",
+ "mremi/flowdock": "Flowdock integration"
}
}