diff options
author | Nicofuma <github@nicofuma.fr> | 2015-02-22 18:38:30 +0100 |
---|---|---|
committer | Nicofuma <github@nicofuma.fr> | 2015-05-04 23:23:40 +0200 |
commit | f097f84f16f32e8d9c0148907f0ae5743f09619f (patch) | |
tree | edfcb9d15562b45500936e000933a0dc1d12cdd5 | |
parent | 3b631cb40d1641dce8789fabd79e3cbc5598747d (diff) | |
download | forums-f097f84f16f32e8d9c0148907f0ae5743f09619f.tar forums-f097f84f16f32e8d9c0148907f0ae5743f09619f.tar.gz forums-f097f84f16f32e8d9c0148907f0ae5743f09619f.tar.bz2 forums-f097f84f16f32e8d9c0148907f0ae5743f09619f.tar.xz forums-f097f84f16f32e8d9c0148907f0ae5743f09619f.zip |
[ticket/13638] Handle assets outside of phpbb_root_path
PHPBB3-13638
-rw-r--r-- | phpBB/phpbb/template/asset.php | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/phpBB/phpbb/template/asset.php b/phpBB/phpbb/template/asset.php index d9ed861034..aa1689d71a 100644 --- a/phpBB/phpbb/template/asset.php +++ b/phpBB/phpbb/template/asset.php @@ -152,11 +152,23 @@ class asset */ public function set_path($path, $urlencode = false) { - // Since 1.7.0 Twig returns the real path of the file. We need it to be relative to the working directory. - $real_root_path = realpath($this->path_helper->get_phpbb_root_path()) . DIRECTORY_SEPARATOR; - if ($real_root_path && substr($path . DIRECTORY_SEPARATOR, 0, strlen($real_root_path)) === $real_root_path) { + // Since 1.7.0 Twig returns the real path of the file. We need it to be relative. + $real_root_path = phpbb_realpath($this->path_helper->get_phpbb_root_path()) . DIRECTORY_SEPARATOR; + + // If the asset is under the phpBB root path we need to remove its path and then prepend $phpbb_root_path + if ($real_root_path && substr($path . DIRECTORY_SEPARATOR, 0, strlen($real_root_path)) === $real_root_path) + { $path = $this->path_helper->get_phpbb_root_path() . str_replace('\\', '/', substr($path, strlen($real_root_path))); } + else + { + // Else we make the path relative to the current working directory + $real_root_path = phpbb_realpath('.') . DIRECTORY_SEPARATOR; + if ($real_root_path && substr($path . DIRECTORY_SEPARATOR, 0, strlen($real_root_path)) === $real_root_path) + { + $path = str_replace('\\', '/', substr($path, strlen($real_root_path))); + } + } if ($urlencode) { |