Skip to content

Commit

Permalink
Moving default routes into a separate file.
Browse files Browse the repository at this point in the history
Removing Router::defaults() as its not needed anymore.
Removing default routes from inside router.
Removing properties related to default routes.
Removing dead tests and updating tests.
  • Loading branch information
markstory committed Jul 23, 2011
1 parent 358d591 commit cfb3e8a
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 206 deletions.
5 changes: 5 additions & 0 deletions app/Config/routes.php
Expand Up @@ -30,3 +30,8 @@
* ...and connect the rest of 'Pages' controller's urls. * ...and connect the rest of 'Pages' controller's urls.
*/ */
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display')); Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

/**
* Load the CakePHP default routes.
*/
require CAKE . 'Config' . DS . 'routes.php';
83 changes: 83 additions & 0 deletions lib/Cake/Config/routes.php
@@ -0,0 +1,83 @@
<?php
/**
* Default routes that CakePHP provides as catch all routes.
*
* PHP 5
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @package cake.config
* @since CakePHP(tm) v 2.0
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/

/**
* Connects the default, built-in routes, including prefix and plugin routes. The following routes are created
* in the order below:
*
* For each of the Routing.prefixes the following routes are created. Routes containing `:plugin` are only
* created when your application has one or more plugins.
*
* - `/:prefix/:plugin` a plugin shortcut route.
* - `/:prefix/:plugin/:action/*` a plugin shortcut route.
* - `/:prefix/:plugin/:controller`
* - `/:prefix/:plugin/:controller/:action/*`
* - `/:prefix/:controller`
* - `/:prefix/:controller/:action/*`
*
* If plugins are found in your application the following routes are created:
*
* - `/:plugin` a plugin shortcut route.
* - `/:plugin/:action/*` a plugin shortcut route.
* - `/:plugin/:controller`
* - `/:plugin/:controller/:action/*`
*
* And lastly the following catch-all routes are connected.
*
* - `/:controller'
* - `/:controller/:action/*'
*
* You can disable the connection of default routes by deleting the require inside APP/Config/routes.php.
*/
$prefixes = Router::prefixes();

if ($plugins = CakePlugin::loaded()) {
App::uses('PluginShortRoute', 'Routing/Route');
foreach ($plugins as $key => $value) {
$plugins[$key] = Inflector::underscore($value);
}
$pluginPattern = implode('|', $plugins);
$match = array('plugin' => $pluginPattern);
$shortParams = array('routeClass' => 'PluginShortRoute', 'plugin' => $pluginPattern);

foreach ($prefixes as $prefix) {
$params = array('prefix' => $prefix, $prefix => true);
$indexParams = $params + array('action' => 'index');
Router::connect("/{$prefix}/:plugin", $indexParams, $shortParams);
Router::connect("/{$prefix}/:plugin/:controller", $indexParams, $match);
Router::connect("/{$prefix}/:plugin/:controller/:action/*", $params, $match);
}
Router::connect('/:plugin', array('action' => 'index'), $shortParams);
Router::connect('/:plugin/:controller', array('action' => 'index'), $match);
Router::connect('/:plugin/:controller/:action/*', array(), $match);
}

foreach ($prefixes as $prefix) {
$params = array('prefix' => $prefix, $prefix => true);
$indexParams = $params + array('action' => 'index');
Router::connect("/{$prefix}/:controller", $indexParams);
Router::connect("/{$prefix}/:controller/:action/*", $params);
}
Router::connect('/:controller', array('action' => 'index'));
Router::connect('/:controller/:action/*');

$namedConfig = Router::namedConfig();
if ($namedConfig['rules'] === false) {
Router::connectNamed(true);
}
105 changes: 1 addition & 104 deletions lib/Cake/Routing/Router.php
Expand Up @@ -145,21 +145,6 @@ class Router {
*/ */
protected static $_requests = array(); protected static $_requests = array();


/**
* Keeps Router state to determine if default routes have already been connected
*
* @var boolean
* @access private
*/
protected static $_defaultsMapped = false;

/**
* Keeps track of whether the connection of default routes is enabled or disabled.
*
* @var boolean
*/
protected static $_connectDefaults = true;

/** /**
* Initial state is popualated the first time reload() is called which is at the bottom * Initial state is popualated the first time reload() is called which is at the bottom
* of this file. This is a cheat as get_class_vars() returns the value of static vars even if they * of this file. This is a cheat as get_class_vars() returns the value of static vars even if they
Expand Down Expand Up @@ -413,19 +398,6 @@ public static function namedConfig() {
return self::$_namedConfig; return self::$_namedConfig;
} }


/**
* Tell router to connect or not connect the default routes.
*
* If default routes are disabled all automatic route generation will be disabled
* and you will need to manually configure all the routes you want.
*
* @param boolean $connect Set to true or false depending on whether you want or don't want default routes.
* @return void
*/
public static function defaults($connect = true) {
self::$_connectDefaults = $connect;
}

/** /**
* Creates REST resource routes for the given controller(s) * Creates REST resource routes for the given controller(s)
* *
Expand Down Expand Up @@ -479,15 +451,8 @@ public static function prefixes() {
* @return array Parsed elements from URL * @return array Parsed elements from URL
*/ */
public static function parse($url) { public static function parse($url) {
if (!self::$_defaultsMapped && self::$_connectDefaults) {
self::__connectDefaultRoutes();
}
$out = array(
'pass' => array(),
'named' => array()
);

$ext = null; $ext = null;
$out = array();


if ($url && strpos($url, '/') !== 0) { if ($url && strpos($url, '/') !== 0) {
$url = '/' . $url; $url = '/' . $url;
Expand Down Expand Up @@ -547,74 +512,6 @@ private static function __parseExtension($url) {
return compact('ext', 'url'); return compact('ext', 'url');
} }


/**
* Connects the default, built-in routes, including prefix and plugin routes. The following routes are created
* in the order below:
*
* For each of the Routing.prefixes the following routes are created. Routes containing `:plugin` are only
* created when your application has one or more plugins.
*
* - `/:prefix/:plugin` a plugin shortcut route.
* - `/:prefix/:plugin/:action/*` a plugin shortcut route.
* - `/:prefix/:plugin/:controller`
* - `/:prefix/:plugin/:controller/:action/*`
* - `/:prefix/:controller`
* - `/:prefix/:controller/:action/*`
*
* If plugins are found in your application the following routes are created:
*
* - `/:plugin` a plugin shortcut route.
* - `/:plugin/:action/*` a plugin shortcut route.
* - `/:plugin/:controller`
* - `/:plugin/:controller/:action/*`
*
* And lastly the following catch-all routes are connected.
*
* - `/:controller'
* - `/:controller/:action/*'
*
* You can disable the connection of default routes with Router::defaults().
*
* @return void
* @access private
*/
private static function __connectDefaultRoutes() {
if ($plugins = CakePlugin::loaded()) {
App::uses('PluginShortRoute', 'Routing/Route');
foreach ($plugins as $key => $value) {
$plugins[$key] = Inflector::underscore($value);
}
$pluginPattern = implode('|', $plugins);
$match = array('plugin' => $pluginPattern);
$shortParams = array('routeClass' => 'PluginShortRoute', 'plugin' => $pluginPattern);

foreach (self::$_prefixes as $prefix) {
$params = array('prefix' => $prefix, $prefix => true);
$indexParams = $params + array('action' => 'index');
self::connect("/{$prefix}/:plugin", $indexParams, $shortParams);
self::connect("/{$prefix}/:plugin/:controller", $indexParams, $match);
self::connect("/{$prefix}/:plugin/:controller/:action/*", $params, $match);
}
self::connect('/:plugin', array('action' => 'index'), $shortParams);
self::connect('/:plugin/:controller', array('action' => 'index'), $match);
self::connect('/:plugin/:controller/:action/*', array(), $match);
}

foreach (self::$_prefixes as $prefix) {
$params = array('prefix' => $prefix, $prefix => true);
$indexParams = $params + array('action' => 'index');
self::connect("/{$prefix}/:controller", $indexParams);
self::connect("/{$prefix}/:controller/:action/*", $params);
}
self::connect('/:controller', array('action' => 'index'));
self::connect('/:controller/:action/*');

if (self::$_namedConfig['rules'] === false) {
self::connectNamed(true);
}
self::$_defaultsMapped = true;
}

/** /**
* Takes parameter and path information back from the Dispatcher, sets these * Takes parameter and path information back from the Dispatcher, sets these
* parameters as the current request parameters that are merged with url arrays * parameters as the current request parameters that are merged with url arrays
Expand Down

0 comments on commit cfb3e8a

Please sign in to comment.