aboutsummaryrefslogtreecommitdiffhomepage
path: root/application/plugin/PluginManager.php
diff options
context:
space:
mode:
Diffstat (limited to 'application/plugin/PluginManager.php')
-rw-r--r--application/plugin/PluginManager.php30
1 files changed, 22 insertions, 8 deletions
diff --git a/application/plugin/PluginManager.php b/application/plugin/PluginManager.php
index f7b24a8e..1b2197c9 100644
--- a/application/plugin/PluginManager.php
+++ b/application/plugin/PluginManager.php
@@ -16,7 +16,7 @@ class PluginManager
16 * 16 *
17 * @var array $authorizedPlugins 17 * @var array $authorizedPlugins
18 */ 18 */
19 private $authorizedPlugins; 19 private $authorizedPlugins = [];
20 20
21 /** 21 /**
22 * List of loaded plugins. 22 * List of loaded plugins.
@@ -100,21 +100,35 @@ class PluginManager
100 */ 100 */
101 public function executeHooks($hook, &$data, $params = array()) 101 public function executeHooks($hook, &$data, $params = array())
102 { 102 {
103 if (!empty($params['target'])) { 103 $metadataParameters = [
104 $data['_PAGE_'] = $params['target']; 104 'target' => '_PAGE_',
105 } 105 'loggedin' => '_LOGGEDIN_',
106 106 'basePath' => '_BASE_PATH_',
107 if (isset($params['loggedin'])) { 107 'bookmarkService' => '_BOOKMARK_SERVICE_',
108 $data['_LOGGEDIN_'] = $params['loggedin']; 108 ];
109
110 foreach ($metadataParameters as $parameter => $metaKey) {
111 if (array_key_exists($parameter, $params)) {
112 $data[$metaKey] = $params[$parameter];
113 }
109 } 114 }
110 115
111 foreach ($this->loadedPlugins as $plugin) { 116 foreach ($this->loadedPlugins as $plugin) {
112 $hookFunction = $this->buildHookName($hook, $plugin); 117 $hookFunction = $this->buildHookName($hook, $plugin);
113 118
114 if (function_exists($hookFunction)) { 119 if (function_exists($hookFunction)) {
115 $data = call_user_func($hookFunction, $data, $this->conf); 120 try {
121 $data = call_user_func($hookFunction, $data, $this->conf);
122 } catch (\Throwable $e) {
123 $error = $plugin . t(' [plugin incompatibility]: ') . $e->getMessage();
124 $this->errors = array_unique(array_merge($this->errors, [$error]));
125 }
116 } 126 }
117 } 127 }
128
129 foreach ($metadataParameters as $metaKey) {
130 unset($data[$metaKey]);
131 }
118 } 132 }
119 133
120 /** 134 /**