public static function getSubDomain($host = null) { if (isConsole() && empty($_SERVER['HTTP_HOST']) && !$host) { return ''; } if (!$host) { $host = $_SERVER['HTTP_HOST']; } if (strpos($host, '.') === false) { return ''; } $mainHost = BcUtil::getMainFullDomain(); if ($host == $mainHost) { return ''; } if (strpos($host, $mainHost) === false) { return ''; } $subDomain = str_replace($mainHost, '', $host); if ($subDomain) { return preg_replace('/\\.$/', '', $subDomain); } return ''; }
/** * URLからサブサイトを取得する * * @param bool $direct * @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; }