aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-04-23 15:16:54 -0700
committerredmatrix <git@macgirvin.com>2016-04-23 15:16:54 -0700
commitdf2990b27ee1e55cfe68f8f532b6be76d176ba62 (patch)
tree0d461960855f66881cbb19e2891e913793b1e632
parenta8823ae7d8e3e87f4cee8d603f74996f1fe202c9 (diff)
downloadvolse-hubzilla-df2990b27ee1e55cfe68f8f532b6be76d176ba62.tar.gz
volse-hubzilla-df2990b27ee1e55cfe68f8f532b6be76d176ba62.tar.bz2
volse-hubzilla-df2990b27ee1e55cfe68f8f532b6be76d176ba62.zip
Class method support for hooks
-rw-r--r--Zotlabs/Extend/Hook.php10
-rwxr-xr-xinclude/plugin.php5
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);