統計
| ブランチ: | リビジョン:

pictcode / lib / Cake / Routing / Route / PluginShortRoute.php @ 635eef61

履歴 | 表示 | アノテート | ダウンロード (1.76 KB)

1
<?php
2
/**
3
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
4
 * Copyright (c) Cake Software Foundation, Inc. (http://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. (http://cakefoundation.org)
11
 * @link          http://cakephp.org CakePHP(tm) Project
12
 * @since         CakePHP(tm) v 1.3
13
 * @license       http://www.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
}