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 @@