aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/event/kernel_subscriber.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes/event/kernel_subscriber.php')
-rw-r--r--phpBB/includes/event/kernel_subscriber.php52
1 files changed, 50 insertions, 2 deletions
diff --git a/phpBB/includes/event/kernel_subscriber.php b/phpBB/includes/event/kernel_subscriber.php
index 9737d9bc23..79ee4f4dc5 100644
--- a/phpBB/includes/event/kernel_subscriber.php
+++ b/phpBB/includes/event/kernel_subscriber.php
@@ -18,8 +18,11 @@ if (!defined('IN_PHPBB'))
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\Event\PostResponseEvent;
+use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpKernel\EventListener\RouterListener;
+use Symfony\Component\Routing\RequestContext;
class phpbb_event_kernel_subscriber implements EventSubscriberInterface
{
@@ -36,15 +39,39 @@ class phpbb_event_kernel_subscriber implements EventSubscriberInterface
protected $user;
/**
+ * Extension finder object
+ * @var phpbb_extension_finder
+ */
+ protected $finder;
+
+ /**
+ * PHP extension
+ * @var string
+ */
+ protected $php_ext;
+
+ /**
+ * Root path
+ * @var string
+ */
+ protected $root_path;
+
+ /**
* Construct method
*
* @param phpbb_template $template Template object
* @param phpbb_user $user User object
+ * @param phpbb_extension_finder $finder Extension finder object
+ * @param string $root_path Root path
+ * @param string $php_ext PHP extension
*/
- public function __construct(phpbb_template $template, phpbb_user $user)
+ public function __construct(phpbb_template $template, phpbb_user $user, phpbb_extension_finder $finder, $root_path, $php_ext)
{
$this->template = $template;
$this->user = $user;
+ $this->finder = $finder;
+ $this->root_path = $root_path;
+ $this->php_ext = $php_ext;
}
/**
@@ -81,12 +108,33 @@ class phpbb_event_kernel_subscriber implements EventSubscriberInterface
page_footer(true, false, false);
- $event->setResponse(new Response($this->template->return_display('body'), 404));
+ $event->setResponse(new Response($this->template->assign_display('body'), 404));
+ }
+
+ /**
+ * This listener is run when the KernelEvents::REQUEST event is triggered
+ *
+ * This is responsible for setting up the routing information
+ *
+ * @param GetResponseEvent $event
+ * @return null
+ */
+ public function on_kernel_request(GetResponseEvent $event)
+ {
+ $request = $event->getRequest();
+ $context = new RequestContext();
+ $context->fromRequest($request);
+
+ $matcher = phpbb_create_url_matcher($this->finder, $context, $this->root_path, $this->php_ext);
+
+ $router_listener = new RouterListener($matcher, $context);
+ $router_listener->onKernelRequest($event);
}
public static function getSubscribedEvents()
{
return array(
+ KernelEvents::REQUEST => 'on_kernel_request',
KernelEvents::TERMINATE => 'on_kernel_terminate',
KernelEvents::EXCEPTION => 'on_kernel_exception',
);