mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-31 14:00:31 +02:00
[ticket/13638] Inject $filesystem in \phpbb\template\asset
PHPBB3-13638
This commit is contained in:
committed by
Tristan Darricau
parent
321ed2a3dd
commit
51376a4391
@@ -20,15 +20,20 @@ class asset
|
||||
/** @var \phpbb\path_helper **/
|
||||
protected $path_helper;
|
||||
|
||||
/** @var \phpbb\filesystem\filesystem */
|
||||
protected $filesystem;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $url URL
|
||||
* @param \phpbb\path_helper $path_helper Path helper object
|
||||
* @param \phpbb\filesystem\filesystem $filesystem
|
||||
*/
|
||||
public function __construct($url, \phpbb\path_helper $path_helper)
|
||||
public function __construct($url, \phpbb\path_helper $path_helper, \phpbb\filesystem\filesystem $filesystem)
|
||||
{
|
||||
$this->path_helper = $path_helper;
|
||||
$this->filesystem = $filesystem;
|
||||
|
||||
$this->set_url($url);
|
||||
}
|
||||
@@ -153,7 +158,7 @@ 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.
|
||||
$real_root_path = phpbb_realpath($this->path_helper->get_phpbb_root_path()) . DIRECTORY_SEPARATOR;
|
||||
$real_root_path = $this->filesystem->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)
|
||||
@@ -163,7 +168,7 @@ class asset
|
||||
else
|
||||
{
|
||||
// Else we make the path relative to the current working directory
|
||||
$real_root_path = phpbb_realpath('.') . DIRECTORY_SEPARATOR;
|
||||
$real_root_path = $this->filesystem->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)));
|
||||
|
@@ -18,6 +18,9 @@ class environment extends \Twig_Environment
|
||||
/** @var \phpbb\config\config */
|
||||
protected $phpbb_config;
|
||||
|
||||
/** @var \phpbb\filesystem\filesystem */
|
||||
protected $filesystem;
|
||||
|
||||
/** @var \phpbb\path_helper */
|
||||
protected $phpbb_path_helper;
|
||||
|
||||
@@ -40,6 +43,7 @@ class environment extends \Twig_Environment
|
||||
* Constructor
|
||||
*
|
||||
* @param \phpbb\config\config $phpbb_config The phpBB configuration
|
||||
* @param \phpbb\filesystem\filesystem $filesystem
|
||||
* @param \phpbb\path_helper $path_helper phpBB path helper
|
||||
* @param \Symfony\Component\DependencyInjection\ContainerInterface $container The dependency injection container
|
||||
* @param string $cache_path The path to the cache directory
|
||||
@@ -47,10 +51,11 @@ class environment extends \Twig_Environment
|
||||
* @param \Twig_LoaderInterface $loader Twig loader interface
|
||||
* @param array $options Array of options to pass to Twig
|
||||
*/
|
||||
public function __construct($phpbb_config, \phpbb\path_helper $path_helper, \Symfony\Component\DependencyInjection\ContainerInterface $container, $cache_path, \phpbb\extension\manager $extension_manager = null, \Twig_LoaderInterface $loader = null, $options = array())
|
||||
public function __construct(\phpbb\config\config $phpbb_config, \phpbb\filesystem\filesystem $filesystem, \phpbb\path_helper $path_helper, \Symfony\Component\DependencyInjection\ContainerInterface $container, $cache_path, \phpbb\extension\manager $extension_manager = null, \Twig_LoaderInterface $loader = null, $options = array())
|
||||
{
|
||||
$this->phpbb_config = $phpbb_config;
|
||||
|
||||
$this->filesystem = $filesystem;
|
||||
$this->phpbb_path_helper = $path_helper;
|
||||
$this->extension_manager = $extension_manager;
|
||||
$this->container = $container;
|
||||
@@ -106,15 +111,25 @@ class environment extends \Twig_Environment
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the phpBB root path
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
* Get the phpBB root path
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_phpbb_root_path()
|
||||
{
|
||||
return $this->phpbb_root_path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the filesystem object
|
||||
*
|
||||
* @return \phpbb\filesystem\filesystem
|
||||
*/
|
||||
public function get_filesystem()
|
||||
{
|
||||
return $this->filesystem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the web root path
|
||||
*
|
||||
|
@@ -39,7 +39,7 @@ abstract class includeasset extends \Twig_Node
|
||||
->write("\$asset_file = ")
|
||||
->subcompile($this->getNode('expr'))
|
||||
->raw(";\n")
|
||||
->write("\$asset = new \phpbb\\template\\asset(\$asset_file, \$this->getEnvironment()->get_path_helper());\n")
|
||||
->write("\$asset = new \phpbb\\template\\asset(\$asset_file, \$this->getEnvironment()->get_path_helper(), \$this->getEnvironment()->get_filesystem());\n")
|
||||
->write("if (substr(\$asset_file, 0, 2) !== './' && \$asset->is_relative()) {\n")
|
||||
->indent()
|
||||
->write("\$asset_path = \$asset->get_path();")
|
||||
|
Reference in New Issue
Block a user