From acb767f14d6300ebff793f87b1a62ebbb4bde82a Mon Sep 17 00:00:00 2001
From: Oleg Pudeyev <oleg@bsdpower.com>
Date: Tue, 9 Aug 2011 23:28:40 -0400
Subject: [PATCH] [feature/template-engine] Dependency inject locator into
 template.

PHPBB3-9726
---
 phpBB/common.php                             | 3 ++-
 phpBB/includes/bbcode.php                    | 3 ++-
 phpBB/includes/functions_messenger.php       | 3 ++-
 phpBB/includes/template/template.php         | 5 +++--
 tests/template/template_inheritance_test.php | 3 ++-
 tests/template/template_test_case.php        | 4 +++-
 6 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/phpBB/common.php b/phpBB/common.php
index 67fb5cf6ae..f206dc70fd 100644
--- a/phpBB/common.php
+++ b/phpBB/common.php
@@ -224,7 +224,8 @@ $config = new phpbb_config_db($db, $cache->get_driver(), CONFIG_TABLE);
 set_config(null, null, null, $config);
 set_config_count(null, null, null, $config);
 
-$template	= new phpbb_template($phpbb_root_path, $phpEx, $config, $user);
+$template_locator = new phpbb_template_locator();
+$template = new phpbb_template($phpbb_root_path, $phpEx, $config, $user, $template_locator);
 
 // Add own hook handler
 require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
diff --git a/phpBB/includes/bbcode.php b/phpBB/includes/bbcode.php
index 85d7459163..482858446c 100644
--- a/phpBB/includes/bbcode.php
+++ b/phpBB/includes/bbcode.php
@@ -133,7 +133,8 @@ class bbcode
 		{
 			$this->template_bitfield = new bitfield($user->theme['bbcode_bitfield']);
 
-			$template = new phpbb_template($phpbb_root_path, $phpEx, $config, $user);
+			$template_locator = new phpbb_template_locator();
+			$template = new phpbb_template($phpbb_root_path, $phpEx, $config, $user, $template_locator);
 			$template->set_template();
 			$locator = $template->_get_locator();
 			$locator->set_filenames(array('bbcode.html' => 'bbcode.html'));
diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php
index da7e7cb9e4..507f523866 100644
--- a/phpBB/includes/functions_messenger.php
+++ b/phpBB/includes/functions_messenger.php
@@ -193,7 +193,8 @@ class messenger
 		// tpl_msg now holds a template object we can use to parse the template file
 		if (!isset($this->tpl_msg[$template_lang . $template_file]))
 		{
-			$this->tpl_msg[$template_lang . $template_file] = new phpbb_template($phpbb_root_path, $phpEx, $config, $user);
+			$template_locator = new phpbb_template_locator();
+			$this->tpl_msg[$template_lang . $template_file] = new phpbb_template($phpbb_root_path, $phpEx, $config, $user, $template_locator);
 			$tpl = &$this->tpl_msg[$template_lang . $template_file];
 
 			$fallback_template_path = false;
diff --git a/phpBB/includes/template/template.php b/phpBB/includes/template/template.php
index 80052ba59a..0409b66da6 100644
--- a/phpBB/includes/template/template.php
+++ b/phpBB/includes/template/template.php
@@ -72,14 +72,15 @@ class phpbb_template
 	*
 	* @param string $phpbb_root_path phpBB root path
 	* @param user $user current user
+	* @param phpbb_template_locator $locator template locator
 	*/
-	public function __construct($phpbb_root_path, $phpEx, $config, $user)
+	public function __construct($phpbb_root_path, $phpEx, $config, $user, phpbb_template_locator $locator)
 	{
 		$this->phpbb_root_path = $phpbb_root_path;
 		$this->phpEx = $phpEx;
 		$this->config = $config;
 		$this->user = $user;
-		$this->locator = new phpbb_template_locator();
+		$this->locator = $locator;
 	}
 
 	/**
diff --git a/tests/template/template_inheritance_test.php b/tests/template/template_inheritance_test.php
index ed78cc7ee5..d62562ff0d 100644
--- a/tests/template/template_inheritance_test.php
+++ b/tests/template/template_inheritance_test.php
@@ -68,7 +68,8 @@ class phpbb_template_template_inheritance_test extends phpbb_template_template_t
 
 		$this->template_path = dirname(__FILE__) . '/templates';
 		$this->parent_template_path = dirname(__FILE__) . '/parent_templates';
-		$this->template = new phpbb_template($phpbb_root_path, $phpEx, $config, $user);
+		$this->template_locator = new phpbb_template_locator();
+		$this->template = new phpbb_template($phpbb_root_path, $phpEx, $config, $user, $this->template_locator);
 		$this->template->set_custom_template($this->template_path, 'tests', $this->parent_template_path);
 	}
 }
diff --git a/tests/template/template_test_case.php b/tests/template/template_test_case.php
index c87b54f973..e475e4012f 100644
--- a/tests/template/template_test_case.php
+++ b/tests/template/template_test_case.php
@@ -13,6 +13,7 @@ class phpbb_template_template_test_case extends phpbb_test_case
 {
 	protected $template;
 	protected $template_path;
+	protected $template_locator;
 
 	// Keep the contents of the cache for debugging?
 	const PRESERVE_CACHE = true;
@@ -41,7 +42,8 @@ class phpbb_template_template_test_case extends phpbb_test_case
 		$config = new phpbb_config(array_merge($defaults, $new_config));
 
 		$this->template_path = dirname(__FILE__) . '/templates';
-		$this->template = new phpbb_template($phpbb_root_path, $phpEx, $config, $user);
+		$this->template_locator = new phpbb_template_locator();
+		$this->template = new phpbb_template($phpbb_root_path, $phpEx, $config, $user, $this->template_locator);
 		$this->template->set_custom_template($this->template_path, 'tests');
 	}