aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/extension/manager.php
diff options
context:
space:
mode:
authorjaviexin <javiexin@gmail.com>2017-02-09 23:10:29 +0100
committerjaviexin <javiexin@gmail.com>2017-02-09 23:10:29 +0100
commitabd6bd815449ba59c2b5737ebb0b47a55221a01c (patch)
tree091ab9b3fb084f2aa8cca03f405ab5cee6d95f3f /phpBB/phpbb/extension/manager.php
parent9658ecae8bb2c66bc105cf6787df6b8c40277676 (diff)
downloadforums-abd6bd815449ba59c2b5737ebb0b47a55221a01c.tar
forums-abd6bd815449ba59c2b5737ebb0b47a55221a01c.tar.gz
forums-abd6bd815449ba59c2b5737ebb0b47a55221a01c.tar.bz2
forums-abd6bd815449ba59c2b5737ebb0b47a55221a01c.tar.xz
forums-abd6bd815449ba59c2b5737ebb0b47a55221a01c.zip
[ticket/14938] Inconsistency in ext_mgr all_available vs is_available
Made is_available much more strict, in line with the checks in all_available Refactor all_available to use is_available, saving duplicate code. Further simplify is_available by using metadata_manager. PHPBB3-14938
Diffstat (limited to 'phpBB/phpbb/extension/manager.php')
-rw-r--r--phpBB/phpbb/extension/manager.php22
1 files changed, 4 insertions, 18 deletions
diff --git a/phpBB/phpbb/extension/manager.php b/phpBB/phpbb/extension/manager.php
index 036a0fc07d..608fd12444 100644
--- a/phpBB/phpbb/extension/manager.php
+++ b/phpBB/phpbb/extension/manager.php
@@ -510,29 +510,15 @@ class manager
*/
public function is_available($name)
{
- // Not available if the folder does not exist
- if (!file_exists($this->get_extension_path($name, true)))
+ $md_manager = $this->create_extension_metadata_manager($name, $this->container->get('template'));
+ try
{
- return false;
- }
-
- $composer_file = $this->get_extension_path($name, true) . 'composer.json';
-
- // Not available if there is no composer.json.
- if (!is_readable($composer_file) || !($ext_info = file_get_contents($composer_file)))
- {
- return false;
+ return $md_manager->get_metadata('all') && $md_manager->validate_enable();
}
- $ext_info = json_decode($ext_info, true);
-
- // Not available if malformed name or if the directory structure
- // does not match the name value specified in composer.json.
- if (substr_count($name, '/') !== 1 || !isset($ext_info['name']) || $name != $ext_info['name'])
+ catch (\phpbb\extension\exception $e)
{
return false;
}
-
- return true;
}
/**