aboutsummaryrefslogtreecommitdiff
path: root/lib/Minz/ExtensionManager.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Minz/ExtensionManager.php')
-rw-r--r--lib/Minz/ExtensionManager.php22
1 files changed, 21 insertions, 1 deletions
diff --git a/lib/Minz/ExtensionManager.php b/lib/Minz/ExtensionManager.php
index c40a53253..fc6a7f08a 100644
--- a/lib/Minz/ExtensionManager.php
+++ b/lib/Minz/ExtensionManager.php
@@ -30,6 +30,14 @@ final class Minz_ExtensionManager {
'list' => [],
'signature' => 'OneToOne',
],
+ 'custom_favicon_btn_url' => [ // function(FreshRSS_Feed $feed): string | null
+ 'list' => [],
+ 'signature' => 'PassArguments',
+ ],
+ 'custom_favicon_hash' => [ // function(FreshRSS_Feed $feed): string | null
+ 'list' => [],
+ 'signature' => 'PassArguments',
+ ],
'entries_favorite' => [ // function(array $ids, bool $is_favorite): void
'list' => [],
'signature' => 'PassArguments',
@@ -366,7 +374,10 @@ final class Minz_ExtensionManager {
return self::callOneToOne($hook_name, $args[0] ?? null);
} elseif ($signature === 'PassArguments') {
foreach (self::$hook_list[$hook_name]['list'] as $function) {
- call_user_func($function, ...$args);
+ $result = call_user_func($function, ...$args);
+ if ($result !== null) {
+ return $result;
+ }
}
} elseif ($signature === 'NoneToString') {
return self::callHookString($hook_name);
@@ -451,4 +462,13 @@ final class Minz_ExtensionManager {
}
return false;
}
+
+ /**
+ * Check if a extension is enabled
+ *
+ * @param string $ext_name is the extension's name as provided in metadata.json
+ */
+ public static function isExtensionEnabled(string $ext_name): bool {
+ return isset(self::$ext_list_enabled[$ext_name]);
+ }
}