diff --git a/customer_domains.php b/customer_domains.php index ba01a6c6..0e44156f 100644 --- a/customer_domains.php +++ b/customer_domains.php @@ -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); diff --git a/lib/Froxlor/Settings/Store.php b/lib/Froxlor/Settings/Store.php index e1954871..476a4024 100644 --- a/lib/Froxlor/Settings/Store.php +++ b/lib/Froxlor/Settings/Store.php @@ -221,31 +221,51 @@ 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); - $customerstddomains_result_stmt = Database::prepare(" - SELECT `standardsubdomain` FROM `" . TABLE_PANEL_CUSTOMERS . "` WHERE `standardsubdomain` <> '0' - "); - Database::pexecute($customerstddomains_result_stmt); + 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; + } - $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[] = (int) $customerstddomains_row['standardsubdomain']; - } + $ids = array(); - if (count($ids) > 0) { - $upd_stmt = Database::prepare(" - UPDATE `" . TABLE_PANEL_DOMAINS . "` SET - `domain` = REPLACE(`domain`, :host, :newval) - WHERE `id` IN ('" . implode(', ', $ids) . "') - "); - Database::pexecute($upd_stmt, array( - 'host' => Settings::Get('system.hostname'), - 'newval' => $newfieldvalue - )); + while ($customerstddomains_row = $customerstddomains_result_stmt->fetch(\PDO::FETCH_ASSOC)) { + $ids[] = (int) $customerstddomains_row['standardsubdomain']; + } + + if (count($ids) > 0) { + $upd_stmt = Database::prepare(" + UPDATE `" . TABLE_PANEL_DOMAINS . "` SET + `domain` = REPLACE(`domain`, :host, :newval) + WHERE `id` IN ('" . implode(', ', $ids) . "') + "); + Database::pexecute($upd_stmt, array( + 'host' => $oldhost, + 'newval' => $newhost + )); + } } }