diff --git a/modules/module/module.class.php b/modules/module/module.class.php index c09919530..543f015e2 100644 --- a/modules/module/module.class.php +++ b/modules/module/module.class.php @@ -19,12 +19,13 @@ class module extends ModuleObject $oDB->addIndex("modules","idx_site_mid", array("site_srl","mid"), true); // Insert new domain - if(!getModel('module')->getSiteInfo(0)) + if(!getModel('module')->getDefaultDomainInfo()) { $current_url = Rhymix\Framework\Url::getCurrentUrl(); $domain = new stdClass(); $domain->domain_srl = 0; $domain->domain = Rhymix\Framework\URL::getDomainFromURL($current_url); + $domain->is_default_domain = 'Y'; $domain->index_module_srl = 0; $domain->index_document_srl = 0; $domain->http_port = null; @@ -92,7 +93,7 @@ class module extends ModuleObject } // Check domains - if (!$oDB->isTableExists('domains') || !getModel('module')->getSiteInfo(0)) + if (!$oDB->isTableExists('domains') || !getModel('module')->getDefaultDomainInfo()) { return true; } @@ -308,7 +309,7 @@ class module extends ModuleObject } // Migrate domains - if (!getModel('module')->getSiteInfo(0)) + if (!getModel('module')->getDefaultDomainInfo()) { $this->migrateDomains(); } @@ -393,8 +394,13 @@ class module extends ModuleObject $oDB->createTableByXmlFile($this->module_path . 'schemas/domains.xml'); } + // Get current site configuration. + $oModuleModel = getModel('module'); + $config = $oModuleModel->getModuleConfig('module'); + // Initialize domains data. $domains = array(); + $default_domain = new stdClass; // Check XE sites. $output = executeQueryArray('module.getSites'); @@ -411,15 +417,26 @@ class module extends ModuleObject $domain = new stdClass(); $domain->domain_srl = $site_info->site_srl; $domain->domain = Rhymix\Framework\URL::getDomainFromURL(strtolower($site_domain)); + $domain->is_default_domain = $site_info->site_srl == 0 ? 'Y' : 'N'; $domain->index_module_srl = $site_info->index_module_srl; $domain->index_document_srl = 0; $domain->http_port = config('url.http_port') ?: null; $domain->https_port = config('url.https_port') ?: null; $domain->security = config('url.ssl') ?: 'none'; $domain->description = ''; - $domain->settings = json_encode(array('language' => $site_info->default_language, 'timezone' => null)); + $domain->settings = json_encode(array( + 'title' => $config->siteTitle, + 'subtitle' => $config->siteSubtitle, + 'language' => $site_info->default_language, + 'timezone' => config('locale.default_timezone'), + 'html_footer' => $config->htmlFooter, + )); $domain->regdate = $site_info->regdate; $domains[$domain->domain] = $domain; + if ($domain->is_default_domain === 'Y') + { + $default_domain = $domain; + } } } else @@ -430,14 +447,22 @@ class module extends ModuleObject $domain = new stdClass(); $domain->domain_srl = 0; $domain->domain = Rhymix\Framework\URL::decodeIdna(strtolower($default_hostinfo['host'])); + $domain->is_default_domain = 'Y'; $domain->index_module_srl = $output->data ? $output->data->module_srl : 0; $domain->index_document_srl = 0; $domain->http_port = isset($default_hostinfo['port']) ? intval($default_hostinfo['port']) : null; $domain->https_port = null; $domain->security = config('url.ssl') ?: 'none'; $domain->description = ''; - $domain->settings = json_encode(array('language' => null, 'timezone' => null)); + $domain->settings = json_encode(array( + 'title' => $config->siteTitle, + 'subtitle' => $config->siteSubtitle, + 'language' => $site_info->default_language, + 'timezone' => config('locale.default_timezone'), + 'html_footer' => $config->htmlFooter, + )); $domains[$domain->domain] = $domain; + $default_domain = $domain; } // Check multidomain module. @@ -457,15 +482,26 @@ class module extends ModuleObject $domain = new stdClass(); $domain->domain_srl = $site_info->multidomain_srl; $domain->domain = Rhymix\Framework\URL::getDomainFromURL(strtolower($site_domain)); + $domain->is_default_domain = isset($domains[$domain->domain]) ? $domains[$domain->domain]->is_default_domain : 'N'; $domain->index_module_srl = intval($site_info->module_srl); $domain->index_document_srl = intval($site_info->document_srl); $domain->http_port = config('url.http_port') ?: null; $domain->https_port = config('url.https_port') ?: null; $domain->security = config('url.ssl') ?: 'none'; $domain->description = ''; - $domain->settings = json_encode(array('language' => null, 'timezone' => null)); + $domain->settings = json_encode(array( + 'title' => $config->siteTitle, + 'subtitle' => $config->siteSubtitle, + 'language' => $site_info->default_language, + 'timezone' => config('locale.default_timezone'), + 'html_footer' => $config->htmlFooter, + )); $domain->regdate = $site_info->regdate; $domains[$domain->domain] = $domain; + if ($domain->is_default_domain === 'Y') + { + $default_domain = $domain; + } } } } @@ -479,6 +515,12 @@ class module extends ModuleObject return $output; } } + + // Clear cache. + Rhymix\Framework\Cache::clearGroup('site_and_module'); + + // Return the default domain info. + return $default_domain; } /** diff --git a/modules/module/module.model.php b/modules/module/module.model.php index 2c0863e22..77e16ebba 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -62,12 +62,40 @@ class moduleModel extends module } /** - * @brief Get site information + * @brief Get default domain information + */ + function getDefaultDomainInfo() + { + $domain_info = Rhymix\Framework\Cache::get('site_and_module:domain_info:default'); + if ($domain_info === null) + { + $args = new stdClass(); + $args->is_default_domain = 'Y'; + $output = executeQuery('module.getDomainInfo', $args); + if ($output->data) + { + $domain_info = $output->data; + $domain_info->site_srl = 0; + $domain_info->settings = $domain_info->settings ? json_decode($domain_info->settings) : new stdClass; + $domain_info->default_language = $domain_info->settings->language ?: config('locale.default_lang'); + } + else + { + $domain_info = false; + } + Rhymix\Framework\Cache::set('site_and_module:domain_info:default', $domain_info, 0, true); + } + + return $domain_info; + } + + /** + * @brief Get site information by domain_srl */ function getSiteInfo($domain_srl) { $domain_srl = intval($domain_srl); - $domain_info = Rhymix\Framework\Cache::get('site_and_module:domain_info:srl_' . $domain_srl); + $domain_info = Rhymix\Framework\Cache::get('site_and_module:domain_info:srl:' . $domain_srl); if ($domain_info === null) { $args = new stdClass(); @@ -84,12 +112,15 @@ class moduleModel extends module { $domain_info = false; } - Rhymix\Framework\Cache::set('site_and_module:domain_info:srl_' . $domain_srl, $domain_info, 0, true); + Rhymix\Framework\Cache::set('site_and_module:domain_info:srl:' . $domain_srl, $domain_info, 0, true); } return $domain_info; } + /** + * @brief Get site information by domain name + */ function getSiteInfoByDomain($domain) { if (strpos($domain, '/') !== false) @@ -106,7 +137,7 @@ class moduleModel extends module } $domain = strtolower($domain); - $domain_info = Rhymix\Framework\Cache::get('site_and_module:domain_info:' . $domain); + $domain_info = Rhymix\Framework\Cache::get('site_and_module:domain_info:domain:' . $domain); if ($domain_info === null) { $args = new stdClass(); @@ -123,7 +154,7 @@ class moduleModel extends module { $domain_info = false; } - Rhymix\Framework\Cache::set('site_and_module:domain_info:' . $domain, $domain_info, 0, true); + Rhymix\Framework\Cache::set('site_and_module:domain_info:domain:' . $domain, $domain_info, 0, true); } return $domain_info; @@ -154,11 +185,10 @@ class moduleModel extends module $domain_info = $this->getSiteInfoByDomain($domain); if (!$domain_info) { - $domain_info = $this->getSiteInfo(0); + $domain_info = $this->getDefaultDomainInfo(); if (!$domain_info) { - $this->migrateDomains(); - return $this->getDefaultMid(); + $domain_info = $this->migrateDomains(); } } diff --git a/modules/module/queries/getDomainInfo.xml b/modules/module/queries/getDomainInfo.xml index f159558b6..7ee7aba4a 100644 --- a/modules/module/queries/getDomainInfo.xml +++ b/modules/module/queries/getDomainInfo.xml @@ -11,5 +11,6 @@ + diff --git a/modules/module/queries/insertDomain.xml b/modules/module/queries/insertDomain.xml index f90f2ea55..e42c04291 100644 --- a/modules/module/queries/insertDomain.xml +++ b/modules/module/queries/insertDomain.xml @@ -5,6 +5,7 @@ + diff --git a/modules/module/queries/updateDomain.xml b/modules/module/queries/updateDomain.xml index 94f64a84a..7861c84ba 100644 --- a/modules/module/queries/updateDomain.xml +++ b/modules/module/queries/updateDomain.xml @@ -4,6 +4,7 @@ + diff --git a/modules/module/schemas/domains.xml b/modules/module/schemas/domains.xml index 296173d81..eb488c96a 100644 --- a/modules/module/schemas/domains.xml +++ b/modules/module/schemas/domains.xml @@ -1,6 +1,7 @@ +