diff options
Diffstat (limited to 'app/Controllers/extensionController.php')
| -rw-r--r-- | app/Controllers/extensionController.php | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/app/Controllers/extensionController.php b/app/Controllers/extensionController.php index 39b5e858a..c0e85edbc 100644 --- a/app/Controllers/extensionController.php +++ b/app/Controllers/extensionController.php @@ -3,6 +3,8 @@ declare(strict_types=1); /** * The controller to manage extensions. + * + * @phpstan-type ExtensionFullMetadata array{name:string,entrypoint:string,author:string,description:string,version:string,type:'system'|'user',url:string,method:string,directory:string,compatibility:string} */ class FreshRSS_extension_Controller extends FreshRSS_ActionController { /** @@ -40,7 +42,7 @@ class FreshRSS_extension_Controller extends FreshRSS_ActionController { /** * Fetch extension list from GitHub - * @return list<array{name:string,author:string,description:string,version:string,entrypoint:string,type:'system'|'user',url:string,method:string,directory:string}> + * @phpstan-return list<ExtensionFullMetadata> */ protected function getAvailableExtensionList(): array { $extensionListUrl = 'https://raw.githubusercontent.com/FreshRSS/Extensions/master/extensions.json'; @@ -82,7 +84,10 @@ class FreshRSS_extension_Controller extends FreshRSS_ActionController { if (isset($extension['version']) && is_numeric($extension['version'])) { $extension['version'] = (string)$extension['version']; } - $keys = ['author', 'description', 'directory', 'entrypoint', 'method', 'name', 'type', 'url', 'version']; + if (!array_key_exists('compatibility', $extension)) { + $extension['compatibility'] = '✔'; + } + $keys = ['author', 'description', 'directory', 'entrypoint', 'method', 'name', 'type', 'url', 'version', 'compatibility']; $extension = array_intersect_key($extension, array_flip($keys)); // Keep only valid keys $extension = array_filter($extension, 'is_string'); foreach ($keys as $key) { @@ -93,10 +98,16 @@ class FreshRSS_extension_Controller extends FreshRSS_ActionController { if (!in_array($extension['type'], ['system', 'user'], true) || trim($extension['name']) === '') { continue; } - /** @var array{name:string,author:string,description:string,version:string,entrypoint:string,type:'system'|'user',url:string,method:string,directory:string} $extension */ + /** @var ExtensionFullMetadata $extension */ $extensions[] = $extension; } - return $extensions; + + return array_map(static function (array $extension) { + if ($extension['compatibility'] !== '✔') { + $extension['compatibility'] = version_compare($extension['compatibility'], FRESHRSS_VERSION, '>=') ? '✔' : '✘'; + } + return $extension; + }, $extensions); } /** |
