PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.10.28
ووسلام – همگام سازی ووکامرس و باسلام v1.10.28
1.10.28 1.1.26 1.10.27 1.10.24 1.10.25 1.10.23 1.10.22 1.10.21 1.10.19 1.10.20 1.10.18 1.10.17 1.10.15 1.10.14 1.10.13 1.10.12 1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 All 61 releases
← All changes | includes/Admin/Settings/SettingsManager.php +37 -2 1.10.22 → 1.10.28 View file →
@@ -10,8 +10,10 @@
10 10 {
11 11 public static function getSettings($setting = null)
12 12 {
13 13 $settings = (array) get_option('sync_basalam_settings', SettingsConfig::getDefaultSettings());
14 + $savedSettings = $settings;
15 + $settings = self::normalizeProductSyncSettings($settings);
14 16
15 17 if ($setting == null || !array_key_exists($setting, $settings)) {
16 18 $defaultSettings = SettingsConfig::getDefaultSettings();
17 19
@@ -19,11 +21,11 @@
19 21 if (!array_key_exists($key, $settings)) {
20 22 $settings[$key] = $value;
21 23 }
22 24 }
25 + }
23 26
24 - update_option('sync_basalam_settings', $settings);
25 - }
27 + if ($setting === null || $settings !== $savedSettings) update_option('sync_basalam_settings', $settings);
26 28
27 29 if ($setting === null) return $settings;
28 30
29 31 return $settings[$setting] ?? null;
@@ -36,9 +38,17 @@
36 38 }
37 39
38 40 public static function sanitizeSettings($input)
39 41 {
42 + // Older forms and integrations can still toggle both operations together.
43 + if (array_key_exists(SettingsConfig::SYNC_STATUS_PRODUCT, $input)) {
44 + foreach ([SettingsConfig::SYNC_STATUS_PRODUCT_CREATE, SettingsConfig::SYNC_STATUS_PRODUCT_UPDATE] as $key) {
45 + if (!array_key_exists($key, $input)) $input[$key] = $input[SettingsConfig::SYNC_STATUS_PRODUCT];
46 + }
47 + }
48 +
40 49 $input = array_merge(self::getSettings() ?: [], $input);
50 + $input = self::normalizeProductSyncSettings($input);
41 51
42 52 $input[SettingsConfig::DEFAULT_WEIGHT] = absint($input[SettingsConfig::DEFAULT_WEIGHT]);
43 53 $input[SettingsConfig::DEFAULT_PREPARATION] = absint($input[SettingsConfig::DEFAULT_PREPARATION]);
44 54 $input[SettingsConfig::DISCOUNT_REDUCTION_PERCENT] = min(100, absint($input[SettingsConfig::DISCOUNT_REDUCTION_PERCENT]));
@@ -45,8 +55,33 @@
45 55 $interval = absint($input[SettingsConfig::AUTO_FULL_UPDATE_INTERVAL] ?? 0);
46 56 $input[SettingsConfig::AUTO_FULL_UPDATE_INTERVAL] = in_array($interval, [24, 48], true) ? $interval : 0;
47 57
48 58 return $input;
59 + }
60 +
61 + public static function isProductCreationSyncEnabled(): bool
62 + {
63 + return (bool) self::getSettings(SettingsConfig::SYNC_STATUS_PRODUCT_CREATE);
64 + }
65 +
66 + public static function isProductUpdateSyncEnabled(): bool
67 + {
68 + return (bool) self::getSettings(SettingsConfig::SYNC_STATUS_PRODUCT_UPDATE);
69 + }
70 +
71 + private static function normalizeProductSyncSettings(array $settings): array
72 + {
73 + $legacyStatus = $settings[SettingsConfig::SYNC_STATUS_PRODUCT] ?? false;
74 +
75 + foreach ([SettingsConfig::SYNC_STATUS_PRODUCT_CREATE, SettingsConfig::SYNC_STATUS_PRODUCT_UPDATE] as $key) {
76 + $settings[$key] = in_array($settings[$key] ?? $legacyStatus, [true, 1, '1', 'true', 'yes', 'on'], true);
77 + }
78 +
79 + // Keep the legacy status available to integrations as the aggregate status.
80 + $settings[SettingsConfig::SYNC_STATUS_PRODUCT] = $settings[SettingsConfig::SYNC_STATUS_PRODUCT_CREATE]
81 + || $settings[SettingsConfig::SYNC_STATUS_PRODUCT_UPDATE];
82 +
83 + return $settings;
49 84 }
50 85
51 86 public static function isProductUpdateSelectionValid(?array $settings = null): bool
52 87 {