diff options
author | javiexin <javiexin@gmail.com> | 2017-02-12 14:39:26 +0100 |
---|---|---|
committer | javiexin <javiexin@gmail.com> | 2017-02-12 14:39:26 +0100 |
commit | d3a687df270268b4cbbe3ae0d10e8c4e2ae29235 (patch) | |
tree | b3b4328db6ed1b00a4f847e50aec021ae4bcb4fc /phpBB/phpbb/extension/metadata_manager.php | |
parent | 5266821e1b5b271e69b00d717b9e9b1f77b65b9f (diff) | |
download | forums-d3a687df270268b4cbbe3ae0d10e8c4e2ae29235.tar forums-d3a687df270268b4cbbe3ae0d10e8c4e2ae29235.tar.gz forums-d3a687df270268b4cbbe3ae0d10e8c4e2ae29235.tar.bz2 forums-d3a687df270268b4cbbe3ae0d10e8c4e2ae29235.tar.xz forums-d3a687df270268b4cbbe3ae0d10e8c4e2ae29235.zip |
[ticket/15087] Optimize creation of metadata objects by caching
Code for [ticket/15080] Save unneeded file loads for extension
metadata for phpbb 3.2.
PHPBB3-15087
Diffstat (limited to 'phpBB/phpbb/extension/metadata_manager.php')
-rw-r--r-- | phpBB/phpbb/extension/metadata_manager.php | 64 |
1 files changed, 16 insertions, 48 deletions
diff --git a/phpBB/phpbb/extension/metadata_manager.php b/phpBB/phpbb/extension/metadata_manager.php index 348b3c2cdf..089f9a7a32 100644 --- a/phpBB/phpbb/extension/metadata_manager.php +++ b/phpBB/phpbb/extension/metadata_manager.php @@ -81,13 +81,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 === array()) + { + $this->fetch_metadata_from_file(); + } switch ($element) { @@ -121,52 +119,32 @@ 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'; - - $this->metadata_file = $metadata_filepath; + $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)); } - } - /** - * 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('FILE_NOT_FOUND', array($this->metadata_file)); + throw new \phpbb\extension\exception('FILE_CONTENT_ERR', array($this->metadata_file)); } - else - { - if (!($file_contents = file_get_contents($this->metadata_file))) - { - throw new \phpbb\extension\exception('FILE_CONTENT_ERR', array($this->metadata_file)); - } - if (($metadata = json_decode($file_contents, true)) === null) - { - throw new \phpbb\extension\exception('FILE_JSON_DECODE_ERR', array($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('FILE_JSON_DECODE_ERR', array($this->metadata_file)); } + + array_walk_recursive($metadata, array($this, 'sanitize_json')); + $this->metadata = $metadata; } /** @@ -181,16 +159,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 |