BcSite::findCurrent PHP Method

findCurrent() public static method

URLからサブサイトを取得する
public static findCurrent ( boolean $direct = true ) : BcSite | null
$direct boolean
return BcSite | null
    public static function findCurrent($direct = true)
    {
        $request = Router::getRequest(true);
        if (!$request) {
            $request = new CakeRequest();
        }
        $url = $request->url;
        $sites = self::findAll();
        if (!$sites) {
            return null;
        }
        $url = preg_replace('/^\\//', '', $url);
        $currentSite = null;
        foreach ($sites as $site) {
            if ($site->alias) {
                $domainKey = '';
                if ($site->useSubDomain) {
                    if ($site->domainType == 1) {
                        $domainKey = BcUtil::getSubDomain() . '/';
                    } elseif ($site->domainType == 2) {
                        $domainKey = BcUtil::getFullDomain() . '/';
                    }
                }
                $regex = '/^' . preg_quote($site->alias, '/') . '\\//';
                if (preg_match($regex, $domainKey . $url)) {
                    $currentSite = $site;
                    break;
                }
            }
        }
        if (!$currentSite) {
            $currentSite = $sites[0];
        }
        if (!$direct) {
            $subSite = self::findCurrentSub(true);
            if ($subSite) {
                $currentSite = $subSite;
            }
        }
        return $currentSite;
    }

Usage Example

 /**
  * afterLayout
  *
  * @return void
  */
 public function afterLayout($layoutFile)
 {
     /* 出力データをSJISに変換 */
     $View = $this->_View;
     if (isset($this->request->params['ext']) && $this->request->params['ext'] == 'rss') {
         $rss = true;
     } else {
         $rss = false;
     }
     $site = BcSite::findCurrent(true);
     if (!$rss && $site && $site->device == 'mobile' && $View->layoutPath != 'Emails' . DS . 'text') {
         $View->output = str_replace('&', '&', $View->output);
         $View->output = str_replace('<', '<', $View->output);
         $View->output = str_replace('>', '>', $View->output);
         $View->response->charset('Shift_JIS');
         $View->output = mb_convert_kana($View->output, "rak", "UTF-8");
         $View->output = mb_convert_encoding($View->output, "SJIS-win", "UTF-8");
         // 内部リンクの自動変換
         if ($site->autoLink) {
             $currentAlias = $this->request->params['Site']['alias'];
             // 一旦プレフィックスを除外
             $reg = '/href="' . preg_quote(BC_BASE_URL, '/') . '(' . $currentAlias . '\\/([^\\"]*?))\\"/';
             $View->output = preg_replace_callback($reg, array($this, '_removeMobilePrefix'), $View->output);
             // プレフィックス追加
             $reg = '/href=\\"' . preg_quote(BC_BASE_URL, '/') . '([^\\"]*?)\\"/';
             $View->output = preg_replace_callback($reg, array($this, '_addMobilePrefix'), $View->output);
         }
         // XMLとして出力する場合、デバッグモードで出力する付加情報で、
         // ブラウザによってはXMLパースエラーとなってしまうので強制的にデバッグモードをオフ
         Configure::write('debug', 0);
     }
 }
All Usage Examples Of BcSite::findCurrent