Changeset 3573270
- Timestamp:
- 06/15/2026 02:08:39 PM (4 months ago)
- Location:
- oasiscatalog-importer
- Files:
-
- 26 added
- 8 edited
-
tags/3.0.4 (added)
-
tags/3.0.4/assets (added)
-
tags/3.0.4/assets/css (added)
-
tags/3.0.4/assets/css/bootstrap.min.css (added)
-
tags/3.0.4/assets/css/branding-widget.css (added)
-
tags/3.0.4/assets/css/style.css (added)
-
tags/3.0.4/assets/js (added)
-
tags/3.0.4/assets/js/bootstrap.min.js (added)
-
tags/3.0.4/assets/js/branding-widget.js (added)
-
tags/3.0.4/assets/js/custom.js (added)
-
tags/3.0.4/assets/js/order.js (added)
-
tags/3.0.4/assets/js/tree.js (added)
-
tags/3.0.4/assets/js/widget.js (added)
-
tags/3.0.4/languages (added)
-
tags/3.0.4/languages/oasiscatalog-importer-ru_RU.mo (added)
-
tags/3.0.4/languages/oasiscatalog-importer-ru_RU.po (added)
-
tags/3.0.4/oasiscatalog-importer.php (added)
-
tags/3.0.4/readme.txt (added)
-
tags/3.0.4/src (added)
-
tags/3.0.4/src/branding.php (added)
-
tags/3.0.4/src/lib (added)
-
tags/3.0.4/src/lib/Api.php (added)
-
tags/3.0.4/src/lib/Cli.php (added)
-
tags/3.0.4/src/lib/Config.php (added)
-
tags/3.0.4/src/lib/Main.php (added)
-
tags/3.0.4/src/order.php (added)
-
trunk/languages/oasiscatalog-importer-ru_RU.mo (modified) ( previous)
-
trunk/languages/oasiscatalog-importer-ru_RU.po (modified) (5 diffs)
-
trunk/oasiscatalog-importer.php (modified) (4 diffs)
-
trunk/readme.txt (modified) (1 diff)
-
trunk/src/lib/Api.php (modified) (2 diffs)
-
trunk/src/lib/Config.php (modified) (2 diffs)
-
trunk/src/lib/Main.php (modified) (1 diff)
-
trunk/src/order.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
oasiscatalog-importer/trunk/languages/oasiscatalog-importer-ru_RU.po
r3549371 r3573270 8 8 "Content-Type: text/plain; charset=UTF-8\n" 9 9 "Content-Transfer-Encoding: 8bit\n" 10 "POT-Creation-Date: 2026-06-15T14:01:52+00:00\n" 11 "PO-Revision-Date: 2026-06-15T14:01:52+00:00\n" 10 12 "Language: ru\n" 11 13 "X-Generator: WP-CLI 2.11.0\n" … … 40 42 41 43 #: oasiscatalog-importer.php:373 42 #: oasiscatalog-importer.php:8 0844 #: oasiscatalog-importer.php:810 43 45 msgid "Categories" 44 46 msgstr "Категории" … … 197 199 msgstr "Оазис импорт" 198 200 199 #: oasiscatalog-importer.php:72 0201 #: oasiscatalog-importer.php:722 200 202 msgid "Settings saved" 201 203 msgstr "Настройки сохранены" 202 204 203 #: oasiscatalog-importer.php:74 2204 #: oasiscatalog-importer.php:87 1205 #: oasiscatalog-importer.php:744 206 #: oasiscatalog-importer.php:877 205 207 msgid "Loading..." 206 208 msgstr "Загрузка..." 207 209 208 #: oasiscatalog-importer.php:74 1210 #: oasiscatalog-importer.php:743 209 211 msgid "General processing status" 210 212 msgstr "Общий статус обработки" … … 223 225 msgstr "Обновление остатков 1 раз в 2 часа" 224 226 225 #: oasiscatalog-importer.php: 799227 #: oasiscatalog-importer.php:801 226 228 msgid "Save settings" 227 229 msgstr "Сохранить настройки" 228 230 229 #: oasiscatalog-importer.php:81 3231 #: oasiscatalog-importer.php:815 230 232 msgid "Clear" 231 233 msgstr "Очистить" 232 234 233 #: oasiscatalog-importer.php:81 4235 #: oasiscatalog-importer.php:816 234 236 msgid "Select" 235 237 msgstr "Выбрать" 236 238 237 #: oasiscatalog-importer.php:84 7239 #: oasiscatalog-importer.php:849 238 240 msgid "Settings" 239 241 msgstr "Настройки" 240 242 241 #: src/order.php:2 0242 #: src/order.php:5 4243 #: src/order.php:5 8243 #: src/order.php:23 244 #: src/order.php:55 245 #: src/order.php:59 244 246 msgid "Unload" 245 247 msgstr "Выгрузить" 246 248 247 #: src/order.php: 38249 #: src/order.php:42 248 250 msgid "Invalid items in the order" 249 251 msgstr "В заказе недопустимые товары" 250 252 251 #: src/order.php:5 2253 #: src/order.php:53 252 254 msgid "The order is being processed, please wait." 253 255 msgstr "Заказ обрабатывается, ожидайте." 254 256 255 #: src/order.php:5 4257 #: src/order.php:55 256 258 msgid "Error, please try again." 257 259 msgstr "Ошибка, попробуйте еще раз." … … 320 322 321 323 #: oasiscatalog-importer.php:387 322 #: oasiscatalog-importer.php:9 08324 #: oasiscatalog-importer.php:923 323 325 msgid "Collapse all" 324 326 msgstr "Свернуть все" 325 327 326 328 #: oasiscatalog-importer.php:388 327 #: oasiscatalog-importer.php:9 09329 #: oasiscatalog-importer.php:924 328 330 msgid "Expand all" 329 331 msgstr "Развернуть все" 330 332 331 333 #. translators: status bar is process. 1: current step, 2: all steps 332 #: oasiscatalog-importer.php:76 6333 #: oasiscatalog-importer.php:86 2334 #: oasiscatalog-importer.php:768 335 #: oasiscatalog-importer.php:868 334 336 msgid "%1$s step in progress out of %2$s. Current step status" 335 337 msgstr "Выполняется %1$s шаг из %2$s. Статус текущего шага" 336 338 337 339 #. translators: status bar, next step. 1: next step, 2: all steps 338 #: oasiscatalog-importer.php:7 69339 #: oasiscatalog-importer.php:8 65340 #: oasiscatalog-importer.php:771 341 #: oasiscatalog-importer.php:871 340 342 msgid "Next step %1$s of %2$s." 341 343 msgstr "Следующий шаг %1$s из %2$s." 342 344 343 345 #. translators: date last import. 1: date 344 #: oasiscatalog-importer.php:7 89346 #: oasiscatalog-importer.php:791 345 347 msgid "Last import completed: %1$s" 346 348 msgstr "Последний импорт завершен: %1$s" -
oasiscatalog-importer/trunk/oasiscatalog-importer.php
r3549371 r3573270 4 4 Plugin URI: https://www.oasiscatalog.com 5 5 Description: Import products from the oasiscatalog.com catalog to WooCommerce. Upload orders from WooCommerce to oasiscatalog. Application editing widget. 6 Version: 3.0. 36 Version: 3.0.4 7 7 Text Domain: oasiscatalog-importer 8 8 License: GPL2 … … 853 853 854 854 add_action('wp_ajax_oasis_get_progress_bar', function() { 855 if (!current_user_can('manage_options')) { 856 return; 857 } 858 855 859 $cf = OasisConfig::instance([ 856 860 'init' => true … … 881 885 882 886 add_action('wp_ajax_oasis_import_run', function() { 887 if (!current_user_can('manage_options')) { 888 return; 889 } 883 890 wp_schedule_single_event(time(), 'oasis_import_schedule', ['run']); 884 891 wp_die(); 885 892 }); 886 893 add_action('wp_ajax_oasis_import_up', function() { 894 if (!current_user_can('manage_options')) { 895 return; 896 } 887 897 wp_schedule_single_event(time(), 'oasis_import_schedule', ['up']); 888 898 wp_die(); … … 890 900 891 901 add_action('wp_ajax_oasis_get_all_categories', function() { 902 if (!current_user_can('manage_options')) { 903 return; 904 } 892 905 $categories = get_categories( [ 893 906 'taxonomy' => 'product_cat', -
oasiscatalog-importer/trunk/readme.txt
r3549371 r3573270 72 72 == Changelog == 73 73 74 = 3.0.4 - 2026-06-15 = 75 - fix branding 76 - fix update price 77 74 78 = 3.0.3 - 2026-05-26 = 75 79 - when upgrading from the old version of the plugin, Oasis products will be deleted and reloaded. Please be prepared for this. -
oasiscatalog-importer/trunk/src/lib/Api.php
r3549371 r3573270 186 186 public static function curlSend(string $type, array $data, array $params = [], $version = 'v4') 187 187 { 188 if (empty(self::$cf->api_key)){ 188 $apiKey = self::$cf->api_key ?? OasisConfig::get('api_key'); 189 if (empty($apiKey)){ 189 190 throw new Exception('Empty API key'); 190 191 } 191 192 $args_pref = [ 192 'key' => self::$cf->api_key,193 'key' => $apiKey, 193 194 'format' => 'json', 194 195 ]; … … 231 232 public static function curlQuery($type, array $args = [], string $version = 'v4') 232 233 { 233 if (empty(self::$cf->api_key)){ 234 $apiKey = self::$cf->api_key ?? OasisConfig::get('api_key'); 235 if (empty($apiKey)){ 234 236 throw new Exception('Empty API key'); 235 237 } 236 238 $args = array_merge([ 237 'key' => self::$cf->api_key,239 'key' => $apiKey, 238 240 'format' => 'json', 239 241 ], $args); -
oasiscatalog-importer/trunk/src/lib/Config.php
r3549371 r3573270 8 8 9 9 class Config { 10 public const VERSION = '3.0. 2';10 public const VERSION = '3.0.4'; 11 11 12 12 public const IMG_SIZE_THUMBNAIL = [80, 60]; … … 504 504 rmdir($dir); 505 505 } 506 507 public static function get($key) { 508 $options = get_option('oasis_import_options', []); 509 return $options[$key] ?? null; 510 } 506 511 } -
oasiscatalog-importer/trunk/src/lib/Main.php
r3549371 r3573270 246 246 if (!$is_variable) { 247 247 $dataPrice = self::getDataPrice($product); 248 $up_data +=[248 $up_data = array_merge($up_data, [ 249 249 ['price', $dataPrice['price']], 250 250 ['regular_price', $dataPrice['regular_price']], 251 251 ['sale_price', $dataPrice['sale_price']], 252 ] ;252 ]); 253 253 } 254 254 -
oasiscatalog-importer/trunk/src/order.php
r3423727 r3573270 8 8 use OasiscatalogImporter\Config as OasisConfig; 9 9 10 add_action( 'init', 'oasis_import_order_init');10 add_action('init', 'oasis_import_order_init'); 11 11 12 12 function oasis_import_order_init() { 13 if ( current_user_can( 'manage_options' ) || current_user_can( 'shop_manager' ) ) { 13 if (!current_user_can('manage_options') && !current_user_can('shop_manager')) { 14 return; 15 } 16 17 $IS_HPOS = get_option('woocommerce_custom_orders_table_enabled') === 'yes'; 18 19 add_filter($IS_HPOS ? 'manage_woocommerce_page_wc-orders_columns' : 'manage_shop_order_posts_columns', function ($defaults) { 20 $columns = []; 21 foreach ($defaults as $field => $value) { 22 if ($field == 'order_total') { 23 $columns['oa_export'] = esc_attr__('Unload', 'oasiscatalog-importer'); 24 } 25 $columns[$field] = $value; 26 } 27 28 return $columns; 29 }, 100); 30 31 add_action($IS_HPOS ? 'manage_woocommerce_page_wc-orders_custom_column' : 'manage_shop_order_posts_custom_column', function ($column_name, $post_ID) { 32 if ($column_name !== 'oa_export') { 33 return; 34 } 35 36 $order = wc_get_order($post_ID); 37 $oasisProductId = null; 38 foreach ($order->get_items() as $item) { 39 $oasisProductId = Main::getOasisProductIdByOrderItem($item); 40 } 41 if (is_null($oasisProductId)) { 42 esc_attr_e('Invalid items in the order', 'oasiscatalog-importer'); 43 return; 44 } 45 $queueId = $order->get_meta('oasis_queue_id', true); 46 47 if ($queueId) { 48 $dataOrder = Api::getOrderByQueueId($queueId); 49 if (isset($dataOrder->state)) { 50 if ($dataOrder->state == 'created') { 51 echo '<div class="order-status status-processing" style="display: flex;justify-content: center;align-items: center;"><span class="dashicons dashicons-yes-alt"></span>' . esc_html($dataOrder->order->statusText) . '. Заказ №' . esc_html($dataOrder->order->number) . '</div></div>'; 52 } elseif ($dataOrder->state == 'pending') { 53 echo '<div class="order-status status-on-hold" style="display: flex;justify-content: center;align-items: center;"><span class="dashicons dashicons-warning"></span>' . esc_html__('The order is being processed, please wait.', 'oasiscatalog-importer') . '</div>'; 54 } elseif ($dataOrder->state == 'error') { 55 echo '<div class="order-status status-failed" style="display: flex;justify-content: center;align-items: center;"><span class="dashicons dashicons-dismiss"></span>' . esc_html__('Error, please try again.', 'oasiscatalog-importer') . '</div><div style="margin-top: 5px;"><input type="submit" name="send_order" class="button send_order" value="' . esc_html__('Unload', 'oasiscatalog-importer') . '" data-order-id="' . esc_attr($order->get_id()) . '"></div>'; 56 } 57 } 58 } else { 59 echo '<input type="button" name="send_order" class="button js-oasis-send_order" value="' . esc_attr__( 'Unload', 'oasiscatalog-importer') . '" data-order-id="' . esc_attr($order->get_id()) . '">'; 60 } 61 }, 10, 2); 62 63 add_action('admin_enqueue_scripts', 'oasis_import_order_script_init'); 64 function oasis_import_order_script_init($hook) { 14 65 $IS_HPOS = get_option('woocommerce_custom_orders_table_enabled') === 'yes'; 15 66 16 add_filter($IS_HPOS ? 'manage_woocommerce_page_wc-orders_columns' : 'manage_shop_order_posts_columns', function ( $defaults ) { 17 $columns = []; 18 foreach ( $defaults as $field => $value ) { 19 if ( $field == 'order_total' ) { 20 $columns['oa_export'] = esc_attr__( 'Unload', 'oasiscatalog-importer' ); 21 } 22 $columns[ $field ] = $value; 23 } 67 $screen = get_current_screen(); 68 if (($IS_HPOS ? 'woocommerce_page_wc-orders' : 'edit-shop_order') != $screen->id) { 69 return; 70 } 24 71 25 return $columns; 26 }, 100 ); 72 if (OasisConfig::get('api_key') && OasisConfig::get('api_user_id')) { 73 wp_enqueue_script('oasis-import-order', plugins_url('/assets/js/order.js', dirname(__FILE__)), ['jquery'], OasisConfig::VERSION, ['in_footer' => true]); 74 } 75 } 27 76 28 add_action($IS_HPOS ? 'manage_woocommerce_page_wc-orders_custom_column' : 'manage_shop_order_posts_custom_column', function ( $column_name, $post_ID ) {29 if ($column_name === 'oa_export') {30 $order = wc_get_order( $post_ID);31 $oasisProductId = null;77 add_action('wp_ajax_oasis_send_order', 'oasis_import_order_send_order'); 78 function oasis_import_order_send_order() { 79 $orderId = sanitize_text_field($_POST['order_id']); 80 $userId = OasisConfig::get('api_user_id'); 32 81 33 foreach ( $order->get_items() as $item ) { 34 $oasisProductId = Main::getOasisProductIdByOrderItem( $item ); 35 } 82 if (!empty($orderId) && !empty($userId)) { 83 $data = [ 84 'userId' => $userId, 85 ]; 86 $order = wc_get_order($orderId); 87 $brandingData = json_decode($order->get_meta('oasis_branding'), true); 36 88 37 if (is_null($oasisProductId)) { 38 esc_attr_e( 'Invalid items in the order', 'oasiscatalog-importer' ); 39 return; 40 } 41 unset( $item, $oasisProductId ); 42 43 $queueId = get_metadata( 'post', $order->get_order_number(), 'oasis_queue_id', true ); 44 45 if ($queueId) { 46 $dataOrder = Api::getOrderByQueueId($queueId); 47 48 if (isset($dataOrder->state)) { 49 if ( $dataOrder->state == 'created' ) { 50 echo '<div class="order-status status-processing" style="display: flex;justify-content: center;align-items: center;"><span class="dashicons dashicons-yes-alt"></span>' . esc_html($dataOrder->order->statusText) . '. Заказ №' . esc_html($dataOrder->order->number) . '</div></div>'; 51 } elseif ( $dataOrder->state == 'pending' ) { 52 echo '<div class="order-status status-on-hold" style="display: flex;justify-content: center;align-items: center;"><span class="dashicons dashicons-warning"></span>' . esc_html__( 'The order is being processed, please wait.', 'oasiscatalog-importer' ) . '</div>'; 53 } elseif ( $dataOrder->state == 'error' ) { 54 echo '<div class="order-status status-failed" style="display: flex;justify-content: center;align-items: center;"><span class="dashicons dashicons-dismiss"></span>' . esc_html__( 'Error, please try again.', 'oasiscatalog-importer' ) . '</div><div style="margin-top: 5px;"><input type="submit" name="send_order" class="button send_order" value="' . esc_html__( 'Unload', 'oasiscatalog-importer' ) . '" data-order-id="' . esc_attr($order->get_order_number()) . '"></div>'; 55 } 56 } 57 } else { 58 echo '<input type="button" name="send_order" class="button js-oasis-send_order" value="' . esc_attr__( 'Unload', 'oasiscatalog-importer' ) . '" data-order-id="' . esc_attr($order->get_order_number()) . '">'; 89 if ($brandingData) { 90 $data += $brandingData; 91 } else { 92 foreach ($order->get_items() as $item) { 93 $data['items'][] = [ 94 'productId' => Main::getOasisProductIdByOrderItem($item), 95 'quantity' => $item->get_quantity(), 96 ]; 59 97 } 60 98 } 61 }, 10, 2); 62 63 add_action('admin_enqueue_scripts', 'oasis_import_order_script_init'); 64 function oasis_import_order_script_init( $hook ) { 65 $IS_HPOS = get_option('woocommerce_custom_orders_table_enabled') === 'yes'; 66 67 $screen = get_current_screen(); 68 if (($IS_HPOS ? 'woocommerce_page_wc-orders' : 'edit-shop_order') != $screen->id ) { 69 return; 70 } 71 72 $options = get_option('oasis_import_options'); 73 74 if (!empty($options['api_key']) && !empty($options['api_user_id'])) { 75 wp_enqueue_script('oasis-import-order', plugins_url('/assets/js/order.js', dirname(__FILE__)), ['jquery'], OasisConfig::VERSION, ['in_footer' => true]); 76 } 77 } 78 79 add_action('wp_ajax_oasis_send_order', 'oasis_import_order_send_order'); 80 function oasis_import_order_send_order() { 81 $order_id = sanitize_text_field($_POST['order_id']); 82 $options = get_option('oasis_import_options'); 83 84 if (!empty($order_id)) { 85 $data = [ 86 'userId' => $options['api_user_id'], 87 ]; 88 89 if (!empty($data['userId'])) { 90 $order = wc_get_order($order_id); 91 $brandingData = json_decode($order->get_meta('oasis_branding'), true); 92 93 if ($brandingData) { 94 $data += $brandingData; 95 } else { 96 foreach ($order->get_items() as $item) { 97 $data['items'][] = [ 98 'productId' => Main::getOasisProductIdByOrderItem($item), 99 'quantity' => $item->get_quantity(), 100 ]; 101 } 102 } 103 try { 104 $request = Api::sendOrder($data); 105 106 if (!empty($request->error)) { 107 wp_send_json_error($request->error); 108 } 109 110 if ($request) { 111 update_metadata('post', $order_id, 'oasis_queue_id', $request->queueId); 112 } 113 } 114 catch (\Throwable $e) {} 99 try { 100 $request = Api::sendOrder($data); 101 if (!empty($request->error)) { 102 wp_send_json_error($request->error); 103 } 104 elseif ($request) { 105 $order->update_meta_data('oasis_queue_id', $request->queueId); 106 $order->save(); 115 107 } 116 108 } 117 wp_die();109 catch (\Throwable $e) {} 118 110 } 111 wp_die(); 119 112 } 120 113 }
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)