aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/extension/metadata_manager.php
diff options
context:
space:
mode:
authorjaviexin <javiexin@gmail.com>2017-02-12 18:33:06 +0100
committerjaviexin <javiexin@gmail.com>2017-02-12 18:33:06 +0100
commit2e3d90e05b7b08f6df89b9e3a98b1716d52cf340 (patch)
treedb03696280ec41b0638599d33870c2404331a429 /phpBB/phpbb/extension/metadata_manager.php
parentd3a687df270268b4cbbe3ae0d10e8c4e2ae29235 (diff)
downloadforums-2e3d90e05b7b08f6df89b9e3a98b1716d52cf340.tar
forums-2e3d90e05b7b08f6df89b9e3a98b1716d52cf340.tar.gz
forums-2e3d90e05b7b08f6df89b9e3a98b1716d52cf340.tar.bz2
forums-2e3d90e05b7b08f6df89b9e3a98b1716d52cf340.tar.xz
forums-2e3d90e05b7b08f6df89b9e3a98b1716d52cf340.zip
[ticket/15087] Optimize creation of metadata objects by caching
Caching is done in ext_manager, and metadata_manager is further simplified by reducing the number of parameters needed. Also, move template output function from metadata_manager to acp_extensions, where it belongs. PHPBB3-15087
Diffstat (limited to 'phpBB/phpbb/extension/metadata_manager.php')
-rw-r--r--phpBB/phpbb/extension/metadata_manager.php85
1 files changed, 16 insertions, 69 deletions
diff --git a/phpBB/phpbb/extension/metadata_manager.php b/phpBB/phpbb/extension/metadata_manager.php
index 089f9a7a32..2dec6944b7 100644
--- a/phpBB/phpbb/extension/metadata_manager.php
+++ b/phpBB/phpbb/extension/metadata_manager.php
@@ -19,24 +19,6 @@ namespace phpbb\extension;
class metadata_manager
{
/**
- * phpBB Config instance
- * @var \phpbb\config\config
- */
- protected $config;
-
- /**
- * phpBB Extension Manager
- * @var \phpbb\extension\manager
- */
- protected $extension_manager;
-
- /**
- * phpBB root path
- * @var string
- */
- protected $phpbb_root_path;
-
- /**
* Name (including vendor) of the extension
* @var string
*/
@@ -58,19 +40,13 @@ class metadata_manager
* Creates the metadata manager
*
* @param string $ext_name Name (including vendor) of the extension
- * @param \phpbb\config\config $config phpBB Config instance
- * @param \phpbb\extension\manager $extension_manager An instance of the phpBB extension manager
- * @param string $phpbb_root_path Path to the phpbb includes directory.
+ * @param string $ext_path Path to the extension directory including root path
*/
- public function __construct($ext_name, \phpbb\config\config $config, \phpbb\extension\manager $extension_manager, $phpbb_root_path)
+ public function __construct($ext_name, $ext_path)
{
- $this->config = $config;
- $this->extension_manager = $extension_manager;
- $this->phpbb_root_path = $phpbb_root_path;
-
$this->ext_name = $ext_name;
$this->metadata = array();
- $this->metadata_file = '';
+ $this->metadata_file = $ext_path . 'composer.json';
}
/**
@@ -119,15 +95,12 @@ class metadata_manager
}
/**
- * Sets the path of the metadata file, gets its contents and cleans loaded file
+ * Gets the metadata file contents and cleans loaded file
*
* @throws \phpbb\extension\exception
*/
private function fetch_metadata_from_file()
{
- $ext_filepath = $this->extension_manager->get_extension_path($this->ext_name);
- $this->metadata_file = $this->phpbb_root_path . $ext_filepath . 'composer.json';
-
if (!file_exists($this->metadata_file))
{
throw new \phpbb\extension\exception('FILE_NOT_FOUND', array($this->metadata_file));
@@ -182,9 +155,19 @@ class metadata_manager
case 'all':
$this->validate('display');
- if (!$this->validate_enable())
+ if (!$this->validate_dir())
{
- throw new \phpbb\extension\exception('META_FIELD_NOT_SET', array($name));
+ throw new \phpbb\extension\exception('EXTENSION_DIR_INVALID');
+ }
+
+ if (!$this->validate_require_phpbb())
+ {
+ throw new \phpbb\extension\exception('META_FIELD_NOT_SET', array('soft-require'));
+ }
+
+ if (!$this->validate_require_php())
+ {
+ throw new \phpbb\extension\exception('META_FIELD_NOT_SET', array('require php'));
}
break;
@@ -296,40 +279,4 @@ class metadata_manager
return true;
}
-
- /**
- * Outputs the metadata into the template
- *
- * @param \phpbb\template\template $template phpBB Template instance
- */
- public function output_template_data(\phpbb\template\template $template)
- {
- $template->assign_vars(array(
- 'META_NAME' => $this->metadata['name'],
- 'META_TYPE' => $this->metadata['type'],
- 'META_DESCRIPTION' => (isset($this->metadata['description'])) ? $this->metadata['description'] : '',
- 'META_HOMEPAGE' => (isset($this->metadata['homepage'])) ? $this->metadata['homepage'] : '',
- 'META_VERSION' => (isset($this->metadata['version'])) ? $this->metadata['version'] : '',
- 'META_TIME' => (isset($this->metadata['time'])) ? $this->metadata['time'] : '',
- 'META_LICENSE' => $this->metadata['license'],
-
- 'META_REQUIRE_PHP' => (isset($this->metadata['require']['php'])) ? $this->metadata['require']['php'] : '',
- 'META_REQUIRE_PHP_FAIL' => !$this->validate_require_php(),
-
- 'META_REQUIRE_PHPBB' => (isset($this->metadata['extra']['soft-require']['phpbb/phpbb'])) ? $this->metadata['extra']['soft-require']['phpbb/phpbb'] : '',
- 'META_REQUIRE_PHPBB_FAIL' => !$this->validate_require_phpbb(),
-
- 'META_DISPLAY_NAME' => (isset($this->metadata['extra']['display-name'])) ? $this->metadata['extra']['display-name'] : '',
- ));
-
- foreach ($this->metadata['authors'] as $author)
- {
- $template->assign_block_vars('meta_authors', array(
- 'AUTHOR_NAME' => $author['name'],
- 'AUTHOR_EMAIL' => (isset($author['email'])) ? $author['email'] : '',
- 'AUTHOR_HOMEPAGE' => (isset($author['homepage'])) ? $author['homepage'] : '',
- 'AUTHOR_ROLE' => (isset($author['role'])) ? $author['role'] : '',
- ));
- }
- }
}