コード例 #1
0
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     if (preg_match('/[A-Z]/', $route) !== 0) {
         $route = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '-\\1', $route));
     }
     return parent::createUrl($route, $params, $ampersand);
 }
コード例 #2
0
ファイル: UrlManager.php プロジェクト: annamoorjani/dental
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     $route = preg_replace_callback('/(?<![A-Z])[A-Z]/', function ($matches) {
         return '-' . lcfirst($matches[0]);
     }, $route);
     return parent::createUrl($route, $params, $ampersand);
 }
コード例 #3
0
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     if (isset($params[$this->languageParam])) {
         $language = $params[$this->languageParam];
         $forceLanguage = true;
         unset($params[$this->languageParam]);
     } else {
         $language = Yii::app()->language;
         $forceLanguage = false;
     }
     $url = parent::createUrl($route, $params, $ampersand);
     $request = Yii::app()->request;
     if (!$forceLanguage && !$request->redirectDefault && $language === $request->getDefaultLanguage()) {
         return $url;
     }
     $key = array_search($language, $request->languages);
     if (is_string($key)) {
         $language = $key;
     }
     if (($baseUrl = $this->getBaseUrl()) === '') {
         return '/' . $language . $url;
     } else {
         return strtr($url, array($baseUrl => $baseUrl . '/' . $language));
     }
 }
コード例 #4
0
ファイル: AweUrlManager.php プロジェクト: awecode/awecms
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     $route = trim($route, '/');
     //for admin and admin/*
     $parts = explode('/', $route);
     //do not mess with gii
     if ($parts[0] == 'gii') {
         return parent::createUrl($route, $params, $ampersand);
     }
     //        ignore defaultController
     if (Yii::app()->hasModule($parts[0]) && isset($parts[1]) && $parts[1] == Yii::app()->getModule($parts[0])->defaultController) {
         unset($parts[1]);
         $route = implode('/', $parts);
     }
     if (substr(Yii::app()->getRequest()->pathInfo, 0, 6) == 'admin/' || Yii::app()->getRequest()->pathInfo == 'admin') {
         $route = 'admin/' . trim($route, '/');
     }
     $url = parent::createUrl($route, $params, $ampersand);
     if (Settings::get('SEO', 'slugs_enabled')) {
         //handle slugs here
         if ($slug = Slug::getSlug(preg_replace('/' . trim(Yii::app()->baseUrl, '/') . '/', '', $url, 1))) {
             //if (Settings::get('SEO','externalSlug')
             $url = $slug;
             $url = Yii::app()->baseUrl . '/' . $url;
         }
     }
     return $url;
 }
コード例 #5
0
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     if (empty($params['language']) && Yii::app()->language !== 'ru') {
         $params['language'] = Yii::app()->language;
     }
     if (!isset(Yii::app()->controller->module->id)) {
         if (!strstr($route, 'register')) {
             if (isset($_POST['city'])) {
                 $cookie = new CHttpCookie('city', $_POST['city']);
                 Yii::app()->request->cookies['city'] = $cookie;
                 $cookie->expire = time() + 3600;
                 $c = City::model()->localized('ru')->findByPk($_POST['city'])->name;
                 $params['city'] = Settings::toLatin($c);
             } elseif (isset(Yii::app()->request->cookies['city'])) {
                 $c = City::model()->localized('ru')->findByPk(Yii::app()->request->cookies['city']->value)->name;
                 $params['city'] = Settings::toLatin($c);
             } else {
                 unset($params['city']);
             }
         } else {
             unset($params['city']);
         }
     }
     /*if (!strstr($route,'/')) {
           $route = '/cat/'.$route;
       }*/
     return Yii::app()->request->hostInfo . parent::createUrl($route, $params, $ampersand);
 }
コード例 #6
0
ファイル: XUrlManager.php プロジェクト: mryuhancai/newphemu
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     if (!isset($params['language'])) {
         $params['language'] = Yii::app()->language;
     }
     return parent::createUrl($route, $params, $ampersand);
 }
コード例 #7
0
 public function createLangUrl($language, $ampersand = '&')
 {
     $route = Yii::app()->controller->route;
     $params = $_GET;
     unset($params[$this->routeVar]);
     $params[$this->langParam] = $language;
     return parent::createUrl($route, $params, $ampersand);
 }
コード例 #8
0
ファイル: BackendUrlManager.php プロジェクト: kot-ezhva/ygin
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     $url = parent::createUrl($route, $params, $ampersand);
     if ($this->getFrontendMode()) {
         $baseUrl = $this->getBaseUrl();
         return mb_substr($url, mb_strlen($baseUrl));
     }
     return $url;
 }
コード例 #9
0
ファイル: UrlManager.php プロジェクト: codemix/restyii
 /**
  * @inheritDoc
  */
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     $oldUrlSuffix = $this->urlSuffix;
     if (isset($params['_ext'])) {
         $this->urlSuffix = '.' . $params['_ext'];
         unset($params['_ext']);
     }
     $url = parent::createUrl($route, $params, $ampersand);
     $this->urlSuffix = $oldUrlSuffix;
     return $url;
 }
コード例 #10
0
ファイル: UrlManager.php プロジェクト: schiz/teff
 public function createUrl($route,$params=array(),$ampersand='&')
 {
     if (!isset($params['language'])) {
         if (Yii::app()->user->hasState('language'))
             Yii::app()->language = Yii::app()->user->getState('language');
         else if(isset(Yii::app()->request->cookies['language']))
             Yii::app()->language = Yii::app()->request->cookies['language']->value;
         $params['language']=Yii::app()->language;
     }
     return parent::createUrl($route, $params, $ampersand);
 }
コード例 #11
0
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     if ($route != 'min/serve' && $route != 'site/uploadimage') {
         $langs = Lang::getActiveLangs();
         $countLangs = count($langs);
         if (!isFree() && empty($params['lang']) && ($countLangs > 1 || $countLangs == 1 && param('useLangPrefixIfOneLang'))) {
             $params['lang'] = Yii::app()->language;
         }
     }
     return parent::createUrl($route, $params, $ampersand);
 }
コード例 #12
0
ファイル: CManagerUrl.php プロジェクト: buildshop/bs-common
 /**
  * Create url based on current language.
  * @param mixed $route
  * @param array $params
  * @param string $ampersand
  * @param boolean $respectLang
  * @access public
  * @return string
  */
 public function createUrl($route, $params = array(), $ampersand = '&', $respectLang = true)
 {
     $result = parent::createUrl($route, $params, $ampersand);
     if ($respectLang === true) {
         $langPrefix = Yii::app()->languageManager->getUrlPrefix();
         if ($langPrefix) {
             $result = '/' . $langPrefix . $result;
         }
     }
     return $result;
 }
コード例 #13
0
 /**
  *
  * @see CUrlManager 
  *
  * Constructs a URL.
  * @param string the controller and the action (e.g. article/read)
  * @param array list of GET parameters (name=>value). Both the name and value will be URL-encoded.
  * If the name is '#', the corresponding value will be treated as an anchor
  * and will be appended at the end of the URL. This anchor feature has been available since version 1.0.1.
  * @param string the token separating name-value pairs in the URL. Defaults to '&'.
  * @return string the constructed URL
  */
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     // We added this by default to all links to show
     // Content based on language - Add only when not excplicity set
     if (!isset($params['lang'])) {
         $params['lang'] = Yii::app()->language;
     }
     if (isset($params['lang']) && $params['lang'] === false) {
         unset($params['lang']);
     }
     // Use parent to finish url construction
     return parent::createUrl($route, $params, $ampersand);
 }
コード例 #14
0
ファイル: UrlManager.php プロジェクト: bfyang5130/zzl
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     $url = parent::createUrl($route, $params, $ampersand);
     // If already an absolute URL, return it directly
     if (strpos($url, 'http') === 0) {
         return $url;
     }
     // Check if the current protocol matches the expected protocol of the route
     // If not, prefix the generated URL with the correct host info.
     $secureRoute = $this->isSecureRoute($route);
     if (Yii::app()->request->isSecureConnection) {
         return $secureRoute ? $url : $this->hostInfo . $url;
     } else {
         return $secureRoute ? $this->secureHostInfo . $url : $url;
     }
 }
コード例 #15
0
ファイル: TsUrlManager.php プロジェクト: nilojan/yii-cms
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     if ($route !== 'tstranslation') {
         if ($this->showLangInUrl) {
             if (empty($params['_lang'])) {
                 $params['_lang'] = Yii::app()->language;
             }
         } else {
             if (isset($params['_lang'])) {
                 unset($params['_lang']);
             }
         }
     } else {
         $params = array();
     }
     return parent::createUrl($route, $params, $ampersand);
 }
コード例 #16
0
ファイル: UrlManager.php プロジェクト: rosko/Tempo-CMS
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     if (!isset($params['language'])) {
         if (Yii::app()->language != Yii::app()->settings->getValue('language')) {
             $params['language'] = Yii::app()->language;
         }
     } else {
         if ($params['language'] == Yii::app()->settings->getValue('language')) {
             unset($params['language']);
         }
     }
     if (isset($params['pageId']) && $params['pageId'] == 1) {
         $tmp = $params;
         unset($tmp['pageId'], $tmp['language'], $tmp['alias'], $tmp['url']);
         if (empty($tmp)) {
             return Yii::app()->homeUrl;
         } else {
             $params = $tmp;
         }
     }
     if (!isset($params['alias']) && isset($params['pageId'])) {
         $params['alias'] = '';
     }
     if ($this->getUrlFormat() == self::GET_FORMAT) {
         unset($params['alias']);
         unset($params['url']);
     }
     if (!empty($params['url'])) {
         if (substr($params['url'], 0, 1) == '/') {
             $params['url'] = substr($params['url'], 1);
         }
         $tmp = explode('/', $params['url']);
         if ($tmp[count($tmp) - 1] == '') {
             unset($params['url']);
         }
     }
     if ($this->fullUrl && !empty($params['url'])) {
         unset($params['alias']);
         unset($params['pageId']);
     } else {
         unset($params['url']);
     }
     $ret = parent::createUrl($route, $params, $ampersand);
     $ret = str_ireplace('%2F', '/', $ret);
     return $ret;
 }
コード例 #17
0
ファイル: SnapUrlManager.php プロジェクト: snapfrozen/snapcms
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     $route = preg_replace_callback('/(?<![A-Z])[A-Z]/', function ($matches) {
         return '-' . lcfirst($matches[0]);
     }, $route);
     //Francis - This feels very hacky, it would be good to find a cleaner
     //way of doing this.
     if (strpos($route, 'content/view') !== false && isset($params['path'])) {
         $path = $params['path'];
         unset($params['path']);
         //Add on any extra parameters to the get string (fixes pagination)
         if (!empty($params)) {
             $path .= '?' . http_build_query($params);
         }
         return Yii::app()->baseUrl . $path;
     }
     return parent::createUrl($route, $params, $ampersand);
 }
コード例 #18
0
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     if ($route == 'detail/index') {
         if ($params['cate_id'] == 20) {
             $route = 'review/index';
             $all_params['alias'] = $params['alias'];
         } else {
             $all_params['alias'] = $params['alias'];
         }
         $params = $all_params;
     }
     if ($route == 'category/index') {
         if ($params['alias'] == 'how-to') {
             return '/how-to.html';
         }
     }
     return parent::createUrl($route, $params, $ampersand);
 }
コード例 #19
0
ファイル: UrlManager.php プロジェクト: DarkAiR/test
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     // Формируем стандартный URL без языка
     $url = parent::createUrl($route, $params, $ampersand);
     $domains = explode('/', ltrim($url, '/'));
     if (in_array($domains[0], array_keys(Yii::app()->params['languages']))) {
         if ($domains[0] == Yii::app()->sourceLanguage) {
             // Вырезем из урла дефолтный язык
             array_shift($domains);
             $url = '/' . implode('/', $domains);
         } else {
             // В урле задан язык, отличный от дефолтного, ничего делать не надо
         }
     } else {
         if (Yii::app()->language != Yii::app()->sourceLanguage) {
             // Язык не задан в урле, добавляем его
             array_unshift($domains, Yii::app()->language);
             $url = '/' . implode('/', $domains);
         } else {
             // Язык не задан, но он дефолтный, ничего подставлять не надо
         }
     }
     return $url;
 }
コード例 #20
0
ファイル: ELangCUrlManager.php プロジェクト: bafio89/qea-u
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     /*if (!isset($params['lang']))
       $params['lang']=Yii::app()->GetLanguage();*/
     return parent::createUrl($route, $params, $ampersand);
 }
コード例 #21
0
ファイル: DLanguageUrlManager.php プロジェクト: equa2k9/jazz
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     $url = parent::createUrl($route, $params, $ampersand);
     return DMultilangHelper::addLangToUrl($url);
 }
コード例 #22
0
ファイル: CUrlManagerTest.php プロジェクト: avtograd/yii
 public function testParsingOnly()
 {
     $config = array('basePath' => dirname(__FILE__), 'components' => array('request' => array('class' => 'TestHttpRequest')));
     $rules = array('(articles|article)/<id:\\d+>' => array('article/read', 'parsingOnly' => true), 'article/<id:\\d+>' => array('article/read', 'verb' => 'GET'));
     $_SERVER['REQUEST_METHOD'] = 'GET';
     $app = new TestApplication($config);
     $app->request->baseUrl = null;
     // reset so that it can be determined based on scriptUrl
     $app->request->scriptUrl = '/apps/index.php';
     $app->request->pathInfo = 'articles/123';
     $um = new CUrlManager();
     $um->urlFormat = 'path';
     $um->rules = $rules;
     $um->init($app);
     $route = $um->parseUrl($app->request);
     $this->assertEquals('article/read', $route);
     $url = $um->createUrl('article/read', array('id' => 345));
     $this->assertEquals('/apps/index.php/article/345', $url);
 }
コード例 #23
0
ファイル: CustomUrlManager.php プロジェクト: barricade86/raui
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     if ($route != 'min/serve' && $route != 'site/uploadimage') {
         $langs = Lang::getActiveLangs();
         $countLangs = count($langs);
         $defaultLang = Lang::getDefaultLang();
         if (isset($params['lang']) && $params['lang'] == $defaultLang && $this->isInstalled) {
             if (!param('useBootstrap')) {
                 unset($params['lang']);
             }
         } else {
             if (Yii::app()->language != $defaultLang && !isFree() && empty($params['lang']) && $countLangs > 1) {
                 $params['lang'] = Yii::app()->language;
             }
         }
         if (!$this->isInstalled && $countLangs == 1 && $route != 'install') {
             $params['lang'] = Yii::app()->language;
         }
         if (!$this->isInstalled && $countLangs > 1 && !isset($params['lang']) && $route != 'install') {
             $params['lang'] = Yii::app()->language;
         }
     }
     return parent::createUrl($route, $params, $ampersand);
 }
コード例 #24
0
ファイル: UrlManager.php プロジェクト: Wiedzal/narisuemvse
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     return $this->fixPathSlashes(parent::createUrl($route, $params, $ampersand));
 }
コード例 #25
0
 public function testCreateUrlWithGetFormat()
 {
     $config = array('basePath' => dirname(__FILE__), 'components' => array('request' => array('class' => 'TestHttpRequest')));
     $app = new TestApplication($config);
     $entries = array(array('scriptUrl' => '/apps/index.php', 'url' => '/apps/index.php?route=article/read&name=value&name1=value1', 'url2' => '/apps/?route=article/read&name=value&name1=value1', 'route' => 'article/read', 'params' => array('name' => 'value', 'name1' => 'value1')), array('scriptUrl' => '/index.php', 'url' => '/index.php?route=article/read&name=value&name1=value1', 'url2' => '/?route=article/read&name=value&name1=value1', 'route' => 'article/read', 'params' => array('name' => 'value', 'name1' => 'value1')));
     foreach ($entries as $entry) {
         $app->request->baseUrl = null;
         $app->request->scriptUrl = $entry['scriptUrl'];
         $um = new CUrlManager();
         $um->urlFormat = 'get';
         $um->routeVar = 'route';
         $um->init($app);
         $url = $um->createUrl($entry['route'], $entry['params'], '&');
         $this->assertEquals($url, $entry['url']);
         $um = new CUrlManager();
         $um->urlFormat = 'get';
         $um->routeVar = 'route';
         $um->showScriptName = false;
         $um->init($app);
         $url = $um->createUrl($entry['route'], $entry['params'], '&');
         $this->assertEquals($url, $entry['url2']);
     }
 }