| @@ -16,11 +16,28 @@ | ||
| 16 | 16 | |
| 17 | 17 | public static function saveSettings() |
| 18 | 18 | { |
| 19 | 19 | $data = isset($_POST['sync_basalam_settings']) ? array_map('sanitize_text_field', wp_unslash($_POST['sync_basalam_settings'])) : []; |
| 20 | + $toggleProductSync = !empty($_POST['sync_basalam_toggle_product']); | |
| 20 | 21 | |
| 22 | + if ($toggleProductSync) { | |
| 23 | + $nextStatus = !SettingsManager::getSettings(SettingsConfig::SYNC_STATUS_PRODUCT); | |
| 24 | + $nextValue = $nextStatus ? '1' : '0'; | |
| 25 | + $data[SettingsConfig::SYNC_STATUS_PRODUCT] = $nextValue; | |
| 26 | + $data[SettingsConfig::SYNC_STATUS_PRODUCT_CREATE] = $nextValue; | |
| 27 | + $data[SettingsConfig::SYNC_STATUS_PRODUCT_UPDATE] = $nextValue; | |
| 28 | + } | |
| 29 | + | |
| 21 | 30 | if ($data) { |
| 22 | - if (!SettingsManager::isProductUpdateSelectionValid($data)) { | |
| 31 | + $syncToggleSubmitted = array_key_exists(SettingsConfig::SYNC_STATUS_PRODUCT, $data) | |
| 32 | + || array_key_exists(SettingsConfig::SYNC_STATUS_PRODUCT_CREATE, $data) | |
| 33 | + || array_key_exists(SettingsConfig::SYNC_STATUS_PRODUCT_UPDATE, $data); | |
| 34 | + $candidateSettings = SettingsManager::sanitizeSettings($data); | |
| 35 | + | |
| 36 | + if ( | |
| 37 | + (!$syncToggleSubmitted || $candidateSettings[SettingsConfig::SYNC_STATUS_PRODUCT_UPDATE]) | |
| 38 | + && !SettingsManager::isProductUpdateSelectionValid($data) | |
| 39 | + ) { | |
| 23 | 40 | self::pushValidationError(SettingsConfig::CUSTOM_PRODUCT_UPDATE_REQUIRED_MESSAGE); |
| 24 | 41 | return false; |
| 25 | 42 | } |
| 26 | 43 | |