aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicofuma <github@nicofuma.fr>2015-02-22 18:38:30 +0100
committerNicofuma <github@nicofuma.fr>2015-05-04 23:23:40 +0200
commitf097f84f16f32e8d9c0148907f0ae5743f09619f (patch)
treeedfcb9d15562b45500936e000933a0dc1d12cdd5
parent3b631cb40d1641dce8789fabd79e3cbc5598747d (diff)
downloadforums-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.php18
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)
{