aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
authorNathan Guse <nathaniel.guse@gmail.com>2013-06-12 13:26:20 -0500
committerNathan Guse <nathaniel.guse@gmail.com>2013-06-12 13:26:20 -0500
commitfa86f45f62b52a9eed63e9be5cde9dedf8ea1d0e (patch)
tree49f94f0889e4bffba0e85972473bd34f54326f09 /phpBB
parent74f19830f332bde9c022394f7fba744b5245e535 (diff)
downloadforums-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.php50
-rw-r--r--phpBB/includes/template/twig/twig.php2
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/',