correct handling of storeSettingHostname when system.stdsubdomain is changed; refs #633
Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
@@ -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'];
|
$domainip = $result_ipandport['ip'];
|
||||||
$result = \Froxlor\PhpHelper::htmlentitiesArray($result);
|
$result = \Froxlor\PhpHelper::htmlentitiesArray($result);
|
||||||
|
|
||||||
|
|||||||
@@ -221,31 +221,51 @@ class Store
|
|||||||
{
|
{
|
||||||
$returnvalue = self::storeSettingField($fieldname, $fielddata, $newfieldvalue);
|
$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();
|
$idna_convert = new \Froxlor\Idna\IdnaWrapper();
|
||||||
$newfieldvalue = $idna_convert->encode($newfieldvalue);
|
$newfieldvalue = $idna_convert->encode($newfieldvalue);
|
||||||
|
|
||||||
$customerstddomains_result_stmt = Database::prepare("
|
if (($fielddata['varname'] == 'hostname' && Settings::Get('system.stdsubdomain') == '') || $fielddata['varname'] == 'stdsubdomain')
|
||||||
SELECT `standardsubdomain` FROM `" . TABLE_PANEL_CUSTOMERS . "` WHERE `standardsubdomain` <> '0'
|
{
|
||||||
");
|
if ($fielddata['varname'] == 'stdsubdomain' && $newfieldvalue == '') {
|
||||||
Database::pexecute($customerstddomains_result_stmt);
|
// 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;
|
||||||
|
}
|
||||||
|
|
||||||
$ids = array();
|
$customerstddomains_result_stmt = Database::prepare("
|
||||||
|
SELECT `standardsubdomain` FROM `" . TABLE_PANEL_CUSTOMERS . "` WHERE `standardsubdomain` <> '0'
|
||||||
|
");
|
||||||
|
Database::pexecute($customerstddomains_result_stmt);
|
||||||
|
|
||||||
while ($customerstddomains_row = $customerstddomains_result_stmt->fetch(\PDO::FETCH_ASSOC)) {
|
$ids = array();
|
||||||
$ids[] = (int) $customerstddomains_row['standardsubdomain'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count($ids) > 0) {
|
while ($customerstddomains_row = $customerstddomains_result_stmt->fetch(\PDO::FETCH_ASSOC)) {
|
||||||
$upd_stmt = Database::prepare("
|
$ids[] = (int) $customerstddomains_row['standardsubdomain'];
|
||||||
UPDATE `" . TABLE_PANEL_DOMAINS . "` SET
|
}
|
||||||
`domain` = REPLACE(`domain`, :host, :newval)
|
|
||||||
WHERE `id` IN ('" . implode(', ', $ids) . "')
|
if (count($ids) > 0) {
|
||||||
");
|
$upd_stmt = Database::prepare("
|
||||||
Database::pexecute($upd_stmt, array(
|
UPDATE `" . TABLE_PANEL_DOMAINS . "` SET
|
||||||
'host' => Settings::Get('system.hostname'),
|
`domain` = REPLACE(`domain`, :host, :newval)
|
||||||
'newval' => $newfieldvalue
|
WHERE `id` IN ('" . implode(', ', $ids) . "')
|
||||||
));
|
");
|
||||||
|
Database::pexecute($upd_stmt, array(
|
||||||
|
'host' => $oldhost,
|
||||||
|
'newval' => $newhost
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user