correct handling of storeSettingHostname when system.stdsubdomain is changed; refs #633

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2019-01-10 20:12:59 +01:00
parent b4597d54af
commit 7841eebf08
2 changed files with 43 additions and 19 deletions

View File

@@ -458,6 +458,10 @@ if ($page == 'overview') {
}
}
$alias_stmt = Database::prepare("SELECT COUNT(`id`) AS count FROM `" . TABLE_PANEL_DOMAINS . "` WHERE `aliasdomain`= :aliasdomain");
$alias_check = Database::pexecute_first($alias_stmt, array("aliasdomain" => $result['id']));
$alias_check = $alias_check['count'];
$domainip = $result_ipandport['ip'];
$result = \Froxlor\PhpHelper::htmlentitiesArray($result);

View File

@@ -221,10 +221,29 @@ class Store
{
$returnvalue = self::storeSettingField($fieldname, $fielddata, $newfieldvalue);
if ($returnvalue !== false && is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] == 'system' && isset($fielddata['varname']) && $fielddata['varname'] == 'hostname') {
if ($returnvalue !== false && is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] == 'system' && isset($fielddata['varname']) && ($fielddata['varname'] == 'hostname' || $fielddata['varname'] == 'stdsubdomain')) {
$idna_convert = new \Froxlor\Idna\IdnaWrapper();
$newfieldvalue = $idna_convert->encode($newfieldvalue);
if (($fielddata['varname'] == 'hostname' && Settings::Get('system.stdsubdomain') == '') || $fielddata['varname'] == 'stdsubdomain')
{
if ($fielddata['varname'] == 'stdsubdomain' && $newfieldvalue == '') {
// clear field, reset stdsubdomain to system-hostname
$oldhost = Settings::Get('system.stdsubdomain');
$newhost = Settings::Get('system.hostname');
} elseif ($fielddata['varname'] == 'stdsubdomain' && Settings::Get('system.stdsubdomain') == '') {
// former std-subdomain was system-hostname
$oldhost = Settings::Get('system.hostname');
$newhost = Settings::Get('system.stdsubdomain');
} elseif ($fielddata['varname'] == 'stdsubdomain') {
// std-subdomain just changed
$oldhost = Settings::Get('system.stdsubdomain');
$newhost = $newfieldvalue;
} elseif ($fielddata['varname'] == 'hostname' && Settings::Get('system.stdsubdomain') == '') {
$oldhost = Settings::Get('system.hostname');
$newhost = $newfieldvalue;
}
$customerstddomains_result_stmt = Database::prepare("
SELECT `standardsubdomain` FROM `" . TABLE_PANEL_CUSTOMERS . "` WHERE `standardsubdomain` <> '0'
");
@@ -243,11 +262,12 @@ class Store
WHERE `id` IN ('" . implode(', ', $ids) . "')
");
Database::pexecute($upd_stmt, array(
'host' => Settings::Get('system.hostname'),
'newval' => $newfieldvalue
'host' => $oldhost,
'newval' => $newhost
));
}
}
}
return $returnvalue;
}