From 65f6630722d07b2aa7f65c9d1abc270293fe5ffb Mon Sep 17 00:00:00 2001
From: Baris Usakli <barisusakli@gmail.com>
Date: Tue, 15 Jan 2019 12:55:53 -0500
Subject: [PATCH] add new hook action:plugins.firehook

---
 src/plugins/hooks.js | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/plugins/hooks.js b/src/plugins/hooks.js
index d5f268a80e..b64247be53 100644
--- a/src/plugins/hooks.js
+++ b/src/plugins/hooks.js
@@ -84,19 +84,31 @@ module.exports = function (Plugins) {
 
 	Plugins.fireHook = function (hook, params, callback) {
 		callback = typeof callback === 'function' ? callback : function () {};
-
+		function done(err, result) {
+			if (err) {
+				return callback(err);
+			}
+			if (hook !== 'action:plugins.firehook') {
+				Plugins.fireHook('action:plugins.firehook', { hook: hook, params: params });
+			}
+			if (result) {
+				callback(null, result);
+			} else {
+				callback();
+			}
+		}
 		var hookList = Plugins.loadedHooks[hook];
 		var hookType = hook.split(':')[0];
 		winston.verbose('[plugins/fireHook]', hook);
 		switch (hookType) {
 		case 'filter':
-			fireFilterHook(hook, hookList, params, callback);
+			fireFilterHook(hook, hookList, params, done);
 			break;
 		case 'action':
-			fireActionHook(hook, hookList, params, callback);
+			fireActionHook(hook, hookList, params, done);
 			break;
 		case 'static':
-			fireStaticHook(hook, hookList, params, callback);
+			fireStaticHook(hook, hookList, params, done);
 			break;
 		default:
 			winston.warn('[plugins] Unknown hookType: ' + hookType + ', hook : ' + hook);