From 8b7c2c3c6516fd4eb606054ca3822d8a7f977282 Mon Sep 17 00:00:00 2001 From: Vjacheslav Trushkin Date: Thu, 15 Mar 2012 16:33:13 +0200 Subject: [feature/merging-style-components] Renaming style locator Renaming style locator to style resource locator PHPBB3-10632 --- phpBB/includes/style/locator.php | 214 ------------------------------ phpBB/includes/style/resource_locator.php | 214 ++++++++++++++++++++++++++++++ phpBB/includes/style/style.php | 2 +- phpBB/includes/style/template.php | 6 +- 4 files changed, 218 insertions(+), 218 deletions(-) delete mode 100644 phpBB/includes/style/locator.php create mode 100644 phpBB/includes/style/resource_locator.php (limited to 'phpBB/includes/style') diff --git a/phpBB/includes/style/locator.php b/phpBB/includes/style/locator.php deleted file mode 100644 index 2d0bcce924..0000000000 --- a/phpBB/includes/style/locator.php +++ /dev/null @@ -1,214 +0,0 @@ -main_root_id = array_search($template, $this->roots, true); - } - - /** - * Sets the list of template paths - * - * These paths will be searched for template files in the provided order. - * Paths may be outside of phpBB, but templates loaded from these paths - * will still be cached. - * - * @param array $template_paths An array of paths to template directories - * @return null - */ - public function set_paths($template_paths) - { - $this->roots = array(); - $this->files = array(); - $this->filenames = array(); - $this->main_root_id = 0; - - foreach ($template_paths as $path) - { - // Make sure $path has no ending slash - if (substr($path, -1) === '/') - { - $path = substr($path, 0, -1); - } - $this->roots[] = $path; - } - } - - /** - * Sets the template filenames for handles. $filename_array - * should be a hash of handle => filename pairs. - * - * @param array $filname_array Should be a hash of handle => filename pairs. - */ - public function set_filenames(array $filename_array) - { - foreach ($filename_array as $handle => $filename) - { - if (empty($filename)) - { - trigger_error("template locator: set_filenames: Empty filename specified for $handle", E_USER_ERROR); - } - - $this->filename[$handle] = $filename; - - foreach ($this->roots as $root_index => $root) - { - $this->files[$root_index][$handle] = $root . '/' . $filename; - } - } - } - - /** - * Determines the filename for a template handle. - * - * The filename comes from array used in a set_filenames call, - * which should have been performed prior to invoking this function. - * Return value is a file basename (without path). - * - * @param $handle string Template handle - * @return string Filename corresponding to the template handle - */ - public function get_filename_for_handle($handle) - { - if (!isset($this->filename[$handle])) - { - trigger_error("template locator: get_filename_for_handle: No file specified for handle $handle", E_USER_ERROR); - } - return $this->filename[$handle]; - } - - /** - * Determines the source file path for a template handle without - * regard for template inheritance. - * - * This function returns the path in "primary" template directory - * corresponding to the given template handle. That path may or - * may not actually exist on the filesystem. Because this function - * does not perform stat calls to determine whether the path it - * returns actually exists, it is faster than get_source_file_for_handle. - * - * Use get_source_file_for_handle to obtain the actual path that is - * guaranteed to exist (which might come from the parent/fallback - * template directory if template inheritance is used). - * - * This function will trigger an error if the handle was never - * associated with a template file via set_filenames. - * - * @param $handle string Template handle - * @return string Path to source file path in primary template directory - */ - public function get_virtual_source_file_for_handle($handle) - { - // If we don't have a file assigned to this handle, die. - if (!isset($this->files[$this->main_root_id][$handle])) - { - trigger_error("template locator: No file specified for handle $handle", E_USER_ERROR); - } - - $source_file = $this->files[$this->main_root_id][$handle]; - return $source_file; - } - - /** - * Determines the source file path for a template handle, accounting - * for template inheritance and verifying that the path exists. - * - * This function returns the actual path that may be compiled for - * the specified template handle. It will trigger an error if - * the template handle was never associated with a template path - * via set_filenames or if the template file does not exist on the - * filesystem. - * - * Use get_virtual_source_file_for_handle to just resolve a template - * handle to a path without any filesystem or inheritance checks. - * - * @param string $handle Template handle (i.e. "friendly" template name) - * @return string Source file path - */ - public function get_source_file_for_handle($handle) - { - // If we don't have a file assigned to this handle, die. - if (!isset($this->files[$this->main_root_id][$handle])) - { - trigger_error("template locator: No file specified for handle $handle", E_USER_ERROR); - } - - // locate a source file that exists - $source_file = $this->files[0][$handle]; - $tried = $source_file; - for ($i = 1, $n = count($this->roots); $i < $n && !file_exists($source_file); $i++) - { - $source_file = $this->files[$i][$handle]; - $tried .= ', ' . $source_file; - } - - // search failed - if (!file_exists($source_file)) - { - trigger_error("template locator: File for handle $handle does not exist. Could not find: $tried", E_USER_ERROR); - } - - return $source_file; - } -} diff --git a/phpBB/includes/style/resource_locator.php b/phpBB/includes/style/resource_locator.php new file mode 100644 index 0000000000..f36768fcd3 --- /dev/null +++ b/phpBB/includes/style/resource_locator.php @@ -0,0 +1,214 @@ +main_root_id = array_search($template, $this->roots, true); + } + + /** + * Sets the list of template paths + * + * These paths will be searched for template files in the provided order. + * Paths may be outside of phpBB, but templates loaded from these paths + * will still be cached. + * + * @param array $template_paths An array of paths to template directories + * @return null + */ + public function set_paths($template_paths) + { + $this->roots = array(); + $this->files = array(); + $this->filenames = array(); + $this->main_root_id = 0; + + foreach ($template_paths as $path) + { + // Make sure $path has no ending slash + if (substr($path, -1) === '/') + { + $path = substr($path, 0, -1); + } + $this->roots[] = $path; + } + } + + /** + * Sets the template filenames for handles. $filename_array + * should be a hash of handle => filename pairs. + * + * @param array $filname_array Should be a hash of handle => filename pairs. + */ + public function set_filenames(array $filename_array) + { + foreach ($filename_array as $handle => $filename) + { + if (empty($filename)) + { + trigger_error("template locator: set_filenames: Empty filename specified for $handle", E_USER_ERROR); + } + + $this->filename[$handle] = $filename; + + foreach ($this->roots as $root_index => $root) + { + $this->files[$root_index][$handle] = $root . '/' . $filename; + } + } + } + + /** + * Determines the filename for a template handle. + * + * The filename comes from array used in a set_filenames call, + * which should have been performed prior to invoking this function. + * Return value is a file basename (without path). + * + * @param $handle string Template handle + * @return string Filename corresponding to the template handle + */ + public function get_filename_for_handle($handle) + { + if (!isset($this->filename[$handle])) + { + trigger_error("template locator: get_filename_for_handle: No file specified for handle $handle", E_USER_ERROR); + } + return $this->filename[$handle]; + } + + /** + * Determines the source file path for a template handle without + * regard for template inheritance. + * + * This function returns the path in "primary" template directory + * corresponding to the given template handle. That path may or + * may not actually exist on the filesystem. Because this function + * does not perform stat calls to determine whether the path it + * returns actually exists, it is faster than get_source_file_for_handle. + * + * Use get_source_file_for_handle to obtain the actual path that is + * guaranteed to exist (which might come from the parent/fallback + * template directory if template inheritance is used). + * + * This function will trigger an error if the handle was never + * associated with a template file via set_filenames. + * + * @param $handle string Template handle + * @return string Path to source file path in primary template directory + */ + public function get_virtual_source_file_for_handle($handle) + { + // If we don't have a file assigned to this handle, die. + if (!isset($this->files[$this->main_root_id][$handle])) + { + trigger_error("template locator: No file specified for handle $handle", E_USER_ERROR); + } + + $source_file = $this->files[$this->main_root_id][$handle]; + return $source_file; + } + + /** + * Determines the source file path for a template handle, accounting + * for template inheritance and verifying that the path exists. + * + * This function returns the actual path that may be compiled for + * the specified template handle. It will trigger an error if + * the template handle was never associated with a template path + * via set_filenames or if the template file does not exist on the + * filesystem. + * + * Use get_virtual_source_file_for_handle to just resolve a template + * handle to a path without any filesystem or inheritance checks. + * + * @param string $handle Template handle (i.e. "friendly" template name) + * @return string Source file path + */ + public function get_source_file_for_handle($handle) + { + // If we don't have a file assigned to this handle, die. + if (!isset($this->files[$this->main_root_id][$handle])) + { + trigger_error("template locator: No file specified for handle $handle", E_USER_ERROR); + } + + // locate a source file that exists + $source_file = $this->files[0][$handle]; + $tried = $source_file; + for ($i = 1, $n = count($this->roots); $i < $n && !file_exists($source_file); $i++) + { + $source_file = $this->files[$i][$handle]; + $tried .= ', ' . $source_file; + } + + // search failed + if (!file_exists($source_file)) + { + trigger_error("template locator: File for handle $handle does not exist. Could not find: $tried", E_USER_ERROR); + } + + return $source_file; + } +} diff --git a/phpBB/includes/style/style.php b/phpBB/includes/style/style.php index 217a70e237..b134b4f76f 100644 --- a/phpBB/includes/style/style.php +++ b/phpBB/includes/style/style.php @@ -78,7 +78,7 @@ class phpbb_style $this->phpEx = $phpEx; $this->config = $config; $this->user = $user; - $this->locator = new phpbb_style_locator(); + $this->locator = new phpbb_style_resource_locator(); $this->provider = new phpbb_style_path_provider(); if ($phpbb_extension_manager !== false) { diff --git a/phpBB/includes/style/template.php b/phpBB/includes/style/template.php index 02fa0bd250..076b9e05ea 100644 --- a/phpBB/includes/style/template.php +++ b/phpBB/includes/style/template.php @@ -64,7 +64,7 @@ class phpbb_style_template /** * Template locator - * @var phpbb_style_locator + * @var phpbb_style_resource_locator */ private $locator; @@ -79,10 +79,10 @@ class phpbb_style_template * * @param string $phpbb_root_path phpBB root path * @param user $user current user - * @param phpbb_style_locator $locator template locator + * @param phpbb_style_resource_locator $locator template locator * @param phpbb_style_path_provider $provider template path provider */ - public function __construct($phpbb_root_path, $phpEx, $config, $user, phpbb_style_locator $locator, phpbb_style_path_provider_interface $provider) + public function __construct($phpbb_root_path, $phpEx, $config, $user, phpbb_style_resource_locator $locator, phpbb_style_path_provider_interface $provider) { $this->phpbb_root_path = $phpbb_root_path; $this->phpEx = $phpEx; -- cgit v1.2.1