PluginProbe
AliNext – WooCommerce Dropshipping Plugin for AliExpress / trunk
AliNext – WooCommerce Dropshipping Plugin for AliExpress vtrunk
ali2woo-lite / includes / settings.php

settings.php in AliNext – WooCommerce Dropshipping Plugin for AliExpress trunk, at includes/settings.php

364 lines 13.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Description of Settings
5 *
6 * @author Ali2Woo Team
7 */
8
9 namespace AliNext_Lite;;
10
11 use Pages;
12
13 class Settings
14 {
15 public const DEFAULT_AUTO_UPDATE_MAX_QUOTA = '75';
16
17 public const SETTING_API_ENDPOINT_V6 = 'api_endpoint_v6';
18 public const SETTING_ALIEXPRESS_REGION = 'aliexpress_region';
19 public const SETTING_PLUGIN_DATA_LAST_UPDATE = 'plugin_data_last_update';
20 public const SETTING_SYSTEM_MESSAGE = 'system_message';
21 public const SETTING_CRITICAL_MESSAGES = 'critical_messages';
22 public const SETTING_IMPORT_VIDEO = 'import_video';
23 public const SETTING_SHOW_PRODUCT_VIDEO_TAB = 'show_product_video_tab';
24 public const SETTING_VIDEO_TAB_PRIORITY = 'video_tab_priority';
25 public const SETTING_MAKE_VIDEO_FULL_TAB_WIDTH = 'make_video_full_tab_width';
26 public const SETTING_ADD_VIDEO_TO_DESCRIPTION = 'add_video_to_description';
27 public const SETTING_ALLOW_SHOP_MANAGER = 'allow_shop_manager';
28 public const SETTING_HIDDEN_PAGES = 'hidden_pages';
29 public const SETTING_FULFILLMENT_IS_FOREIGNER = 'fulfillment_is_foreigner';
30 public const SETTING_FULFILLMENT_FOREIGN_TAX_ID = 'fulfillment_foreign_tax_id';
31 public const SETTING_FULFILLMENT_PASSPORT_NUMBER = 'fulfillment_passport_number';
32
33 public const SETTING_TIP_OF_DAY = 'tip_of_day';
34 public const SETTING_TIP_OF_DAY_LAST_DATE = 'tip_of_day_last_date';
35 public const SETTINGS_TIP_OF_DAY_DISABLED = 'tip_of_day_disabled';
36 public const SETTING_TIP_OF_DAY_SEEN_IDS = 'tip_of_day_seen_ids';
37 public const SETTING_TIP_OF_DAY_LAST_SYNC = 'tip_of_day_last_sync';
38 public const SETTING_TIP_OF_DAY_INTERVAL = 'tip_of_day_interval';
39
40 public const SETTING_PLUGIN_ACTIVATION_DATE = 'plugin_activation_date';
41
42
43 //shipping settings
44 public const SETTING_ADD_SHIPPING_TO_PRICE = 'add_shipping_to_price';
45 public const SETTING_ALLOW_SHIPPING_FRONTEND = 'aliship_frontend';
46 public const SETTING_SYNC_PRODUCT_SHIPPING = 'sync_product_shipping';
47 public const SETTING_ASSIGN_SHIPPING_ON_IMPORT = 'assign_shipping_on_import';
48 public const SETTING_DELIVERY_INFO_DISPLAY_MODE = 'delivery_info_display_mode';
49
50 public const SETTING_DELIVERY_TIME_TEXT_FORMAT = 'delivery_time_text_format';
51 public const SETTING_DELIVERY_TIME_FALLBACK_MIN = 'delivery_time_fallback_min';
52 public const SETTING_DELIVERY_TIME_FALLBACK_MAX = 'delivery_time_fallback_max';
53
54 public const SETTING_SHIPPING_ON_PRODUCT_PAGE = 'aliship_product_enable';
55
56
57 public const DEFAULTS = [
58 self::SETTING_ADD_SHIPPING_TO_PRICE => false,
59 self::SETTING_ALLOW_SHIPPING_FRONTEND => false,
60 self::SETTING_SYNC_PRODUCT_SHIPPING => false,
61 self::SETTING_DELIVERY_INFO_DISPLAY_MODE => 'default',
62 self::SETTING_DELIVERY_TIME_TEXT_FORMAT => 'Estimated delivery: {delivery_time}',
63 self::SETTING_DELIVERY_TIME_FALLBACK_MIN => 20,
64 self::SETTING_DELIVERY_TIME_FALLBACK_MAX => 30,
65 self::SETTINGS_TIP_OF_DAY_DISABLED => false,
66 self::SETTING_SHIPPING_ON_PRODUCT_PAGE => false,
67 self::SETTING_FULFILLMENT_IS_FOREIGNER => false,
68 ];
69
70
71 /**
72 * Value in percents from 25 to 100
73 */
74 public const SETTING_AUTO_UPDATE_MAX_QUOTA = 'auto_update_max_quota';
75
76 private $settings;
77 private $auto_commit = true;
78
79 private $static_settings = [
80 'api_endpoint' => 'https://api.ali2woo.com/v4/',
81 self::SETTING_API_ENDPOINT_V6 => 'https://api.ali2woo.com/v6/api/',
82 'client_id' => 33446317,
83 'image_editor_srickers' => [
84 '/assets/img/stickers/stick-001.png',
85 '/assets/img/stickers/stick-002.png',
86 '/assets/img/stickers/stick-003.png',
87 '/assets/img/stickers/stick-004.png',
88 '/assets/img/stickers/stick-005.png',
89 '/assets/img/stickers/stick-006.png',
90 '/assets/img/stickers/stick-007.png',
91 '/assets/img/stickers/stick-008.png',
92 '/assets/img/stickers/stick-009.png',
93 '/assets/img/stickers/stick-010.png',
94 '/assets/img/stickers/stick-011.png',
95 '/assets/img/stickers/stick-012.png',
96 '/assets/img/stickers/stick-013.png',
97 '/assets/img/stickers/stick-014.png',
98 '/assets/img/stickers/stick-015.png',
99 '/assets/img/stickers/stick-016.png',
100 '/assets/img/stickers/stick-017.png',
101 '/assets/img/stickers/stick-018.png',
102 '/assets/img/stickers/stick-019.png',
103 '/assets/img/stickers/stick-020.png',
104 '/assets/img/stickers/stick-021.png',
105 '/assets/img/stickers/stick-022.png'
106 ],
107 ];
108
109 private $default_settings = [
110 'item_purchase_code' => '',
111 'aliexpress_access_tokens' => [],
112 'account_type' => 'aliexpress',
113 'use_custom_account' => false,
114 'account_data' => ['aliexpress' => ['appkey' => '', 'trackingid' => ''], 'admitad' => ['cashback_url' => '']],
115
116 'import_language' => 'en',
117 'local_currency' => 'USD',
118 'default_product_type' => 'simple',
119 'default_product_status' => 'publish',
120 'not_import_attributes' => false,
121 'not_import_description' => false,
122 'not_import_description_images' => false,
123 'import_extended_attribute' => false,
124 'import_product_images_limit' => 0,
125 'use_external_image_urls' => true,
126 'use_random_stock' => false,
127 'use_random_stock_min' => 5,
128 'use_random_stock_max' => 15,
129 'split_attribute_values' => true,
130 'attribute_values_separator' => ',',
131 'currency_conversion_factor' => 1,
132 'background_import' => true,
133 'convert_attr_case' => 'original',
134 'allow_product_duplication' => true,
135 'remove_ship_from' => false,
136 'default_ship_from' => 'CN',
137
138 self::SETTING_ALIEXPRESS_REGION => 'US',
139 self::SETTING_IMPORT_VIDEO => true,
140 self::SETTING_SHOW_PRODUCT_VIDEO_TAB => false,
141 self::SETTING_VIDEO_TAB_PRIORITY => 50,
142 self::SETTING_MAKE_VIDEO_FULL_TAB_WIDTH => false,
143 self::SETTING_ADD_VIDEO_TO_DESCRIPTION => 'none', //none, before, after
144
145 'auto_update' => false,
146 self::SETTING_AUTO_UPDATE_MAX_QUOTA => self::DEFAULT_AUTO_UPDATE_MAX_QUOTA,
147 'on_not_available_product' => 'trash', // nothing, trash, zero
148 'on_not_available_variation' => 'trash', // nothing, trash, zero
149 'on_new_variation_appearance' => 'add', // nothing, add
150 'on_price_changes' => 'update', // nothing, update
151 'on_stock_changes' => 'update', // nothing, update
152 'untrash_product' => false,
153 'email_alerts' => false,
154 'email_alerts_email' => '',
155
156 'fulfillment_prefship' => 'CAINIAO_FULFILLMENT_STD',
157 'fulfillment_phone_code' => '',
158 'fulfillment_phone_number' => '',
159 'fulfillment_custom_note' => '',
160 'fulfillment_cpf_meta_key' => '',
161 'fulfillment_rut_meta_key' => '',
162 self::SETTING_FULFILLMENT_IS_FOREIGNER => self::DEFAULTS[self::SETTING_FULFILLMENT_IS_FOREIGNER],
163 self::SETTING_FULFILLMENT_FOREIGN_TAX_ID => '',
164 self::SETTING_FULFILLMENT_PASSPORT_NUMBER => '',
165 'order_translitirate' => false,
166 'order_third_name' => false,
167 'pricing_rules_type' => PriceFormulaService::SALE_PRICE_AS_BASE,
168 'use_extended_price_markup' => false,
169 'use_compared_price_markup' => false,
170 'price_cents' => -1,
171 'price_compared_cents' => -1,
172 'default_formula' => false,
173 'formula_list' => [],
174 self::SETTING_ADD_SHIPPING_TO_PRICE => self::DEFAULTS[self::SETTING_ADD_SHIPPING_TO_PRICE],
175 'apply_price_rules_after_shipping_cost' => false,
176
177 'phrase_list' => [],
178
179 'load_review' => false,
180 'review_status' => false,
181 'review_translated' => false,
182 'review_avatar_import' => false,
183 'review_min_per_product' => 10,
184 'review_max_per_product' => 20,
185 'review_raiting_from' => 1,
186 'review_raiting_to' => 5,
187 'review_noavatar_photo' => null,
188 'review_load_attributes' => false,
189 'review_show_image_list' => false,
190 'review_thumb_width' => 30,
191 'moderation_reviews' => false,
192 'review_skip_keywords' => '',
193 'review_skip_empty' => false,
194 'review_country' => [],
195
196 'aliship_shipto' => 'US',
197 //'aliship_shipfrom' - rudiment setting, use 'aliexpress_region' now
198 'aliship_shipfrom' => 'CN',
199 'default_shipping_class' => false,
200 self::SETTING_ALLOW_SHIPPING_FRONTEND => self::DEFAULTS[self::SETTING_ALLOW_SHIPPING_FRONTEND],
201 self::SETTING_SYNC_PRODUCT_SHIPPING => self::DEFAULTS[self::SETTING_SYNC_PRODUCT_SHIPPING],
202 self::SETTING_ASSIGN_SHIPPING_ON_IMPORT => false,
203 self::SETTING_DELIVERY_INFO_DISPLAY_MODE => self::DEFAULTS[self::SETTING_DELIVERY_INFO_DISPLAY_MODE],
204 self::SETTING_DELIVERY_TIME_TEXT_FORMAT => self::DEFAULTS[self::SETTING_DELIVERY_TIME_TEXT_FORMAT],
205 self::SETTING_DELIVERY_TIME_FALLBACK_MIN => self::DEFAULTS[self::SETTING_DELIVERY_TIME_FALLBACK_MIN],
206 self::SETTING_DELIVERY_TIME_FALLBACK_MAX => self::DEFAULTS[self::SETTING_DELIVERY_TIME_FALLBACK_MAX],
207 'aliship_shipping_method' => 'default',
208 'aliship_selection_type' => 'popup',
209 'aliship_shipping_type' => 'new',
210 'aliship_shipping_option_text' => '[{shipping_cost}] {shipping_company} ({delivery_time}) - {country}',
211 'aliship_shipping_label' => 'Shipping',
212 'aliship_free_shipping_label' => 'Free Shipping',
213 self::SETTING_SHIPPING_ON_PRODUCT_PAGE => self::DEFAULTS[self::SETTING_SHIPPING_ON_PRODUCT_PAGE],
214 'aliship_product_not_available_message' => 'This product can not be delivered to {country}.',
215 'aliship_product_position' => 'after_cart',
216 'aliship_not_available_remove' => false,
217 'aliship_not_available_message' => '[{shipping_cost}] {delivery_time} - {country}',
218 'aliship_not_available_cost' => 10,
219 'aliship_not_available_time_min' => 20,
220 'aliship_not_available_time_max' => 30,
221
222 'json_api_base' => 'a2wl_api',
223 'json_api_controllers' => 'core,auth',
224
225 'system_message_last_update' => 0,
226 self::SETTING_SYSTEM_MESSAGE => [],
227 self::SETTING_CRITICAL_MESSAGES => [],
228 self::SETTING_TIP_OF_DAY => [],
229 self::SETTING_TIP_OF_DAY_LAST_DATE => null,
230 self::SETTINGS_TIP_OF_DAY_DISABLED => self::DEFAULTS[self::SETTINGS_TIP_OF_DAY_DISABLED],
231 self::SETTING_TIP_OF_DAY_SEEN_IDS => [],
232 self::SETTING_TIP_OF_DAY_INTERVAL => 86400,
233
234 self::SETTING_ALLOW_SHOP_MANAGER => false,
235 self::SETTING_HIDDEN_PAGES => [Pages::SETTINGS, Pages::ADDONS, Pages::WIZARD, Pages::JSON_API, Pages::DEBUG],
236
237 'api_keys' => [],
238
239 'chrome_ext_import' => false,
240
241 'write_info_log' => false,
242 ];
243
244 private static $_instance = null;
245
246 protected function __construct()
247 {
248 $this->default_settings[self::SETTING_TIP_OF_DAY] = TipOfDay::getDefaultData();
249
250 $this->load();
251 }
252
253 protected function __clone()
254 {
255
256 }
257
258 public static function instance()
259 {
260 if (is_null(self::$_instance)) {
261 self::$_instance = new self();
262 }
263 return self::$_instance;
264 }
265
266 public function auto_commit($auto_commit = true)
267 {
268 $this->auto_commit = $auto_commit;
269 }
270
271 public function load()
272 {
273 $static_settings = $this->static_settings;
274
275 if (a2wl_check_defined("A2WL_API_ENDPOINT")) {
276 $static_settings['api_endpoint'] = A2WL_API_ENDPOINT;
277 }
278
279 if (a2wl_check_defined("A2WL_DO_NOT_USE_HTTPS")) {
280 $static_settings['api_endpoint'] = str_replace("https", "http", $static_settings['api_endpoint']);
281 }
282 $this->settings = array_merge(
283 $this->default_settings, get_option('a2wl_settings', array()), $static_settings);
284 }
285
286 public function commit()
287 {
288 update_option('a2wl_settings', $this->settings, 'no');
289 }
290
291 public function to_string()
292 {}
293
294 public function from_string($str)
295 {}
296
297 public function get($setting, $default = '')
298 {
299 return $this->settings[$setting] ?? $default;
300 }
301
302 public function set($setting, $value)
303 {
304 $old_value = isset($this->settings[$setting]) ? $this->settings[$setting] : '';
305
306 do_action('a2wl_pre_set_setting_' . $setting, $old_value, $value, $setting);
307
308 $this->settings[$setting] = $value;
309
310 if ($this->auto_commit) {
311 $this->commit();
312 }
313
314 do_action('a2wl_set_setting_' . $setting, $old_value, $value, $setting);
315 }
316
317 public function del($setting)
318 {
319 if (isset($this->settings[$setting])) {
320 unset($this->settings[$setting]);
321
322 if ($this->auto_commit) {
323 $this->commit();
324 }
325 }
326 }
327 }
328
329 if (!function_exists('settings')) {
330 function settings()
331 {
332 return Settings::instance();
333 }
334 }
335
336 if (!function_exists('get_setting')) {
337 function get_setting($setting, $default = '')
338 {
339 if (!$default && isset(Settings::DEFAULTS[$setting])) {
340 $default = Settings::DEFAULTS[$setting];
341 }
342
343 return settings()->get($setting, $default);
344 }
345 }
346
347 if (!function_exists('set_setting')) {
348 function set_setting($setting, $value)
349 {
350 if (a2wl_check_defined('A2WL_DEMO_MODE') && in_array($setting, array('use_external_image_urls'))) {
351 return;
352 }
353
354 return settings()->set($setting, $value);
355 }
356 }
357
358 if (!function_exists('del_setting')) {
359 function del_setting($setting)
360 {
361 return settings()->del($setting);
362 }
363 }
364