aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Alexander <admin@m-a-styles.de>2017-04-17 10:19:19 +0200
committerMarc Alexander <admin@m-a-styles.de>2017-04-17 10:19:19 +0200
commit8303058ac613c1699b51a647b29b97f754fdf6a6 (patch)
tree9161d21ac391b619a64d49435ca3c3bab384f366 /phpBB/phpbb/extension
parentMerge pull request #4592 from javiexin/ticket/14938 (diff)
parent[ticket/15080] Save unneeded file loads for extension metadata (diff)
downloadphpbb-8303058ac613c1699b51a647b29b97f754fdf6a6.tar.gz
phpbb-8303058ac613c1699b51a647b29b97f754fdf6a6.tar.bz2
phpbb-8303058ac613c1699b51a647b29b97f754fdf6a6.zip
Merge pull request #4689 from javiexin/ticket/15080
[ticket/15080] Save unneeded file loads for extension metadata
Diffstat (limited to 'phpBB/phpbb/extension')
-rw-r--r--phpBB/phpbb/extension/metadata_manager.php60
1 files changed, 15 insertions, 45 deletions
diff --git a/phpBB/phpbb/extension/metadata_manager.php b/phpBB/phpbb/extension/metadata_manager.php
index 4059491663..a09f07bed2 100644
--- a/phpBB/phpbb/extension/metadata_manager.php
+++ b/phpBB/phpbb/extension/metadata_manager.php
@@ -99,13 +99,11 @@ class metadata_manager
*/
public function get_metadata($element = 'all')
{
- $this->set_metadata_file();
-
- // Fetch the metadata
- $this->fetch_metadata();
-
- // Clean the metadata
- $this->clean_metadata_array();
+ // Fetch and clean the metadata if not done yet
+ if ($this->metadata_file === '')
+ {
+ $this->fetch_metadata_from_file();
+ }
switch ($element)
{
@@ -128,11 +126,11 @@ class metadata_manager
}
/**
- * Sets the filepath of the metadata file
+ * Sets the path of the metadata file, gets its contents and cleans loaded file
*
* @throws \phpbb\extension\exception
*/
- private function set_metadata_file()
+ private function fetch_metadata_from_file()
{
$ext_filepath = $this->extension_manager->get_extension_path($this->ext_name);
$metadata_filepath = $this->phpbb_root_path . $ext_filepath . 'composer.json';
@@ -143,37 +141,19 @@ class metadata_manager
{
throw new \phpbb\extension\exception($this->user->lang('FILE_NOT_FOUND', $this->metadata_file));
}
- }
- /**
- * Gets the contents of the composer.json file
- *
- * @return bool True if success, throws an exception on failure
- * @throws \phpbb\extension\exception
- */
- private function fetch_metadata()
- {
- if (!file_exists($this->metadata_file))
+ if (!($file_contents = file_get_contents($this->metadata_file)))
{
- throw new \phpbb\extension\exception($this->user->lang('FILE_NOT_FOUND', $this->metadata_file));
+ throw new \phpbb\extension\exception($this->user->lang('FILE_CONTENT_ERR', $this->metadata_file));
}
- else
- {
- if (!($file_contents = file_get_contents($this->metadata_file)))
- {
- throw new \phpbb\extension\exception($this->user->lang('FILE_CONTENT_ERR', $this->metadata_file));
- }
-
- if (($metadata = json_decode($file_contents, true)) === null)
- {
- throw new \phpbb\extension\exception($this->user->lang('FILE_JSON_DECODE_ERR', $this->metadata_file));
- }
- array_walk_recursive($metadata, array($this, 'sanitize_json'));
- $this->metadata = $metadata;
-
- return true;
+ if (($metadata = json_decode($file_contents, true)) === null)
+ {
+ throw new \phpbb\extension\exception($this->user->lang('FILE_JSON_DECODE_ERR', $this->metadata_file));
}
+
+ array_walk_recursive($metadata, array($this, 'sanitize_json'));
+ $this->metadata = $metadata;
}
/**
@@ -188,16 +168,6 @@ class metadata_manager
}
/**
- * This array handles the cleaning of the array
- *
- * @return array Contains the cleaned metadata array
- */
- private function clean_metadata_array()
- {
- return $this->metadata;
- }
-
- /**
* Validate fields
*
* @param string $name ("all" for display and enable validation