diff options
-rw-r--r-- | phpBB/includes/extension/controller.php | 77 | ||||
-rw-r--r-- | phpBB/includes/extension/controller_interface.php | 2 | ||||
-rw-r--r-- | phpBB/index.php | 7 | ||||
-rw-r--r-- | tests/functional/fixtures/ext/error/class/controller.php | 7 | ||||
-rw-r--r-- | tests/functional/fixtures/ext/error/classtype/controller.php | 2 | ||||
-rw-r--r-- | tests/functional/fixtures/ext/error/disabled/controller.php | 9 | ||||
-rw-r--r-- | tests/functional/fixtures/ext/foo/bar/controller.php | 7 | ||||
-rw-r--r-- | tests/functional/fixtures/ext/foobar/controller.php | 7 |
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' )); |