diff options
Diffstat (limited to 'lib/plugins/extension')
-rw-r--r-- | lib/plugins/extension/GuiAdmin.php | 12 | ||||
-rw-r--r-- | lib/plugins/extension/Repository.php | 4 | ||||
-rw-r--r-- | lib/plugins/extension/cli.php | 6 |
3 files changed, 19 insertions, 3 deletions
diff --git a/lib/plugins/extension/GuiAdmin.php b/lib/plugins/extension/GuiAdmin.php index 8480f7553..74499632b 100644 --- a/lib/plugins/extension/GuiAdmin.php +++ b/lib/plugins/extension/GuiAdmin.php @@ -64,6 +64,12 @@ class GuiAdmin extends Gui $html .= '</div>'; $plugins = (new Local())->getPlugins(); + try { + // initialize remote data in one go + Repository::getInstance()->initExtensions(array_keys($plugins)); + } catch (Exception $e) { + msg($e->getMessage(), -1); // this should not happen + } $html .= '<div id="extension__list">'; $html .= '<form action="' . $this->tabURL('plugins') . '" method="post">'; @@ -91,6 +97,12 @@ class GuiAdmin extends Gui $html .= '</div>'; $templates = (new Local())->getTemplates(); + try { + // initialize remote data in one go + Repository::getInstance()->initExtensions(array_keys($templates)); + } catch (Exception $e) { + msg($e->getMessage(), -1); // this should not happen + } $html .= '<div id="extension__list">'; $html .= '<form action="' . $this->tabURL('templates') . '" method="post">'; diff --git a/lib/plugins/extension/Repository.php b/lib/plugins/extension/Repository.php index 20130f8fb..2cda2480d 100644 --- a/lib/plugins/extension/Repository.php +++ b/lib/plugins/extension/Repository.php @@ -135,7 +135,7 @@ class Repository // first get all that are cached foreach ($ids as $id) { $data = $this->retrieveCache($id); - if ($data === null) { + if ($data === null || $data === []) { $toload[] = $id; } else { $result[$id] = Extension::createFromRemoteData($data); @@ -147,7 +147,7 @@ class Repository $this->fetchExtensions($toload); foreach ($toload as $id) { $data = $this->retrieveCache($id); - if ($data === null) { + if ($data === null || $data === []) { $result[$id] = null; } else { $result[$id] = Extension::createFromRemoteData($data); diff --git a/lib/plugins/extension/cli.php b/lib/plugins/extension/cli.php index 956f43859..e163b362e 100644 --- a/lib/plugins/extension/cli.php +++ b/lib/plugins/extension/cli.php @@ -258,7 +258,11 @@ class cli_plugin_extension extends CLIPlugin */ protected function cmdList($showdetails, $filter) { - $this->listExtensions((new Local())->getExtensions(), $showdetails, $filter); + $extensions = (new Local())->getExtensions(); + // initialize remote data in one go + Repository::getInstance()->initExtensions(array_keys($extensions)); + + $this->listExtensions($extensions, $showdetails, $filter); return 0; } |