aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/filesystem.php
diff options
context:
space:
mode:
authorNathan Guse <nathaniel.guse@gmail.com>2013-09-09 17:28:56 -0500
committerNathan Guse <nathaniel.guse@gmail.com>2013-09-09 17:28:56 -0500
commitf30b87519e9ead41525e1979cbce874e8a84e2b8 (patch)
treec21dc4ba2e8642e96e472df60518e55fd1be77e1 /phpBB/phpbb/filesystem.php
parent2146d0c36b1bec9dffba49e9727f8b493a0fb0f2 (diff)
downloadforums-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.php69
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.
*