diff options
| author | Nathan Guse <nathaniel.guse@gmail.com> | 2013-07-13 22:47:41 -0700 | 
|---|---|---|
| committer | Nathan Guse <nathaniel.guse@gmail.com> | 2013-07-13 22:47:41 -0700 | 
| commit | 1e37d97909ccf52b08e2a809ea8a9365c824d8de (patch) | |
| tree | a260c846cb47713e72de11cfb9803d981ea6faaf /phpBB/includes/controller | |
| parent | 4186c05bb4b97374392031a10b796e77b857afaf (diff) | |
| parent | 7030578bbe9e11c18b5becaf8b06e670e3c2e3cd (diff) | |
| download | forums-1e37d97909ccf52b08e2a809ea8a9365c824d8de.tar forums-1e37d97909ccf52b08e2a809ea8a9365c824d8de.tar.gz forums-1e37d97909ccf52b08e2a809ea8a9365c824d8de.tar.bz2 forums-1e37d97909ccf52b08e2a809ea8a9365c824d8de.tar.xz forums-1e37d97909ccf52b08e2a809ea8a9365c824d8de.zip | |
Merge pull request #1559 from naderman/ticket/11698
[WIP][ticket/11698] Moving all autoloadable files to phpbb/
Diffstat (limited to 'phpBB/includes/controller')
| -rw-r--r-- | phpBB/includes/controller/exception.php | 24 | ||||
| -rw-r--r-- | phpBB/includes/controller/helper.php | 139 | ||||
| -rw-r--r-- | phpBB/includes/controller/provider.php | 82 | ||||
| -rw-r--r-- | phpBB/includes/controller/resolver.php | 154 | 
4 files changed, 0 insertions, 399 deletions
| diff --git a/phpBB/includes/controller/exception.php b/phpBB/includes/controller/exception.php deleted file mode 100644 index faa8b6b584..0000000000 --- a/phpBB/includes/controller/exception.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php -/** -* -* @package controller -* @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; -} - -/** -* Controller exception class -* @package phpBB3 -*/ -class phpbb_controller_exception extends RuntimeException -{ -} diff --git a/phpBB/includes/controller/helper.php b/phpBB/includes/controller/helper.php deleted file mode 100644 index 74410ddfd1..0000000000 --- a/phpBB/includes/controller/helper.php +++ /dev/null @@ -1,139 +0,0 @@ -<?php -/** -* -* @package controller -* @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\HttpFoundation\Response; - -/** -* Controller helper class, contains methods that do things for controllers -* @package phpBB3 -*/ -class phpbb_controller_helper -{ -	/** -	* Template object -	* @var phpbb_template -	*/ -	protected $template; - -	/** -	* User object -	* @var phpbb_user -	*/ -	protected $user; - -	/** -	* phpBB root path -	* @var string -	*/ -	protected $phpbb_root_path; - -	/** -	* PHP extension -	* @var string -	*/ -	protected $php_ext; - -	/** -	* Constructor -	* -	* @param phpbb_template $template Template object -	* @param phpbb_user $user User object -	* @param string $phpbb_root_path phpBB root path -	* @param string $php_ext PHP extension -	*/ -	public function __construct(phpbb_template $template, phpbb_user $user, $phpbb_root_path, $php_ext) -	{ -		$this->template = $template; -		$this->user = $user; -		$this->phpbb_root_path = $phpbb_root_path; -		$this->php_ext = $php_ext; -	} - -	/** -	* Automate setting up the page and creating the response object. -	* -	* @param string $handle The template handle to render -	* @param string $page_title The title of the page to output -	* @param int $status_code The status code to be sent to the page header -	* @return Response object containing rendered page -	*/ -	public function render($template_file, $page_title = '', $status_code = 200) -	{ -		page_header($page_title); - -		$this->template->set_filenames(array( -			'body'	=> $template_file, -		)); - -		page_footer(true, false, false); - -		return new Response($this->template->assign_display('body'), $status_code); -	} - -	/** -	* Generate a URL -	* -	* @param string	$route		The route to travel -	* @param mixed	$params		String or array of additional url parameters -	* @param bool	$is_amp		Is url using & (true) or & (false) -	* @param string	$session_id	Possibility to use a custom session id instead of the global one -	* @return string The URL already passed through append_sid() -	*/ -	public function url($route, $params = false, $is_amp = true, $session_id = false) -	{ -		$route_params = ''; -		if (($route_delim = strpos($route, '?')) !== false) -		{ -			$route_params = substr($route, $route_delim); -			$route = substr($route, 0, $route_delim); -		} - -		if (is_array($params) && !empty($params)) -		{ -			$params = array_merge(array( -				'controller' => $route, -			), $params); -		} -		else if (is_string($params) && $params) -		{ -			$params = 'controller=' . $route . (($is_amp) ? '&' : '&') . $params; -		} -		else -		{ -			$params = array('controller' => $route); -		} - -		return append_sid($this->phpbb_root_path . 'app.' . $this->php_ext . $route_params, $params, $is_amp, $session_id); -	} - -	/** -	* Output an error, effectively the same thing as trigger_error -	* -	* @param string $message The error message -	* @param string $code The error code (e.g. 404, 500, 503, etc.) -	* @return Response A Reponse instance -	*/ -	public function error($message, $code = 500) -	{ -		$this->template->assign_vars(array( -			'MESSAGE_TEXT'	=> $message, -			'MESSAGE_TITLE'	=> $this->user->lang('INFORMATION'), -		)); - -		return $this->render('message_body.html', $this->user->lang('INFORMATION'), $code); -	} -} diff --git a/phpBB/includes/controller/provider.php b/phpBB/includes/controller/provider.php deleted file mode 100644 index b2a5b9f6b2..0000000000 --- a/phpBB/includes/controller/provider.php +++ /dev/null @@ -1,82 +0,0 @@ -<?php -/** -* -* @package controller -* @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\Routing\RouteCollection; -use Symfony\Component\Routing\Loader\YamlFileLoader; -use Symfony\Component\Config\FileLocator; - -/** -* Controller interface -* @package phpBB3 -*/ -class phpbb_controller_provider -{ -	/** -	* YAML file(s) containing route information -	* @var array -	*/ -	protected $routing_paths; - -	/** -	* Construct method -	* -	* @param array() $routing_paths Array of strings containing paths -	*							to YAML files holding route information -	*/ -	public function __construct($routing_paths = array()) -	{ -		$this->routing_paths = $routing_paths; -	} - -	/** -	* Locate paths containing routing files -	* This sets an internal property but does not return the paths. -	* -	* @return The current instance of this object for method chaining -	*/ -	public function import_paths_from_finder(phpbb_extension_finder $finder) -	{ -		// We hardcode the path to the core config directory -		// because the finder cannot find it -		$this->routing_paths = array_merge(array('config'), array_map('dirname', array_keys($finder -			->directory('config') -			->prefix('routing') -			->suffix('yml') -			->find() -		))); - -		return $this; -	} - -	/** -	* Get a list of controllers and return it -	* -	* @param string $base_path Base path to prepend to file paths -	* @return array Array of controllers and their route information -	*/ -	public function find($base_path = '') -	{ -		$routes = new RouteCollection; -		foreach ($this->routing_paths as $path) -		{ -			$loader = new YamlFileLoader(new FileLocator($base_path . $path)); -			$routes->addCollection($loader->load('routing.yml')); -		} - -		return $routes; -	} -} diff --git a/phpBB/includes/controller/resolver.php b/phpBB/includes/controller/resolver.php deleted file mode 100644 index 95dfc8da8e..0000000000 --- a/phpBB/includes/controller/resolver.php +++ /dev/null @@ -1,154 +0,0 @@ -<?php -/** -* -* @package controller -* @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\HttpKernel\Controller\ControllerResolverInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\HttpFoundation\Request; - -/** -* Controller manager class -* @package phpBB3 -*/ -class phpbb_controller_resolver implements ControllerResolverInterface -{ -	/** -	* User object -	* @var phpbb_user -	*/ -	protected $user; - -	/** -	* ContainerInterface object -	* @var ContainerInterface -	*/ -	protected $container; - -	/** -	* phpbb_style object -	* @var phpbb_style -	*/ -	protected $style; - -	/** -	* Construct method -	* -	* @param phpbb_user $user User Object -	* @param ContainerInterface $container ContainerInterface object -	* @param phpbb_style $style -	*/ -	public function __construct(phpbb_user $user, ContainerInterface $container, phpbb_style $style = null) -	{ -		$this->user = $user; -		$this->container = $container; -		$this->style = $style; -	} - -	/** -	* Load a controller callable -	* -	* @param Symfony\Component\HttpFoundation\Request $request Symfony Request object -	* @return bool|Callable Callable or false -	* @throws phpbb_controller_exception -	*/ -	public function getController(Request $request) -	{ -		$controller = $request->attributes->get('_controller'); - -		if (!$controller) -		{ -			throw new phpbb_controller_exception($this->user->lang['CONTROLLER_NOT_SPECIFIED']); -		} - -		// Require a method name along with the service name -		if (stripos($controller, ':') === false) -		{ -			throw new phpbb_controller_exception($this->user->lang['CONTROLLER_METHOD_NOT_SPECIFIED']); -		} - -		list($service, $method) = explode(':', $controller); - -		if (!$this->container->has($service)) -		{ -			throw new phpbb_controller_exception($this->user->lang('CONTROLLER_SERVICE_UNDEFINED', $service)); -		} - -		$controller_object = $this->container->get($service); - -		/* -		* If this is an extension controller, we'll try to automatically set -		* the style paths for the extension (the ext author can change them -		* if necessary). -		*/ -		$controller_dir = explode('_', get_class($controller_object)); - -		// 0 phpbb, 1 ext, 2 vendor, 3 extension name, ... -		if (!is_null($this->style) && isset($controller_dir[3]) && $controller_dir[1] === 'ext') -		{ -			$controller_style_dir = 'ext/' . $controller_dir[2] . '/' . $controller_dir[3] . '/styles'; - -			if (is_dir($controller_style_dir)) -			{ -				$this->style->set_style(array($controller_style_dir, 'styles')); -			} -		} - -		return array($controller_object, $method); -	} - -	/** -	* Dependencies should be specified in the service definition and can be -	* then accessed in __construct(). Arguments are sent through the URL path -	* and should match the parameters of the method you are using as your -	* controller. -	* -	* @param Symfony\Component\HttpFoundation\Request $request Symfony Request object -	* @param mixed $controller A callable (controller class, method) -	* @return bool False -	* @throws phpbb_controller_exception -	*/ -	public function getArguments(Request $request, $controller) -	{ -		// At this point, $controller contains the object and method name -		list($object, $method) = $controller; -		$mirror = new ReflectionMethod($object, $method); - -		$arguments = array(); -		$parameters = $mirror->getParameters(); -		$attributes = $request->attributes->all(); -		foreach ($parameters as $param) -		{ -			if (array_key_exists($param->name, $attributes)) -			{ -				$arguments[] = $attributes[$param->name]; -			} -			else if ($param->getClass() && $param->getClass()->isInstance($request)) -			{ -				$arguments[] = $request; -			} -			else if ($param->isDefaultValueAvailable()) -			{ -				$arguments[] = $param->getDefaultValue(); -			} -			else -			{ -				throw new phpbb_controller_exception($this->user->lang('CONTROLLER_ARGUMENT_VALUE_MISSING', $param->getPosition() + 1, get_class($object) . ':' . $method, $param->name)); -			} -		} - -		return $arguments; -	} -} | 
