diff options
author | Nathan Guse <nathaniel.guse@gmail.com> | 2013-06-12 13:26:20 -0500 |
---|---|---|
committer | Nathan Guse <nathaniel.guse@gmail.com> | 2013-06-12 13:26:20 -0500 |
commit | fa86f45f62b52a9eed63e9be5cde9dedf8ea1d0e (patch) | |
tree | 49f94f0889e4bffba0e85972473bd34f54326f09 /phpBB | |
parent | 74f19830f332bde9c022394f7fba744b5245e535 (diff) | |
download | forums-fa86f45f62b52a9eed63e9be5cde9dedf8ea1d0e.tar forums-fa86f45f62b52a9eed63e9be5cde9dedf8ea1d0e.tar.gz forums-fa86f45f62b52a9eed63e9be5cde9dedf8ea1d0e.tar.bz2 forums-fa86f45f62b52a9eed63e9be5cde9dedf8ea1d0e.tar.xz forums-fa86f45f62b52a9eed63e9be5cde9dedf8ea1d0e.zip |
[feature/twig] Use phpBB's resource locator to find templates
PHPBB3-11598
Diffstat (limited to 'phpBB')
-rw-r--r-- | phpBB/includes/template/twig/loader.php | 50 | ||||
-rw-r--r-- | phpBB/includes/template/twig/twig.php | 2 |
2 files changed, 51 insertions, 1 deletions
diff --git a/phpBB/includes/template/twig/loader.php b/phpBB/includes/template/twig/loader.php new file mode 100644 index 0000000000..ec8704e218 --- /dev/null +++ b/phpBB/includes/template/twig/loader.php @@ -0,0 +1,50 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +class phpbb_template_twig_loader extends Twig_Loader_Filesystem +{ + protected $phpbb_locator; + + /** + * Constructor. + * + * @param string|array $paths A path or an array of paths where to look for templates + * @param phpbb_template_locator + */ + public function __construct($paths = array(), phpbb_template_locator $phpbb_locator) + { + if ($paths) { + $this->setPaths($paths); + } + + $this->phpbb_locator = $phpbb_locator; + } + + protected function findTemplate($name) + { + $name = (string) $name; + + if (!$name) + { + throw new Twig_Error_Loader(sprintf('Unable to find template "%s".', $name)); + } + + $this->phpbb_locator->set_filenames(array( + 'temp' => $name, + )); + $location = $this->phpbb_locator->get_source_file_for_handle('temp'); + + if (!$location) + { + throw new Twig_Error_Loader(sprintf('Unable to find template "%s".', $name)); + } + + return $this->cache[$name] = $location; + } +} diff --git a/phpBB/includes/template/twig/twig.php b/phpBB/includes/template/twig/twig.php index e12b62be63..77f96e85d0 100644 --- a/phpBB/includes/template/twig/twig.php +++ b/phpBB/includes/template/twig/twig.php @@ -107,7 +107,7 @@ class phpbb_template_twig implements phpbb_template $this->context = $context; $this->extension_manager = $extension_manager; - $loader = new Twig_Loader_Filesystem($phpbb_root_path . 'styles/prosilver/template/'); + $loader = new phpbb_template_twig_loader($phpbb_root_path . 'styles/prosilver/template/', $this->locator); //$loader = new Twig_Loader_Filesystem($phpbb_root_path . 'adm/style/'); $this->twig = new Twig_Environment($loader, array( 'cache' => $phpbb_root_path . 'cache/twig/', |