From 8a012a584723ecc4abf40c3fd238bb28d8647c91 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Mon, 27 May 2024 01:43:04 +0900 Subject: [PATCH] Add R\F\URL::getCurrentDomain() --- common/framework/URL.php | 17 +++++++++++++++++ modules/module/module.model.php | 5 ++--- tests/unit/framework/URLTest.php | 19 +++++++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/common/framework/URL.php b/common/framework/URL.php index 92ba5d503..e4dadae3f 100644 --- a/common/framework/URL.php +++ b/common/framework/URL.php @@ -33,6 +33,23 @@ class URL /** * Get the current domain. * + * @param bool $preserve_port + * @return string + */ + public static function getCurrentDomain(bool $preserve_port = false): string + { + // Get current domain. + $domain = strtolower($_SERVER['HTTP_HOST'] ?? ''); + if (!$preserve_port) + { + $domain = preg_replace('/:\d+$/', '', $domain); + } + return self::decodeIdna($domain); + } + + /** + * Get a URL using the current domain and the path. + * * @param string $path * @return string */ diff --git a/modules/module/module.model.php b/modules/module/module.model.php index 7892d9fb0..9ae19025b 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -198,8 +198,7 @@ class ModuleModel extends Module public static function getDefaultMid($domain = null) { // Get current domain. - $domain = $domain ?: strtolower(preg_replace('/:\d+$/', '', $_SERVER['HTTP_HOST'])); - $domain = Rhymix\Framework\URL::decodeIdna($domain); + $domain = $domain ? Rhymix\Framework\URL::decodeIdna($domain) : Rhymix\Framework\URL::getCurrentDomain(); // Find the domain information. $domain_info = self::getSiteInfoByDomain($domain); @@ -208,7 +207,7 @@ class ModuleModel extends Module $domain_info = self::getDefaultDomainInfo(); if (!$domain_info) { - $domain_info = getClass('module')->migrateDomains(); + $domain_info = Module::getInstance()->migrateDomains(); } $domain_info->is_default_replaced = true; } diff --git a/tests/unit/framework/URLTest.php b/tests/unit/framework/URLTest.php index 5f69880e8..040e38b9e 100644 --- a/tests/unit/framework/URLTest.php +++ b/tests/unit/framework/URLTest.php @@ -41,6 +41,25 @@ class URLTest extends \Codeception\Test\Unit $_SERVER['REQUEST_URI'] = $old_request_uri; } + public function testGetCurrentDomain() + { + $original_host = $_SERVER['HTTP_HOST']; + + $_SERVER['HTTP_HOST'] = 'rhymix.org'; + $this->assertEquals('rhymix.org', Rhymix\Framework\URL::getCurrentDomain()); + $this->assertEquals('rhymix.org', Rhymix\Framework\URL::getCurrentDomain(true)); + + $_SERVER['HTTP_HOST'] = 'xn--oi2b48fl0g0pf.RHYMIX.ORG:443'; + $this->assertEquals('라이믹스.rhymix.org', Rhymix\Framework\URL::getCurrentDomain()); + $this->assertEquals('라이믹스.rhymix.org:443', Rhymix\Framework\URL::getCurrentDomain(true)); + + $_SERVER['HTTP_HOST'] = 'rhymix.org:8080'; + $this->assertEquals('rhymix.org', Rhymix\Framework\URL::getCurrentDomain()); + $this->assertEquals('rhymix.org:8080', Rhymix\Framework\URL::getCurrentDomain(true)); + + $_SERVER['HTTP_HOST'] = $original_host; + } + public function testGetCurrentDomainURL() { $this->assertEquals('https://www.rhymix.org/', Rhymix\Framework\URL::getCurrentDomainURL());