This file contains a series of method filters that allow you to intercept different parts of
Lithium's dispatch cycle. The filters below are used for on-demand loading of routing
configuration, and automatically configuring the correct environment in which the application
runs.
For more information on in the filters system, see `lithium\util\collection\Filters`.
{{{


use lithium\core\Libraries;
use lithium\net\http\Router;
use lithium\core\Environment;
use lithium\action\Dispatcher;

}}}
This filter intercepts the `run()` method of the `Dispatcher`, and first passes the `'request'`
parameter (an instance of the `Request` object) to the `Environment` class to detect which
environment the application is running in. Then, loads all application routes in all plugins,
loading the default application routes last.
Change this code if plugin routes must be loaded in a specific order (i.e. not the same order as
the plugins are added in your bootstrap configuration), or if application routes must be loaded
first (in which case the default catch-all routes should be removed).

If `Dispatcher::run()` is called multiple times in the course of a single request, change the
`include`s to `include_once`.
{{{

Dispatcher::applyFilter('run', function($self, $params, $chain) {
	Environment::set($params['request']);

	foreach (array_reverse(Libraries::get()) as $name => $config) {
		if ($name === 'lithium') {
			continue;
		}
		$file = "{$config['path']}/config/routes.php";
		file_exists($file) ? include $file : null;
	}
	return $chain->next($self, $params, $chain);
});

}}}