diff options
Diffstat (limited to 'phpBB/phpbb/event/kernel_request_subscriber.php')
| -rw-r--r-- | phpBB/phpbb/event/kernel_request_subscriber.php | 82 | 
1 files changed, 82 insertions, 0 deletions
diff --git a/phpBB/phpbb/event/kernel_request_subscriber.php b/phpBB/phpbb/event/kernel_request_subscriber.php new file mode 100644 index 0000000000..ee9f29a59d --- /dev/null +++ b/phpBB/phpbb/event/kernel_request_subscriber.php @@ -0,0 +1,82 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\event; + +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\EventListener\RouterListener; +use Symfony\Component\Routing\RequestContext; + +class kernel_request_subscriber implements EventSubscriberInterface +{ +	/** +	* Extension manager object +	* @var \phpbb\extension\manager +	*/ +	protected $manager; + +	/** +	* PHP file extension +	* @var string +	*/ +	protected $php_ext; + +	/** +	* Root path +	* @var string +	*/ +	protected $root_path; + +	/** +	* Construct method +	* +	* @param \phpbb\extension\manager $manager Extension manager object +	* @param string $root_path Root path +	* @param string $php_ext PHP file extension +	*/ +	public function __construct(\phpbb\extension\manager $manager, $root_path, $php_ext) +	{ +		$this->root_path = $root_path; +		$this->php_ext = $php_ext; +		$this->manager = $manager; +	} + +	/** +	* This listener is run when the KernelEvents::REQUEST event is triggered +	* +	* This is responsible for setting up the routing information +	* +	* @param GetResponseEvent $event +	* @throws \BadMethodCallException +	* @return null +	*/ +	public function on_kernel_request(GetResponseEvent $event) +	{ +		$request = $event->getRequest(); +		$context = new RequestContext(); +		$context->fromRequest($request); + +		$matcher = phpbb_get_url_matcher($this->manager, $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', +		); +	} +}  | 
