Line 149 | Line 149 |
---|
* Instantiates the metadata manager for the extension with the given name * * @param string $name The extension name
|
* Instantiates the metadata manager for the extension with the given name * * @param string $name The extension name
|
* @param \phpbb\template\template $template The template manager
| * @param \phpbb\template\template $template The template manager or null
|
* @return \phpbb\extension\metadata_manager Instance of the metadata manager */
|
* @return \phpbb\extension\metadata_manager Instance of the metadata manager */
|
public function create_extension_metadata_manager($name, \phpbb\template\template $template)
| public function create_extension_metadata_manager($name, \phpbb\template\template $template = null)
|
{ return new \phpbb\extension\metadata_manager($name, $this->config, $this, $template, $this->user, $this->phpbb_root_path); }
| { return new \phpbb\extension\metadata_manager($name, $this->config, $this, $template, $this->user, $this->phpbb_root_path); }
|
Line 433 | Line 433 |
---|
if ($file_info->isFile() && $file_info->getFilename() == 'composer.json') { $ext_name = $iterator->getInnerIterator()->getSubPath();
|
if ($file_info->isFile() && $file_info->getFilename() == 'composer.json') { $ext_name = $iterator->getInnerIterator()->getSubPath();
|
$composer_file = $iterator->getPath() . '/composer.json';
// Ignore the extension if there is no composer.json. if (!is_readable($composer_file) || !($ext_info = file_get_contents($composer_file))) { continue; }
$ext_info = json_decode($ext_info, true);
| |
$ext_name = str_replace(DIRECTORY_SEPARATOR, '/', $ext_name);
|
$ext_name = str_replace(DIRECTORY_SEPARATOR, '/', $ext_name);
|
// Ignore the extension if directory depth is not correct or if the directory structure // does not match the name value specified in composer.json. if (substr_count($ext_name, '/') !== 1 || !isset($ext_info['name']) || $ext_name != $ext_info['name'])
| if ($this->is_available($ext_name))
|
{
|
{
|
continue;
| $available[$ext_name] = $this->phpbb_root_path . 'ext/' . $ext_name . '/';
|
}
|
}
|
$available[$ext_name] = $this->phpbb_root_path . 'ext/' . $ext_name . '/';
| |
} } ksort($available);
| } } ksort($available);
|
Line 524 | Line 510 |
---|
*/ public function is_available($name) {
|
*/ public function is_available($name) {
|
return file_exists($this->get_extension_path($name, true));
| $md_manager = $this->create_extension_metadata_manager($name); try { return $md_manager->get_metadata('all') && $md_manager->validate_enable(); } catch (\phpbb\extension\exception $e) { return false; }
|
}
/**
| }
/**
|