Changeset 3465024
- Timestamp:
- 02/19/2026 11:06:59 AM (5 weeks ago)
- Location:
- storecontrl-wp-connection/trunk
- Files:
-
- 7 edited
-
includes/admin/class-storecontrl-wp-connection-admin.php (modified) (3 diffs)
-
includes/admin/js/storecontrl-admin.js (modified) (1 diff)
-
includes/api/class-storecontrl-web-api-functions.php (modified) (4 diffs)
-
includes/api/class-storecontrl-web-api.php (modified) (1 diff)
-
includes/cronjob/class-storecontrl-cronjob-functions.php (modified) (2 diffs)
-
readme.txt (modified) (2 diffs)
-
storecontrl-wp-connection.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
storecontrl-wp-connection/trunk/includes/admin/class-storecontrl-wp-connection-admin.php
r3442556 r3465024 196 196 add_settings_field('storecontrl_pro_settings', '', array( $this, 'display_storecontrl_pro_settings_element' ), 'storecontrl_import_options', 'import_section'); 197 197 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'); 198 199 add_settings_field('storecontrl_use_tags', 'Gebruik SC tags als extra hoofdcategorie', array( $this, 'display_storecontrl_use_tags_element' ), 'storecontrl_import_options', 'import_section'); 199 200 add_settings_field('storecontrl_tags_categories', '* lijst met tags', array( $this, 'display_storecontrl_tags_categories_element' ), 'storecontrl_import_options', 'import_section'); … … 279 280 register_setting('storecontrl_import_options', 'storecontrl_set_barcode_as_sku'); 280 281 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'); 282 283 register_setting('storecontrl_import_options', 'storecontrl_use_tags'); 283 284 register_setting('storecontrl_import_options', 'storecontrl_tags_categories'); … … 772 773 773 774 /* 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 / Nee778 </label> 779 <div class="info"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span><?php echo __('When enabled; variation alias es 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> 780 781 <?php 781 782 } -
storecontrl-wp-connection/trunk/includes/admin/js/storecontrl-admin.js
r3435411 r3465024 42 42 }; 43 43 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 46 56 } 47 57 }); -
storecontrl-wp-connection/trunk/includes/api/class-storecontrl-web-api-functions.php
r3435950 r3465024 303 303 public function storecontrl_update_wc_product($product, $full_sync = false) 304 304 { 305 // DEBUG306 $start = microtime(true);307 305 $logging = $this->logging; 308 306 … … 1345 1343 1346 1344 $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']))) { 1348 1348 $variation_member_name = $variation_member['alias_name']; 1349 1349 } … … 1351 1351 if ($attribute == 'size') { 1352 1352 $values['Size'][] = $variation_member_name; 1353 } else { 1353 } 1354 else { 1354 1355 $values[$variation_member['variation_name']][] = $variation_member_name; 1355 1356 } … … 1496 1497 $variation_member['alias_name'] = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $variation_member['alias_name']); 1497 1498 $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']) ){ 1499 1502 $variation_member['alias_name'] = str_replace('?', '', $variation_member['alias_name']); 1500 1503 $variation_member_name = $variation_member['alias_name']; -
storecontrl-wp-connection/trunk/includes/api/class-storecontrl-web-api.php
r3442556 r3465024 177 177 curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ); 178 178 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 179 184 curl_setopt( $curl, CURLOPT_HTTPHEADER, $headers ); 180 185 $curl_response = curl_exec($curl); -
storecontrl-wp-connection/trunk/includes/cronjob/class-storecontrl-cronjob-functions.php
r3435950 r3465024 210 210 public function storecontrl_synchronize_product( $sc_product_id = '' ) 211 211 { 212 213 212 // Upload directory 214 213 $upload = wp_upload_dir(); … … 216 215 $new_upload_dir = $upload_dir . '/storecontrl/imports'; 217 216 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']) ) { 221 220 $sc_product_id = $_POST['sc_product_id']; 222 221 } 223 222 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); 225 224 226 225 $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 232 255 $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 } 243 283 } 244 284 } -
storecontrl-wp-connection/trunk/readme.txt
r3442556 r3465024 5 5 Requires at least: 6.6.0 6 6 Tested up to: 6.8.3 7 Stable tag: 4.2. 67 Stable tag: 4.2.7 8 8 Requires PHP: 8.0 9 9 License: GPLv2 or later … … 93 93 == Changelog == 94 94 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 95 99 = 4.2.6 = 96 100 * Nieuwe versie voor de spaarpunten add-on -
storecontrl-wp-connection/trunk/storecontrl-wp-connection.php
r3442556 r3465024 4 4 Plugin URI: http://www.arture.nl/storecontrl 5 5 Description: 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. 66 Version: 4.2.7 7 7 Requires Plugins: woocommerce 8 8 Author: Arture
Note: See TracChangeset
for help on using the changeset viewer.