use Friendica\Core\Config;
use Friendica\Database\DBM;
+use Friendica\Core\Worker;
use dba;
dba::close($r);
}
+ /**
+ * @brief Forks a hook.
+ *
+ * Use this function when you want to fork a hook via the worker.
+ *
+ * @param string $name of the hook to call
+ * @param string|array $data to transmit to the callback handler
+ */
+ public static function forkHooks($priority, $name, $data = null)
+ {
+ $a = get_app();
+
+ if (is_array($a->hooks) && array_key_exists($name, $a->hooks)) {
+ foreach ($a->hooks[$name] as $hook) {
+ Worker::add($priority, 'ForkHook', $name, $hook, $data);
+ }
+ }
+ }
+
/**
* @brief Calls a hook.
*
/**
* @brief Calls a single hook.
*
- * @param string $name of the hook to call
- * @param array $hook Hook data
- * @param string|array &$data to transmit to the callback handler
+ * @param \Friendica\App $a
+ * @param string $name of the hook to call
+ * @param array $hook Hook data
+ * @param string|array &$data to transmit to the callback handler
*/
- public static function callSingleHook($a, $name, $hook, &$data = null)
+ public static function callSingleHook(\Friendica\App $a, $name, $hook, &$data = null)
{
// Don't run a theme's hook if the user isn't using the theme
- if (strpos($hook[0], 'view/theme/') !== false && strpos($hook[0], 'view/theme/'.current_theme()) === false) {
+ if (strpos($hook[0], 'view/theme/') !== false && strpos($hook[0], 'view/theme/' . $a->getCurrentTheme()) === false) {
return;
}
} else {
// remove orphan hooks
$condition = ['hook' => $name, 'file' => $hook[0], 'function' => $hook[1]];
- dba::delete('hook', $condition);
+ dba::delete('hook', $condition, ['cascade' => false]);
}
}