From 911831a9c5d7971ec8c6155360115246c9a871e0 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sun, 5 Oct 2014 18:39:23 +0200 Subject: [PATCH 1/3] [ticket/13133] Allow @vendor_name for includecss PHPBB3-13133 --- phpBB/phpbb/template/twig/twig.php | 32 ++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/phpBB/phpbb/template/twig/twig.php b/phpBB/phpbb/template/twig/twig.php index a3b002f350..84d5450d98 100644 --- a/phpBB/phpbb/template/twig/twig.php +++ b/phpBB/phpbb/template/twig/twig.php @@ -189,13 +189,24 @@ class twig extends \phpbb\template\base { $path = $this->phpbb_root_path . trim($directory, '/') . "/{$name}/"; $template_path = $path . 'template/'; + $theme_path = $path . 'theme/'; + $ok = false; if (is_dir($template_path)) + { + $ok = true; + $paths[] = $template_path; + } + if (is_dir($theme_path)) + { + $ok = true; + $paths[] = $theme_path; + } + + if ($ok) { // Add the base style directory as a safe directory $this->twig->getLoader()->addSafeDirectory($path); - - $paths[] = $template_path; } } } @@ -253,25 +264,38 @@ class twig extends \phpbb\template\base { $ext_style_template_path = $ext_path . $template_dir['ext_path']; $ext_style_path = dirname($ext_style_template_path); + $ext_style_theme_path = $ext_style_path . 'theme/'; } else { $ext_style_path = $ext_path . 'styles/' . $template_dir['name'] . '/'; $ext_style_template_path = $ext_style_path . 'template/'; + $ext_style_theme_path = $ext_style_path . 'theme/'; } } else { $ext_style_path = $ext_path . 'styles/' . $template_dir . '/'; $ext_style_template_path = $ext_style_path . 'template/'; + $ext_style_theme_path = $ext_style_path . 'theme/'; } + $ok = false; if (is_dir($ext_style_template_path)) + { + $ok = true; + $paths[] = $ext_style_template_path; + } + if (is_dir($ext_style_theme_path)) + { + $ok = true; + $paths[] = $ext_style_theme_path; + } + + if ($ok) { // Add the base style directory as a safe directory $this->twig->getLoader()->addSafeDirectory($ext_style_path); - - $paths[] = $ext_style_template_path; } } From d28536370042fb3a967857e5c76bd754f85dab44 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 8 Oct 2014 18:05:31 +0200 Subject: [PATCH 2/3] [ticket/13133] Add unit tests PHPBB3-13133 --- .../css/styles/all/theme/child_only.css | 0 .../ext/include/css/styles/all/theme/test.css | 0 tests/template/template_includecss_test.php | 86 +++++++++++++++++-- tests/template/templates/includecss.html | 11 ++- 4 files changed, 88 insertions(+), 9 deletions(-) create mode 100644 tests/template/ext/include/css/styles/all/theme/child_only.css create mode 100644 tests/template/ext/include/css/styles/all/theme/test.css diff --git a/tests/template/ext/include/css/styles/all/theme/child_only.css b/tests/template/ext/include/css/styles/all/theme/child_only.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/template/ext/include/css/styles/all/theme/test.css b/tests/template/ext/include/css/styles/all/theme/test.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/template/template_includecss_test.php b/tests/template/template_includecss_test.php index ab91dd7a49..49bd9dec8b 100644 --- a/tests/template/template_includecss_test.php +++ b/tests/template/template_includecss_test.php @@ -15,18 +15,90 @@ require_once dirname(__FILE__) . '/template_test_case_with_tree.php'; class phpbb_template_template_includecss_test extends phpbb_template_template_test_case_with_tree { - public function test_includecss_compilation() + protected function setup_engine(array $new_config = array()) + { + global $phpbb_root_path, $phpEx, $user; + + $defaults = $this->config_defaults(); + $config = new \phpbb\config\config(array_merge($defaults, $new_config)); + + $this->phpbb_path_helper = new \phpbb\path_helper( + new \phpbb\symfony_request( + new phpbb_mock_request() + ), + new \phpbb\filesystem(), + $this->getMock('\phpbb\request\request'), + $phpbb_root_path, + $phpEx + ); + + $this->template_path = $this->test_path . '/templates'; + $this->parent_template_path = $this->test_path . '/parent_templates'; + $this->template = new phpbb\template\twig\twig( + $this->phpbb_path_helper, + $config, + $user, + new phpbb\template\context(), + new phpbb_mock_extension_manager( + dirname(__FILE__) . '/', + array( + 'include/css' => array( + 'ext_name' => 'include/css', + 'ext_active' => '1', + 'ext_path' => 'ext/include/css/', + ), + ) + ) + ); + $this->template->set_custom_style('tests', array($this->template_path, $this->parent_template_path)); + } + + public function template_data() + { + $url_base = explode('/', dirname(__FILE__)); + foreach ($url_base as &$dir) + { + $dir = rawurlencode($dir); + } + $url_base = implode('/', $url_base); + + return array( + /* + array( + // vars + // expected + ), + */ + array( + array('TEST' => 1), + '', + ), + array( + array('TEST' => 2), + '', + ), + array( + array('TEST' => 3), + '', + ), + array( + array('TEST' => 4), + '', + ), + ); + } + + /** + * @dataProvider template_data + */ + public function test_includecss_compilation($vars, $expected) { // Reset the engine state $this->setup_engine(array('assets_version' => 1)); - // Prepare correct result - $scripts = array( - '', - '', - ); + $this->template->assign_vars($vars); // Run test - $this->run_template('includecss.html', array(), array(), array(), implode('', $scripts)); + $this->run_template('includecss.html', array(), array(), array(), $expected); } } diff --git a/tests/template/templates/includecss.html b/tests/template/templates/includecss.html index a09e44f240..23e3c426d7 100644 --- a/tests/template/templates/includecss.html +++ b/tests/template/templates/includecss.html @@ -1,3 +1,10 @@ - - + + + + + + + + + {$STYLESHEETS} From 9aa8f44489d5a94368e2e30bfa73c1278abfcce7 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 7 Nov 2014 15:57:31 +0100 Subject: [PATCH 3/3] [ticket/13133] Rename $ok variable PHPBB3-13133 --- phpBB/phpbb/template/twig/twig.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/phpBB/phpbb/template/twig/twig.php b/phpBB/phpbb/template/twig/twig.php index 84d5450d98..5b71bb5e8a 100644 --- a/phpBB/phpbb/template/twig/twig.php +++ b/phpBB/phpbb/template/twig/twig.php @@ -191,19 +191,19 @@ class twig extends \phpbb\template\base $template_path = $path . 'template/'; $theme_path = $path . 'theme/'; - $ok = false; + $is_valid_dir = false; if (is_dir($template_path)) { - $ok = true; + $is_valid_dir = true; $paths[] = $template_path; } if (is_dir($theme_path)) { - $ok = true; + $is_valid_dir = true; $paths[] = $theme_path; } - if ($ok) + if ($is_valid_dir) { // Add the base style directory as a safe directory $this->twig->getLoader()->addSafeDirectory($path);