From 4599799fba9bb68cebc41f9428f59f1aa2bd3f26 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sat, 9 Jan 2016 16:53:10 +0100 Subject: [PATCH] [ticket/11150] Improves requirements check PHPBB3-11150 --- phpBB/adm/style/acp_ext_catalog.html | 6 ------ phpBB/includes/acp/acp_extensions.php | 23 +++++++++++++++++++++-- phpBB/language/en/acp/extensions.php | 1 + phpBB/phpbb/composer/installer.php | 4 ++-- phpBB/phpbb/composer/manager.php | 1 + 5 files changed, 25 insertions(+), 10 deletions(-) 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 %} -
{{ lang('BROWSE_EXTENSIONS_DATABASE') }}{{ lang('SETTINGS') }}
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);