diff options
author | Andrew Manning <tamanning@zoho.com> | 2016-04-25 06:17:39 -0400 |
---|---|---|
committer | Andrew Manning <tamanning@zoho.com> | 2016-04-25 06:17:39 -0400 |
commit | f027bf81cdaddee5d6474199c1b7adce50e6e07d (patch) | |
tree | 23fd281c6627b7adc1421fcddf939e6447a4d18b /include/plugin.php | |
parent | f3eae7132f8c104db2197858208f16a5792507be (diff) | |
parent | a9d926886e6f8ed389031791799ffd352b8cb651 (diff) | |
download | volse-hubzilla-f027bf81cdaddee5d6474199c1b7adce50e6e07d.tar.gz volse-hubzilla-f027bf81cdaddee5d6474199c1b7adce50e6e07d.tar.bz2 volse-hubzilla-f027bf81cdaddee5d6474199c1b7adce50e6e07d.zip |
Merge remote-tracking branch 'upstream/dev' into help-content
Diffstat (limited to 'include/plugin.php')
-rwxr-xr-x | include/plugin.php | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/include/plugin.php b/include/plugin.php index 80e3ae20e..8dd67bb0c 100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -282,10 +282,21 @@ function call_hooks($name, &$data = null) { $a = 0; if((is_array(App::$hooks)) && (array_key_exists($name, App::$hooks))) { foreach(App::$hooks[$name] as $hook) { + $origfn = $hook[1]; if($hook[0]) @include_once($hook[0]); + if(preg_match('|^a:[0-9]+:{.*}$|s', $hook[1])) { + $hook[1] = unserialize($hook[1]); + } + elseif(strpos($hook[1],'::')) { + // We shouldn't need to do this, but it appears that PHP + // isn't able to directly execute a string variable with a class + // method in the manner we are attempting it, so we'll + // turn it into an array. + $hook[1] = explode('::',$hook[1]); + } - if(function_exists($hook[1])) { + if(is_callable($hook[1])) { $func = $hook[1]; if($hook[3]) $func($data); @@ -295,7 +306,7 @@ function call_hooks($name, &$data = null) { q("DELETE FROM hook WHERE hook = '%s' AND file = '%s' AND function = '%s'", dbesc($name), dbesc($hook[0]), - dbesc($hook[1]) + dbesc($origfn) ); } } |