1: <?php
2: /**
3: * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
4: * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
5: *
6: * Licensed under The MIT License
7: * For full copyright and license information, please see the LICENSE.txt
8: * Redistributions of files must retain the above copyright notice.
9: *
10: * @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
11: * @link https://cakephp.org CakePHP(tm) Project
12: * @since CakePHP(tm) v 1.3
13: * @license https://opensource.org/licenses/mit-license.php MIT License
14: */
15:
16: App::uses('CakeRoute', 'Routing/Route');
17:
18: /**
19: * Plugin short route, that copies the plugin param to the controller parameters
20: * It is used for supporting /:plugin routes.
21: *
22: * @package Cake.Routing.Route
23: */
24: class PluginShortRoute extends CakeRoute {
25:
26: /**
27: * Parses a string URL into an array. If a plugin key is found, it will be copied to the
28: * controller parameter
29: *
30: * @param string $url The URL to parse
31: * @return mixed false on failure, or an array of request parameters
32: */
33: public function parse($url) {
34: $params = parent::parse($url);
35: if (!$params) {
36: return false;
37: }
38: $params['controller'] = $params['plugin'];
39: return $params;
40: }
41:
42: /**
43: * Reverse route plugin shortcut URLs. If the plugin and controller
44: * are not the same the match is an auto fail.
45: *
46: * @param array $url Array of parameters to convert to a string.
47: * @return mixed either false or a string URL.
48: */
49: public function match($url) {
50: if (isset($url['controller']) && isset($url['plugin']) && $url['plugin'] != $url['controller']) {
51: return false;
52: }
53: $this->defaults['controller'] = $url['controller'];
54: $result = parent::match($url);
55: unset($this->defaults['controller']);
56: return $result;
57: }
58:
59: }
60: