1: <?php
2:
3: /*****************************************************************************************
4: * X2Engine Open Source Edition is a customer relationship management program developed by
5: * X2Engine, Inc. Copyright (C) 2011-2016 X2Engine Inc.
6: *
7: * This program is free software; you can redistribute it and/or modify it under
8: * the terms of the GNU Affero General Public License version 3 as published by the
9: * Free Software Foundation with the addition of the following permission added
10: * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
11: * IN WHICH THE COPYRIGHT IS OWNED BY X2ENGINE, X2ENGINE DISCLAIMS THE WARRANTY
12: * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
13: *
14: * This program is distributed in the hope that it will be useful, but WITHOUT
15: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16: * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
17: * details.
18: *
19: * You should have received a copy of the GNU Affero General Public License along with
20: * this program; if not, see http://www.gnu.org/licenses or write to the Free
21: * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22: * 02110-1301 USA.
23: *
24: * You can contact X2Engine, Inc. P.O. Box 66752, Scotts Valley,
25: * California 95067, USA. or at email address contact@x2engine.com.
26: *
27: * The interactive user interfaces in modified source and object code versions
28: * of this program must display Appropriate Legal Notices, as required under
29: * Section 5 of the GNU Affero General Public License version 3.
30: *
31: * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
32: * these Appropriate Legal Notices must retain the display of the "Powered by
33: * X2Engine" logo. If the display of the logo is not reasonably feasible for
34: * technical reasons, the Appropriate Legal Notices must display the words
35: * "Powered by X2Engine".
36: *****************************************************************************************/
37:
38: /**
39: *
40: */
41: class X2UrlManager extends CUrlManager {
42:
43: private $_urlFormat=self::GET_FORMAT;
44: private $_rules=array();
45: private $_baseUrl;
46:
47: /**
48: * This method is Copyright (c) 2008-2014 by Yii Software LLC
49: * http://www.yiiframework.com/license/
50: */
51: public function createUrlWithoutBase($route, $params = array(), $ampersand = '&') {
52: unset($params[$this->routeVar]);
53: foreach ($params as $i => $param)
54: if ($param === null) $params[$i] = '';
55:
56: if (isset($params['#'])) {
57: $anchor = '#' . $params['#'];
58: unset($params['#']);
59: } else $anchor = '';
60: $route = trim($route, '/');
61: foreach ($this->_rules as $i => $rule) {
62: if (is_array($rule))
63: $this->_rules[$i] = $rule = Yii::createComponent($rule);
64: if (($url = $rule->createUrl($this, $route, $params, $ampersand)) !== false) {
65: /* x2modstart */
66: if ($rule->hasHostInfo)
67: return $url === '' ? '/' . $anchor : $url . $anchor;
68: else return '/' . $url . $anchor;
69: /* x2modend */
70: }
71: }
72: return $this->createUrlWithoutBaseDefault($route, $params, $ampersand) . $anchor;
73: }
74:
75: /**
76: * This method is Copyright (c) 2008-2014 by Yii Software LLC
77: * http://www.yiiframework.com/license/
78: */
79: protected function createUrlWithoutBaseDefault($route, $params, $ampersand) {
80: if ($this->getUrlFormat() === self::PATH_FORMAT) {
81: /* x2modstart */
82: $url = '/'.rtrim(basename (Yii::app()->getRequest()->getScriptUrl()) . '/' . $route, '/');
83: /* x2modend */
84: if ($this->appendParams) {
85: $url = rtrim($url . '/' . $this->createPathInfo($params, '/',
86: '/'), '/');
87: return $route === '' ? $url : $url . $this->urlSuffix;
88: } else {
89: if ($route !== '') $url.=$this->urlSuffix;
90: $query = $this->createPathInfo($params, '=', $ampersand);
91: return $query === '' ? $url : $url . '?' . $query;
92: }
93: }
94: else {
95: /* x2modstart */
96: $url = '/'.basename (Yii::app()->getRequest()->getScriptUrl());
97: /* x2modend */
98: if (!$this->showScriptName) $url = '/';
99: if ($route !== '') {
100: $url.='?' . $this->routeVar . '=' . $route;
101: if (($query = $this->createPathInfo($params, '=', $ampersand)) !== '')
102: $url.=$ampersand . $query;
103: }
104: elseif (($query = $this->createPathInfo($params, '=', $ampersand)) !== '')
105: $url.='?' . $query;
106: return $url;
107: }
108: }
109:
110: }
111: