diff --git a/phpBB/adm/style/acp_ext_catalog.html b/phpBB/adm/style/acp_ext_catalog.html
index 326d6b8bc7..482d8a8bda 100644
--- a/phpBB/adm/style/acp_ext_catalog.html
+++ b/phpBB/adm/style/acp_ext_catalog.html
@@ -6,12 +6,6 @@
{{ lang( 'EXTENSIONS_CATALOG_EXPLAIN') }}
-{% if not enabled %}
-
- {{ lang('EXTENSIONS_COMPOSER_NOT_WRITABLE') }}
-
-{% endif %}
-
diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php
index 1bcbe9f415..6888a00772 100644
--- a/phpBB/includes/acp/acp_extensions.php
+++ b/phpBB/includes/acp/acp_extensions.php
@@ -169,14 +169,21 @@ class acp_extensions
$this->list_disabled_exts();
$this->list_available_exts();
+ /** @var \phpbb\composer\manager $composer_manager */
$composer_manager = $phpbb_container->get('ext.composer.manager');
+ $managed_packages = [];
+ if ($composer_manager->check_requirements())
+ {
+ $managed_packages = array_keys($composer_manager->get_managed_packages());
+ }
+
$this->request->enable_super_globals();
$this->template->assign_vars(array(
'U_VERSIONCHECK_FORCE' => $this->u_action . '&action=list&versioncheck_force=1',
'FORCE_UNSTABLE' => $this->config['extension_force_unstable'],
'U_ACTION' => $this->u_action,
- 'MANAGED_EXTENSIONS' => array_keys($composer_manager->get_managed_packages()),
+ 'MANAGED_EXTENSIONS' => $managed_packages,
'U_CATALOG_ACTION' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=catalog"),
));
$this->request->disable_super_globals();
@@ -424,6 +431,19 @@ class acp_extensions
/** @var \phpbb\extension\manager $extensions_manager */
$extensions_manager = $phpbb_container->get('ext.manager');
+ if (!$composer_manager->check_requirements())
+ {
+ $this->page_title = 'ACP_EXTENSIONS_CATALOG';
+ $this->tpl_name = 'message_body';
+
+ $this->template->assign_vars([
+ 'MESSAGE_TITLE' => $language->lang('EXTENSIONS_CATALOG_NOT_AVAILABLE'),
+ 'MESSAGE_TEXT' => $language->lang('EXTENSIONS_COMPOSER_NOT_WRITABLE'),
+ ]);
+
+ return;
+ }
+
switch ($action)
{
case 'install':
@@ -659,7 +679,6 @@ class acp_extensions
$this->tpl_name = 'acp_ext_catalog';
$this->template->assign_vars([
- 'enabled' => $manager->check_requirements(),
'extensions' => $extensions,
'managed_extensions' => array_keys($managed_packages),
'installed_extensions' => array_keys($extensions_manager->all_available()),
diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php
index 6f6add6a86..d7c111c3b6 100644
--- a/phpBB/language/en/acp/extensions.php
+++ b/phpBB/language/en/acp/extensions.php
@@ -164,6 +164,7 @@ $lang = array_merge($lang, array(
'EXTENSIONS_REMOVED' => 'Extensions successfully removed.',
'EXTENSIONS_UPDATED' => 'Extensions successfully updated.',
+ 'EXTENSIONS_CATALOG_NOT_AVAILABLE' => 'The extensions catalog is not available',
'EXTENSIONS_COMPOSER_NOT_WRITABLE' => 'In order to use the catalog, the following files and directories must be writable: ext/ vendor-ext/ composer-ext.json and composer-ext.lock',
'STABILITY_STABLE' => 'stable',
diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php
index e684882bfa..205312f9e3 100644
--- a/phpBB/phpbb/composer/installer.php
+++ b/phpBB/phpbb/composer/installer.php
@@ -92,7 +92,7 @@ class installer
}
$this->packagist = (bool) $config['exts_composer_packagist'];
- $this->composer_filenam = $config['exts_composer_json_file'];
+ $this->composer_filename = $config['exts_composer_json_file'];
$this->packages_vendor_dir = $config['exts_composer_vendor_dir'];
$this->minimum_stability = $config['exts_composer_minimum_stability'];
}
@@ -451,7 +451,7 @@ class installer
private function get_compatible_versions(array $compatible_packages, ConstraintInterface $core_constraint, $core_stability, $package_name, array $versions)
{
$core_stability_value = BasePackage::$stabilities[$core_stability];
- //VersionParser::parseStability($version['version'])
+
/** @var \Composer\Package\PackageInterface $version */
foreach ($versions as $version)
{
diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php
index c9d917e5c9..e040e3e0be 100644
--- a/phpBB/phpbb/composer/manager.php
+++ b/phpBB/phpbb/composer/manager.php
@@ -253,6 +253,7 @@ class manager implements manager_interface
if ($this->available_packages === null)
{
$this->available_packages = $this->cache->get('_composer_' . $this->package_type . '_available');
+
if (!$this->available_packages)
{
$this->available_packages = $this->installer->get_available_packages($this->package_type);