]> git.mxchange.org Git - friendica.git/commitdiff
Add some hook to check if hook should be forked
authorMichael <heluecht@pirati.ca>
Sat, 10 Nov 2018 15:15:46 +0000 (15:15 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 10 Nov 2018 15:15:46 +0000 (15:15 +0000)
src/Core/Hook.php

index a0200a7db36934506b51fc59cf75d5e03f59cff3..d221933daeaffc7ba149c15cb78dd7a16a06768a 100644 (file)
@@ -7,6 +7,7 @@ namespace Friendica\Core;
 use Friendica\App;
 use Friendica\BaseObject;
 use Friendica\Database\DBA;
+use Friendica\Core\Logger;
 
 /**
  * Some functions to handle hooks
@@ -136,6 +137,22 @@ class Hook extends BaseObject
        {
                if (array_key_exists($name, self::$hooks)) {
                        foreach (self::$hooks[$name] as $hook) {
+                               // Call a hook to check if this hook call needs to be forked
+                               $hookdata = ['name' => $name, 'data' => $data, 'execute' => true];
+
+                               if (array_key_exists('hook_fork', self::$hooks)) {
+                                       foreach (self::$hooks['hook_fork'] as $fork_hook) {
+                                               if ($hook[0] != $fork_hook[0]) {
+                                                       continue;
+                                               }
+                                               self::callSingle(self::getApp(), 'hook_fork', $fork_hook, $hookdata);
+                                       }
+                               }
+
+                               if (!$hookdata['execute']) {
+                                       continue;
+                               }
+
                                Worker::add($priority, 'ForkHook', $name, $hook, $data);
                        }
                }