From 4569cae57f127afd093794310ccd290d2d9fdf36 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 20 Apr 2016 10:58:46 -0400
Subject: [PATCH] Merge branch 'stable-3.1'

---
 server/lib/classes/plugins.inc.php |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/server/lib/classes/plugins.inc.php b/server/lib/classes/plugins.inc.php
index 4771487..9b9b143 100644
--- a/server/lib/classes/plugins.inc.php
+++ b/server/lib/classes/plugins.inc.php
@@ -73,7 +73,6 @@
 		} else {
 			$app->log('Plugins directory missing: '.$plugins_dir, LOGLEVEL_ERROR);
 		}
-
 	}
 
 	/*
@@ -138,12 +137,14 @@
 	}
 
 
-	function raiseAction($action_name, $data) {
+	function raiseAction($action_name, $data, $return_data = false) {
 		global $app;
 
 		//* Get the subscriptions for this action
 		$actions = (isset($this->subscribed_actions[$action_name]))?$this->subscribed_actions[$action_name]:'';
 		if($this->debug) $app->log('Raised action: '.$action_name, LOGLEVEL_DEBUG);
+
+		$result = '';
 
 		if(is_array($actions)) {
 			foreach($actions as $action) {
@@ -154,8 +155,13 @@
 				$app->log("Calling function '$function_name' from plugin '$plugin_name' raised by action '$action_name'.", LOGLEVEL_DEBUG);
 				$state = call_user_func(array($app->loaded_plugins[$plugin_name], $function_name), $action_name, $data);
 				//* ensure that we return the highest warning / error level if a error occured in one of the functions
-				if($state == 'warning' && $state_out != 'error') $state_out = 'warning';
-				if($state == 'error') $state_out = 'error';
+				if($return_data) {
+					if($state) $result .= $state;
+				} else {
+					if($state == 'warning' && $state_out != 'error') $state_out = 'warning';
+					elseif($state == 'error') $state_out = 'error';
+				}
+				
 				unset($plugin_name);
 				unset($function_name);
 			}
@@ -163,7 +169,8 @@
 		unset($action);
 		unset($actions);
 
-		return $state_out;
+		if($return_data == true) return $result;
+		else return $state_out;
 	}
 
 }

--
Gitblit v1.9.1