Plugin Directory

Changeset 3465024


Ignore:
Timestamp:
02/19/2026 11:06:59 AM (5 weeks ago)
Author:
arture
Message:

Version 4.2.7

Location:
storecontrl-wp-connection/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • storecontrl-wp-connection/trunk/includes/admin/class-storecontrl-wp-connection-admin.php

    r3442556 r3465024  
    196196        add_settings_field('storecontrl_pro_settings', '',  array( $this, 'display_storecontrl_pro_settings_element' ), 'storecontrl_import_options', 'import_section');
    197197        add_settings_field('storecontrl_link_barcode_to_field', __('Link barcode to field(s)', 'storecontrl-wp-connection-plugin'),  array( $this, 'display_storecontrl_link_barcode_to_field_element' ), 'storecontrl_import_options', 'import_section');
     198        add_settings_field('storecontrl_variation_alias', __('Variation Alias', 'storecontrl-wp-connection-plugin'),  array( $this, 'display_storecontrl_disable_variation_alias_element' ), 'storecontrl_import_options', 'import_section');
    198199        add_settings_field('storecontrl_use_tags', 'Gebruik SC tags als extra hoofdcategorie',  array( $this, 'display_storecontrl_use_tags_element' ), 'storecontrl_import_options', 'import_section');
    199200        add_settings_field('storecontrl_tags_categories', '* lijst met tags',  array( $this, 'display_storecontrl_tags_categories_element' ), 'storecontrl_import_options', 'import_section');
     
    279280        register_setting('storecontrl_import_options', 'storecontrl_set_barcode_as_sku');
    280281        register_setting('storecontrl_import_options', 'storecontrl_link_barcode_to_field');
    281         register_setting('storecontrl_import_options', 'storecontrl_use_variation_alias');
     282        register_setting('storecontrl_import_options', 'storecontrl_disable_variation_alias');
    282283        register_setting('storecontrl_import_options', 'storecontrl_use_tags');
    283284        register_setting('storecontrl_import_options', 'storecontrl_tags_categories');
     
    772773
    773774    /* disabled for now */
    774     public function display_storecontrl_use_variation_alias_element(){
    775         ?>
    776         <label class="checkbox-inline">
    777             <input name="storecontrl_use_variation_alias" id="storecontrl_use_variation_alias" value="1" <?php checked( '1', get_option( 'storecontrl_use_variation_alias' ) ); ?> data-toggle="toggle" data-on="Ja" data-off="Nee" data-onstyle="success" type="checkbox"> Ja / Nee
    778         </label>
    779         <div class="info"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span><?php echo __('When enabled; variation aliases will be used. Default no.', 'storecontrl-wp-connection-plugin'); ?></div>
     775    public function display_storecontrl_disable_variation_alias_element(){
     776        ?>
     777        <label class="checkbox-inline">
     778            <input name="storecontrl_disable_variation_alias" id="storecontrl_disable_variation_alias" value="1" <?php checked( '1', get_option( 'storecontrl_disable_variation_alias' ) ); ?> data-toggle="toggle" data-on="Ja" data-off="Nee" data-onstyle="success" type="checkbox"> Ja / Nee
     779        </label>
     780        <div class="info"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span><?php echo __('When enabled; variation alias won\'t be used and we process the default size value', 'storecontrl-wp-connection-plugin'); ?></div>
    780781        <?php
    781782    }
  • storecontrl-wp-connection/trunk/includes/admin/js/storecontrl-admin.js

    r3435411 r3465024  
    4242            };
    4343            jQuery.post(ajaxurl, data, function (response) {
    44                 $('#storecontrl_synchronize_product').html('Processing...');
    45             });
     44
     45                // reset UI
     46                $('#storecontrl_synchronize_product').find('.loading').hide();
     47                $('#storecontrl_synchronize_product').html('Synchronize');
     48
     49                // Notice injecteren
     50                if (response && response.data && response.data.notice_html) {
     51                    // Woo admin notices staan meestal net onder h1 of bovenaan .wrap
     52                    $('.wrap > h1').first().after(response.data.notice_html);
     53                }
     54            }, 'json');
     55
    4656        }
    4757    });
  • storecontrl-wp-connection/trunk/includes/api/class-storecontrl-web-api-functions.php

    r3435950 r3465024  
    303303    public function storecontrl_update_wc_product($product, $full_sync = false)
    304304    {
    305         // DEBUG
    306         $start = microtime(true);
    307305        $logging = $this->logging;
    308306
     
    13451343
    13461344                        $variation_member_name = str_replace('?', '', $variation_member['variation_member_name']);
    1347                         if( isset($variation_member['alias_name']) && !empty(trim($variation_member['alias_name'])) ){
     1345
     1346                        $storecontrl_disable_variation_alias = get_option('storecontrl_disable_variation_alias');
     1347                        if( empty($storecontrl_disable_variation_alias) && isset($variation_member['alias_name']) && !empty(trim($variation_member['alias_name']))) {
    13481348                            $variation_member_name = $variation_member['alias_name'];
    13491349                        }
     
    13511351                        if ($attribute == 'size') {
    13521352                            $values['Size'][] = $variation_member_name;
    1353                         } else {
     1353                        }
     1354                        else {
    13541355                            $values[$variation_member['variation_name']][] = $variation_member_name;
    13551356                        }
     
    14961497                $variation_member['alias_name'] = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $variation_member['alias_name']);
    14971498                $variation_member['alias_name'] = trim($variation_member['alias_name']);
    1498                 if( isset($variation_member['alias_name']) && !empty($variation_member['alias_name']) ){
     1499
     1500                $storecontrl_disable_variation_alias = get_option('storecontrl_disable_variation_alias');
     1501                if( empty($storecontrl_disable_variation_alias) && isset($variation_member['alias_name']) && !empty($variation_member['alias_name']) ){
    14991502                    $variation_member['alias_name'] = str_replace('?', '', $variation_member['alias_name']);
    15001503                    $variation_member_name = $variation_member['alias_name'];
  • storecontrl-wp-connection/trunk/includes/api/class-storecontrl-web-api.php

    r3442556 r3465024  
    177177            curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
    178178
     179            // Indien port 1443 dicht staat max 10 seconden proberen
     180            if( str_contains($api_url, 'GetCustomertypes') || str_contains($api_url, 'GetShippingMethods') || str_contains($api_url, 'GetPaymentMethods') || str_contains($api_url, 'GetStores') ){
     181                curl_setopt($curl, CURLOPT_TIMEOUT, 5);
     182            }
     183
    179184            curl_setopt( $curl, CURLOPT_HTTPHEADER, $headers );
    180185            $curl_response = curl_exec($curl);
  • storecontrl-wp-connection/trunk/includes/cronjob/class-storecontrl-cronjob-functions.php

    r3435950 r3465024  
    210210    public function storecontrl_synchronize_product( $sc_product_id = '' )
    211211    {
    212 
    213212        // Upload directory
    214213        $upload = wp_upload_dir();
     
    216215        $new_upload_dir = $upload_dir . '/storecontrl/imports';
    217216
    218         if( isset($_POST['sc_product_id']) && !empty($_POST['sc_product_id']) || !empty($sc_product_id) ) {
    219 
    220             if( isset($_POST['sc_product_id']) && !empty($_POST['sc_product_id']) ){
     217        if ( ( isset($_POST['sc_product_id']) && !empty($_POST['sc_product_id']) ) || !empty($sc_product_id) ) {
     218
     219            if ( isset($_POST['sc_product_id']) && !empty($_POST['sc_product_id']) ) {
    221220                $sc_product_id = $_POST['sc_product_id'];
    222221            }
    223222
    224             $this->logging->log_file_write( 'Manual | Manual triggered synchronisation for product: ' .$sc_product_id);
     223            $this->logging->log_file_write('Manual | Manual triggered synchronisation for product: ' . $sc_product_id);
    225224
    226225            $web_api = new StoreContrl_Web_Api();
    227             $output = array();
    228             $product = $web_api->curl_request("/Product/GetProductInfo/" . $sc_product_id . "?sendEan=true", 'GET');
    229 
    230             $output[$product['product_id']] = $product;
    231 
     226            $output  = array();
     227
     228            $product_response = $web_api->curl_request("/Product/GetProductInfo/" . $sc_product_id . "?sendEan=true", 'GET');
     229
     230            // ✅ API response is een array met 1 item
     231            $product = (is_array($product_response) && isset($product_response[0]) && is_array($product_response[0]))
     232                ? $product_response[0]
     233                : array();
     234
     235            // ✅ CHECK: product_name null/empty of product_id == 0 => stop, geen file_put_contents
     236            $product_name = $product['product_name'] ?? null;
     237            $product_id   = (int) ($product['product_id'] ?? 0);
     238
     239            if ( empty($product_name) || $product_id === 0 ) {
     240                $this->logging->log_file_write('Manual | Product not found/not linked for sc_product_id: ' . $sc_product_id);
     241
     242                if( isset($_POST['sc_product_id'] ) ){
     243                    wp_send_json_error([
     244                        'notice_html' => '<div class="notice notice-error is-dismissible"><p>'
     245                            . esc_html__('Product niet gevonden of gekoppeld aan de webshop. Je kan het product handmatig verwijderen naar de prullenbak', 'storecontrl')
     246                            . '</p></div>'
     247                    ]);
     248                }
     249            }
     250
     251            // vanaf hier is product OK
     252            $output[$product_id] = $product;
     253
     254            // let op: sku_list lijkt niet in jouw voorbeeld te zitten, dus check eerst
    232255            $api_functions = new StoreContrl_Web_Api_Functions();
    233             $response = $api_functions->set_product_variations_data($product['sku_list']);
    234             if( isset($response['variations']) ){
    235                 $output[$product['product_id']]['variations'] = $response['variations'];
    236             }
    237             if( isset($response['product_atributes']) ){
    238                 $output[$product['product_id']]['product_atributes'] = $response['product_atributes'];
    239             }
    240             unset($output[$product['product_id']]['sku_list']);
    241 
    242             file_put_contents($new_upload_dir . '/'.time().'_products_batch_' . $sc_product_id . '.json', json_encode($output));
     256            $response = array();
     257
     258            if ( !empty($product['sku_list']) && is_array($product['sku_list']) ) {
     259                $response = $api_functions->set_product_variations_data($product['sku_list']);
     260            }
     261
     262            if ( isset($response['variations']) ) {
     263                $output[$product_id]['variations'] = $response['variations'];
     264            }
     265            if ( isset($response['product_atributes']) ) {
     266                $output[$product_id]['product_atributes'] = $response['product_atributes'];
     267            }
     268
     269            unset($output[$product_id]['sku_list']);
     270
     271            file_put_contents(
     272                $new_upload_dir . '/' . time() . '_products_batch_' . $sc_product_id . '.json',
     273                json_encode($output)
     274            );
     275
     276            if( isset($_POST['sc_product_id'] ) ) {
     277                wp_send_json_success([
     278                    'notice_html' => '<div class="notice notice-success is-dismissible"><p>'
     279                        . esc_html__('Product synchronisatie gestart.', 'storecontrl')
     280                        . '</p></div>'
     281                ]);
     282            }
    243283        }
    244284    }
  • storecontrl-wp-connection/trunk/readme.txt

    r3442556 r3465024  
    55Requires at least: 6.6.0
    66Tested up to: 6.8.3
    7 Stable tag: 4.2.6
     7Stable tag: 4.2.7
    88Requires PHP: 8.0
    99License: GPLv2 or later
     
    9393== Changelog ==
    9494
     95= 4.2.7 =
     96* Verbeterde melding en afhandeling bij het handmatig synchroniseren van een product
     97* Instelling voor het uitschakelen van de variatie ALIAS naam als eigenschap waarde
     98
    9599= 4.2.6 =
    96100* Nieuwe versie voor de spaarpunten add-on
  • storecontrl-wp-connection/trunk/storecontrl-wp-connection.php

    r3442556 r3465024  
    44Plugin URI:  http://www.arture.nl/storecontrl
    55Description: The Wordpress plugin for connecting Woocommerce with StoreContrl Cloud. With the synchronizing cronjobs your products will be automatically processed, images added, and the categories set. Every 5 minutes all stock changes are processed. We provide a up-to-date plugin, easy setup and always the best support.
    6 Version:     4.2.6
     6Version:     4.2.7
    77Requires Plugins: woocommerce
    88Author:      Arture
Note: See TracChangeset for help on using the changeset viewer.