diff options
author | Nathan Guse <nathaniel.guse@gmail.com> | 2013-09-09 17:28:56 -0500 |
---|---|---|
committer | Nathan Guse <nathaniel.guse@gmail.com> | 2013-09-09 17:28:56 -0500 |
commit | f30b87519e9ead41525e1979cbce874e8a84e2b8 (patch) | |
tree | c21dc4ba2e8642e96e472df60518e55fd1be77e1 /phpBB/phpbb/filesystem.php | |
parent | 2146d0c36b1bec9dffba49e9727f8b493a0fb0f2 (diff) | |
download | forums-f30b87519e9ead41525e1979cbce874e8a84e2b8.tar forums-f30b87519e9ead41525e1979cbce874e8a84e2b8.tar.gz forums-f30b87519e9ead41525e1979cbce874e8a84e2b8.tar.bz2 forums-f30b87519e9ead41525e1979cbce874e8a84e2b8.tar.xz forums-f30b87519e9ead41525e1979cbce874e8a84e2b8.zip |
[ticket/11832] Inject dependencies for phpbb_get_web_root_path (also moving)
Function moved from phpbb_get_web_root_path to filesystem::get_web_root_path
PHPBB3-11832
Diffstat (limited to 'phpBB/phpbb/filesystem.php')
-rw-r--r-- | phpBB/phpbb/filesystem.php | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/phpBB/phpbb/filesystem.php b/phpBB/phpbb/filesystem.php index 27cab48fb0..a85a254865 100644 --- a/phpBB/phpbb/filesystem.php +++ b/phpBB/phpbb/filesystem.php @@ -6,6 +6,9 @@ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 * */ + +use Symfony\Component\HttpFoundation\Request; + /** * @ignore */ @@ -20,6 +23,72 @@ if (!defined('IN_PHPBB')) */ class phpbb_filesystem { + /** @var string */ + protected $phpbb_root_path; + + /** + * Constructor + * + * @param string $phpbb_root_path + */ + public function __construct($phpbb_root_path) + { + $this->phpbb_root_path = $phpbb_root_path; + } + + /** + * Get the phpBB root path + * + * @return string + */ + public function get_phpbb_root_path() + { + return $this->phpbb_root_path; + } + + /** + * Get a relative root path from the current URL + * + * @param Request $symfony_request Symfony Request object + * @return string + */ + function get_web_root_path(Request $symfony_request = null) + { + if ($symfony_request === null) + { + return ''; + } + + static $path; + if (null !== $path) + { + return $path; + } + + $path_info = $symfony_request->getPathInfo(); + if ($path_info === '/') + { + $path = $this->phpbb_root_path; + return $path; + } + + $path_info = $this->clean_path($path_info); + + // Do not count / at start of path + $corrections = substr_count(substr($path_info, 1), '/'); + + // When URL Rewriting is enabled, app.php is optional. We have to + // correct for it not being there + if (strpos($symfony_request->getRequestUri(), $symfony_request->getScriptName()) === false) + { + $corrections -= 1; + } + + $path = $this->phpbb_root_path . str_repeat('../', $corrections); + + return $path; + } + /** * Eliminates useless . and .. components from specified path. * |