X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FHook.php;h=f2fb52f5e8d6e64418ec9bff8ac58e16fbe68ef0;hb=4ff7c37f85cdedb3f033bec92228c8ef22def574;hp=851dd60ed945277a2c86a9c8addd41c313aaf428;hpb=bd1f4ebbde207b0c6b84a11f3170c4f5b9a2ea12;p=friendica.git diff --git a/src/Core/Hook.php b/src/Core/Hook.php index 851dd60ed9..f2fb52f5e8 100644 --- a/src/Core/Hook.php +++ b/src/Core/Hook.php @@ -1,6 +1,6 @@ getBasePath() . DIRECTORY_SEPARATOR, '', $file); @@ -111,7 +114,7 @@ class Hook * @return boolean * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function unregister($hook, $file, $function) + public static function unregister(string $hook, string $file, string $function): bool { $relative_file = str_replace(DI::app()->getBasePath() . DIRECTORY_SEPARATOR, '', $file); @@ -120,8 +123,8 @@ class Hook self::delete($condition); $condition = ['hook' => $hook, 'file' => $relative_file, 'function' => $function]; - $result = self::delete($condition); - return $result; + + return self::delete($condition); } /** @@ -130,7 +133,7 @@ class Hook * @param string $name Name of the hook * @return array */ - public static function getByName($name) + public static function getByName(string $name): array { $return = []; @@ -149,9 +152,10 @@ class Hook * @param integer $priority of the hook * @param string $name of the hook to call * @param mixed $data to transmit to the callback handler + * @return void * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function fork($priority, $name, $data = null) + public static function fork(int $priority, string $name, $data = null) { if (array_key_exists($name, self::$hooks)) { foreach (self::$hooks[$name] as $hook) { @@ -184,9 +188,10 @@ class Hook * * @param string $name of the hook to call * @param string|array &$data to transmit to the callback handler + * @return void * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function callAll($name, &$data = null) + public static function callAll(string $name, &$data = null) { if (array_key_exists($name, self::$hooks)) { foreach (self::$hooks[$name] as $hook) { @@ -202,9 +207,10 @@ class Hook * @param string $name of the hook to call * @param array $hook Hook data * @param string|array &$data to transmit to the callback handler + * @return void * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function callSingle(App $a, $name, $hook, &$data = null) + public static function callSingle(App $a, string $name, array $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/' . $a->getCurrentTheme()) === false) { @@ -218,7 +224,7 @@ class Hook } else { // remove orphan hooks $condition = ['hook' => $name, 'file' => $hook[0], 'function' => $hook[1]]; - self::delete($condition, ['cascade' => false]); + self::delete($condition); } } @@ -229,7 +235,7 @@ class Hook * @param string $name Name of the addon * @return boolean */ - public static function isAddonApp($name) + public static function isAddonApp(string $name): bool { $name = Strings::sanitizeFilePathItem($name); @@ -247,14 +253,19 @@ class Hook /** * Deletes one or more hook records * + * We have to clear the cached routerDispatchData because addons can provide routes + * * @param array $condition - * @param array $options * @return bool * @throws \Exception */ - public static function delete(array $condition, array $options = []) + public static function delete(array $condition): bool { - $result = DBA::delete('hook', $condition, $options); + $result = DBA::delete('hook', $condition); + + if ($result) { + DI::cache()->delete('routerDispatchData'); + } return $result; } @@ -262,14 +273,20 @@ class Hook /** * Inserts a hook record * + * We have to clear the cached routerDispatchData because addons can provide routes + * * @param array $condition * @return bool * @throws \Exception */ - private static function insert(array $condition) + private static function insert(array $condition): bool { $result = DBA::insert('hook', $condition); + if ($result) { + DI::cache()->delete('routerDispatchData'); + } + return $result; } }