mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-20 23:41:29 +02:00
[ticket/11698] Moving all autoloadable files to phpbb/
PHPBB3-11698
This commit is contained in:
68
phpBB/phpbb/event/data.php
Normal file
68
phpBB/phpbb/event/data.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2012 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
use Symfony\Component\EventDispatcher\Event;
|
||||
|
||||
class phpbb_event_data extends Event implements ArrayAccess
|
||||
{
|
||||
private $data;
|
||||
|
||||
public function __construct(array $data = array())
|
||||
{
|
||||
$this->set_data($data);
|
||||
}
|
||||
|
||||
public function set_data(array $data = array())
|
||||
{
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
public function get_data()
|
||||
{
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns data filtered to only include specified keys.
|
||||
*
|
||||
* This effectively discards any keys added to data by hooks.
|
||||
*/
|
||||
public function get_data_filtered($keys)
|
||||
{
|
||||
return array_intersect_key($this->data, array_flip($keys));
|
||||
}
|
||||
|
||||
public function offsetExists($offset)
|
||||
{
|
||||
return isset($this->data[$offset]);
|
||||
}
|
||||
|
||||
public function offsetGet($offset)
|
||||
{
|
||||
return isset($this->data[$offset]) ? $this->data[$offset] : null;
|
||||
}
|
||||
|
||||
public function offsetSet($offset, $value)
|
||||
{
|
||||
$this->data[$offset] = $value;
|
||||
}
|
||||
|
||||
public function offsetUnset($offset)
|
||||
{
|
||||
unset($this->data[$offset]);
|
||||
}
|
||||
}
|
42
phpBB/phpbb/event/dispatcher.php
Normal file
42
phpBB/phpbb/event/dispatcher.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2012 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
use Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher;
|
||||
|
||||
/**
|
||||
* Extension of the Symfony2 EventDispatcher
|
||||
*
|
||||
* It provides an additional `trigger_event` method, which
|
||||
* gives some syntactic sugar for dispatching events. Instead
|
||||
* of creating the event object, the method will do that for
|
||||
* you.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* $vars = array('page_title');
|
||||
* extract($phpbb_dispatcher->trigger_event('core.index', compact($vars)));
|
||||
*
|
||||
*/
|
||||
class phpbb_event_dispatcher extends ContainerAwareEventDispatcher
|
||||
{
|
||||
public function trigger_event($eventName, $data = array())
|
||||
{
|
||||
$event = new phpbb_event_data($data);
|
||||
$this->dispatch($eventName, $event);
|
||||
return $event->get_data_filtered(array_keys($data));
|
||||
}
|
||||
}
|
46
phpBB/phpbb/event/extension_subscriber_loader.php
Normal file
46
phpBB/phpbb/event/extension_subscriber_loader.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2012 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
class phpbb_event_extension_subscriber_loader
|
||||
{
|
||||
private $dispatcher;
|
||||
private $extension_manager;
|
||||
|
||||
public function __construct(EventDispatcherInterface $dispatcher, phpbb_extension_manager $extension_manager)
|
||||
{
|
||||
$this->dispatcher = $dispatcher;
|
||||
$this->extension_manager = $extension_manager;
|
||||
}
|
||||
|
||||
public function load()
|
||||
{
|
||||
$finder = $this->extension_manager->get_finder();
|
||||
$subscriber_classes = $finder
|
||||
->extension_directory('/event')
|
||||
->suffix('listener')
|
||||
->core_path('event/')
|
||||
->get_classes();
|
||||
|
||||
foreach ($subscriber_classes as $class)
|
||||
{
|
||||
$subscriber = new $class();
|
||||
$this->dispatcher->addSubscriber($subscriber);
|
||||
}
|
||||
}
|
||||
}
|
85
phpBB/phpbb/event/kernel_exception_subscriber.php
Normal file
85
phpBB/phpbb/event/kernel_exception_subscriber.php
Normal file
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2012 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\HttpKernel\KernelEvents;
|
||||
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
|
||||
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class phpbb_event_kernel_exception_subscriber implements EventSubscriberInterface
|
||||
{
|
||||
/**
|
||||
* Template object
|
||||
* @var phpbb_template
|
||||
*/
|
||||
protected $template;
|
||||
|
||||
/**
|
||||
* User object
|
||||
* @var phpbb_user
|
||||
*/
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* Construct method
|
||||
*
|
||||
* @param phpbb_template $template Template object
|
||||
* @param phpbb_user $user User object
|
||||
*/
|
||||
public function __construct(phpbb_template $template, phpbb_user $user)
|
||||
{
|
||||
$this->template = $template;
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* This listener is run when the KernelEvents::EXCEPTION event is triggered
|
||||
*
|
||||
* @param GetResponseForExceptionEvent $event
|
||||
* @return null
|
||||
*/
|
||||
public function on_kernel_exception(GetResponseForExceptionEvent $event)
|
||||
{
|
||||
page_header($this->user->lang('INFORMATION'));
|
||||
|
||||
$exception = $event->getException();
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'MESSAGE_TITLE' => $this->user->lang('INFORMATION'),
|
||||
'MESSAGE_TEXT' => $exception->getMessage(),
|
||||
));
|
||||
|
||||
$this->template->set_filenames(array(
|
||||
'body' => 'message_body.html',
|
||||
));
|
||||
|
||||
page_footer(true, false, false);
|
||||
|
||||
|
||||
$status_code = $exception instanceof HttpException ? $exception->getStatusCode() : 500;
|
||||
$response = new Response($this->template->assign_display('body'), $status_code);
|
||||
$event->setResponse($response);
|
||||
}
|
||||
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return array(
|
||||
KernelEvents::EXCEPTION => 'on_kernel_exception',
|
||||
);
|
||||
}
|
||||
}
|
83
phpBB/phpbb/event/kernel_request_subscriber.php
Normal file
83
phpBB/phpbb/event/kernel_request_subscriber.php
Normal file
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2012 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
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 phpbb_event_kernel_request_subscriber implements EventSubscriberInterface
|
||||
{
|
||||
/**
|
||||
* 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_extension_finder $finder Extension finder object
|
||||
* @param string $root_path Root path
|
||||
* @param string $php_ext PHP extension
|
||||
*/
|
||||
public function __construct(phpbb_extension_finder $finder, $root_path, $php_ext)
|
||||
{
|
||||
$this->finder = $finder;
|
||||
$this->root_path = $root_path;
|
||||
$this->php_ext = $php_ext;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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_get_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',
|
||||
);
|
||||
}
|
||||
}
|
43
phpBB/phpbb/event/kernel_terminate_subscriber.php
Normal file
43
phpBB/phpbb/event/kernel_terminate_subscriber.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2012 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\HttpKernel\KernelEvents;
|
||||
use Symfony\Component\HttpKernel\Event\PostResponseEvent;
|
||||
|
||||
class phpbb_event_kernel_terminate_subscriber implements EventSubscriberInterface
|
||||
{
|
||||
/**
|
||||
* This listener is run when the KernelEvents::TERMINATE event is triggered
|
||||
* This comes after a Response has been sent to the server; this is
|
||||
* primarily cleanup stuff.
|
||||
*
|
||||
* @param PostResponseEvent $event
|
||||
* @return null
|
||||
*/
|
||||
public function on_kernel_terminate(PostResponseEvent $event)
|
||||
{
|
||||
exit_handler();
|
||||
}
|
||||
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return array(
|
||||
KernelEvents::TERMINATE => 'on_kernel_terminate',
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user