Plugin Directory

Changeset 3573270


Ignore:
Timestamp:
06/15/2026 02:08:39 PM (4 months ago)
Author:
oasisvisheratinnikolay
Message:

v 3.0.4

Location:
oasiscatalog-importer
Files:
26 added
8 edited

Legend:

Unmodified
Added
Removed
  • oasiscatalog-importer/trunk/languages/oasiscatalog-importer-ru_RU.po

    r3549371 r3573270  
    88"Content-Type: text/plain; charset=UTF-8\n"
    99"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"
    1012"Language: ru\n"
    1113"X-Generator: WP-CLI 2.11.0\n"
    … …  
    4042
    4143#: oasiscatalog-importer.php:373
    42 #: oasiscatalog-importer.php:808
     44#: oasiscatalog-importer.php:810
    4345msgid "Categories"
    4446msgstr "Категории"
    … …  
    197199msgstr "Оазис импорт"
    198200
    199 #: oasiscatalog-importer.php:720
     201#: oasiscatalog-importer.php:722
    200202msgid "Settings saved"
    201203msgstr "Настройки сохранены"
    202204
    203 #: oasiscatalog-importer.php:742
    204 #: oasiscatalog-importer.php:871
     205#: oasiscatalog-importer.php:744
     206#: oasiscatalog-importer.php:877
    205207msgid "Loading..."
    206208msgstr "Загрузка..."
    207209
    208 #: oasiscatalog-importer.php:741
     210#: oasiscatalog-importer.php:743
    209211msgid "General processing status"
    210212msgstr "Общий статус обработки"
    … …  
    223225msgstr "Обновление остатков 1 раз в 2 часа"
    224226
    225 #: oasiscatalog-importer.php:799
     227#: oasiscatalog-importer.php:801
    226228msgid "Save settings"
    227229msgstr "Сохранить настройки"
    228230
    229 #: oasiscatalog-importer.php:813
     231#: oasiscatalog-importer.php:815
    230232msgid "Clear"
    231233msgstr "Очистить"
    232234
    233 #: oasiscatalog-importer.php:814
     235#: oasiscatalog-importer.php:816
    234236msgid "Select"
    235237msgstr "Выбрать"
    236238
    237 #: oasiscatalog-importer.php:847
     239#: oasiscatalog-importer.php:849
    238240msgid "Settings"
    239241msgstr "Настройки"
    240242
    241 #: src/order.php:20
    242 #: src/order.php:54
    243 #: src/order.php:58
     243#: src/order.php:23
     244#: src/order.php:55
     245#: src/order.php:59
    244246msgid "Unload"
    245247msgstr "Выгрузить"
    246248
    247 #: src/order.php:38
     249#: src/order.php:42
    248250msgid "Invalid items in the order"
    249251msgstr "В заказе недопустимые товары"
    250252
    251 #: src/order.php:52
     253#: src/order.php:53
    252254msgid "The order is being processed, please wait."
    253255msgstr "Заказ обрабатывается, ожидайте."
    254256
    255 #: src/order.php:54
     257#: src/order.php:55
    256258msgid "Error, please try again."
    257259msgstr "Ошибка, попробуйте еще раз."
    … …  
    320322
    321323#: oasiscatalog-importer.php:387
    322 #: oasiscatalog-importer.php:908
     324#: oasiscatalog-importer.php:923
    323325msgid "Collapse all"
    324326msgstr "Свернуть все"
    325327
    326328#: oasiscatalog-importer.php:388
    327 #: oasiscatalog-importer.php:909
     329#: oasiscatalog-importer.php:924
    328330msgid "Expand all"
    329331msgstr "Развернуть все"
    330332
    331333#. translators: status bar is process. 1: current step, 2: all steps
    332 #: oasiscatalog-importer.php:766
    333 #: oasiscatalog-importer.php:862
     334#: oasiscatalog-importer.php:768
     335#: oasiscatalog-importer.php:868
    334336msgid "%1$s step in progress out of %2$s. Current step status"
    335337msgstr "Выполняется %1$s шаг из %2$s. Статус текущего шага"
    336338
    337339#. translators: status bar, next step. 1: next step, 2: all steps
    338 #: oasiscatalog-importer.php:769
    339 #: oasiscatalog-importer.php:865
     340#: oasiscatalog-importer.php:771
     341#: oasiscatalog-importer.php:871
    340342msgid "Next step %1$s of %2$s."
    341343msgstr "Следующий шаг %1$s из %2$s."
    342344
    343345#. translators: date last import. 1: date
    344 #: oasiscatalog-importer.php:789
     346#: oasiscatalog-importer.php:791
    345347msgid "Last import completed: %1$s"
    346348msgstr "Последний импорт завершен: %1$s"
  • oasiscatalog-importer/trunk/oasiscatalog-importer.php

    r3549371 r3573270  
    44Plugin URI: https://www.oasiscatalog.com
    55Description: Import products from the oasiscatalog.com catalog to WooCommerce. Upload orders from WooCommerce to oasiscatalog. Application editing widget.
    6 Version: 3.0.3
     6Version: 3.0.4
    77Text Domain: oasiscatalog-importer
    88License: GPL2
    … …  
    853853
    854854add_action('wp_ajax_oasis_get_progress_bar', function() {
     855        if (!current_user_can('manage_options')) {
     856                return;
     857        }
     858
    855859        $cf = OasisConfig::instance([
    856860                'init' => true
    … …  
    881885
    882886add_action('wp_ajax_oasis_import_run', function() {
     887        if (!current_user_can('manage_options')) {
     888                return;
     889        }
    883890        wp_schedule_single_event(time(), 'oasis_import_schedule', ['run']);
    884891        wp_die();
    885892});
    886893add_action('wp_ajax_oasis_import_up', function() {
     894        if (!current_user_can('manage_options')) {
     895                return;
     896        }
    887897    wp_schedule_single_event(time(), 'oasis_import_schedule', ['up']);
    888898        wp_die();
    … …  
    890900
    891901add_action('wp_ajax_oasis_get_all_categories', function() {
     902        if (!current_user_can('manage_options')) {
     903                return;
     904        }
    892905        $categories = get_categories( [
    893906                'taxonomy'   => 'product_cat',
  • oasiscatalog-importer/trunk/readme.txt

    r3549371 r3573270  
    7272== Changelog ==
    7373
     74= 3.0.4 - 2026-06-15 =
     75- fix branding
     76- fix update price
     77
    7478= 3.0.3 - 2026-05-26 =
    7579- 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  
    186186        public static function curlSend(string $type, array $data, array $params = [], $version = 'v4')
    187187        {
    188                 if (empty(self::$cf->api_key)){
     188                $apiKey = self::$cf->api_key ?? OasisConfig::get('api_key');
     189                if (empty($apiKey)){
    189190                        throw new Exception('Empty API key');
    190191                }
    191192                $args_pref = [
    192                         'key'    => self::$cf->api_key,
     193                        'key'    => $apiKey,
    193194                        'format' => 'json',
    194195                ];
    … …  
    231232        public static function curlQuery($type, array $args = [], string $version = 'v4')
    232233        {
    233                 if (empty(self::$cf->api_key)){
     234                $apiKey = self::$cf->api_key ?? OasisConfig::get('api_key');
     235                if (empty($apiKey)){
    234236                        throw new Exception('Empty API key');
    235237                }
    236238                $args = array_merge([
    237                         'key'    => self::$cf->api_key,
     239                        'key'    => $apiKey,
    238240                        'format' => 'json',
    239241                ], $args);
  • oasiscatalog-importer/trunk/src/lib/Config.php

    r3549371 r3573270  
    88
    99class Config {
    10         public const VERSION = '3.0.2';
     10        public const VERSION = '3.0.4';
    1111
    1212        public const IMG_SIZE_THUMBNAIL = [80, 60];
    … …  
    504504                rmdir($dir);
    505505        }
     506
     507        public static function get($key) {
     508                $options = get_option('oasis_import_options', []);
     509                return $options[$key] ?? null;
     510        }
    506511}
  • oasiscatalog-importer/trunk/src/lib/Main.php

    r3549371 r3573270  
    246246                if (!$is_variable) {
    247247                        $dataPrice = self::getDataPrice($product);
    248                         $up_data += [
     248                        $up_data = array_merge($up_data, [
    249249                                ['price', $dataPrice['price']],
    250250                                ['regular_price', $dataPrice['regular_price']],
    251251                                ['sale_price', $dataPrice['sale_price']],
    252                         ];
     252                        ]);
    253253                }
    254254
  • oasiscatalog-importer/trunk/src/order.php

    r3423727 r3573270  
    88use OasiscatalogImporter\Config as OasisConfig;
    99
    10 add_action( 'init', 'oasis_import_order_init' );
     10add_action('init', 'oasis_import_order_init');
    1111
    1212function 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) {
    1465                $IS_HPOS = get_option('woocommerce_custom_orders_table_enabled') === 'yes';
    1566
    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                }
    2471
    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        }
    2776
    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');
    3281
    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);
    3688
    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                                        ];
    5997                                }
    6098                        }
    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();
    115107                                }
    116108                        }
    117                         wp_die();
     109                        catch (\Throwable $e) {}
    118110                }
     111                wp_die();
    119112        }
    120113}
Note: See TracChangeset for help on using the changeset viewer.