aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathaniel Guse <nathaniel.guse@gmail.com>2013-06-25 16:51:50 -0500
committerNathaniel Guse <nathaniel.guse@gmail.com>2013-06-25 16:51:50 -0500
commit1c8c03c4dbd74f2f2abf6d2968bc33a234df5a4e (patch)
tree435b34f2bd489a5ce07d905e1d6e281e581b0af5
parent8bccba1a2fb5479ead0594b09dad95d4d22a5cec (diff)
downloadforums-1c8c03c4dbd74f2f2abf6d2968bc33a234df5a4e.tar
forums-1c8c03c4dbd74f2f2abf6d2968bc33a234df5a4e.tar.gz
forums-1c8c03c4dbd74f2f2abf6d2968bc33a234df5a4e.tar.bz2
forums-1c8c03c4dbd74f2f2abf6d2968bc33a234df5a4e.tar.xz
forums-1c8c03c4dbd74f2f2abf6d2968bc33a234df5a4e.zip
[feature/twig] INCLUDEPHP token abs paths & fix test
PHPBB3-11598
-rw-r--r--phpBB/includes/template/twig/node/includephp.php14
-rw-r--r--tests/template/includephp_test.php13
2 files changed, 15 insertions, 12 deletions
diff --git a/phpBB/includes/template/twig/node/includephp.php b/phpBB/includes/template/twig/node/includephp.php
index 6e77fac55d..5315d136d7 100644
--- a/phpBB/includes/template/twig/node/includephp.php
+++ b/phpBB/includes/template/twig/node/includephp.php
@@ -50,9 +50,17 @@ class phpbb_template_twig_node_includephp extends Twig_Node
$expr = preg_replace('#{{ ([a-zA-Z0-9_]+) }}#', '\' . ((isset($context["$1"])) ? $context["$1"] : null) . \'', $this->getNode('expr')->getAttribute('value'));
$compiler
- ->write("require(\$this->getEnvironment()->get_phpbb_root_path() . '")
- ->raw($expr)
- ->raw("');\n")
+ ->write("if (phpbb_is_absolute('$expr')) {\n")
+ ->indent()
+ ->write("require('$expr');\n")
+ ->outdent()
+ ->write("} else {\n")
+ ->indent()
+ ->write("require(\$this->getEnvironment()->get_phpbb_root_path() . '")
+ ->raw($expr)
+ ->raw("');\n")
+ ->outdent()
+ ->write("}\n")
;
if ($this->getAttribute('ignore_missing')) {
diff --git a/tests/template/includephp_test.php b/tests/template/includephp_test.php
index f1012b6939..edf1e40bb8 100644
--- a/tests/template/includephp_test.php
+++ b/tests/template/includephp_test.php
@@ -15,9 +15,7 @@ class phpbb_template_includephp_test extends phpbb_template_template_test_case
{
$this->setup_engine(array('tpl_allow_php' => true));
- $cache_file = $this->template->cachepath . 'includephp_relative.html.php';
-
- $this->run_template('includephp_relative.html', array(), array(), array(), "Path is relative to board root.\ntesting included php", $cache_file);
+ $this->run_template('includephp_relative.html', array(), array(), array(), "Path is relative to board root.\ntesting included php");
$this->template->set_filenames(array('test' => 'includephp_relative.html'));
$this->assertEquals("Path is relative to board root.\ntesting included php", $this->display('test'), "Testing INCLUDEPHP");
@@ -27,9 +25,7 @@ class phpbb_template_includephp_test extends phpbb_template_template_test_case
{
$this->setup_engine(array('tpl_allow_php' => true));
- $cache_file = $this->template->cachepath . 'includephp_variables.html.php';
-
- $this->run_template('includephp_variables.html', array('TEMPLATES' => 'templates'), array(), array(), "Path includes variables.\ntesting included php", $cache_file);
+ $this->run_template('includephp_variables.html', array('TEMPLATES' => 'templates'), array(), array(), "Path includes variables.\ntesting included php");
$this->template->set_filenames(array('test' => 'includephp_variables.html'));
$this->assertEquals("Path includes variables.\ntesting included php", $this->display('test'), "Testing INCLUDEPHP");
@@ -37,7 +33,7 @@ class phpbb_template_includephp_test extends phpbb_template_template_test_case
public function test_includephp_absolute()
{
- $path_to_php = dirname(__FILE__) . '/templates/_dummy_include.php.inc';
+ $path_to_php = str_replace('\\', '/', dirname(__FILE__)) . '/templates/_dummy_include.php.inc';
$this->assertTrue(phpbb_is_absolute($path_to_php));
$template_text = "Path is absolute.\n<!-- INCLUDEPHP $path_to_php -->";
@@ -49,9 +45,8 @@ class phpbb_template_includephp_test extends phpbb_template_template_test_case
$this->setup_engine(array('tpl_allow_php' => true));
$this->style->set_custom_style('tests', $cache_dir, array(), '');
- $cache_file = $this->template->cachepath . 'includephp_absolute.html.php';
- $this->run_template('includephp_absolute.html', array(), array(), array(), "Path is absolute.\ntesting included php", $cache_file);
+ $this->run_template('includephp_absolute.html', array(), array(), array(), "Path is absolute.\ntesting included php");
$this->template->set_filenames(array('test' => 'includephp_absolute.html'));
$this->assertEquals("Path is absolute.\ntesting included php", $this->display('test'), "Testing INCLUDEPHP");