WP eCommerce - Version 3.8.8.1

Version Description

  • Fix: CSV import not working in 3.8.8.
  • Fix: Category page display setting does not override default Presentation settings.
  • Fix: Clicking All/None in Category target market settings doesn't work.
  • Fix: Non-SSL stylesheet is loaded even when force SSL for checkout page is on.
  • Fix: PHP Warning and Notice in sales log page.
  • Fix: PayPal currency converter is wrong.
  • Fix: Sales logs are not displayed for some installations.
  • Fix: Sales logs page sometimes display empty customers' names.
  • Fix: Saving payment gateway settings erase Shipping settings.
  • Fix: Sometimes clicking Save doesn't save tracking ID on sales log page.
Download this release

Release Info

Developer garyc40
Plugin Icon 128x128 WP eCommerce
Version 3.8.8.1
Comparing to
See all releases

Code changes from version 3.8.8 to 3.8.8.1

readme.txt CHANGED
@@ -3,14 +3,14 @@ Contributors: mufasa, jghazally, valentinas, mychelle, garyc40, justinsainton
3
  Donate link: http://getshopped.org
4
  Tags: e-commerce, wp-e-commerce, shop, cart, paypal, authorize, stock control, ecommerce, shipping, tax
5
  Requires at least: 3.1
6
- Tested up to: 3.3.1
7
- Stable tag: 3.8.8
8
 
9
  WP e-Commerce is a free WordPress Shopping Cart Plugin that lets customers buy your products, services and digital downloads online.
10
 
11
  == Description ==
12
 
13
- We make setting up an ecommerce shop easy, and with over 1.5 Million downloads, we have unparalleled experience.
14
 
15
  Features:
16
 
@@ -156,6 +156,18 @@ After upgrading from earlier versions look for link "Update Store". This will up
156
 
157
 
158
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
159
  = 3.8.8 =
160
  * New: 3 action hooks to process PayPal IPN responses: wpsc_paypal_pro_ipn, wpsc_paypal_standard_ipn and wpsc_paypal_express_ipn.
161
  * New: Actions for bulk actions on sales page: wpsc_sales_log_process_bulk_action, wpsc_sales_log_extra_tablenav
3
  Donate link: http://getshopped.org
4
  Tags: e-commerce, wp-e-commerce, shop, cart, paypal, authorize, stock control, ecommerce, shipping, tax
5
  Requires at least: 3.1
6
+ Tested up to: 3.3.2
7
+ Stable tag: 3.8.8.1
8
 
9
  WP e-Commerce is a free WordPress Shopping Cart Plugin that lets customers buy your products, services and digital downloads online.
10
 
11
  == Description ==
12
 
13
+ We make setting up an ecommerce shop easy, and with over 1.8 Million downloads, we have unparalleled experience.
14
 
15
  Features:
16
 
156
 
157
 
158
  == Changelog ==
159
+ = 3.8.8.1 =
160
+ * Fix: CSV import not working in 3.8.8.
161
+ * Fix: Category page display setting does not override default Presentation settings.
162
+ * Fix: Clicking All/None in Category target market settings doesn't work.
163
+ * Fix: Non-SSL stylesheet is loaded even when force SSL for checkout page is on.
164
+ * Fix: PHP Warning and Notice in sales log page.
165
+ * Fix: PayPal currency converter is wrong.
166
+ * Fix: Sales logs are not displayed for some installations.
167
+ * Fix: Sales logs page sometimes display empty customers' names.
168
+ * Fix: Saving payment gateway settings erase Shipping settings.
169
+ * Fix: Sometimes clicking Save doesn't save tracking ID on sales log page.
170
+
171
  = 3.8.8 =
172
  * New: 3 action hooks to process PayPal IPN responses: wpsc_paypal_pro_ipn, wpsc_paypal_standard_ipn and wpsc_paypal_express_ipn.
173
  * New: Actions for bulk actions on sales page: wpsc_sales_log_process_bulk_action, wpsc_sales_log_extra_tablenav
wp-shopping-cart.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: WP e-Commerce
4
  * Plugin URI: http://getshopped.org/
5
  * Description: A plugin that provides a WordPress Shopping Cart. See also: <a href="http://getshopped.org" target="_blank">GetShopped.org</a> | <a href="http://getshopped.org/forums/" target="_blank">Support Forum</a> | <a href="http://docs.getshopped.org/" target="_blank">Documentation</a>
6
- * Version: 3.8.8
7
  * Author: Instinct Entertainment
8
  * Author URI: http://getshopped.org/
9
  **/
3
  * Plugin Name: WP e-Commerce
4
  * Plugin URI: http://getshopped.org/
5
  * Description: A plugin that provides a WordPress Shopping Cart. See also: <a href="http://getshopped.org" target="_blank">GetShopped.org</a> | <a href="http://getshopped.org/forums/" target="_blank">Support Forum</a> | <a href="http://docs.getshopped.org/" target="_blank">Documentation</a>
6
+ * Version: 3.8.8.1
7
  * Author: Instinct Entertainment
8
  * Author URI: http://getshopped.org/
9
  **/
wpsc-admin/includes/product-functions.php CHANGED
@@ -272,31 +272,18 @@ function wpsc_sanitise_product_forms($post_data = null) {
272
  $post_data = &$_POST;
273
  }
274
 
275
- $product = get_post(absint($post_data['post_ID']));
276
-
277
  $post_data['name'] = isset($post_data['post_title']) ? $post_data['post_title'] : '';
278
  $post_data['title'] = $post_data['name'];
279
  $post_data['description'] = isset($post_data['content']) ? $post_data['content'] : '';
280
  $post_data['additional_description'] = isset($post_data['additional_description']) ? $post_data['additional_description'] : '';
 
281
 
282
- if($product != null) {
283
- $post_data['post_status'] = $product->post_status;
284
- } else {
285
- $post_data['post_status'] = 'draft';
286
- }
287
-
288
- if(isset($post_data['save']) && $product->post_status == 'inherit' && ( $product->post_parent == 0 || $product->post_parent == $product->ID ) ) {
289
- $post_data['post_status'] = 'draft';
290
- } else if(isset($post_data['publish'])) {
291
  $post_data['post_status'] = 'publish';
292
  } else if(isset($post_data['unpublish'])) {
293
  $post_data['post_status'] = 'draft';
294
  }
295
 
296
-
297
-
298
- $post_meta['meta'] = (array)$_POST['meta'];
299
-
300
  $post_data['meta']['_wpsc_price'] = (float)str_replace( ',','',$post_data['meta']['_wpsc_price'] );
301
  $post_data['meta']['_wpsc_special_price'] = (float)str_replace( ',','',$post_data['meta']['_wpsc_special_price'] );
302
  $post_data['meta']['_wpsc_sku'] = $post_data['meta']['_wpsc_sku'];
@@ -327,38 +314,6 @@ function wpsc_sanitise_product_forms($post_data = null) {
327
  $post_data['meta']['_wpsc_product_metadata']['weight'] = (float)$weight;
328
  $post_data['meta']['_wpsc_product_metadata']['display_weight_as'] = $post_data['meta']['_wpsc_product_metadata']['weight_unit'];
329
 
330
- // table rate price
331
- $post_data['meta']['_wpsc_product_metadata']['table_rate_price'] = $post_data['table_rate_price'];
332
- // if table_rate_price is unticked, wipe the table rate prices
333
- if(!isset($post_data['table_rate_price']['state'])) $post_data['table_rate_price']['state'] = '';
334
- if($post_data['table_rate_price']['state'] != 1) {
335
- $post_data['meta']['_wpsc_product_metadata']['table_rate_price']['quantity'] = null;
336
- $post_data['meta']['_wpsc_product_metadata']['table_rate_price']['table_price'] = null;
337
- }
338
- foreach((array)$post_data['meta']['_wpsc_product_metadata']['table_rate_price']['table_price'] as $key => $value){
339
- if(empty($value)){
340
- unset($post_data['meta']['_wpsc_product_metadata']['table_rate_price']['table_price'][$key]);
341
- unset($post_data['meta']['_wpsc_product_metadata']['table_rate_price']['quantity'][$key]);
342
- }
343
- }
344
-
345
-
346
- $post_data['meta']['_wpsc_product_metadata']['shipping']['local'] = (float)$post_data['meta']['_wpsc_product_metadata']['shipping']['local'];
347
- $post_data['meta']['_wpsc_product_metadata']['shipping']['international'] = (float)$post_data['meta']['_wpsc_product_metadata']['shipping']['international'];
348
-
349
-
350
- // Advanced Options
351
- $post_data['meta']['_wpsc_product_metadata']['engraved'] = (int)(bool)$post_data['meta']['_wpsc_product_metadata']['engraved'];
352
- $post_data['meta']['_wpsc_product_metadata']['can_have_uploaded_image'] = (int)(bool)$post_data['meta']['_wpsc_product_metadata']['can_have_uploaded_image'];
353
- if(!isset($post_data['meta']['_wpsc_product_metadata']['google_prohibited'])) $post_data['meta']['_wpsc_product_metadata']['google_prohibited'] = '';
354
- $post_data['meta']['_wpsc_product_metadata']['google_prohibited'] = (int)(bool)$post_data['meta']['_wpsc_product_metadata']['google_prohibited'];
355
- $post_data['meta']['_wpsc_product_metadata']['external_link'] = (string)$post_data['meta']['_wpsc_product_metadata']['external_link'];
356
- $post_data['meta']['_wpsc_product_metadata']['external_link_text'] = (string)$post_data['meta']['_wpsc_product_metadata']['external_link_text'];
357
- $post_data['meta']['_wpsc_product_metadata']['external_link_target'] = (string)$post_data['meta']['_wpsc_product_metadata']['external_link_target'];
358
-
359
- $post_data['meta']['_wpsc_product_metadata']['enable_comments'] = $post_data['meta']['_wpsc_product_metadata']['enable_comments'];
360
- $post_data['meta']['_wpsc_product_metadata']['merchant_notes'] = $post_data['meta']['_wpsc_product_metadata']['merchant_notes'];
361
-
362
  $post_data['files'] = $_FILES;
363
  return $post_data;
364
  }
@@ -373,13 +328,6 @@ function wpsc_insert_product($post_data, $wpsc_error = false) {
373
  global $wpdb, $user_ID;
374
  $adding = false;
375
  $update = false;
376
- if((int)$post_data['post_ID'] > 0) {
377
- $product_id = absint($post_data['post_ID']);
378
- $update = true;
379
- } else if((int)$post_data['product_id'] > 0) {
380
- $product_id = absint($post_data['product_id']);
381
- $update = true;
382
- }
383
 
384
  $product_columns = array(
385
  'name' => '',
@@ -419,7 +367,6 @@ function wpsc_insert_product($post_data, $wpsc_error = false) {
419
  }
420
 
421
  $product_post_values = array(
422
- 'ID' => $product_id,
423
  'post_author' => $user_ID,
424
  'post_content' => $post_data['description'],
425
  'post_excerpt' => $post_data['additional_description'],
@@ -428,11 +375,7 @@ function wpsc_insert_product($post_data, $wpsc_error = false) {
428
  'post_type' => "wpsc-product",
429
  'post_name' => sanitize_title($post_data['name'])
430
  );
431
- if ($post_data['meta']['_wpsc_product_metadata']['enable_comments'] == 0) {
432
- $product_post_values["comment_status"] = "closed";
433
- }else {
434
- $product_post_values["comment_status"] = "open";
435
- }
436
 
437
  if(isset($sku) && ($sku != '')) {
438
  $product_post_array['guid'] = $sku;
@@ -440,66 +383,26 @@ function wpsc_insert_product($post_data, $wpsc_error = false) {
440
 
441
 
442
 
443
- if($update === true) {
444
- $where = array( 'id' => $product_id );
445
- $product_id = wp_update_post($product_post_values);
446
- if ( isset ( $post_data["sticky"] ) ) {
447
- stick_post($product_id);
448
- }else {
449
- unstick_post($product_id);
450
- }
451
- if ($product_id == 0) {
452
- if ( $wpsc_error ) {
453
- return new WP_Error('db_update_error', __( 'Could not update product in the database', 'wpsc' ), $wpdb->last_error);
454
- } else {
455
- return false;
456
- }
457
- }
458
- } else {
459
- $product_post_values += array(
460
- 'post_date' => $product['date_added']
461
- );
462
- $product_id = wp_insert_post($product_post_values);
463
- if ( isset ( $post_data["sticky"] ) ) {
464
- stick_post($product_id);
465
- }else {
466
- unstick_post($product_id);
467
- }
468
- if ($product_id == 0 ) {
469
- if ( $wp_error ) {
470
- return new WP_Error('db_insert_error', __( 'Could not insert product into the database', 'wpsc' ), $wpdb->last_error);
471
- } else {
472
- return 0;
473
- }
474
  }
475
- $adding = true;
476
- }
477
 
478
  // if we succeed, we can do further editing
479
 
480
  // and the meta
481
  wpsc_update_product_meta($product_id, $post_data['meta']);
482
-
483
- // and the custom meta
484
- wpsc_update_custom_meta($product_id, $post_data);
485
-
486
- //and the alt currency
487
- foreach((array)$post_data['newCurrency'] as $key =>$value){
488
- wpsc_update_alt_product_currency($product_id, $value, $post_data['newCurrPrice'][$key]);
489
- }
490
-
491
- if($post_data['files']['file']['tmp_name'] != '') {
492
- wpsc_item_process_file($product_id, $post_data['files']['file']);
493
- } else {
494
- if (!isset($post_data['select_product_file'])) $post_data['select_product_file'] = null;
495
- wpsc_item_reassign_file($product_id, $post_data['select_product_file']);
496
- }
497
-
498
- if(isset($post_data['files']['preview_file']['tmp_name']) && ($post_data['files']['preview_file']['tmp_name'] != '')) {
499
- wpsc_item_add_preview_file($product_id, $post_data['files']['preview_file']);
500
- }
501
  do_action('wpsc_edit_product', $product_id);
502
- wpsc_ping();
503
  return $product_id;
504
  }
505
 
@@ -615,12 +518,12 @@ function wpsc_determine_variation_price( $variation_id, $term_ids = false ) {
615
  */
616
  function wpsc_edit_product_variations($product_id, $post_data) {
617
  global $user_ID;
618
-
619
  $parent = get_post_field( 'post_parent', $product_id );
620
-
621
  if( ! empty( $parent ) )
622
  return;
623
-
624
  $variations = array();
625
  $product_children = array();
626
  if (!isset($post_data['edit_var_val']))
@@ -789,7 +692,7 @@ function wpsc_edit_product_variations($product_id, $post_data) {
789
 
790
  function wpsc_update_alt_product_currency($product_id, $newCurrency, $newPrice){
791
  global $wpdb;
792
-
793
  $old_curr = get_product_meta($product_id, 'currency',true);
794
  $sql = $wpdb->prepare( "SELECT `isocode` FROM `".WPSC_TABLE_CURRENCY_LIST."` WHERE `id`= %d", $newCurrency );
795
  $isocode = $wpdb->get_var($sql);
272
  $post_data = &$_POST;
273
  }
274
 
 
 
275
  $post_data['name'] = isset($post_data['post_title']) ? $post_data['post_title'] : '';
276
  $post_data['title'] = $post_data['name'];
277
  $post_data['description'] = isset($post_data['content']) ? $post_data['content'] : '';
278
  $post_data['additional_description'] = isset($post_data['additional_description']) ? $post_data['additional_description'] : '';
279
+ $post_data['post_status'] = 'draft';
280
 
281
+ if(isset($post_data['publish'])) {
 
 
 
 
 
 
 
 
282
  $post_data['post_status'] = 'publish';
283
  } else if(isset($post_data['unpublish'])) {
284
  $post_data['post_status'] = 'draft';
285
  }
286
 
 
 
 
 
287
  $post_data['meta']['_wpsc_price'] = (float)str_replace( ',','',$post_data['meta']['_wpsc_price'] );
288
  $post_data['meta']['_wpsc_special_price'] = (float)str_replace( ',','',$post_data['meta']['_wpsc_special_price'] );
289
  $post_data['meta']['_wpsc_sku'] = $post_data['meta']['_wpsc_sku'];
314
  $post_data['meta']['_wpsc_product_metadata']['weight'] = (float)$weight;
315
  $post_data['meta']['_wpsc_product_metadata']['display_weight_as'] = $post_data['meta']['_wpsc_product_metadata']['weight_unit'];
316
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
317
  $post_data['files'] = $_FILES;
318
  return $post_data;
319
  }
328
  global $wpdb, $user_ID;
329
  $adding = false;
330
  $update = false;
 
 
 
 
 
 
 
331
 
332
  $product_columns = array(
333
  'name' => '',
367
  }
368
 
369
  $product_post_values = array(
 
370
  'post_author' => $user_ID,
371
  'post_content' => $post_data['description'],
372
  'post_excerpt' => $post_data['additional_description'],
375
  'post_type' => "wpsc-product",
376
  'post_name' => sanitize_title($post_data['name'])
377
  );
378
+ $product_post_values["comment_status"] = "open";
 
 
 
 
379
 
380
  if(isset($sku) && ($sku != '')) {
381
  $product_post_array['guid'] = $sku;
383
 
384
 
385
 
386
+ $product_id = wp_insert_post($product_post_values);
387
+ if ( isset ( $post_data["sticky"] ) ) {
388
+ stick_post($product_id);
389
+ }else {
390
+ unstick_post($product_id);
391
+ }
392
+ if ($product_id == 0 ) {
393
+ if ( $wp_error ) {
394
+ return new WP_Error('db_insert_error', __( 'Could not insert product into the database', 'wpsc' ), $wpdb->last_error);
395
+ } else {
396
+ return 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
397
  }
398
+ }
399
+ $adding = true;
400
 
401
  // if we succeed, we can do further editing
402
 
403
  // and the meta
404
  wpsc_update_product_meta($product_id, $post_data['meta']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
405
  do_action('wpsc_edit_product', $product_id);
 
406
  return $product_id;
407
  }
408
 
518
  */
519
  function wpsc_edit_product_variations($product_id, $post_data) {
520
  global $user_ID;
521
+
522
  $parent = get_post_field( 'post_parent', $product_id );
523
+
524
  if( ! empty( $parent ) )
525
  return;
526
+
527
  $variations = array();
528
  $product_children = array();
529
  if (!isset($post_data['edit_var_val']))
692
 
693
  function wpsc_update_alt_product_currency($product_id, $newCurrency, $newPrice){
694
  global $wpdb;
695
+
696
  $old_curr = get_product_meta($product_id, 'currency',true);
697
  $sql = $wpdb->prepare( "SELECT `isocode` FROM `".WPSC_TABLE_CURRENCY_LIST."` WHERE `id`= %d", $newCurrency );
698
  $isocode = $wpdb->get_var($sql);
wpsc-admin/includes/purchase-log-list-table-class.php CHANGED
@@ -51,7 +51,7 @@ class WPSC_Purchase_Log_List_Table extends WP_List_Table
51
  $offset = ( $page - 1 ) * $this->per_page;
52
 
53
  $checkout_fields_sql = "
54
- SELECT id, unique_name FROM " . WPSC_TABLE_CHECKOUT_FORMS . " WHERE unique_name IN ('billingfirstname', 'billinglastname', 'billingemail')
55
  ";
56
  $checkout_fields = $wpdb->get_results( $checkout_fields_sql );
57
 
@@ -75,7 +75,7 @@ class WPSC_Purchase_Log_List_Table extends WP_List_Table
75
  $table_as = 's' . $i;
76
  $select_as = str_replace('billing', '', $field->unique_name );
77
  $selects[] = $table_as . '.value AS ' . $select_as;
78
- $joins[] = $wpdb->prepare( "INNER JOIN " . WPSC_TABLE_SUBMITED_FORM_DATA . " AS {$table_as} ON {$table_as}.log_id = p.id AND {$table_as}.form_id = %d", $field->id );
79
 
80
  // build search term queries for first name, last name, email
81
  foreach ( $search_terms as $term ) {
@@ -137,7 +137,6 @@ class WPSC_Purchase_Log_List_Table extends WP_List_Table
137
  {$limit}
138
  ";
139
  $this->items = $wpdb->get_results( $purchase_log_sql );
140
-
141
  if ( $this->per_page ) {
142
  $total_items = $wpdb->get_var( "SELECT FOUND_ROWS()" );
143
 
@@ -221,11 +220,17 @@ class WPSC_Purchase_Log_List_Table extends WP_List_Table
221
 
222
  $sql = "SELECT DISTINCT processed, COUNT(*) AS count FROM " . WPSC_TABLE_PURCHASE_LOGS . " GROUP BY processed ORDER BY processed";
223
  $results = $wpdb->get_results( $sql );
224
- foreach ( $results as $status ) {
225
- $statuses[$status->processed] = $status->count;
 
 
 
 
 
 
 
226
  }
227
 
228
- $total_count = array_sum( $statuses );
229
  $all_text = sprintf(
230
  _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $total_count, 'purchase logs', 'wpsc' ),
231
  number_format_i18n( $total_count )
51
  $offset = ( $page - 1 ) * $this->per_page;
52
 
53
  $checkout_fields_sql = "
54
+ SELECT id, unique_name FROM " . WPSC_TABLE_CHECKOUT_FORMS . " WHERE unique_name IN ('billingfirstname', 'billinglastname', 'billingemail') AND active='1' AND checkout_set='0'
55
  ";
56
  $checkout_fields = $wpdb->get_results( $checkout_fields_sql );
57
 
75
  $table_as = 's' . $i;
76
  $select_as = str_replace('billing', '', $field->unique_name );
77
  $selects[] = $table_as . '.value AS ' . $select_as;
78
+ $joins[] = $wpdb->prepare( "LEFT OUTER JOIN " . WPSC_TABLE_SUBMITED_FORM_DATA . " AS {$table_as} ON {$table_as}.log_id = p.id AND {$table_as}.form_id = %d", $field->id );
79
 
80
  // build search term queries for first name, last name, email
81
  foreach ( $search_terms as $term ) {
137
  {$limit}
138
  ";
139
  $this->items = $wpdb->get_results( $purchase_log_sql );
 
140
  if ( $this->per_page ) {
141
  $total_items = $wpdb->get_var( "SELECT FOUND_ROWS()" );
142
 
220
 
221
  $sql = "SELECT DISTINCT processed, COUNT(*) AS count FROM " . WPSC_TABLE_PURCHASE_LOGS . " GROUP BY processed ORDER BY processed";
222
  $results = $wpdb->get_results( $sql );
223
+ $statuses = array();
224
+ $total_count = 0;
225
+
226
+ if ( ! empty( $results ) ) {
227
+ foreach ( $results as $status ) {
228
+ $statuses[$status->processed] = $status->count;
229
+ }
230
+
231
+ $total_count = array_sum( $statuses );
232
  }
233
 
 
234
  $all_text = sprintf(
235
  _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $total_count, 'purchase logs', 'wpsc' ),
236
  number_format_i18n( $total_count )
wpsc-admin/includes/settings-tabs/gateway.php CHANGED
@@ -159,7 +159,6 @@ class WPSC_Settings_Tab_Gateway extends WPSC_Settings_Tab
159
  <?php }
160
  ?>
161
  <div class='submit gateway_settings'>
162
- <input type='hidden' value='true' name='update_gateways' />
163
  <input type='submit' value='<?php _e( 'Update &raquo;', 'wpsc' ) ?>' name='updateoption' />
164
  </div>
165
  </div>
159
  <?php }
160
  ?>
161
  <div class='submit gateway_settings'>
 
162
  <input type='submit' value='<?php _e( 'Update &raquo;', 'wpsc' ) ?>' name='updateoption' />
163
  </div>
164
  </div>
wpsc-admin/includes/settings-tabs/import.php CHANGED
@@ -2,161 +2,223 @@
2
 
3
  class WPSC_Settings_Tab_Import extends WPSC_Settings_Tab
4
  {
5
- public function display() {
6
- ?>
7
- <?php _e( '<p>You can import your products from a comma delimited text file.</p><p>An example of a csv import file would look like this: </p><p>Description, Additional Description, Product Name, Price, SKU, weight, weight unit, stock quantity, is limited quantity</p>', 'wpsc' ); ?>
 
8
 
9
- <?php wp_nonce_field( 'update-options', 'wpsc-update-options' ); ?>
10
- <input type='hidden' name='MAX_FILE_SIZE' value='5000000' />
11
- <input type='file' name='csv_file' />
12
- <input type='submit' value='Import' class='button-primary'>
13
- <?php
14
- if ( isset( $_FILES['csv_file']['name'] ) && ($_FILES['csv_file']['name'] != '') ) {
15
- ini_set( "auto_detect_line_endings", 1 );
16
- $file = $_FILES['csv_file'];
17
- if ( move_uploaded_file( $file['tmp_name'], WPSC_FILE_DIR . $file['name'] ) ) {
18
- $content = file_get_contents( WPSC_FILE_DIR . $file['name'] );
19
- $handle = @fopen( WPSC_FILE_DIR . $file['name'], 'r' );
20
- while ( ($csv_data = @fgetcsv( $handle, filesize( $handle ), "," )) !== false ) {
21
- $fields = count( $csv_data );
22
- for ( $i = 0; $i < $fields; $i++ ) {
23
- if ( !is_array( $data1[$i] ) ) {
24
- $data1[$i] = array( );
25
- }
26
- array_push( $data1[$i], $csv_data[$i] );
27
- }
28
- }
29
-
30
- $_SESSION['cvs_data'] = $data1;
31
- $categories = get_terms( 'wpsc_product_category', 'hide_empty=0&parent=' . $category_id );
32
- ?>
33
 
34
- <p><?php _e( 'For each column, select the field it corresponds to in \'Belongs to\'. You can upload as many products as you like.', 'wpsc' ); ?></p>
35
- <div class='metabox-holder' style='width:90%'>
36
- <input type='hidden' name='csv_action' value='import'>
37
 
38
- <div style='width:100%;' class='postbox'>
39
- <h3 class='hndle'><?php _e('Product Status' , 'wpsc' ); ?></h3>
40
- <div class='inside'>
41
- <table>
42
- <tr><td style='width:80%;'>
43
- <?php _e( 'Select if you would like to import your products in as Drafts or Publish them right away.' , 'wpsc' ); ?>
44
- <br />
45
- </td><td>
46
- <select name='post_status'>
47
- <option value='publish'><?php _e('Publish', 'wpsc'); ?></option>
48
- <option value='draft'><?php _e('Draft', 'wpsc'); ?></option>
49
- </select>
50
- </td></tr>
51
- </table>
52
- </div>
53
- </div>
54
 
55
- <?php
56
- foreach ( (array)$data1 as $key => $datum ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  ?>
58
- <div style='width:100%;' class='postbox'>
59
- <h3 class='hndle'><?php printf(__('Column (%s)', 'wpsc'), ($key + 1)); ?></h3>
60
- <div class='inside'>
61
- <table>
62
- <tr><td style='width:80%;'>
63
- <input type='hidden' name='column[]' value='<?php echo $key + 1; ?>'>
64
- <?php
65
- foreach ( $datum as $column ) {
66
- echo $column;
67
- break;
68
- } ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  <br />
70
- </td><td>
71
- <select name='value_name[]'>
72
- <!-- /* These are the current fields that can be imported with products, to add additional fields add more <option> to this dorpdown list */ -->
73
- <option value='name'><?php _e('Product Name', 'wpsc'); ?></option>
74
- <option value='description'><?php _e('Description', 'wpsc'); ?></option>
75
- <option value='additional_description'><?php _e('Additional Description', 'wpsc'); ?></option>
76
- <option value='price'><?php _e('Price', 'wpsc'); ?></option>
77
- <option value='sku'><?php _e('SKU', 'wpsc'); ?></option>
78
- <option value='weight'><?php _e('Weight', 'wpsc'); ?></option>
79
- <option value='weight_unit'><?php _e('Weight Unit', 'wpsc'); ?></option>
80
- <option value='quantity'><?php _e('Stock Quantity', 'wpsc'); ?></option>
81
- <option value='quantity_limited'><?php _e('Stock Quantity Limit', 'wpsc'); ?></option>
82
  </select>
83
- </td></tr>
 
84
  </table>
85
  </div>
86
  </div>
87
- <?php } ?>
88
- <label for='category'><?php _e('Please select a category you would like to place all products from this CSV into' , 'wpsc' ); ?>:</label>
89
- <select id='category' name='category'>
 
 
 
 
 
 
 
90
  <?php
91
- foreach ( $categories as $category ) {
92
- echo '<option value="' . $category->term_id . '">' . $category->name . '</option>';
93
- }
94
- ?>
95
- </select>
96
- <input type='submit' value='Import' class='button-primary'>
97
- </div>
98
- <?php
99
- } else {
100
- echo "<br /><br />" . __('There was an error while uploading your csv file.', 'wpsc');
101
- }
102
- }
103
- if ( isset( $_POST['csv_action'] ) && ('import' == $_POST['csv_action']) ) {
104
- $cvs_data = $_SESSION['cvs_data'];
105
- $column_data = $_POST['column'];
106
- $value_data = $_POST['value_name'];
107
-
108
- $status = esc_attr($_POST['post_status']);
109
-
110
- $name = array( );
111
- foreach ( $value_data as $key => $value ) {
112
-
113
- $cvs_data2[$value] = $cvs_data[$key];
114
- }
115
- $num = count( $cvs_data2['name'] );
116
-
117
- for ( $i = 0; $i < $num; $i++ ) {
118
- $product_columns = array(
119
- 'post_title' => esc_attr( $cvs_data2['name'][$i] ),
120
- 'content' => esc_attr( $cvs_data2['description'][$i] ),
121
- 'additional_description' => esc_attr( $cvs_data2['additional_description'][$i] ),
122
- 'price' => esc_attr( str_replace( '$', '', $cvs_data2['price'][$i] ) ),
123
- 'weight' => esc_attr( $cvs_data2['weight'][$i] ),
124
- 'weight_unit' => esc_attr( $cvs_data2['weight_unit'][$i] ),
125
- 'pnp' => null,
126
- 'international_pnp' => null,
127
- 'file' => null,
128
- 'image' => '0',
129
- 'quantity_limited' => esc_attr( $cvs_data2['quantity_limited'][$i] ),
130
- 'quantity' => esc_attr( $cvs_data2['quantity'][$i] ),
131
- 'special' => null,
132
- 'special_price' => null,
133
- 'display_frontpage' => null,
134
- 'notax' => null,
135
- 'active' => null,
136
- 'donation' => null,
137
- 'no_shipping' => null,
138
- 'thumbnail_image' => null,
139
- 'thumbnail_state' => null,
140
- 'meta' => array(
141
- '_wpsc_price' => esc_attr( str_replace( '$', '', $cvs_data2['price'][$i] ) ),
142
- '_wpsc_sku' => esc_attr( $cvs_data2['sku'][$i] ),
143
- '_wpsc_stock' => esc_attr( $cvs_data2['quantity'][$i] ),
144
- '_wpsc_limited_stock' => esc_attr( $cvs_data2['quantity_limited'][$i] ),
145
- '_wpsc_product_metadata' => array(
146
- 'weight' => esc_attr( $cvs_data2['weight'][$i] ),
147
- 'weight_unit' => esc_attr( $cvs_data2['weight_unit'][$i] ),
148
- )
149
- )
150
- );
151
- $product_columns = wpsc_sanitise_product_forms( $product_columns );
152
- // status needs to be set here because wpsc_sanitise_product_forms overwrites it :/
153
- $product_columns['post_status'] = $status;
154
- $product_id = wpsc_insert_product( $product_columns );
155
- wp_set_object_terms( $product_id , array( (int)$_POST['category'] ) , 'wpsc_product_category' );
156
- }
157
- echo "<br /><br />". sprintf(__("Success, your <a href='%s'>products</a> have been upload.", "wpsc"), admin_url('edit.php?post_type=wpsc-product'));
158
- }
159
  ?>
 
 
 
160
  <?php
161
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  }
2
 
3
  class WPSC_Settings_Tab_Import extends WPSC_Settings_Tab
4
  {
5
+ private $file = false;
6
+ private $step = 1;
7
+ private $display_data = array();
8
+ private $completed = false;
9
 
10
+ public function __construct() {
11
+ parent::__construct();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
+ $file = get_transient( 'wpsc_settings_tab_import_file' );
14
+ if ( $file )
15
+ $this->file = $file;
16
 
17
+ $this->step = empty( $_REQUEST['step'] ) ? 1 : (int) $_REQUEST['step'];
18
+ if ( $this->step < 1 || $this->step > 3 )
19
+ $this->step = 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
+ switch ( $this->step ) {
22
+ case 2:
23
+ $this->prepare_import_columns();
24
+ break;
25
+ case 3:
26
+ $this->import_data();
27
+ break;
28
+ }
29
+
30
+ $this->hide_submit_button();
31
+ }
32
+
33
+ private function prepare_import_columns() {
34
+ $this->hide_update_message();
35
+ ini_set( 'auto_detect_line_endings', 1 );
36
+ $handle = @fopen( $this->file, 'r' );
37
+
38
+ if ( ! $handle ) {
39
+ $this->reset_state();
40
+ return;
41
+ }
42
+
43
+ $first_row = @fgetcsv( $handle );
44
+ $categories = get_terms( 'wpsc_product_category', 'hide_empty=0' );
45
+
46
+ $this->display_data = array(
47
+ 'columns' => $first_row,
48
+ 'categories' => $categories,
49
+ );
50
+ }
51
+
52
+ private function reset_state() {
53
+ delete_transient( 'wpsc_settings_tab_import_file' );
54
+ $this->file = false;
55
+ $this->completed = false;
56
+ $this->display_data = array();
57
+ }
58
+
59
+ private function import_data() {
60
+ ini_set( 'auto_detect_line_endings', 1 );
61
+ $handle = @fopen( $this->file, 'r' );
62
+ if ( ! $handle ) {
63
+ $this->reset_state();
64
+ return;
65
+ }
66
+
67
+ $length = filesize( $this->file );
68
+
69
+ $column_map = array_flip( $_POST['value_name'] );
70
+ extract( $column_map, EXTR_SKIP );
71
+
72
+ while ( $row = @fgetcsv( $handle, $length, ',' ) ) {
73
+ $product = array(
74
+ 'post_title' => isset( $row[$column_name] ) ? $row[$column_name] : '',
75
+ 'content' => isset( $row[$column_description] ) ? $row[$column_description] : '',
76
+ 'additional_description' => isset( $row[$column_additional_description] ) ? $row[$column_additional_description] : '',
77
+ 'price' => isset( $row[$column_price] ) ? str_replace( '$', '', $row[$column_price] ) : 0,
78
+ 'weight' => isset( $row[$column_weight] ) ? $row[$column_weight] : '',
79
+ 'weight_unit' => isset( $row[$column_weight_unit] ) ? $row[$column_weight_unit] : '',
80
+ 'pnp' => null,
81
+ 'international_pnp' => null,
82
+ 'file' => null,
83
+ 'image' => '0',
84
+ 'quantity_limited' => isset( $row[$column_quantity_limited] ) ? $row[$column_quantity_limited] : '',
85
+ 'quantity' => isset( $row[$column_quantity] ) ? $row[$column_quantity] : null,
86
+ 'special' => null,
87
+ 'special_price' => null,
88
+ 'display_frontpage' => null,
89
+ 'notax' => null,
90
+ 'active' => null,
91
+ 'donation' => null,
92
+ 'no_shipping' => null,
93
+ 'thumbnail_image' => null,
94
+ 'thumbnail_state' => null,
95
+ 'meta' => array(
96
+ '_wpsc_price' => isset( $row[$column_price] ) ? str_replace( '$', '', $row[$column_price] ) : 0,
97
+ '_wpsc_special_price' => '',
98
+ '_wpsc_sku' => isset( $row[$column_sku] ) ? $row[$column_sku] : '',
99
+ '_wpsc_stock' => isset( $row[$column_quantity] ) ? $row[$column_quantity] : null,
100
+ '_wpsc_limited_stock' => isset( $row[$column_quantity_limited] ) ? $row[$column_quantity_limited] : '',
101
+ '_wpsc_product_metadata' => array(
102
+ 'weight' => isset( $row[$column_weight] ) ? $row[$column_weight] : '',
103
+ 'weight_unit' => isset( $row[$column_weight_unit] ) ? $row[$column_weight_unit] : '',
104
+ )
105
+ )
106
+ );
107
+
108
+ $product = wpsc_sanitise_product_forms( $product );
109
+ // status needs to be set here because wpsc_sanitise_product_forms overwrites it :/
110
+ $product['post_status'] = $_POST['post_status'];
111
+ $product_id = wpsc_insert_product( $product );
112
+ wp_set_object_terms( $product_id , array( (int)$_POST['category'] ) , 'wpsc_product_category' );
113
+ }
114
+
115
+ $this->reset_state();
116
+ $this->completed = true;
117
+ add_settings_error( 'wpsc-settings', 'settings_updated', __( 'CSV file imported.', 'wpsc' ), 'updated' );
118
+ }
119
+
120
+ public function callback_submit_options() {
121
+ if ( isset( $_FILES['csv_file'] ) && isset( $_FILES['csv_file']['name'] ) && ($_FILES['csv_file']['name'] != '') ) {
122
+ $this->hide_update_message();
123
+ ini_set( 'auto_detect_line_endings', 1 );
124
+ $file = $_FILES['csv_file'];
125
+ $file_path = WPSC_FILE_DIR . $file['name'];
126
+ if ( move_uploaded_file( $file['tmp_name'], WPSC_FILE_DIR . $file['name'] ) ) {
127
+ set_transient( 'wpsc_settings_tab_import_file', $file_path );
128
+ return array( 'step' => 2 );
129
+ }
130
+ }
131
+
132
+ if ( $this->completed )
133
+ return array( 'step' => 1 );
134
+
135
+ return array( 'step' => $this->step + 1 );
136
+ }
137
+
138
+ private function display_imported_columns() {
139
+ extract( $this->display_data );
140
  ?>
141
+ <p><?php _e( 'For each column, select the field it corresponds to in \'Belongs to\'. You can upload as many products as you like.', 'wpsc' ); ?></p>
142
+ <div class='metabox-holder' style='width:90%'>
143
+ <div style='width:100%;' class='postbox'>
144
+ <h3 class='hndle'><?php _e('Product Status' , 'wpsc' ); ?></h3>
145
+ <div class='inside'>
146
+ <table>
147
+ <tr>
148
+ <td style='width:80%;'>
149
+ <?php _e( 'Select if you would like to import your products in as Drafts or Publish them right away.' , 'wpsc' ); ?>
150
+ <br />
151
+ </td>
152
+ <td>
153
+ <select name='post_status'>
154
+ <option value='publish'><?php _e( 'Publish', 'wpsc'); ?></option>
155
+ <option value='draft' ><?php _e( 'Draft' , 'wpsc'); ?></option>
156
+ </select>
157
+ </td>
158
+ </tr>
159
+ </table>
160
+ </div>
161
+ </div>
162
+ <?php foreach ( $columns as $key => $datum ): ?>
163
+ <div style='width:100%;' class='postbox'>
164
+ <h3 class='hndle'><?php printf(__('Column (%s)', 'wpsc'), ($key + 1)); ?></h3>
165
+ <div class='inside'>
166
+ <table>
167
+ <tr>
168
+ <td style='width:80%;'>
169
+ <?php echo $datum; ?>
170
  <br />
171
+ </td>
172
+ <td>
173
+ <select name='value_name[<?php echo $key; ?>]'>
174
+ <option <?php selected( $key, 0 ); ?> value='column_name' ><?php _e('Product Name' , 'wpsc'); ?></option>
175
+ <option <?php selected( $key, 1 ); ?> value='column_description' ><?php _e('Description' , 'wpsc'); ?></option>
176
+ <option <?php selected( $key, 2 ); ?> value='column_additional_description'><?php _e('Additional Description', 'wpsc'); ?></option>
177
+ <option <?php selected( $key, 3 ); ?> value='column_price' ><?php _e('Price' , 'wpsc'); ?></option>
178
+ <option <?php selected( $key, 4 ); ?> value='column_sku' ><?php _e('SKU' , 'wpsc'); ?></option>
179
+ <option <?php selected( $key, 5 ); ?> value='column_weight' ><?php _e('Weight' , 'wpsc'); ?></option>
180
+ <option <?php selected( $key, 6 ); ?> value='column_weight_unit' ><?php _e('Weight Unit' , 'wpsc'); ?></option>
181
+ <option <?php selected( $key, 7 ); ?> value='column_quantity' ><?php _e('Stock Quantity' , 'wpsc'); ?></option>
182
+ <option <?php selected( $key, 8 ); ?> value='column_quantity_limited' ><?php _e('Stock Quantity Limit' , 'wpsc'); ?></option>
183
  </select>
184
+ </td>
185
+ </tr>
186
  </table>
187
  </div>
188
  </div>
189
+ <?php endforeach; ?>
190
+ <label for='category'><?php _e('Please select a category you would like to place all products from this CSV into' , 'wpsc' ); ?>:</label>
191
+ <select id='category' name='category'>
192
+ <?php foreach ( $categories as $category ): ?>
193
+ <option value="<?php echo $category->term_id; ?>"><?php echo esc_html( $category->name ); ?></option>
194
+ <?php endforeach; ?>
195
+ </select>
196
+ <input type="hidden" name="step" value="3" />
197
+ <input type='submit' value='<?php echo esc_html_x( 'Continue', 'import csv', 'wpsc' ); ?>' class='button-primary'>
198
+ </div>
199
  <?php
200
+ }
201
+
202
+ private function display_default() {
203
+ extract( $this->display_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
  ?>
205
+ <?php _e( '<p>You can import your products from a comma delimited text file.</p><p>An example of a csv import file would look like this: </p><p>Description, Additional Description, Product Name, Price, SKU, weight, weight unit, stock quantity, is limited quantity</p>', 'wpsc' ); ?>
206
+ <input type='file' name='csv_file' />
207
+ <?php submit_button( esc_html_x( 'Upload', 'import csv', 'wpsc' ) ); ?>
208
  <?php
209
  }
210
+
211
+ public function display() {
212
+ switch ( $this->step ) {
213
+ case 1:
214
+ $this->display_default();
215
+ break;
216
+ case 2:
217
+ $this->display_imported_columns();
218
+ break;
219
+ default:
220
+ $this->display_default();
221
+ break;
222
+ }
223
+ }
224
  }
wpsc-admin/includes/settings-tabs/shipping.php CHANGED
@@ -133,13 +133,11 @@ class WPSC_Settings_Tab_Shipping extends WPSC_Settings_Tab
133
  $shipwire2 = "";
134
  switch ( get_option( 'shipwire' ) ) {
135
  case 1:
136
- $shipwire1 = "checked ='checked'";
137
  $shipwire_settings = 'style=\'display: block;\'';
138
  break;
139
 
140
  case 0:
141
  default:
142
- $shipwire2 = "checked ='checked'";
143
  $shipwire_settings = '';
144
  break;
145
  }
@@ -150,17 +148,13 @@ class WPSC_Settings_Tab_Shipping extends WPSC_Settings_Tab
150
  <?php _e( 'ShipWire Settings', 'wpsc' ); ?><span style='color: red;'></span> :
151
  </th>
152
  <td>
153
- <input type='radio' onclick='jQuery("#wpsc_shipwire_setting").show()' value='1' name='wpsc_options[shipwire]' id='shipwire1' <?php echo $shipwire1; ?> /> <label for='shipwire1'><?php _e( 'Yes', 'wpsc' ); ?></label> &nbsp;
154
- <input type='radio' onclick='jQuery("#wpsc_shipwire_setting").hide()' value='0' name='wpsc_options[shipwire]' id='shipwire2' <?php echo $shipwire2; ?> /> <label for='shipwire2'><?php _e( 'No', 'wpsc' ); ?></label>
155
- <?php
156
- $shipwireemail = esc_attr_e( get_option( "shipwireemail" ) );
157
- $shipwirepassword = esc_attr_e( get_option( "shipwirepassword" ) );
158
- ?>
159
  <div id='wpsc_shipwire_setting' <?php echo $shipwire_settings; ?>>
160
  <table>
161
- <tr><td><?php _e( 'ShipWire Email', 'wpsc' ); ?> :</td><td> <input type="text" name='wpsc_options[shipwireemail]' value="<?php echo $shipwireemail; ?>" /></td></tr>
162
- <tr><td><?php _e( 'ShipWire Password', 'wpsc' ); ?> :</td><td><input type="text" name='wpsc_options[shipwirepassword]' value="<?php echo $shipwirepassword; ?>" /></td></tr>
163
- <tr><td><a onclick='shipwire_sync()' style="cursor:pointer;">Sync product</a></td></tr>
164
  </table>
165
  </div>
166
  </td>
@@ -235,7 +229,7 @@ class WPSC_Settings_Tab_Shipping extends WPSC_Settings_Tab
235
  </span>
236
  </div>
237
 
238
- <p><input name='custom_shipping_options[]' <?php echo $shipping->checked; ?> type='checkbox' value='<?php echo $shipping->internal_name; ?>' id='<?php echo $shipping->internal_name; ?>_id' /><label for='<?php echo $shipping->internal_name; ?>_id'><?php echo $shipping->name; ?></label></p>
239
  </div>
240
  <?php } ?>
241
  <br />
@@ -264,7 +258,7 @@ class WPSC_Settings_Tab_Shipping extends WPSC_Settings_Tab
264
  <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-feedback" title="" alt="" />
265
  </span>
266
  </div>
267
- <p><input <?php echo $disabled; ?> name='custom_shipping_options[]' <?php echo $shipping->checked; ?> type='checkbox' value='<?php echo $shipping->internal_name; ?>' id='<?php echo $shipping->internal_name; ?>_id' /><label for='<?php echo $shipping->internal_name; ?>_id'><?php esc_attr_e( $shipping->name ); ?></label></p>
268
  </div>
269
  <?php } ?>
270
  <p class="submit">
133
  $shipwire2 = "";
134
  switch ( get_option( 'shipwire' ) ) {
135
  case 1:
 
136
  $shipwire_settings = 'style=\'display: block;\'';
137
  break;
138
 
139
  case 0:
140
  default:
 
141
  $shipwire_settings = '';
142
  break;
143
  }
148
  <?php _e( 'ShipWire Settings', 'wpsc' ); ?><span style='color: red;'></span> :
149
  </th>
150
  <td>
151
+ <input type='radio' onclick='jQuery("#wpsc_shipwire_setting").show()' value='1' name='wpsc_options[shipwire]' id='shipwire1' <?php checked( '1', get_option( 'shipwire' ) ); ?> /> <label for='shipwire1'><?php _e( 'Yes', 'wpsc' ); ?></label> &nbsp;
152
+ <input type='radio' onclick='jQuery("#wpsc_shipwire_setting").hide()' value='0' name='wpsc_options[shipwire]' id='shipwire2' <?php checked( '0', get_option( 'shipwire' ) ); ?> /> <label for='shipwire2'><?php _e( 'No', 'wpsc' ); ?></label>
 
 
 
 
153
  <div id='wpsc_shipwire_setting' <?php echo $shipwire_settings; ?>>
154
  <table>
155
+ <tr><td><?php _e( 'ShipWire Email', 'wpsc' ); ?> :</td><td> <input type="text" name='wpsc_options[shipwireemail]' value="<?php esc_attr_e( get_option( 'shipwireemail' ) ); ?>" /></td></tr>
156
+ <tr><td><?php _e( 'ShipWire Password', 'wpsc' ); ?> :</td><td><input type="text" name='wpsc_options[shipwirepassword]' value="<?php esc_attr_e( get_option( 'shipwirepassword' ) ); ?>" /></td></tr>
157
+ <tr><td><a class="shipwire_sync">Sync product</a></td></tr>
158
  </table>
159
  </div>
160
  </td>
229
  </span>
230
  </div>
231
 
232
+ <p><input name='custom_shipping_options[]' <?php echo $shipping->checked; ?> type='checkbox' value='<?php echo $shipping->internal_name; ?>' id='<?php echo $shipping->internal_name; ?>_id' /><label for='<?php echo $shipping->internal_name; ?>_id'> <?php echo $shipping->name; ?></label></p>
233
  </div>
234
  <?php } ?>
235
  <br />
258
  <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-feedback" title="" alt="" />
259
  </span>
260
  </div>
261
+ <p><input <?php echo $disabled; ?> name='custom_shipping_options[]' <?php echo $shipping->checked; ?> type='checkbox' value='<?php echo $shipping->internal_name; ?>' id='<?php echo $shipping->internal_name; ?>_id' /><label for='<?php echo $shipping->internal_name; ?>_id'> <?php esc_attr_e( $shipping->name ); ?></label></p>
262
  </div>
263
  <?php } ?>
264
  <p class="submit">
wpsc-admin/js/admin.js CHANGED
@@ -25,6 +25,17 @@
25
 
26
  $('.edit-tags-php form').attr('enctype', 'multipart/form-data').attr('encoding', 'multipart/form-data');
27
  });
 
 
 
 
 
 
 
 
 
 
 
28
  }
29
  })(jQuery);
30
 
25
 
26
  $('.edit-tags-php form').attr('enctype', 'multipart/form-data').attr('encoding', 'multipart/form-data');
27
  });
28
+
29
+ $(function() {
30
+ $('.wpsc_select_all').click(function(){
31
+ $('input:checkbox', $(this).parent().siblings('.multiple-select') ).each(function(){ this.checked = true; });
32
+ return false;
33
+ });
34
+ $('.wpsc_select_none').click(function(){
35
+ $('input:checkbox', $(this).parent().siblings('.multiple-select') ).each(function(){ this.checked = false; });
36
+ return false;
37
+ });
38
+ });
39
  }
40
  })(jQuery);
41
 
wpsc-admin/js/purchase-logs.js CHANGED
@@ -11,7 +11,9 @@
11
  delegate('.wpsc-purchase-log-tracking-id', 'blur', WPSC_Purchase_Logs_Admin.event_tracking_id_blurred).
12
  delegate('.column-tracking a.save', 'click', WPSC_Purchase_Logs_Admin.event_button_save_clicked).
13
  delegate('.column-tracking .send-email a', 'click', WPSC_Purchase_Logs_Admin.event_button_send_email_clicked).
14
- delegate('.wpsc-purchase-log-tracking-id', 'keypress', WPSC_Purchase_Logs_Admin.event_enter_key_pressed);
 
 
15
 
16
  });
17
  },
@@ -50,8 +52,6 @@
50
  },
51
 
52
  event_button_save_clicked : function() {
53
- WPSC_Purchase_Logs_Admin.reset_textbox_width = false;
54
-
55
  var t = $(this), textbox = t.siblings('.wpsc-purchase-log-tracking-id'), spinner = t.siblings('.ajax-feedback');
56
 
57
  var post_data = {
@@ -66,6 +66,7 @@
66
  textbox.blur();
67
  if (response == 'success') {
68
  t.parent().removeClass('empty');
 
69
  } else {
70
  alert(WPSC_Purchase_Logs_Admin.tracking_error_dialog);
71
  }
@@ -80,13 +81,16 @@
80
  return false;
81
  },
82
 
 
 
 
 
83
  event_button_add_clicked : function() {
84
  $(this).siblings('.wpsc-purchase-log-tracking-id').trigger('focus');
85
  return false;
86
  },
87
 
88
- event_tracking_id_blurred : function() {
89
- var t = $(this);
90
  var reset_width = function() {
91
  if (WPSC_Purchase_Logs_Admin.reset_textbox_width) {
92
  t.siblings('a.save').hide();
@@ -102,6 +106,12 @@
102
  WPSC_Purchase_Logs_Admin.blur_timeout = setTimeout(reset_width, 100);
103
  },
104
 
 
 
 
 
 
 
105
  event_tracking_id_focused : function() {
106
  var t = $(this);
107
  t.width(128);
11
  delegate('.wpsc-purchase-log-tracking-id', 'blur', WPSC_Purchase_Logs_Admin.event_tracking_id_blurred).
12
  delegate('.column-tracking a.save', 'click', WPSC_Purchase_Logs_Admin.event_button_save_clicked).
13
  delegate('.column-tracking .send-email a', 'click', WPSC_Purchase_Logs_Admin.event_button_send_email_clicked).
14
+ delegate('.wpsc-purchase-log-tracking-id', 'keypress', WPSC_Purchase_Logs_Admin.event_enter_key_pressed).
15
+ delegate('.column-tracking a.save', 'mousedown', WPSC_Purchase_Logs_Admin.event_disable_textbox_resize).
16
+ delegate('.column-tracking a.save', 'focus', WPSC_Purchase_Logs_Admin.event_disable_textbox_resize);
17
 
18
  });
19
  },
52
  },
53
 
54
  event_button_save_clicked : function() {
 
 
55
  var t = $(this), textbox = t.siblings('.wpsc-purchase-log-tracking-id'), spinner = t.siblings('.ajax-feedback');
56
 
57
  var post_data = {
66
  textbox.blur();
67
  if (response == 'success') {
68
  t.parent().removeClass('empty');
69
+ WPSC_Purchase_Logs_Admin.reset_tracking_id_width(t.siblings('.wpsc-purchase-log-tracking-id'));
70
  } else {
71
  alert(WPSC_Purchase_Logs_Admin.tracking_error_dialog);
72
  }
81
  return false;
82
  },
83
 
84
+ event_disable_textbox_resize : function() {
85
+ WPSC_Purchase_Logs_Admin.reset_textbox_width = false;
86
+ },
87
+
88
  event_button_add_clicked : function() {
89
  $(this).siblings('.wpsc-purchase-log-tracking-id').trigger('focus');
90
  return false;
91
  },
92
 
93
+ reset_tracking_id_width : function(t) {
 
94
  var reset_width = function() {
95
  if (WPSC_Purchase_Logs_Admin.reset_textbox_width) {
96
  t.siblings('a.save').hide();
106
  WPSC_Purchase_Logs_Admin.blur_timeout = setTimeout(reset_width, 100);
107
  },
108
 
109
+ event_tracking_id_blurred : function() {
110
+ var t = $(this);
111
+
112
+ WPSC_Purchase_Logs_Admin.reset_tracking_id_width(t);
113
+ },
114
+
115
  event_tracking_id_focused : function() {
116
  var t = $(this);
117
  t.width(128);
wpsc-admin/js/settings-page.js CHANGED
@@ -158,6 +158,7 @@
158
  t.toggle_ajax_state(tab_id);
159
  $('#options_' + WPSC_Settings_Page.current_tab).replaceWith(response);
160
  WPSC_Settings_Page.current_tab = tab_id;
 
161
  $('.nav-tab-active').removeClass('nav-tab-active');
162
  $('[data-tab-id="' + tab_id + '"]').addClass('nav-tab-active');
163
  $('#wpsc_options_page form').attr('action', url);
158
  t.toggle_ajax_state(tab_id);
159
  $('#options_' + WPSC_Settings_Page.current_tab).replaceWith(response);
160
  WPSC_Settings_Page.current_tab = tab_id;
161
+ $('.settings-error').remove();
162
  $('.nav-tab-active').removeClass('nav-tab-active');
163
  $('[data-tab-id="' + tab_id + '"]').addClass('nav-tab-active');
164
  $('#wpsc_options_page form').attr('action', url);
wpsc-admin/settings-page.php CHANGED
@@ -81,6 +81,22 @@ abstract class WPSC_Settings_Tab
81
  */
82
  abstract public function display();
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  /**
85
  * Constructor
86
  *
@@ -88,6 +104,66 @@ abstract class WPSC_Settings_Tab
88
  * @access public
89
  */
90
  public function __construct() {}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  }
92
 
93
  /**
@@ -306,14 +382,19 @@ final class WPSC_Settings_Page
306
  if ( isset( $_REQUEST['wpsc_admin_action'] ) && ( $_REQUEST['wpsc_admin_action'] == 'submit_options' ) ) {
307
  check_admin_referer( 'update-options', 'wpsc-update-options' );
308
  $this->save_options();
309
- if ( is_callable( array( $this->current_tab, 'callback_submit_options' ) ) )
310
- $this->current_tab->callback_submit_options();
311
-
312
- $errors = get_settings_errors();
313
- add_settings_error( 'wpsc-settings', 'settings_updated', __( 'Settings saved.' ), 'updated' );
314
- set_transient( 'settings_errors', get_settings_errors(), 30 );
315
-
316
- wp_redirect( add_query_arg( 'settings-updated', true ) );
 
 
 
 
 
317
  exit;
318
  }
319
  }
@@ -392,7 +473,7 @@ final class WPSC_Settings_Page
392
  */
393
  public function display_current_tab() {
394
  ?>
395
- <div id="options_<?php echo esc_attr( $this->current_tab_id ); ?>">
396
  <?php
397
  if ( is_callable( array( $this->current_tab, 'display' ) ) ) {
398
  $this->current_tab->display();
@@ -400,6 +481,13 @@ final class WPSC_Settings_Page
400
  ?>
401
 
402
  <?php do_action('wpsc_' . $this->current_tab_id . '_settings_page'); ?>
 
 
 
 
 
 
 
403
  </div>
404
  <?php
405
  }
@@ -426,11 +514,6 @@ final class WPSC_Settings_Page
426
  <div id='wpsc_options_page'>
427
  <form method='post' action='<?php echo esc_attr( $this->submit_url() ); ?>' enctype='multipart/form-data' id='wpsc-settings-form'>
428
  <?php $this->display_current_tab(); ?>
429
- <div class="submit">
430
- <input type='hidden' name='wpsc_admin_action' value='submit_options' />
431
- <?php wp_nonce_field( 'update-options', 'wpsc-update-options' ); ?>
432
- <input type="submit" class="button-primary" value="<?php _e( 'Save Changes', 'wpsc' ); ?>" name="updateoption" />
433
- </div>
434
  </form>
435
  </div>
436
  </div>
@@ -576,8 +659,10 @@ final class WPSC_Settings_Page
576
  //This is for submitting shipping details to the shipping module
577
  if ( !isset( $_POST['update_gateways'] ) )
578
  $_POST['update_gateways'] = '';
 
579
  if ( !isset( $_POST['custom_shipping_options'] ) )
580
  $_POST['custom_shipping_options'] = null;
 
581
  if ( $_POST['update_gateways'] == 'true' ) {
582
 
583
  update_option( 'custom_shipping_options', $_POST['custom_shipping_options'] );
81
  */
82
  abstract public function display();
83
 
84
+ /**
85
+ * Whether to display the update message when the options are submitted.
86
+ *
87
+ * @since 3.8.8.1
88
+ * @access private
89
+ */
90
+ private $is_update_message_displayed = true;
91
+
92
+ /**
93
+ * Whether to display the "Save Changes" button.
94
+ *
95
+ * @since 3.8.8.1
96
+ * @access private
97
+ */
98
+ private $is_submit_button_displayed= true;
99
+
100
  /**
101
  * Constructor
102
  *
104
  * @access public
105
  */
106
  public function __construct() {}
107
+
108
+ /**
109
+ * Make sure the update message will be displayed
110
+ *
111
+ * @since 3.8.8.1
112
+ * @access protected
113
+ */
114
+ protected function display_update_message() {
115
+ $this->is_update_message_displayed = true;
116
+ }
117
+
118
+ /**
119
+ * Make sure the update message will not be displayed
120
+ *
121
+ * @since 3.8.8.1
122
+ * @access protected
123
+ */
124
+ protected function hide_update_message() {
125
+ $this->is_update_message_displayed = false;
126
+ }
127
+
128
+ /**
129
+ * Query whether the update message is to be displayed or not.
130
+ *
131
+ * @since 3.8.8.1
132
+ * @access public
133
+ */
134
+ public function is_update_message_displayed() {
135
+ return $this->is_update_message_displayed;
136
+ }
137
+
138
+ /**
139
+ * Hide the default "Save Changes" button
140
+ *
141
+ * @since 3.8.8.1
142
+ * @access protected
143
+ */
144
+ protected function hide_submit_button() {
145
+ $this->is_submit_button_displayed = false;
146
+ }
147
+
148
+ /**
149
+ * Show the default "Save Changes" button
150
+ *
151
+ * @since 3.8.8.1
152
+ * @access protected
153
+ */
154
+ protected function display_submit_button() {
155
+ $this->is_submit_button_displayed = true;
156
+ }
157
+
158
+ /**
159
+ * Return whether the default "Save Changes" button is to be displayed.
160
+ *
161
+ * @since 3.8.8.1
162
+ * @access public
163
+ */
164
+ public function is_submit_button_displayed() {
165
+ return $this->is_submit_button_displayed;
166
+ }
167
  }
168
 
169
  /**
382
  if ( isset( $_REQUEST['wpsc_admin_action'] ) && ( $_REQUEST['wpsc_admin_action'] == 'submit_options' ) ) {
383
  check_admin_referer( 'update-options', 'wpsc-update-options' );
384
  $this->save_options();
385
+ $query_args = array();
386
+ if ( is_callable( array( $this->current_tab, 'callback_submit_options' ) ) ) {
387
+ $additional_query_args = $this->current_tab->callback_submit_options();
388
+ if ( ! empty( $additional_query_args ) )
389
+ $query_args += $additional_query_args;
390
+ }
391
+ if ( $this->current_tab->is_update_message_displayed() ) {
392
+ if ( ! count( get_settings_errors() ) )
393
+ add_settings_error( 'wpsc-settings', 'settings_updated', __( 'Settings saved.' ), 'updated' );
394
+ set_transient( 'settings_errors', get_settings_errors(), 30 );
395
+ $query_args['settings-updated'] = true;
396
+ }
397
+ wp_redirect( add_query_arg( $query_args ) );
398
  exit;
399
  }
400
  }
473
  */
474
  public function display_current_tab() {
475
  ?>
476
+ <div id="options_<?php echo esc_attr( $this->current_tab_id ); ?>" class="tab-content">
477
  <?php
478
  if ( is_callable( array( $this->current_tab, 'display' ) ) ) {
479
  $this->current_tab->display();
481
  ?>
482
 
483
  <?php do_action('wpsc_' . $this->current_tab_id . '_settings_page'); ?>
484
+ <div class="submit">
485
+ <input type='hidden' name='wpsc_admin_action' value='submit_options' />
486
+ <?php wp_nonce_field( 'update-options', 'wpsc-update-options' ); ?>
487
+ <?php if ( $this->current_tab->is_submit_button_displayed() ): ?>
488
+ <input type="submit" class="button-primary" value="<?php _e( 'Save Changes', 'wpsc' ); ?>" name="updateoption" />
489
+ <?php endif ?>
490
+ </div>
491
  </div>
492
  <?php
493
  }
514
  <div id='wpsc_options_page'>
515
  <form method='post' action='<?php echo esc_attr( $this->submit_url() ); ?>' enctype='multipart/form-data' id='wpsc-settings-form'>
516
  <?php $this->display_current_tab(); ?>
 
 
 
 
 
517
  </form>
518
  </div>
519
  </div>
659
  //This is for submitting shipping details to the shipping module
660
  if ( !isset( $_POST['update_gateways'] ) )
661
  $_POST['update_gateways'] = '';
662
+
663
  if ( !isset( $_POST['custom_shipping_options'] ) )
664
  $_POST['custom_shipping_options'] = null;
665
+
666
  if ( $_POST['update_gateways'] == 'true' ) {
667
 
668
  update_option( 'custom_shipping_options', $_POST['custom_shipping_options'] );
wpsc-core/wpsc-constants.php CHANGED
@@ -26,9 +26,9 @@ function wpsc_core_constants() {
26
  if(!defined('WPSC_URL'))
27
  define( 'WPSC_URL', plugins_url( '', __FILE__ ) );
28
  // Define Plugin version
29
- define( 'WPSC_VERSION', '3.8.8' );
30
- define( 'WPSC_MINOR_VERSION', '525805' );
31
- define( 'WPSC_PRESENTABLE_VERSION', '3.8.8' );
32
 
33
  // Define Debug Variables for developers
34
  define( 'WPSC_DEBUG', false );
26
  if(!defined('WPSC_URL'))
27
  define( 'WPSC_URL', plugins_url( '', __FILE__ ) );
28
  // Define Plugin version
29
+ define( 'WPSC_VERSION', '3.8.8.1' );
30
+ define( 'WPSC_MINOR_VERSION', '545444' );
31
+ define( 'WPSC_PRESENTABLE_VERSION', '3.8.8.1' );
32
 
33
  // Define Debug Variables for developers
34
  define( 'WPSC_DEBUG', false );
wpsc-core/wpsc-functions.php CHANGED
@@ -1404,13 +1404,13 @@ add_action( 'wp', 'wpsc_select_theme_functions', 10, 1 );
1404
  */
1405
  function wpsc_force_ssl() {
1406
  global $wp_query;
1407
- if ( get_option( 'wpsc_force_ssl' ) && !is_ssl() && strpos( $wp_query->post->post_content, '[shoppingcart]' ) !== FALSE ) {
1408
  $sslurl = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
1409
  header( 'Location: ' . $sslurl );
1410
  echo 'Redirecting';
1411
  }
1412
  }
1413
- add_action( 'get_header', 'wpsc_force_ssl' );
1414
 
1415
 
1416
  /**
@@ -1454,4 +1454,18 @@ function wpsc_cron() {
1454
  }
1455
 
1456
  add_action( 'init', 'wpsc_cron' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1457
  ?>
1404
  */
1405
  function wpsc_force_ssl() {
1406
  global $wp_query;
1407
+ if ( wpsc_is_ssl() ) {
1408
  $sslurl = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
1409
  header( 'Location: ' . $sslurl );
1410
  echo 'Redirecting';
1411
  }
1412
  }
1413
+ add_action( 'wp', 'wpsc_force_ssl' );
1414
 
1415
 
1416
  /**
1454
  }
1455
 
1456
  add_action( 'init', 'wpsc_cron' );
1457
+
1458
+ /**
1459
+ * Checks if current page is shopping cart, and it should be SSL, but is not.
1460
+ * Used primarily for str_replacing links or content for https
1461
+ *
1462
+ * @return boolean true if we're on the shopping cart page and should be ssl, false if not
1463
+ */
1464
+ function wpsc_is_ssl() {
1465
+ global $wp_query;
1466
+
1467
+ return '1' == get_option( 'wpsc_force_ssl' ) && ! is_ssl() && false !== strpos( $wp_query->post->post_content, '[shoppingcart]' );
1468
+ }
1469
+
1470
+
1471
  ?>
wpsc-includes/currency_converter.inc.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
-
3
  /*
4
- CURRENCYCONVERTER
5
  Date - Feb 23,2005
6
  Author - Harish Chauhan
7
  Email - harishc@ultraglobal.biz
@@ -9,7 +9,7 @@
9
  ABOUT
10
  This PHP script will use for conversion of currency.
11
  you can find it is tricky but it is usefull.
12
-
13
  Modified by Brian Barnes to change from one service that was
14
  not meant to be used from automated purposes to another that
15
  had no such restriction
@@ -20,7 +20,7 @@
20
  var $_amt=1;
21
  var $_to="";
22
  var $_from="";
23
- var $_error="";
24
  function CURRENCYCONVERTER($amt=1,$to="",$from="")
25
  {
26
  $this->_amt=$amt;
@@ -31,26 +31,27 @@
31
  {
32
  return $this->_error;
33
  }
34
-
35
  /**
36
  * Given all details converts currency amount
37
- *
38
  * @param $amt double
39
  * The amount to convert.
40
- *
41
  * @param $to string
42
  * The currency you wish to convert to.
43
- *
44
  * @param $from string
45
  * The currency you are converting from.
46
  */
47
  function convert($amt = NULL, $to = "", $from = ""){
48
-
49
  $amount = urlencode(round($amt,2));
50
  $from_Currency = urlencode($from);
51
  $to_Currency = urlencode($to);
52
-
53
  $url = "http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency";
 
54
  $ch = curl_init();
55
  $timeout = 0;
56
  curl_setopt ($ch, CURLOPT_URL, $url);
@@ -61,13 +62,12 @@
61
  if(empty($rawdata)){
62
  throw new Exception('unable to connect to currency conversion service ');
63
  }
64
-
65
- $data = explode('"', $rawdata);
66
- $data = explode(' ', $data['3']);
67
- $var = $data['0'];
68
- $var = round($var,2);
69
- return $var;
70
-
71
  }
72
  }
73
  ?>
1
  <?php
2
+
3
  /*
4
+ CURRENCYCONVERTER
5
  Date - Feb 23,2005
6
  Author - Harish Chauhan
7
  Email - harishc@ultraglobal.biz
9
  ABOUT
10
  This PHP script will use for conversion of currency.
11
  you can find it is tricky but it is usefull.
12
+
13
  Modified by Brian Barnes to change from one service that was
14
  not meant to be used from automated purposes to another that
15
  had no such restriction
20
  var $_amt=1;
21
  var $_to="";
22
  var $_from="";
23
+ var $_error="";
24
  function CURRENCYCONVERTER($amt=1,$to="",$from="")
25
  {
26
  $this->_amt=$amt;
31
  {
32
  return $this->_error;
33
  }
34
+
35
  /**
36
  * Given all details converts currency amount
37
+ *
38
  * @param $amt double
39
  * The amount to convert.
40
+ *
41
  * @param $to string
42
  * The currency you wish to convert to.
43
+ *
44
  * @param $from string
45
  * The currency you are converting from.
46
  */
47
  function convert($amt = NULL, $to = "", $from = ""){
48
+
49
  $amount = urlencode(round($amt,2));
50
  $from_Currency = urlencode($from);
51
  $to_Currency = urlencode($to);
52
+
53
  $url = "http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency";
54
+
55
  $ch = curl_init();
56
  $timeout = 0;
57
  curl_setopt ($ch, CURLOPT_URL, $url);
62
  if(empty($rawdata)){
63
  throw new Exception('unable to connect to currency conversion service ');
64
  }
65
+
66
+ $rawdata = preg_replace( '/(\{|,\s*)([^\s:]+)(\s*:)/', '$1"$2"$3', $rawdata );
67
+ $data = json_decode( $rawdata );
68
+ $to_amount = round( $data->rhs, 2 );
69
+ return $to_amount;
70
+
 
71
  }
72
  }
73
  ?>
wpsc-includes/theme.functions.php CHANGED
@@ -280,10 +280,11 @@ function wpsc_get_template_file_url( $file = '' ) {
280
  }
281
  }
282
 
283
- if( is_ssl() && !strstr( $file_url, 'https' ) ) $file_url = str_replace('http', 'https', $file_url);
 
284
 
285
  // Save the transient and update it every 12 hours
286
- if ( !empty( $file_url ) )
287
  set_transient( WPEC_TRANSIENT_THEME_URL_PREFIX . $file, $file_url, 60 * 60 * 12 );
288
  }
289
 
@@ -1008,7 +1009,7 @@ function wpsc_products_page( $content = '' ) {
1008
  $GLOBALS['nzshpcrt_activateshpcrt'] = true;
1009
 
1010
  // get the display type for the productspage
1011
- $display_type = get_option('product_view');
1012
  if ( isset( $_SESSION['wpsc_display_type'] ) )
1013
  $display_type = $_SESSION['wpsc_display_type'];
1014
 
280
  }
281
  }
282
 
283
+ if ( wpsc_is_ssl() || ( is_ssl() && ! strstr( $file_url, 'https://' ) ) )
284
+ $file_url = str_replace('http://', 'https://', $file_url);
285
 
286
  // Save the transient and update it every 12 hours
287
+ if ( ! empty( $file_url ) )
288
  set_transient( WPEC_TRANSIENT_THEME_URL_PREFIX . $file, $file_url, 60 * 60 * 12 );
289
  }
290
 
1009
  $GLOBALS['nzshpcrt_activateshpcrt'] = true;
1010
 
1011
  // get the display type for the productspage
1012
+ $display_type = wpsc_check_display_type();
1013
  if ( isset( $_SESSION['wpsc_display_type'] ) )
1014
  $display_type = $_SESSION['wpsc_display_type'];
1015
 
wpsc-merchants/paypal-express.merchant.php CHANGED
@@ -328,7 +328,7 @@ class wpsc_merchant_paypal_express extends wpsc_merchant {
328
  }
329
  }
330
 
331
- return $this->format_price( $amt / $this->rate );
332
  }
333
 
334
  function get_local_currency_code() {
@@ -381,7 +381,7 @@ function wpsc_paypal_express_convert( $amt ) {
381
  }
382
  }
383
 
384
- return wpsc_paypal_express_format( $amt / $rate );
385
  }
386
 
387
  function wpsc_paypal_express_format( $price ) {
328
  }
329
  }
330
 
331
+ return $this->format_price( $amt * $this->rate );
332
  }
333
 
334
  function get_local_currency_code() {
381
  }
382
  }
383
 
384
+ return wpsc_paypal_express_format( $amt * $rate );
385
  }
386
 
387
  function wpsc_paypal_express_format( $price ) {
wpsc-merchants/paypal-pro.merchant.php CHANGED
@@ -365,7 +365,7 @@ class wpsc_merchant_paypal_pro extends wpsc_merchant {
365
  }
366
  }
367
 
368
- return $this->format_price( $amt / $this->rate );
369
  }
370
 
371
  }
365
  }
366
  }
367
 
368
+ return $this->format_price( $amt * $this->rate );
369
  }
370
 
371
  }
wpsc-merchants/paypal-standard.merchant.php CHANGED
@@ -69,7 +69,7 @@ class wpsc_merchant_paypal_standard extends wpsc_merchant {
69
  $this->rate = $curr->convert( 1, $paypal_currency_code, $local_currency_code );
70
  }
71
  }
72
- return $this->format_price( $amt / $this->rate );
73
  }
74
 
75
  function get_local_currency_code() {
69
  $this->rate = $curr->convert( 1, $paypal_currency_code, $local_currency_code );
70
  }
71
  }
72
+ return $this->format_price( $amt * $this->rate );
73
  }
74
 
75
  function get_local_currency_code() {