From df2990b27ee1e55cfe68f8f532b6be76d176ba62 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Sat, 23 Apr 2016 15:16:54 -0700 Subject: Class method support for hooks --- Zotlabs/Extend/Hook.php | 10 ++++++++++ include/plugin.php | 5 +++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Zotlabs/Extend/Hook.php b/Zotlabs/Extend/Hook.php index 836b29db8..edfacfa3b 100644 --- a/Zotlabs/Extend/Hook.php +++ b/Zotlabs/Extend/Hook.php @@ -6,6 +6,10 @@ namespace Zotlabs\Extend; class Hook { static public function register($hook,$file,$function,$version = 1,$priority = 0) { + if(is_array($function)) { + $function = serialize($function); + } + $r = q("SELECT * FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s' and priority = %d and hook_version = %d LIMIT 1", dbesc($hook), dbesc($file), @@ -28,6 +32,9 @@ class Hook { } static public function unregister($hook,$file,$function,$version = 1,$priority = 0) { + if(is_array($function)) { + $function = serialize($function); + } $r = q("DELETE FROM hook WHERE hook = '%s' AND `file` = '%s' AND `function` = '%s' and priority = %d and hook_version = %d", dbesc($hook), dbesc($file), @@ -63,6 +70,9 @@ class Hook { */ static public function insert($hook, $fn, $version = 0, $priority = 0) { + if(is_array($fn)) { + $fn = serialize($fn); + } if(! is_array(App::$hooks)) App::$hooks = array(); diff --git a/include/plugin.php b/include/plugin.php index 80e3ae20e..92040f297 100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -284,8 +284,9 @@ function call_hooks($name, &$data = null) { foreach(App::$hooks[$name] as $hook) { if($hook[0]) @include_once($hook[0]); - - if(function_exists($hook[1])) { + if(preg_match('|^a:[0-9]+:{.*}$|s', $hook[1])) + $hook[1] = unserialize($hook[1]); + if(is_callable($hook[1])) { $func = $hook[1]; if($hook[3]) $func($data); -- cgit v1.2.3