aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/includes/extension/controller.php77
-rw-r--r--phpBB/includes/extension/controller_interface.php2
-rw-r--r--phpBB/index.php7
-rw-r--r--tests/functional/fixtures/ext/error/class/controller.php7
-rw-r--r--tests/functional/fixtures/ext/error/classtype/controller.php2
-rw-r--r--tests/functional/fixtures/ext/error/disabled/controller.php9
-rw-r--r--tests/functional/fixtures/ext/foo/bar/controller.php7
-rw-r--r--tests/functional/fixtures/ext/foobar/controller.php7
8 files changed, 92 insertions, 26 deletions
diff --git a/phpBB/includes/extension/controller.php b/phpBB/includes/extension/controller.php
new file mode 100644
index 0000000000..c7fd439a19
--- /dev/null
+++ b/phpBB/includes/extension/controller.php
@@ -0,0 +1,77 @@
+<?php
+/**
+*
+* @package extension
+* @copyright (c) 2011 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+/**
+* @ignore
+*/
+if (!defined('IN_PHPBB'))
+{
+ exit;
+}
+
+/**
+* Abstract class extended by extension front controller classes
+*
+* @package extension
+*/
+abstract class phpbb_extension_controller implements phpbb_extension_controller_interface
+{
+ /**
+ * @var phpbb_request Request class object
+ */
+ protected $request;
+
+ /**
+ * @var dbal DBAL class object
+ */
+ protected $db;
+
+ /**
+ * @var user User class object
+ */
+ protected $user;
+
+ /**
+ * @var phpbb_template Template class object
+ */
+ protected $template;
+
+ /**
+ * @var array Config array
+ */
+ protected $config;
+
+ /**
+ * @var string PHP Extension
+ */
+ protected $phpEx;
+
+ /**
+ * @var string Relative path to board root
+ */
+ protected $phpbb_root_path;
+
+ /**
+ * Constructor method that provides the common phpBB objects as inherited class
+ * properties for automatic availability in extension controllers
+ */
+ public function __construct()
+ {
+ global $request, $db, $user, $template, $config;
+ global $phpEx, $phpbb_root_path;
+
+ $this->request = $request;
+ $this->db = $db;
+ $this->user = $user;
+ $this->template = $template;
+ $this->config = $config;
+ $this->phpEx = $phpEx;
+ $this->phpbb_root_path = $phpbb_root_path;
+ }
+}
diff --git a/phpBB/includes/extension/controller_interface.php b/phpBB/includes/extension/controller_interface.php
index bcc8972db4..2b88925388 100644
--- a/phpBB/includes/extension/controller_interface.php
+++ b/phpBB/includes/extension/controller_interface.php
@@ -23,7 +23,7 @@ if (!defined('IN_PHPBB'))
interface phpbb_extension_controller_interface
{
/**
- * handle the request to display a page from an extension
+ * Handle the request to display a page from an extension
*
* @return null
*/
diff --git a/phpBB/index.php b/phpBB/index.php
index d71878a885..9a57105d57 100644
--- a/phpBB/index.php
+++ b/phpBB/index.php
@@ -17,12 +17,11 @@ define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
-include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
-$user->setup('viewforum');
+$user->setup();
// Handle the display of extension front pages
if ($ext = $request->variable('ext', ''))
@@ -57,6 +56,10 @@ if ($ext = $request->variable('ext', ''))
exit_handler();
}
+include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
+
+$user->add_lang('viewforum');
+
display_forums('', $config['load_moderators']);
$order_legend = ($config['legend_sort_groupname']) ? 'group_name' : 'group_legend';
diff --git a/tests/functional/fixtures/ext/error/class/controller.php b/tests/functional/fixtures/ext/error/class/controller.php
index eb2ae362a6..74bbbee540 100644
--- a/tests/functional/fixtures/ext/error/class/controller.php
+++ b/tests/functional/fixtures/ext/error/class/controller.php
@@ -1,13 +1,10 @@
<?php
-class phpbb_ext_foobar_controller implements phpbb_extension_controller_interface
+class phpbb_ext_foobar_controller extends phpbb_extension_controller
{
public function handle()
{
- global $template;
- $template->set_ext_dir_prefix($phpbb_root_path . 'ext/error/class/');
-
- $template->set_filenames(array(
+ $this->template->set_filenames(array(
'body' => 'index_body.html'
));
diff --git a/tests/functional/fixtures/ext/error/classtype/controller.php b/tests/functional/fixtures/ext/error/classtype/controller.php
index 2276548b55..55ac651bdf 100644
--- a/tests/functional/fixtures/ext/error/classtype/controller.php
+++ b/tests/functional/fixtures/ext/error/classtype/controller.php
@@ -5,8 +5,6 @@ class phpbb_ext_error_classtype_controller
public function handle()
{
global $template;
- $template->set_ext_dir_prefix($phpbb_root_path . 'ext/error/classtype/');
-
$template->set_filenames(array(
'body' => 'index_body.html'
));
diff --git a/tests/functional/fixtures/ext/error/disabled/controller.php b/tests/functional/fixtures/ext/error/disabled/controller.php
index b83a949020..57b913f377 100644
--- a/tests/functional/fixtures/ext/error/disabled/controller.php
+++ b/tests/functional/fixtures/ext/error/disabled/controller.php
@@ -1,13 +1,10 @@
<?php
-class phpbb_ext_error_disabled_controller implements phpbb_extension_controller_interface
+class phpbb_ext_error_disabled_controller extends phpbb_extension_controller
{
public function handle()
- {
- global $template;
- $template->set_ext_dir_prefix($phpbb_root_path . 'ext/error/disabled/');
-
- $template->set_filenames(array(
+ {
+ $this->template->set_filenames(array(
'body' => 'index_body.html'
));
diff --git a/tests/functional/fixtures/ext/foo/bar/controller.php b/tests/functional/fixtures/ext/foo/bar/controller.php
index 24d218c412..3375e317b3 100644
--- a/tests/functional/fixtures/ext/foo/bar/controller.php
+++ b/tests/functional/fixtures/ext/foo/bar/controller.php
@@ -1,13 +1,10 @@
<?php
-class phpbb_ext_foo_bar_controller implements phpbb_extension_controller_interface
+class phpbb_ext_foo_bar_controller extends phpbb_extension_controller
{
public function handle()
{
- global $template;
- $template->set_ext_dir_prefix($phpbb_root_path . 'ext/foo/bar/');
-
- $template->set_filenames(array(
+ $this->template->set_filenames(array(
'body' => 'foobar_body.html'
));
diff --git a/tests/functional/fixtures/ext/foobar/controller.php b/tests/functional/fixtures/ext/foobar/controller.php
index bf8d8139ae..ff35f12ee0 100644
--- a/tests/functional/fixtures/ext/foobar/controller.php
+++ b/tests/functional/fixtures/ext/foobar/controller.php
@@ -1,13 +1,10 @@
<?php
-class phpbb_ext_foobar_controller implements phpbb_extension_controller_interface
+class phpbb_ext_foobar_controller extends phpbb_extension_controller
{
public function handle()
{
- global $template;
- $template->set_ext_dir_prefix($phpbb_root_path . 'ext/foobar/');
-
- $template->set_filenames(array(
+ $this->template->set_filenames(array(
'body' => 'foobar_body.html'
));