fix updating of std.subdomains when changing default ip-addresses (empty value!)

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2025-02-08 17:46:22 +01:00
parent e35092c31f
commit 32344e39cf

View File

@@ -125,25 +125,20 @@ class Store
} }
if (count($ids) > 0) { if (count($ids) > 0) {
$defaultips_new = explode(',', $newfieldvalue);
if (!empty($defaultips_old) && !empty($newfieldvalue)) { if (!empty($defaultips_old)) {
$in_value = $defaultips_old . ", " . $newfieldvalue; // Delete the existing mappings linking to default IPs
} elseif (!empty($defaultips_old) && empty($newfieldvalue)) { $del_stmt = Database::prepare("
$in_value = $defaultips_old; DELETE FROM `" . TABLE_DOMAINTOIP . "`
} else { WHERE `id_domain` IN (" . implode(', ', $ids) . ")
$in_value = $newfieldvalue; AND `id_ipandports` IN (" . $defaultips_old . ")
");
Database::pexecute($del_stmt);
} }
// Delete the existing mappings linking to default IPs $defaultips_new = !empty($newfieldvalue) ? explode(",", $newfieldvalue) : [];
$del_stmt = Database::prepare("
DELETE FROM `" . TABLE_DOMAINTOIP . "`
WHERE `id_domain` IN (" . implode(', ', $ids) . ")
AND `id_ipandports` IN (" . $in_value . ")
");
Database::pexecute($del_stmt);
if (count($defaultips_new) > 0) { if (count($defaultips_new) > 0) {
// Insert the new mappings // Insert the new mappings
$ins_stmt = Database::prepare(" $ins_stmt = Database::prepare("
INSERT INTO `" . TABLE_DOMAINTOIP . "` INSERT INTO `" . TABLE_DOMAINTOIP . "`
@@ -166,6 +161,9 @@ class Store
{ {
$defaultips_old = Settings::Get('system.defaultsslip'); $defaultips_old = Settings::Get('system.defaultsslip');
self::cleanIpSelection($defaultips_old);
self::cleanIpSelection($newfieldvalue);
$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'] == 'defaultsslip') { if ($returnvalue !== false && is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] == 'system' && isset($fielddata['varname']) && $fielddata['varname'] == 'defaultsslip') {
@@ -175,6 +173,14 @@ class Store
return $returnvalue; return $returnvalue;
} }
private static function cleanIpSelection(&$selection)
{
$selection_arr = array_filter(explode(',', $selection), function ($value) {
return !empty($value);
});
$selection = implode(",", $selection_arr);
}
/** /**
* updates the setting for the default panel-theme * updates the setting for the default panel-theme
* and also the user themes (customers and admins) if * and also the user themes (customers and admins) if