/**
* URLを取得する
*
* @param $url
* @param bool $useSubDomain
* @return string
*/
public function getUrl($url, $full = false, $useSubDomain = false)
{
if ($useSubDomain && !is_array($url)) {
$subDomain = '';
$site = BcSite::findByUrl($url);
$originUrl = $url;
if ($site) {
$subDomain = $site->alias;
$originUrl = preg_replace('/^\\/' . preg_quote($site->alias, '/') . '\\//', '/', $url);
}
if ($originUrl == '/') {
$urlArray = [];
} else {
$urlArray = explode('/', preg_replace('/(^\\/|\\/$)/', '', $originUrl));
}
if (preg_match('/\\/$/', $url) && count($urlArray) > 0) {
$originUrl .= '/';
}
if ($full) {
$fullUrl = fullUrl($originUrl);
if (BcUtil::isAdminSystem()) {
if ($site->domainType == 1) {
$fullUrlArray = explode('//', $fullUrl);
return $fullUrlArray[0] . '//' . $subDomain . '.' . $fullUrlArray[1];
} elseif ($site->domainType == 2) {
$fullUrlArray = explode('//', $fullUrl);
$urlArray = explode('/', $fullUrlArray[1]);
unset($urlArray[0]);
if ($site->sameMainUrl) {
$mainSite = BcSite::findById($site->mainSiteId);
$subDomain = $mainSite->alias;
}
return $fullUrlArray[0] . '//' . $subDomain . '/' . implode('/', $urlArray);
}
} else {
return $fullUrl;
}
} else {
return Router::url($originUrl);
}
} else {
if (BC_INSTALLED) {
if (!is_array($url)) {
$site = BcSite::findByUrl($url);
if ($site && $site->sameMainUrl) {
$mainSite = BcSite::findById($site->mainSiteId);
$alias = $mainSite->alias;
if ($alias) {
$alias = '/' . $alias;
}
$url = $alias . $site->getPureUrl($url);
}
}
}
if ($full) {
return fullUrl($url);
} else {
return Router::url($url);
}
}
}