WP eCommerce - Version 3.8.9.2

Version Description

  • Fix: Admin cannot download file from product edit page.
  • Fix: Compatibility issues with Jetpack.
  • Fix: Google Analytics is printed out even when it's not active. Also, PHP notice when the product doesn't have a category.
  • Fix: Make sure PayPal Standard works with 100% discount.
  • Fix: Product page title is not properly replaced with the category or tag title in WP 3.5.
  • Fix: Products are sometimes displayed even when products page is set to only display list of categories.
  • Fix: Products thumbnail sizes are inconsistent with the settings.
  • Fix: Properly flush outdated customer meta from the transient table.
  • Fix: Typo in wpsc_cart::update_location().
  • Fix: Wrong class attribute for price display.
Download this release

Release Info

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

Code changes from version 3.8.9.1 to 3.8.9.2

Files changed (162) hide show
  1. images/cc.gif +0 -0
  2. images/google_checkout.gif +0 -0
  3. images/paypal.gif +0 -0
  4. readme.txt +13 -1
  5. screenshot-1.png +0 -0
  6. screenshot-2.png +0 -0
  7. screenshot-3.png +0 -0
  8. screenshot-4.png +0 -0
  9. wp-shopping-cart.php +1 -1
  10. wpsc-admin/admin-form-functions.php +0 -0
  11. wpsc-admin/admin.php +0 -0
  12. wpsc-admin/ajax-and-init.php +0 -0
  13. wpsc-admin/ajax.php +0 -0
  14. wpsc-admin/css/admin.css +1 -1
  15. wpsc-admin/css/arrows.png +0 -0
  16. wpsc-admin/css/loading-small.gif +0 -0
  17. wpsc-admin/css/plus-minus.png +0 -0
  18. wpsc-admin/db-upgrades/routines/1.php +0 -0
  19. wpsc-admin/db-upgrades/routines/2.php +0 -0
  20. wpsc-admin/db-upgrades/routines/3.php +0 -0
  21. wpsc-admin/db-upgrades/upgrade.php +0 -0
  22. wpsc-admin/db-upgrades/views/main.php +0 -0
  23. wpsc-admin/display-coupons.php +0 -0
  24. wpsc-admin/display-update.page.php +0 -0
  25. wpsc-admin/includes/display-items-functions.php +0 -0
  26. wpsc-admin/includes/product-functions.php +0 -0
  27. wpsc-admin/includes/product-variation-list-table.class.php +0 -0
  28. wpsc-admin/includes/product-variations-manage.page.php +0 -0
  29. wpsc-admin/includes/product-variations-page.class.php +0 -0
  30. wpsc-admin/includes/product-variations-setup.page.php +0 -0
  31. wpsc-admin/includes/product-variations.page.php +0 -0
  32. wpsc-admin/includes/products.php +0 -0
  33. wpsc-admin/includes/purchase-log-list-table-class.php +0 -0
  34. wpsc-admin/includes/purchase-logs-page/bulk-delete-confirm.php +0 -0
  35. wpsc-admin/includes/purchase-logs-page/item-details.php +0 -0
  36. wpsc-admin/includes/purchase-logs-page/list-table.php +0 -0
  37. wpsc-admin/includes/purchase-logs-page/packing-slip.php +0 -0
  38. wpsc-admin/includes/settings-tabs/admin.php +0 -0
  39. wpsc-admin/includes/settings-tabs/checkout.php +0 -0
  40. wpsc-admin/includes/settings-tabs/gateway.php +0 -0
  41. wpsc-admin/includes/settings-tabs/general.php +0 -0
  42. wpsc-admin/includes/settings-tabs/import.php +0 -0
  43. wpsc-admin/includes/settings-tabs/marketing.php +0 -0
  44. wpsc-admin/includes/settings-tabs/presentation.php +0 -0
  45. wpsc-admin/includes/settings-tabs/shipping.php +0 -0
  46. wpsc-admin/includes/settings-tabs/taxes.php +0 -0
  47. wpsc-admin/includes/updating-functions.php +0 -0
  48. wpsc-admin/includes/walker-variation-checklist.php +0 -0
  49. wpsc-admin/init.php +5 -1
  50. wpsc-admin/js/product-variations.js +0 -0
  51. wpsc-admin/js/purchase-logs.js +0 -0
  52. wpsc-admin/js/set-post-thumbnail.js +0 -0
  53. wpsc-admin/js/settings-page.js +0 -0
  54. wpsc-admin/js/sortable-table.js +0 -0
  55. wpsc-admin/settings-page.php +0 -0
  56. wpsc-core/images/border.png +0 -0
  57. wpsc-core/images/controls.png +0 -0
  58. wpsc-core/images/credit_cards.png +0 -0
  59. wpsc-core/images/drag.png +0 -0
  60. wpsc-core/images/icon32.png +0 -0
  61. wpsc-core/images/loading_background.png +0 -0
  62. wpsc-core/images/menu-bits.gif +0 -0
  63. wpsc-core/images/mobile.png +0 -0
  64. wpsc-core/images/overlay.png +0 -0
  65. wpsc-core/images/social_networking/facebook.png +0 -0
  66. wpsc-core/images/toolbar.png +0 -0
  67. wpsc-core/js/jquery.infieldlabel.min.js +0 -0
  68. wpsc-core/js/tinymce3/credit_cards.png +0 -0
  69. wpsc-core/js/tinymce3/productspage.jpg +0 -0
  70. wpsc-core/js/wpsc_colorbox.css +0 -0
  71. wpsc-core/wpsc-constants.php +3 -3
  72. wpsc-core/wpsc-deprecated.php +0 -0
  73. wpsc-core/wpsc-functions.php +0 -0
  74. wpsc-core/wpsc-includes.php +0 -0
  75. wpsc-core/wpsc-installer.php +0 -0
  76. wpsc-includes/ajax.functions.php +44 -37
  77. wpsc-includes/breadcrumbs.class.php +0 -0
  78. wpsc-includes/cart.class.php +1 -1
  79. wpsc-includes/checkout-form-data.class.php +0 -0
  80. wpsc-includes/checkout.class.php +0 -0
  81. wpsc-includes/country.class.php +0 -0
  82. wpsc-includes/coupons.class.php +0 -0
  83. wpsc-includes/cron.php +14 -0
  84. wpsc-includes/currency.helpers.php +0 -0
  85. wpsc-includes/form-display.functions.php +18 -1
  86. wpsc-includes/google-analytics.class.php +26 -22
  87. wpsc-includes/product-template.php +16 -13
  88. wpsc-includes/productfeed.php +0 -0
  89. wpsc-includes/purchase-log-notification.class.php +0 -0
  90. wpsc-includes/purchase-log.class.php +0 -0
  91. wpsc-includes/purchase-log.helpers.php +0 -0
  92. wpsc-includes/theme.functions.php +40 -22
  93. wpsc-includes/theming.class.php +0 -0
  94. wpsc-languages/EN_en.php +0 -0
  95. wpsc-languages/wpsc-cs_CS.mo +0 -0
  96. wpsc-languages/wpsc-cs_CS.po +0 -0
  97. wpsc-languages/wpsc-cs_CZ.mo +0 -0
  98. wpsc-languages/wpsc-cs_CZ.po +0 -0
  99. wpsc-languages/wpsc-da_DK.mo +0 -0
  100. wpsc-languages/wpsc-da_DK.po +0 -0
  101. wpsc-languages/wpsc-de_DE.mo +0 -0
  102. wpsc-languages/wpsc-de_DE.po +0 -0
  103. wpsc-languages/wpsc-es_ES.mo +0 -0
  104. wpsc-languages/wpsc-es_ES.po +0 -0
  105. wpsc-languages/wpsc-et.mo +0 -0
  106. wpsc-languages/wpsc-et.po +0 -0
  107. wpsc-languages/wpsc-fi.mo +0 -0
  108. wpsc-languages/wpsc-fi.po +0 -0
  109. wpsc-languages/wpsc-fr_FR.mo +0 -0
  110. wpsc-languages/wpsc-fr_FR.po +0 -0
  111. wpsc-languages/wpsc-hr_HR.mo +0 -0
  112. wpsc-languages/wpsc-hr_HR.po +0 -0
  113. wpsc-languages/wpsc-hu_HU.mo +0 -0
  114. wpsc-languages/wpsc-hu_HU.po +0 -0
  115. wpsc-languages/wpsc-id_ID.mo +0 -0
  116. wpsc-languages/wpsc-id_ID.po +0 -0
  117. wpsc-languages/wpsc-it_IT.mo +0 -0
  118. wpsc-languages/wpsc-it_IT.po +0 -0
  119. wpsc-languages/wpsc-ja.mo +0 -0
  120. wpsc-languages/wpsc-ja.po +0 -0
  121. wpsc-languages/wpsc-lt_LT.mo +0 -0
  122. wpsc-languages/wpsc-lt_LT.po +0 -0
  123. wpsc-languages/wpsc-nb_NO.mo +0 -0
  124. wpsc-languages/wpsc-nb_NO.po +0 -0
  125. wpsc-languages/wpsc-nl_NL.mo +0 -0
  126. wpsc-languages/wpsc-nl_NL.po +0 -0
  127. wpsc-languages/wpsc-nn_NO.mo +0 -0
  128. wpsc-languages/wpsc-nn_NO.po +0 -0
  129. wpsc-languages/wpsc-pt_BR.mo +0 -0
  130. wpsc-languages/wpsc-pt_BR.po +0 -0
  131. wpsc-languages/wpsc-ru_RU.mo +0 -0
  132. wpsc-languages/wpsc-ru_RU.po +0 -0
  133. wpsc-languages/wpsc-sv_SE.mo +0 -0
  134. wpsc-languages/wpsc-sv_SE.po +0 -0
  135. wpsc-languages/wpsc-tr.mo +0 -0
  136. wpsc-languages/wpsc-tr.po +0 -0
  137. wpsc-languages/wpsc-zh_ZH.mo +0 -0
  138. wpsc-languages/wpsc-zh_ZH.po +0 -0
  139. wpsc-languages/wpsc.pot +0 -0
  140. wpsc-merchants/paypal-standard.merchant.php +11 -3
  141. wpsc-merchants/testmode.merchant.php +0 -0
  142. wpsc-shipping/australiapost.php +0 -0
  143. wpsc-shipping/shipwire.php +0 -0
  144. wpsc-taxes/controllers/taxes_controller.class.php +0 -0
  145. wpsc-taxes/models/taxes.class.php +0 -0
  146. wpsc-taxes/taxes_module.php +0 -0
  147. wpsc-theme/functions/wpsc-transaction_results_functions.php +0 -0
  148. wpsc-theme/functions/wpsc-user_log_functions.php +0 -0
  149. wpsc-theme/wpsc-cart_widget.php +0 -0
  150. wpsc-theme/wpsc-category-list.php +0 -0
  151. wpsc-theme/wpsc-category_widget.php +0 -0
  152. wpsc-theme/wpsc-default.css +0 -0
  153. wpsc-theme/wpsc-featured_product.php +0 -0
  154. wpsc-theme/wpsc-grid_view.php +0 -0
  155. wpsc-theme/wpsc-images/bulletpoint.gif +0 -0
  156. wpsc-theme/wpsc-images/yes_stock.png +0 -0
  157. wpsc-theme/wpsc-list_view.php +0 -0
  158. wpsc-theme/wpsc-products_page.php +0 -0
  159. wpsc-theme/wpsc-shopping_cart_page.php +0 -0
  160. wpsc-theme/wpsc-single_product.php +1 -1
  161. wpsc-theme/wpsc-transaction_results.php +0 -0
  162. wpsc-theme/wpsc-user-log.php +0 -0
images/cc.gif CHANGED
File without changes
images/google_checkout.gif CHANGED
File without changes
images/paypal.gif CHANGED
File without changes
readme.txt CHANGED
@@ -4,7 +4,7 @@ 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.4.2
7
- Stable tag: 3.8.9
8
 
9
  WP e-Commerce is a free WordPress Shopping Cart Plugin that lets customers buy your products, services and digital downloads online.
10
 
@@ -155,6 +155,18 @@ Before updating please make a backup of your existing files and database. Just i
155
  After upgrading from earlier versions look for link "Update Store". This will update your database structure to work with new version.
156
 
157
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
158
  = 3.8.9.1 =
159
  * Fix: Fatal error in Shipwire.
160
  * Fix: Fatal error with customer meta on multisite.
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.4.2
7
+ Stable tag: 3.8.9.2
8
 
9
  WP e-Commerce is a free WordPress Shopping Cart Plugin that lets customers buy your products, services and digital downloads online.
10
 
155
  After upgrading from earlier versions look for link "Update Store". This will update your database structure to work with new version.
156
 
157
  == Changelog ==
158
+ = 3.8.9.2 =
159
+ * Fix: Admin cannot download file from product edit page.
160
+ * Fix: Compatibility issues with Jetpack.
161
+ * Fix: Google Analytics is printed out even when it's not active. Also, PHP notice when the product doesn't have a category.
162
+ * Fix: Make sure PayPal Standard works with 100% discount.
163
+ * Fix: Product page title is not properly replaced with the category or tag title in WP 3.5.
164
+ * Fix: Products are sometimes displayed even when products page is set to only display list of categories.
165
+ * Fix: Products thumbnail sizes are inconsistent with the settings.
166
+ * Fix: Properly flush outdated customer meta from the transient table.
167
+ * Fix: Typo in wpsc_cart::update_location().
168
+ * Fix: Wrong class attribute for price display.
169
+
170
  = 3.8.9.1 =
171
  * Fix: Fatal error in Shipwire.
172
  * Fix: Fatal error with customer meta on multisite.
screenshot-1.png CHANGED
File without changes
screenshot-2.png CHANGED
File without changes
screenshot-3.png CHANGED
File without changes
screenshot-4.png CHANGED
File without changes
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.9.1
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.9.2
7
  * Author: Instinct Entertainment
8
  * Author URI: http://getshopped.org/
9
  **/
wpsc-admin/admin-form-functions.php CHANGED
File without changes
wpsc-admin/admin.php CHANGED
File without changes
wpsc-admin/ajax-and-init.php CHANGED
File without changes
wpsc-admin/ajax.php CHANGED
File without changes
wpsc-admin/css/admin.css CHANGED
@@ -272,7 +272,7 @@ table.widefat .column-cb {
272
  #wpsc_product_list .column-image, #wpsc_product_list .product-image,
273
  table.widefat .column-image, table.widefat .product-image {
274
  padding-right: 0px;
275
- /* width: 42px; */
276
  }
277
 
278
  #wpsc_product_list .column-categories,
272
  #wpsc_product_list .column-image, #wpsc_product_list .product-image,
273
  table.widefat .column-image, table.widefat .product-image {
274
  padding-right: 0px;
275
+ width: 42px;
276
  }
277
 
278
  #wpsc_product_list .column-categories,
wpsc-admin/css/arrows.png CHANGED
File without changes
wpsc-admin/css/loading-small.gif CHANGED
File without changes
wpsc-admin/css/plus-minus.png CHANGED
File without changes
wpsc-admin/db-upgrades/routines/1.php CHANGED
File without changes
wpsc-admin/db-upgrades/routines/2.php CHANGED
File without changes
wpsc-admin/db-upgrades/routines/3.php CHANGED
File without changes
wpsc-admin/db-upgrades/upgrade.php CHANGED
File without changes
wpsc-admin/db-upgrades/views/main.php CHANGED
File without changes
wpsc-admin/display-coupons.php CHANGED
File without changes
wpsc-admin/display-update.page.php CHANGED
File without changes
wpsc-admin/includes/display-items-functions.php CHANGED
File without changes
wpsc-admin/includes/product-functions.php CHANGED
File without changes
wpsc-admin/includes/product-variation-list-table.class.php CHANGED
File without changes
wpsc-admin/includes/product-variations-manage.page.php CHANGED
File without changes
wpsc-admin/includes/product-variations-page.class.php CHANGED
File without changes
wpsc-admin/includes/product-variations-setup.page.php CHANGED
File without changes
wpsc-admin/includes/product-variations.page.php CHANGED
File without changes
wpsc-admin/includes/products.php CHANGED
File without changes
wpsc-admin/includes/purchase-log-list-table-class.php CHANGED
File without changes
wpsc-admin/includes/purchase-logs-page/bulk-delete-confirm.php CHANGED
File without changes
wpsc-admin/includes/purchase-logs-page/item-details.php CHANGED
File without changes
wpsc-admin/includes/purchase-logs-page/list-table.php CHANGED
File without changes
wpsc-admin/includes/purchase-logs-page/packing-slip.php CHANGED
File without changes
wpsc-admin/includes/settings-tabs/admin.php CHANGED
File without changes
wpsc-admin/includes/settings-tabs/checkout.php CHANGED
File without changes
wpsc-admin/includes/settings-tabs/gateway.php CHANGED
File without changes
wpsc-admin/includes/settings-tabs/general.php CHANGED
File without changes
wpsc-admin/includes/settings-tabs/import.php CHANGED
File without changes
wpsc-admin/includes/settings-tabs/marketing.php CHANGED
File without changes
wpsc-admin/includes/settings-tabs/presentation.php CHANGED
File without changes
wpsc-admin/includes/settings-tabs/shipping.php CHANGED
File without changes
wpsc-admin/includes/settings-tabs/taxes.php CHANGED
File without changes
wpsc-admin/includes/updating-functions.php CHANGED
File without changes
wpsc-admin/includes/walker-variation-checklist.php CHANGED
File without changes
wpsc-admin/init.php CHANGED
@@ -299,7 +299,11 @@ function wpsc_purchlog_clear_download_items() {
299
  $email_address = $wpdb->get_var( "SELECT `value` FROM `" . WPSC_TABLE_SUBMITED_FORM_DATA . "` WHERE `log_id`='{$purchase_id}' AND `form_id` = '{$email_form_field}' LIMIT 1" );
300
 
301
  foreach ( (array)$downloadable_items as $downloadable_item ) {
302
- $download_links .= $siteurl . "?downloadid=" . $downloadable_item['uniqueid'] . "\n";
 
 
 
 
303
  }
304
 
305
 
299
  $email_address = $wpdb->get_var( "SELECT `value` FROM `" . WPSC_TABLE_SUBMITED_FORM_DATA . "` WHERE `log_id`='{$purchase_id}' AND `form_id` = '{$email_form_field}' LIMIT 1" );
300
 
301
  foreach ( (array)$downloadable_items as $downloadable_item ) {
302
+ $download_links .= add_query_arg(
303
+ 'downloadid',
304
+ $downloadable_item['uniqueid'],
305
+ home_url()
306
+ ) . "\n";
307
  }
308
 
309
 
wpsc-admin/js/product-variations.js CHANGED
File without changes
wpsc-admin/js/purchase-logs.js CHANGED
File without changes
wpsc-admin/js/set-post-thumbnail.js CHANGED
File without changes
wpsc-admin/js/settings-page.js CHANGED
File without changes
wpsc-admin/js/sortable-table.js CHANGED
File without changes
wpsc-admin/settings-page.php CHANGED
File without changes
wpsc-core/images/border.png CHANGED
File without changes
wpsc-core/images/controls.png CHANGED
File without changes
wpsc-core/images/credit_cards.png CHANGED
File without changes
wpsc-core/images/drag.png CHANGED
File without changes
wpsc-core/images/icon32.png CHANGED
File without changes
wpsc-core/images/loading_background.png CHANGED
File without changes
wpsc-core/images/menu-bits.gif CHANGED
File without changes
wpsc-core/images/mobile.png CHANGED
File without changes
wpsc-core/images/overlay.png CHANGED
File without changes
wpsc-core/images/social_networking/facebook.png CHANGED
File without changes
wpsc-core/images/toolbar.png CHANGED
File without changes
wpsc-core/js/jquery.infieldlabel.min.js CHANGED
File without changes
wpsc-core/js/tinymce3/credit_cards.png CHANGED
File without changes
wpsc-core/js/tinymce3/productspage.jpg CHANGED
File without changes
wpsc-core/js/wpsc_colorbox.css CHANGED
File without changes
wpsc-core/wpsc-constants.php CHANGED
@@ -30,9 +30,9 @@ function wpsc_core_constants() {
30
  if(!defined('WPSC_URL'))
31
  define( 'WPSC_URL', plugins_url( '', __FILE__ ) );
32
  // Define Plugin version
33
- define( 'WPSC_VERSION', '3.8.9.1' );
34
- define( 'WPSC_MINOR_VERSION', '622563' );
35
- define( 'WPSC_PRESENTABLE_VERSION', '3.8.9.1' );
36
  define( 'WPSC_DB_VERSION', 3 );
37
 
38
  // Define Debug Variables for developers
30
  if(!defined('WPSC_URL'))
31
  define( 'WPSC_URL', plugins_url( '', __FILE__ ) );
32
  // Define Plugin version
33
+ define( 'WPSC_VERSION', '3.8.9.2' );
34
+ define( 'WPSC_MINOR_VERSION', '625469' );
35
+ define( 'WPSC_PRESENTABLE_VERSION', '3.8.9.2' );
36
  define( 'WPSC_DB_VERSION', 3 );
37
 
38
  // Define Debug Variables for developers
wpsc-core/wpsc-deprecated.php CHANGED
File without changes
wpsc-core/wpsc-functions.php CHANGED
File without changes
wpsc-core/wpsc-includes.php CHANGED
File without changes
wpsc-core/wpsc-installer.php CHANGED
File without changes
wpsc-includes/ajax.functions.php CHANGED
@@ -728,12 +728,14 @@ if ( isset( $_REQUEST['wpsc_action'] ) && ($_REQUEST['wpsc_action'] == 'submit_c
728
  }
729
 
730
  function wpsc_product_rss() {
731
- global $wp_query, $wpsc_query;
732
  list($wp_query, $wpsc_query) = array( $wpsc_query, $wp_query ); // swap the wpsc_query object
 
733
  header( "Content-Type: application/xml; charset=UTF-8" );
734
  header( 'Content-Disposition: inline; filename="E-Commerce_Product_List.rss"' );
735
  require_once(WPSC_FILE_PATH . '/wpsc-includes/rss_template.php');
736
  list($wp_query, $wpsc_query) = array( $wpsc_query, $wp_query ); // swap the wpsc_query object
 
737
  exit();
738
  }
739
 
@@ -1110,49 +1112,54 @@ function wpsc_download_file() {
1110
 
1111
 
1112
  do_action( 'wpsc_alter_download_action', $file_id );
1113
-
1114
-
1115
- $file_path = WPSC_FILE_DIR . basename( $file_data->post_title );
1116
- $file_name = basename( $file_data->post_title );
1117
-
1118
- if ( is_file( $file_path ) ) {
1119
- if( !ini_get('safe_mode') ) set_time_limit(0);
1120
- header( 'Content-Type: ' . $file_data->post_mime_type );
1121
- header( 'Content-Length: ' . filesize( $file_path ) );
1122
- header( 'Content-Transfer-Encoding: binary' );
1123
- header( 'Content-Disposition: attachment; filename="' . $file_name . '"' );
1124
- if ( isset( $_SERVER["HTTPS"] ) && ($_SERVER["HTTPS"] != '') ) {
1125
- /*
1126
- There is a bug in how IE handles downloads from servers using HTTPS, this is part of the fix, you may also need:
1127
- session_cache_limiter('public');
1128
- session_cache_expire(30);
1129
- At the start of your index.php file or before the session is started
1130
- */
1131
- header( "Pragma: public" );
1132
- header( "Expires: 0" );
1133
- header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
1134
- header( "Cache-Control: public" );
1135
- } else {
1136
- header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
1137
- }
1138
- header( "Pragma: public" );
1139
- header( "Expires: 0" );
1140
-
1141
- // destroy the session to allow the file to be downloaded on some buggy browsers and webservers
1142
- session_destroy();
1143
- wpsc_readfile_chunked( $file_path );
1144
- exit();
1145
- }else{
1146
- wp_die(__('Sorry something has gone wrong with your download!', 'wpsc'));
1147
- }
1148
  } else {
1149
  exit( _e( 'This download is no longer valid, Please contact the site administrator for more information.', 'wpsc' ) );
1150
  }
1151
  }
1152
  }
1153
-
1154
  add_action( 'init', 'wpsc_download_file' );
1155
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1156
  function wpsc_shipping_same_as_billing(){
1157
  wpsc_update_customer_meta( 'shipping_same_as_billing', $_POST['wpsc_shipping_same_as_billing'] );
1158
  }
728
  }
729
 
730
  function wpsc_product_rss() {
731
+ global $wp_query, $wpsc_query, $_wpsc_is_in_custom_loop;
732
  list($wp_query, $wpsc_query) = array( $wpsc_query, $wp_query ); // swap the wpsc_query object
733
+ $_wpsc_is_in_custom_loop = true;
734
  header( "Content-Type: application/xml; charset=UTF-8" );
735
  header( 'Content-Disposition: inline; filename="E-Commerce_Product_List.rss"' );
736
  require_once(WPSC_FILE_PATH . '/wpsc-includes/rss_template.php');
737
  list($wp_query, $wpsc_query) = array( $wpsc_query, $wp_query ); // swap the wpsc_query object
738
+ $_wpsc_is_in_custom_loop = false;
739
  exit();
740
  }
741
 
1112
 
1113
 
1114
  do_action( 'wpsc_alter_download_action', $file_id );
1115
+ _wpsc_force_download_file( $file_id );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1116
  } else {
1117
  exit( _e( 'This download is no longer valid, Please contact the site administrator for more information.', 'wpsc' ) );
1118
  }
1119
  }
1120
  }
 
1121
  add_action( 'init', 'wpsc_download_file' );
1122
 
1123
+ function _wpsc_force_download_file( $file_id ) {
1124
+ $file_data = get_post( $file_id );
1125
+ if ( ! $file_data )
1126
+ wp_die( __( 'Invalid file ID.', 'wpsc' ) );
1127
+
1128
+ $file_name = basename( $file_data->post_title );
1129
+ $file_path = WPSC_FILE_DIR . $file_name;
1130
+
1131
+ if ( is_file( $file_path ) ) {
1132
+ if( !ini_get('safe_mode') ) set_time_limit(0);
1133
+ header( 'Content-Type: ' . $file_data->post_mime_type );
1134
+ header( 'Content-Length: ' . filesize( $file_path ) );
1135
+ header( 'Content-Transfer-Encoding: binary' );
1136
+ header( 'Content-Disposition: attachment; filename="' . stripslashes( $file_name ) . '"' );
1137
+ if ( isset( $_SERVER["HTTPS"] ) && ($_SERVER["HTTPS"] != '') ) {
1138
+ /*
1139
+ There is a bug in how IE handles downloads from servers using HTTPS, this is part of the fix, you may also need:
1140
+ session_cache_limiter('public');
1141
+ session_cache_expire(30);
1142
+ At the start of your index.php file or before the session is started
1143
+ */
1144
+ header( "Pragma: public" );
1145
+ header( "Expires: 0" );
1146
+ header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
1147
+ header( "Cache-Control: public" );
1148
+ } else {
1149
+ header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
1150
+ }
1151
+ header( "Pragma: public" );
1152
+ header( "Expires: 0" );
1153
+
1154
+ // destroy the session to allow the file to be downloaded on some buggy browsers and webservers
1155
+ session_destroy();
1156
+ wpsc_readfile_chunked( $file_path );
1157
+ exit();
1158
+ }else{
1159
+ wp_die(__('Sorry something has gone wrong with your download!', 'wpsc'));
1160
+ }
1161
+ }
1162
+
1163
  function wpsc_shipping_same_as_billing(){
1164
  wpsc_update_customer_meta( 'shipping_same_as_billing', $_POST['wpsc_shipping_same_as_billing'] );
1165
  }
wpsc-includes/breadcrumbs.class.php CHANGED
File without changes
wpsc-includes/cart.class.php CHANGED
@@ -634,7 +634,7 @@ class wpsc_cart {
634
 
635
  wpsc_update_customer_meta( 'shipping_country', $delivery_country );
636
  wpsc_update_customer_meta( 'billing_country' , $billing_country );
637
- wpsc_update_customer_meta( 'delivery_region' , $delivery_region );
638
  wpsc_update_customer_meta( 'billing_region' , $billing_region );
639
 
640
  $this->delivery_country = $delivery_country;
634
 
635
  wpsc_update_customer_meta( 'shipping_country', $delivery_country );
636
  wpsc_update_customer_meta( 'billing_country' , $billing_country );
637
+ wpsc_update_customer_meta( 'shipping_region' , $delivery_region );
638
  wpsc_update_customer_meta( 'billing_region' , $billing_region );
639
 
640
  $this->delivery_country = $delivery_country;
wpsc-includes/checkout-form-data.class.php CHANGED
File without changes
wpsc-includes/checkout.class.php CHANGED
File without changes
wpsc-includes/country.class.php CHANGED
File without changes
wpsc-includes/coupons.class.php CHANGED
File without changes
wpsc-includes/cron.php CHANGED
@@ -1,5 +1,7 @@
1
  <?php
2
  add_action( 'wpsc_hourly_cron_task', 'wpsc_clear_stock_claims' );
 
 
3
  /**
4
  * wpsc_clear_stock_claims, clears the stock claims, runs using wp-cron and when editing purchase log statuses via the dashboard
5
  */
@@ -21,3 +23,15 @@ function wpsc_clear_stock_claims() {
21
  $sql = $wpdb->prepare( "DELETE FROM " . WPSC_TABLE_CLAIMED_STOCK . " WHERE last_activity < UTC_TIMESTAMP() - INTERVAL %d SECOND", $seconds );
22
  $wpdb->query( $sql );
23
  }
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
  add_action( 'wpsc_hourly_cron_task', 'wpsc_clear_stock_claims' );
3
+ add_action( 'wpsc_hourly_cron_task', '_wpsc_clear_customer_meta' );
4
+
5
  /**
6
  * wpsc_clear_stock_claims, clears the stock claims, runs using wp-cron and when editing purchase log statuses via the dashboard
7
  */
23
  $sql = $wpdb->prepare( "DELETE FROM " . WPSC_TABLE_CLAIMED_STOCK . " WHERE last_activity < UTC_TIMESTAMP() - INTERVAL %d SECOND", $seconds );
24
  $wpdb->query( $sql );
25
  }
26
+
27
+ function _wpsc_clear_customer_meta() {
28
+ global $wpdb;
29
+
30
+ $sql = $wpdb->prepare( "SELECT option_name FROM " . $wpdb->options . " WHERE option_name LIKE '_transient_timeout_wpsc_customer_meta_%%' AND option_value < %d", time() );
31
+ $results = $wpdb->get_col( $sql );
32
+
33
+ foreach ( $results as $row ) {
34
+ $customer_id = str_replace( '_transient_timeout_wpsc_customer_meta_', '', $row );
35
+ delete_transient( "wpsc_customer_meta_{$customer_id}" );
36
+ }
37
+ }
wpsc-includes/currency.helpers.php CHANGED
File without changes
wpsc-includes/form-display.functions.php CHANGED
@@ -179,7 +179,13 @@ function wpsc_select_product_file( $product_id = null ) {
179
  $file_dir = WPSC_FILE_DIR . $file->post_title;
180
  $file_size = ( 'http://s3file' == $file->guid ) ? __( 'Remote file sizes cannot be calculated', 'wpsc' ) : wpsc_convert_byte( filesize( $file_dir ) );
181
 
182
- $file_url = WPSC_FILE_URL.$file->post_title;
 
 
 
 
 
 
183
  $deletion_url = wp_nonce_url( "admin.php?wpsc_admin_action=delete_file&amp;file_name={$file->post_title}&amp;product_id={$product_id}&amp;row_number={$num}", 'delete_file_' . $file->post_title );
184
 
185
  $class = ( ! wpsc_is_odd( $num ) ) ? 'alternate' : '';
@@ -210,6 +216,17 @@ function wpsc_select_product_file( $product_id = null ) {
210
  return $output;
211
  }
212
 
 
 
 
 
 
 
 
 
 
 
 
213
  function wpsc_select_variation_file( $file_id, $variation_ids, $variation_combination_id = null ) {
214
  global $wpdb;
215
  $file_list = wpsc_uploaded_files();
179
  $file_dir = WPSC_FILE_DIR . $file->post_title;
180
  $file_size = ( 'http://s3file' == $file->guid ) ? __( 'Remote file sizes cannot be calculated', 'wpsc' ) : wpsc_convert_byte( filesize( $file_dir ) );
181
 
182
+ $file_url = add_query_arg(
183
+ array(
184
+ 'wpsc_download_id' => $file->ID,
185
+ '_wpnonce' => wp_create_nonce( 'wpsc-admin-download-file-' . $file->ID ),
186
+ ),
187
+ admin_url()
188
+ );
189
  $deletion_url = wp_nonce_url( "admin.php?wpsc_admin_action=delete_file&amp;file_name={$file->post_title}&amp;product_id={$product_id}&amp;row_number={$num}", 'delete_file_' . $file->post_title );
190
 
191
  $class = ( ! wpsc_is_odd( $num ) ) ? 'alternate' : '';
216
  return $output;
217
  }
218
 
219
+ function _wpsc_admin_download_file() {
220
+ $file_id = $_REQUEST['wpsc_download_id'];
221
+ check_admin_referer( 'wpsc-admin-download-file-' . $file_id );
222
+
223
+ $file_data = get_post( $file_id );
224
+ _wpsc_force_download_file( $file_id );
225
+ }
226
+
227
+ if ( ! empty( $_REQUEST['wpsc_download_id'] ) )
228
+ add_action( 'admin_init', '_wpsc_admin_download_file' );
229
+
230
  function wpsc_select_variation_file( $file_id, $variation_ids, $variation_combination_id = null ) {
231
  global $wpdb;
232
  $file_list = wpsc_uploaded_files();
wpsc-includes/google-analytics.class.php CHANGED
@@ -1,37 +1,38 @@
1
  <?php
2
 
3
  /**
4
- *
5
  * Google Analytics class for WP E-Commerce.
6
- *
7
  * No longer dependent upon Google Analytics for WordPress, we have a great internal analytics class that actually works now.
8
- *
9
  * @since 3.8.9
10
  * @package wp-e-commerce
11
- */
12
  class WPSC_Google_Analytics {
13
 
14
  private $is_analytics_disabled = false;
15
  private $is_theme_tracking = false;
16
  private $advanced_code = false;
17
- private $tracking_id = '';
18
 
19
  public function __construct() {
20
-
21
- $this->is_analytics_disabled = (bool) get_option( 'wpsc_ga_disable_tracking' );
22
  $this->is_theme_tracking = (bool) get_option( 'wpsc_ga_currently_tracking' );
23
  $this->advanced_code = (bool) get_option( 'wpsc_ga_advanced' );
24
  $this->tracking_id = esc_attr( get_option( 'wpsc_ga_tracking_id' ) );
 
 
 
25
 
26
- add_action( 'wpsc_transaction_results_shutdown', array( $this, 'print_script' ), 10, 2 );
27
-
28
  }
29
 
30
  /**
31
- * Sanitizes strings for Google Analytics.
32
  * Gratefully borrowed and modified from Google Analytics for WordPress
33
- *
34
- * @param string $string
35
  * @since 3.8.9
36
  * @return string
37
  */
@@ -42,11 +43,11 @@ class WPSC_Google_Analytics {
42
 
43
  /**
44
  * Builds out the proper script for tracking.
45
- *
46
  * Checks options to ensure we're actually supposed to be building the script, and which part of the script to build.
47
  * If analytics are disabled, we build nothing.
48
  * If the site already is tracking OR using the advanced option, we insert only the e-commerce portion, not the initial tracking info.
49
- *
50
  * @since 3.8.9
51
  * @return javascript
52
  */
@@ -115,7 +116,7 @@ class WPSC_Google_Analytics {
115
  $output = '';
116
 
117
  $city = $wpdb->get_var( $wpdb->prepare( "
118
- SELECT tf.value FROM " . WPSC_TABLE_SUBMITED_FORM_DATA . " tf
119
  LEFT JOIN " . WPSC_TABLE_CHECKOUT_FORMS . " cf
120
  ON cf.id = tf.form_id
121
  WHERE cf.unique_name = 'billingcity'
@@ -143,9 +144,9 @@ class WPSC_Google_Analytics {
143
 
144
  $cart_items = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM " . WPSC_TABLE_CART_CONTENTS . " WHERE purchaseid = %d", $purchase_id ), ARRAY_A );
145
 
146
- $total_shipping = wpsc_get_total_shipping( $purchase_id );
147
  $total_tax = 0;
148
-
149
  foreach ( $cart_items as $item )
150
  $total_tax += $item['tax_charged'];
151
 
@@ -169,14 +170,17 @@ class WPSC_Google_Analytics {
169
  remove_filter( 'wpsc_toggle_display_currency_code', array( $this, 'remove_currency_and_html' ) );
170
 
171
  foreach( $cart_items as $item ) {
172
-
173
- $category = wp_get_object_terms(
174
- $item['prodid'],
175
- 'wpsc_product_category',
176
  array( 'orderby' => 'count', 'order' => 'DESC', 'fields' => 'all_with_object_id' ) );
177
 
178
  $item['sku'] = get_post_meta( $item['prodid'], '_wpsc_sku', true );
179
- $item['category'] = $category[0]->name;
 
 
 
180
 
181
  $item = array_map( 'wp_specialchars_decode', $item );
182
 
1
  <?php
2
 
3
  /**
4
+ *
5
  * Google Analytics class for WP E-Commerce.
6
+ *
7
  * No longer dependent upon Google Analytics for WordPress, we have a great internal analytics class that actually works now.
8
+ *
9
  * @since 3.8.9
10
  * @package wp-e-commerce
11
+ */
12
  class WPSC_Google_Analytics {
13
 
14
  private $is_analytics_disabled = false;
15
  private $is_theme_tracking = false;
16
  private $advanced_code = false;
17
+ private $tracking_id = '';
18
 
19
  public function __construct() {
 
 
20
  $this->is_theme_tracking = (bool) get_option( 'wpsc_ga_currently_tracking' );
21
  $this->advanced_code = (bool) get_option( 'wpsc_ga_advanced' );
22
  $this->tracking_id = esc_attr( get_option( 'wpsc_ga_tracking_id' ) );
23
+ $this->is_analytics_disabled =
24
+ (bool) get_option( 'wpsc_ga_disable_tracking' )
25
+ || ( ! $this->is_theme_tracking && empty( $this->tracking_id ) );
26
 
27
+ if ( ! $this->is_analytics_disabled )
28
+ add_action( 'wpsc_transaction_results_shutdown', array( $this, 'print_script' ), 10, 2 );
29
  }
30
 
31
  /**
32
+ * Sanitizes strings for Google Analytics.
33
  * Gratefully borrowed and modified from Google Analytics for WordPress
34
+ *
35
+ * @param string $string
36
  * @since 3.8.9
37
  * @return string
38
  */
43
 
44
  /**
45
  * Builds out the proper script for tracking.
46
+ *
47
  * Checks options to ensure we're actually supposed to be building the script, and which part of the script to build.
48
  * If analytics are disabled, we build nothing.
49
  * If the site already is tracking OR using the advanced option, we insert only the e-commerce portion, not the initial tracking info.
50
+ *
51
  * @since 3.8.9
52
  * @return javascript
53
  */
116
  $output = '';
117
 
118
  $city = $wpdb->get_var( $wpdb->prepare( "
119
+ SELECT tf.value FROM " . WPSC_TABLE_SUBMITED_FORM_DATA . " tf
120
  LEFT JOIN " . WPSC_TABLE_CHECKOUT_FORMS . " cf
121
  ON cf.id = tf.form_id
122
  WHERE cf.unique_name = 'billingcity'
144
 
145
  $cart_items = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM " . WPSC_TABLE_CART_CONTENTS . " WHERE purchaseid = %d", $purchase_id ), ARRAY_A );
146
 
147
+ $total_shipping = wpsc_get_total_shipping( $purchase_id );
148
  $total_tax = 0;
149
+
150
  foreach ( $cart_items as $item )
151
  $total_tax += $item['tax_charged'];
152
 
170
  remove_filter( 'wpsc_toggle_display_currency_code', array( $this, 'remove_currency_and_html' ) );
171
 
172
  foreach( $cart_items as $item ) {
173
+
174
+ $category = wp_get_object_terms(
175
+ $item['prodid'],
176
+ 'wpsc_product_category',
177
  array( 'orderby' => 'count', 'order' => 'DESC', 'fields' => 'all_with_object_id' ) );
178
 
179
  $item['sku'] = get_post_meta( $item['prodid'], '_wpsc_sku', true );
180
+ if ( $category )
181
+ $item['category'] = $category[0]->name;
182
+ else
183
+ $item['category'] = '';
184
 
185
  $item = array_map( 'wp_specialchars_decode', $item );
186
 
wpsc-includes/product-template.php CHANGED
@@ -531,17 +531,16 @@ function wpsc_display_categories() {
531
  * @return boolean - true for yes, false for no
532
  */
533
  function wpsc_display_products() {
534
- global $post;
535
  $product_page_id = wpsc_get_the_post_id_by_shortcode('[productspage]');
536
  //we have to display something, if we are not displaying categories, then we must display products
537
  $output = true;
538
- if ( wpsc_display_categories ( ) ) {
539
  if ( get_option( 'wpsc_default_category' ) == 'list' && $post->ID == $product_page_id )
540
  $output = false;
541
 
542
  if ( isset( $_GET['range'] ) || isset( $_GET['category'] ) )
543
  $output = true;
544
-
545
  }
546
  return $output;
547
  }
@@ -1208,7 +1207,7 @@ function _wpsc_regenerate_thumbnail_size( $thumbnail_id, $size ) {
1208
  *
1209
  * @return string - the URL to the thumbnail image
1210
  */
1211
- function wpsc_the_product_thumbnail( $width = null, $height = null, $product_id = 0, $page = 'products-page' ) {
1212
  $thumbnail = false;
1213
 
1214
  $display = wpsc_check_display_type();
@@ -1219,12 +1218,6 @@ function wpsc_the_product_thumbnail( $width = null, $height = null, $product_id
1219
  // Load the product
1220
  $product = get_post( $product_id );
1221
 
1222
- // Load image proportions if none were passed
1223
- if ( ( $width < 10 ) || ( $height < 10 ) ) {
1224
- $width = get_option( 'product_image_width' );
1225
- $height = get_option( 'product_image_height' );
1226
- }
1227
-
1228
  $thumbnail_id = wpsc_the_product_thumbnail_id( $product_id );
1229
 
1230
  // If no thumbnail found for item, get it's parent image (props. TJM)
@@ -1232,7 +1225,17 @@ function wpsc_the_product_thumbnail( $width = null, $height = null, $product_id
1232
  $thumbnail_id = wpsc_the_product_thumbnail_id( $product->post_parent );
1233
  }
1234
 
 
 
 
 
 
 
 
1235
  if ( ! $width && ! $height ) {
 
 
 
1236
  //Overwrite height & width if custom dimensions exist for thumbnail_id
1237
  if ( 'grid' != $display && 'products-page' == $page && isset($thumbnail_id)) {
1238
  $custom_width = get_post_meta( $thumbnail_id, '_wpsc_custom_thumb_w', true );
@@ -1244,6 +1247,7 @@ function wpsc_the_product_thumbnail( $width = null, $height = null, $product_id
1244
  }
1245
  } elseif( $page == 'single' && isset($thumbnail_id)) {
1246
  $custom_thumbnail = get_post_meta( $thumbnail_id, '_wpsc_selected_image_size', true );
 
1247
  if ( ! $custom_thumbnail ) {
1248
  $custom_thumbnail = 'medium-single-product';
1249
  $current_size = image_get_intermediate_size( $thumbnail_id, $custom_thumbnail );
@@ -1258,7 +1262,6 @@ function wpsc_the_product_thumbnail( $width = null, $height = null, $product_id
1258
  )
1259
  _wpsc_regenerate_thumbnail_size( $thumbnail_id, $custom_thumbnail );
1260
  }
1261
-
1262
  $src = wp_get_attachment_image_src( $thumbnail_id, $custom_thumbnail );
1263
 
1264
  if ( !empty( $src ) && is_string( $src[0] ) ) {
@@ -1994,9 +1997,9 @@ function wpsc_the_product_price_display( $args = array() ) {
1994
  $old_price_before = sprintf( $old_price_before, $attributes );
1995
  $old_price_amount_before = sprintf( $old_price_amount_before, esc_attr( $old_price_amount_class ), esc_attr( $old_price_amount_id ) );
1996
 
1997
- $price_class = apply_filters( 'wpsc_the_product_price_display_price_class', esc_attr( $price_class ), $id );
1998
  $price_amount_class = apply_filters( 'wpsc_the_product_price_display_price_amount_class', esc_attr( $price_amount_class ), $id );
1999
- $price_before = sprintf( $price_before, esc_attr( $price_class ) );
2000
  $price_amount_before = sprintf( $price_amount_before, esc_attr( $price_amount_class ), esc_attr( $price_amount_id ) );
2001
 
2002
  $you_save_class = apply_filters( 'wpsc_the_product_price_display_you_save_class', $you_save_class, $id );
531
  * @return boolean - true for yes, false for no
532
  */
533
  function wpsc_display_products() {
534
+ $post = get_queried_object();
535
  $product_page_id = wpsc_get_the_post_id_by_shortcode('[productspage]');
536
  //we have to display something, if we are not displaying categories, then we must display products
537
  $output = true;
538
+ if ( wpsc_display_categories () && $post ) {
539
  if ( get_option( 'wpsc_default_category' ) == 'list' && $post->ID == $product_page_id )
540
  $output = false;
541
 
542
  if ( isset( $_GET['range'] ) || isset( $_GET['category'] ) )
543
  $output = true;
 
544
  }
545
  return $output;
546
  }
1207
  *
1208
  * @return string - the URL to the thumbnail image
1209
  */
1210
+ function wpsc_the_product_thumbnail( $width = null, $height = null, $product_id = 0, $page = false ) {
1211
  $thumbnail = false;
1212
 
1213
  $display = wpsc_check_display_type();
1218
  // Load the product
1219
  $product = get_post( $product_id );
1220
 
 
 
 
 
 
 
1221
  $thumbnail_id = wpsc_the_product_thumbnail_id( $product_id );
1222
 
1223
  // If no thumbnail found for item, get it's parent image (props. TJM)
1225
  $thumbnail_id = wpsc_the_product_thumbnail_id( $product->post_parent );
1226
  }
1227
 
1228
+ if ( ! $page ) {
1229
+ if ( is_single() )
1230
+ $page = 'single';
1231
+ else
1232
+ $page = 'products-page';
1233
+ }
1234
+
1235
  if ( ! $width && ! $height ) {
1236
+ $width = get_option( 'product_image_width' );
1237
+ $height = get_option( 'product_image_height' );
1238
+
1239
  //Overwrite height & width if custom dimensions exist for thumbnail_id
1240
  if ( 'grid' != $display && 'products-page' == $page && isset($thumbnail_id)) {
1241
  $custom_width = get_post_meta( $thumbnail_id, '_wpsc_custom_thumb_w', true );
1247
  }
1248
  } elseif( $page == 'single' && isset($thumbnail_id)) {
1249
  $custom_thumbnail = get_post_meta( $thumbnail_id, '_wpsc_selected_image_size', true );
1250
+
1251
  if ( ! $custom_thumbnail ) {
1252
  $custom_thumbnail = 'medium-single-product';
1253
  $current_size = image_get_intermediate_size( $thumbnail_id, $custom_thumbnail );
1262
  )
1263
  _wpsc_regenerate_thumbnail_size( $thumbnail_id, $custom_thumbnail );
1264
  }
 
1265
  $src = wp_get_attachment_image_src( $thumbnail_id, $custom_thumbnail );
1266
 
1267
  if ( !empty( $src ) && is_string( $src[0] ) ) {
1997
  $old_price_before = sprintf( $old_price_before, $attributes );
1998
  $old_price_amount_before = sprintf( $old_price_amount_before, esc_attr( $old_price_amount_class ), esc_attr( $old_price_amount_id ) );
1999
 
2000
+ $price_class = 'class="' . esc_attr( apply_filters( 'wpsc_the_product_price_display_price_class', esc_attr( $price_class ), $id ) ) . '"';
2001
  $price_amount_class = apply_filters( 'wpsc_the_product_price_display_price_amount_class', esc_attr( $price_amount_class ), $id );
2002
+ $price_before = sprintf( $price_before, $price_class );
2003
  $price_amount_before = sprintf( $price_amount_before, esc_attr( $price_amount_class ), esc_attr( $price_amount_id ) );
2004
 
2005
  $you_save_class = apply_filters( 'wpsc_the_product_price_display_you_save_class', $you_save_class, $id );
wpsc-includes/productfeed.php CHANGED
File without changes
wpsc-includes/purchase-log-notification.class.php CHANGED
File without changes
wpsc-includes/purchase-log.class.php CHANGED
File without changes
wpsc-includes/purchase-log.helpers.php CHANGED
File without changes
wpsc-includes/theme.functions.php CHANGED
@@ -390,7 +390,9 @@ function wpsc_get_the_category_display($slug){
390
  * @return $content with wpsc-single_product content if its a single product
391
  */
392
  function wpsc_single_template( $content ) {
393
- global $wpdb, $post, $wp_query, $wpsc_query;
 
 
394
 
395
  //if we dont belong here exit out straight away
396
  if((!isset($wp_query->is_product)) && !isset($wp_query->query_vars['wpsc_product_category']))return $content;
@@ -406,11 +408,13 @@ function wpsc_single_template( $content ) {
406
  $wpsc_temp_query = new WP_Query( array( 'p' => $wp_query->post->ID , 'post_type' => 'wpsc-product','posts_per_page'=>1, 'preview' => $is_preview ) );
407
 
408
  list( $wp_query, $wpsc_temp_query ) = array( $wpsc_temp_query, $wp_query ); // swap the wpsc_query object
 
409
  ob_start();
410
  include( $single_theme_path );
411
  $content = ob_get_contents();
412
  ob_end_clean();
413
  list( $wp_query, $wpsc_temp_query ) = array( $wpsc_temp_query, $wp_query ); // swap the wpsc_query objects back
 
414
 
415
  }
416
 
@@ -427,6 +431,11 @@ function wpsc_is_viewable_taxonomy(){
427
  return false;
428
  }
429
 
 
 
 
 
 
430
  /**
431
  * Checks and replaces the Page title with the category title if on a category page
432
  * @access public
@@ -438,7 +447,19 @@ function wpsc_is_viewable_taxonomy(){
438
  */
439
  function wpsc_the_category_title($title='', $id=''){
440
  global $wp_query, $wp_current_filter;
441
- $post = get_post($id);
 
 
 
 
 
 
 
 
 
 
 
 
442
 
443
  //if this is paginated products_page
444
  if( $wp_query->in_the_loop && empty($category->name) && isset( $wp_query->query_vars['paged'] ) && $wp_query->query_vars['paged'] && isset( $wp_query->query_vars['page'] ) && $wp_query->query_vars['page'] && 'wpsc-product' == $wp_query->query_vars['post_type']){
@@ -1032,14 +1053,17 @@ function wpsc_include_products_page_template($display_type = 'default'){
1032
 
1033
  //handles replacing the tags in the pages
1034
  function wpsc_products_page( $content = '' ) {
1035
- global $wpdb, $wp_query, $wpsc_query, $wpsc_query_vars;
1036
  $output = '';
 
 
1037
  if ( preg_match( "/\[productspage\]/", $content ) ) {
1038
  global $more;
1039
  $more = 0;
1040
  remove_filter( 'the_content', 'wpautop' );
1041
 
1042
  list($wp_query, $wpsc_query) = array( $wpsc_query, $wp_query ); // swap the wpsc_query object
 
1043
 
1044
  $GLOBALS['nzshpcrt_activateshpcrt'] = true;
1045
 
@@ -1059,6 +1083,7 @@ function wpsc_products_page( $content = '' ) {
1059
  $product_meta = get_post_meta( $product_id, '_wpsc_product_metadata', true );
1060
 
1061
  list($wp_query, $wpsc_query) = array( $wpsc_query, $wp_query ); // swap the wpsc_query objects back
 
1062
  if ( ($is_single == false) || ($product_meta['enable_comments'] == '0') )
1063
  $GLOBALS['post'] = $wp_query->post;
1064
  }
@@ -1114,9 +1139,6 @@ function wpsc_all_products_on_page(){
1114
  if ( ! $template = get_query_template( 'page', $templates ) )
1115
  $template = get_index_template();
1116
 
1117
- if ( is_tax() )
1118
- _wpsc_reset_taxonomy_title();
1119
-
1120
  add_filter( 'thesis_custom_loop', 'wpsc_thesis_compat' );
1121
 
1122
  include( $template );
@@ -1125,20 +1147,6 @@ function wpsc_all_products_on_page(){
1125
  }
1126
  add_action('template_redirect', 'wpsc_all_products_on_page');
1127
 
1128
- function _wpsc_reset_taxonomy_title() {
1129
- global $wp_query;
1130
-
1131
- $term = null;
1132
- if ( is_tax( 'wpsc_product_category' ) ) {
1133
- $term = get_term_by( 'slug', get_query_var( 'wpsc_product_category' ),'wpsc_product_category' );
1134
- } elseif ( is_tax( 'product-tag' ) ) {
1135
- $term = get_term_by( 'slug', get_query_var( 'term' ),'product-tag' );
1136
- }
1137
-
1138
- if ( $term )
1139
- $wp_query->post->post_title = $term->name;
1140
- }
1141
-
1142
  /**
1143
  * wpsc_count_themes_in_uploads_directory, does exactly what the name says
1144
  */
@@ -1161,6 +1169,9 @@ function wpsc_count_themes_in_uploads_directory() {
1161
  }
1162
 
1163
  function wpsc_place_shopping_cart( $content = '' ) {
 
 
 
1164
  if ( preg_match( "/\[shoppingcart\]/", $content ) ) {
1165
  // BEGIN: compatibility fix for outdated theme files still relying on sessions
1166
  $_SESSION['coupon_numbers' ] = wpsc_get_customer_meta( 'coupon' );
@@ -1170,7 +1181,8 @@ function wpsc_place_shopping_cart( $content = '' ) {
1170
  $_SESSION['wpsc_checkout_user_error_messages' ] = wpsc_get_customer_meta( 'registration_error_messages' );
1171
  // END: compatibility fix
1172
  $GLOBALS['nzshpcrt_activateshpcrt'] = true;
1173
- define( 'DONOTCACHEPAGE', true );
 
1174
 
1175
  // call this function to detect conflicts when the cart page is first loaded, otherwise
1176
  // any conflict messages will only be displayed on the next page load
@@ -1193,6 +1205,8 @@ function wpsc_place_shopping_cart( $content = '' ) {
1193
  }
1194
 
1195
  function wpsc_transaction_results( $content = '' ) {
 
 
1196
 
1197
  if ( preg_match( "/\[transactionresults\]/", $content ) ) {
1198
  define( 'DONOTCACHEPAGE', true );
@@ -1208,7 +1222,8 @@ function wpsc_transaction_results( $content = '' ) {
1208
  }
1209
 
1210
  function wpsc_user_log( $content = '' ) {
1211
-
 
1212
  if ( preg_match( "/\[userlog\]/", $content ) ) {
1213
  define( 'DONOTCACHEPAGE', true );
1214
 
@@ -1324,6 +1339,9 @@ add_filter('request', 'wpsc_remove_page_from_query_string');
1324
 
1325
  function add_to_cart_shortcode( $content = '' ) {
1326
  static $fancy_notification_output = false;
 
 
 
1327
  if ( preg_match_all( "/\[add_to_cart=([\d]+)\]/", $content, $matches ) ) {
1328
  foreach ( $matches[1] as $key => $product_id ) {
1329
  $original_string = $matches[0][$key];
390
  * @return $content with wpsc-single_product content if its a single product
391
  */
392
  function wpsc_single_template( $content ) {
393
+ global $wpdb, $post, $wp_query, $wpsc_query, $_wpsc_is_in_custom_loop;
394
+ if ( ! in_the_loop() )
395
+ return $content;
396
 
397
  //if we dont belong here exit out straight away
398
  if((!isset($wp_query->is_product)) && !isset($wp_query->query_vars['wpsc_product_category']))return $content;
408
  $wpsc_temp_query = new WP_Query( array( 'p' => $wp_query->post->ID , 'post_type' => 'wpsc-product','posts_per_page'=>1, 'preview' => $is_preview ) );
409
 
410
  list( $wp_query, $wpsc_temp_query ) = array( $wpsc_temp_query, $wp_query ); // swap the wpsc_query object
411
+ $_wpsc_is_in_custom_loop = true;
412
  ob_start();
413
  include( $single_theme_path );
414
  $content = ob_get_contents();
415
  ob_end_clean();
416
  list( $wp_query, $wpsc_temp_query ) = array( $wpsc_temp_query, $wp_query ); // swap the wpsc_query objects back
417
+ $_wpsc_is_in_custom_loop = false;
418
 
419
  }
420
 
431
  return false;
432
  }
433
 
434
+ function _wpsc_is_in_custom_loop() {
435
+ global $_wpsc_is_in_custom_loop;
436
+ return (bool) $_wpsc_is_in_custom_loop;
437
+ }
438
+
439
  /**
440
  * Checks and replaces the Page title with the category title if on a category page
441
  * @access public
447
  */
448
  function wpsc_the_category_title($title='', $id=''){
449
  global $wp_query, $wp_current_filter;
450
+ if ( ! in_the_loop() || _wpsc_is_in_custom_loop() )
451
+ return $title;
452
+
453
+ $term = null;
454
+ if ( is_tax( 'wpsc_product_category' ) )
455
+ $term = get_term_by( 'slug', get_query_var( 'wpsc_product_category' ),'wpsc_product_category' );
456
+ elseif ( is_tax( 'product-tag' ) )
457
+ $term = get_term_by( 'slug', get_query_var( 'term' ),'product-tag' );
458
+
459
+ if ( $term )
460
+ return $term->name;
461
+
462
+ return $title;
463
 
464
  //if this is paginated products_page
465
  if( $wp_query->in_the_loop && empty($category->name) && isset( $wp_query->query_vars['paged'] ) && $wp_query->query_vars['paged'] && isset( $wp_query->query_vars['page'] ) && $wp_query->query_vars['page'] && 'wpsc-product' == $wp_query->query_vars['post_type']){
1053
 
1054
  //handles replacing the tags in the pages
1055
  function wpsc_products_page( $content = '' ) {
1056
+ global $wpdb, $wp_query, $wpsc_query, $wpsc_query_vars, $_wpsc_is_in_custom_loop;
1057
  $output = '';
1058
+ if ( ! in_the_loop() )
1059
+ return $content;
1060
  if ( preg_match( "/\[productspage\]/", $content ) ) {
1061
  global $more;
1062
  $more = 0;
1063
  remove_filter( 'the_content', 'wpautop' );
1064
 
1065
  list($wp_query, $wpsc_query) = array( $wpsc_query, $wp_query ); // swap the wpsc_query object
1066
+ $_wpsc_is_in_custom_loop = true;
1067
 
1068
  $GLOBALS['nzshpcrt_activateshpcrt'] = true;
1069
 
1083
  $product_meta = get_post_meta( $product_id, '_wpsc_product_metadata', true );
1084
 
1085
  list($wp_query, $wpsc_query) = array( $wpsc_query, $wp_query ); // swap the wpsc_query objects back
1086
+ $_wpsc_is_in_custom_loop = false;
1087
  if ( ($is_single == false) || ($product_meta['enable_comments'] == '0') )
1088
  $GLOBALS['post'] = $wp_query->post;
1089
  }
1139
  if ( ! $template = get_query_template( 'page', $templates ) )
1140
  $template = get_index_template();
1141
 
 
 
 
1142
  add_filter( 'thesis_custom_loop', 'wpsc_thesis_compat' );
1143
 
1144
  include( $template );
1147
  }
1148
  add_action('template_redirect', 'wpsc_all_products_on_page');
1149
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1150
  /**
1151
  * wpsc_count_themes_in_uploads_directory, does exactly what the name says
1152
  */
1169
  }
1170
 
1171
  function wpsc_place_shopping_cart( $content = '' ) {
1172
+ if ( ! in_the_loop() )
1173
+ return $content;
1174
+
1175
  if ( preg_match( "/\[shoppingcart\]/", $content ) ) {
1176
  // BEGIN: compatibility fix for outdated theme files still relying on sessions
1177
  $_SESSION['coupon_numbers' ] = wpsc_get_customer_meta( 'coupon' );
1181
  $_SESSION['wpsc_checkout_user_error_messages' ] = wpsc_get_customer_meta( 'registration_error_messages' );
1182
  // END: compatibility fix
1183
  $GLOBALS['nzshpcrt_activateshpcrt'] = true;
1184
+ if ( ! defined( 'DONOTCACHEPAGE' ) )
1185
+ define( 'DONOTCACHEPAGE', true );
1186
 
1187
  // call this function to detect conflicts when the cart page is first loaded, otherwise
1188
  // any conflict messages will only be displayed on the next page load
1205
  }
1206
 
1207
  function wpsc_transaction_results( $content = '' ) {
1208
+ if ( ! in_the_loop() )
1209
+ return $content;
1210
 
1211
  if ( preg_match( "/\[transactionresults\]/", $content ) ) {
1212
  define( 'DONOTCACHEPAGE', true );
1222
  }
1223
 
1224
  function wpsc_user_log( $content = '' ) {
1225
+ if ( ! in_the_loop() )
1226
+ return $content;
1227
  if ( preg_match( "/\[userlog\]/", $content ) ) {
1228
  define( 'DONOTCACHEPAGE', true );
1229
 
1339
 
1340
  function add_to_cart_shortcode( $content = '' ) {
1341
  static $fancy_notification_output = false;
1342
+ if ( ! in_the_loop() )
1343
+ return $content;
1344
+
1345
  if ( preg_match_all( "/\[add_to_cart=([\d]+)\]/", $content, $matches ) ) {
1346
  foreach ( $matches[1] as $key => $product_id ) {
1347
  $original_string = $matches[0][$key];
wpsc-includes/theming.class.php CHANGED
File without changes
wpsc-languages/EN_en.php CHANGED
File without changes
wpsc-languages/wpsc-cs_CS.mo CHANGED
File without changes
wpsc-languages/wpsc-cs_CS.po CHANGED
File without changes
wpsc-languages/wpsc-cs_CZ.mo CHANGED
File without changes
wpsc-languages/wpsc-cs_CZ.po CHANGED
File without changes
wpsc-languages/wpsc-da_DK.mo CHANGED
File without changes
wpsc-languages/wpsc-da_DK.po CHANGED
File without changes
wpsc-languages/wpsc-de_DE.mo CHANGED
File without changes
wpsc-languages/wpsc-de_DE.po CHANGED
File without changes
wpsc-languages/wpsc-es_ES.mo CHANGED
File without changes
wpsc-languages/wpsc-es_ES.po CHANGED
File without changes
wpsc-languages/wpsc-et.mo CHANGED
File without changes
wpsc-languages/wpsc-et.po CHANGED
File without changes
wpsc-languages/wpsc-fi.mo CHANGED
File without changes
wpsc-languages/wpsc-fi.po CHANGED
File without changes
wpsc-languages/wpsc-fr_FR.mo CHANGED
File without changes
wpsc-languages/wpsc-fr_FR.po CHANGED
File without changes
wpsc-languages/wpsc-hr_HR.mo CHANGED
File without changes
wpsc-languages/wpsc-hr_HR.po CHANGED
File without changes
wpsc-languages/wpsc-hu_HU.mo CHANGED
File without changes
wpsc-languages/wpsc-hu_HU.po CHANGED
File without changes
wpsc-languages/wpsc-id_ID.mo CHANGED
File without changes
wpsc-languages/wpsc-id_ID.po CHANGED
File without changes
wpsc-languages/wpsc-it_IT.mo CHANGED
File without changes
wpsc-languages/wpsc-it_IT.po CHANGED
File without changes
wpsc-languages/wpsc-ja.mo CHANGED
File without changes
wpsc-languages/wpsc-ja.po CHANGED
File without changes
wpsc-languages/wpsc-lt_LT.mo CHANGED
File without changes
wpsc-languages/wpsc-lt_LT.po CHANGED
File without changes
wpsc-languages/wpsc-nb_NO.mo CHANGED
File without changes
wpsc-languages/wpsc-nb_NO.po CHANGED
File without changes
wpsc-languages/wpsc-nl_NL.mo CHANGED
File without changes
wpsc-languages/wpsc-nl_NL.po CHANGED
File without changes
wpsc-languages/wpsc-nn_NO.mo CHANGED
File without changes
wpsc-languages/wpsc-nn_NO.po CHANGED
File without changes
wpsc-languages/wpsc-pt_BR.mo CHANGED
File without changes
wpsc-languages/wpsc-pt_BR.po CHANGED
File without changes
wpsc-languages/wpsc-ru_RU.mo CHANGED
File without changes
wpsc-languages/wpsc-ru_RU.po CHANGED
File without changes
wpsc-languages/wpsc-sv_SE.mo CHANGED
File without changes
wpsc-languages/wpsc-sv_SE.po CHANGED
File without changes
wpsc-languages/wpsc-tr.mo CHANGED
File without changes
wpsc-languages/wpsc-tr.po CHANGED
File without changes
wpsc-languages/wpsc-zh_ZH.mo CHANGED
File without changes
wpsc-languages/wpsc-zh_ZH.po CHANGED
File without changes
wpsc-languages/wpsc.pot CHANGED
File without changes
wpsc-merchants/paypal-standard.merchant.php CHANGED
@@ -105,7 +105,7 @@ class wpsc_merchant_paypal_standard extends wpsc_merchant {
105
  * @return array $paypal_vars The paypal vars
106
  */
107
  function _construct_value_array($aggregate = false) {
108
- global $wpdb;
109
  $paypal_vars = array();
110
  $add_tax = ! wpsc_tax_isincluded();
111
 
@@ -306,8 +306,16 @@ class wpsc_merchant_paypal_standard extends wpsc_merchant {
306
  $tax_total += $cart_row['tax'];
307
  ++$i;
308
  }
309
- if ( $this->cart_data['has_discounts'] && ! $free_shipping )
310
- $paypal_vars['discount_amount_cart'] = $this->convert( $this->cart_data['cart_discount_value'] );
 
 
 
 
 
 
 
 
311
  } else {
312
  $paypal_vars['item_name_'.$i] = __( "Your Shopping Cart", 'wpsc' );
313
  $paypal_vars['amount_'.$i] = $this->convert( $this->cart_data['total_price'] ) - $this->convert( $this->cart_data['base_shipping'] );
105
  * @return array $paypal_vars The paypal vars
106
  */
107
  function _construct_value_array($aggregate = false) {
108
+ global $wpdb, $wpsc_cart;
109
  $paypal_vars = array();
110
  $add_tax = ! wpsc_tax_isincluded();
111
 
306
  $tax_total += $cart_row['tax'];
307
  ++$i;
308
  }
309
+
310
+ if ( $this->cart_data['has_discounts'] && ! $free_shipping ) {
311
+ $subtotal = $wpsc_cart->calculate_subtotal();
312
+ if ( $this->cart_data['cart_discount_value'] >= $wpsc_cart->calculate_subtotal() ) {
313
+ $paypal_vars['discount_amount_cart'] = $this->convert( $subtotal ) - 0.01;
314
+ if ( ! empty( $paypal_vars['handling_cart'] ) )
315
+ $paypal_vars['handling_cart'] -= 0.01;
316
+ }
317
+ }
318
+
319
  } else {
320
  $paypal_vars['item_name_'.$i] = __( "Your Shopping Cart", 'wpsc' );
321
  $paypal_vars['amount_'.$i] = $this->convert( $this->cart_data['total_price'] ) - $this->convert( $this->cart_data['base_shipping'] );
wpsc-merchants/testmode.merchant.php CHANGED
File without changes
wpsc-shipping/australiapost.php CHANGED
File without changes
wpsc-shipping/shipwire.php CHANGED
File without changes
wpsc-taxes/controllers/taxes_controller.class.php CHANGED
File without changes
wpsc-taxes/models/taxes.class.php CHANGED
File without changes
wpsc-taxes/taxes_module.php CHANGED
File without changes
wpsc-theme/functions/wpsc-transaction_results_functions.php CHANGED
File without changes
wpsc-theme/functions/wpsc-user_log_functions.php CHANGED
File without changes
wpsc-theme/wpsc-cart_widget.php CHANGED
File without changes
wpsc-theme/wpsc-category-list.php CHANGED
File without changes
wpsc-theme/wpsc-category_widget.php CHANGED
File without changes
wpsc-theme/wpsc-default.css CHANGED
File without changes
wpsc-theme/wpsc-featured_product.php CHANGED
File without changes
wpsc-theme/wpsc-grid_view.php CHANGED
File without changes
wpsc-theme/wpsc-images/bulletpoint.gif CHANGED
File without changes
wpsc-theme/wpsc-images/yes_stock.png CHANGED
File without changes
wpsc-theme/wpsc-list_view.php CHANGED
File without changes
wpsc-theme/wpsc-products_page.php CHANGED
File without changes
wpsc-theme/wpsc-shopping_cart_page.php CHANGED
File without changes
wpsc-theme/wpsc-single_product.php CHANGED
@@ -30,7 +30,7 @@
30
  <div class="imagecol">
31
  <?php if ( wpsc_the_product_thumbnail() ) : ?>
32
  <a rel="<?php echo wpsc_the_product_title(); ?>" class="<?php echo wpsc_the_product_image_link_classes(); ?>" href="<?php echo esc_url( wpsc_the_product_image() ); ?>">
33
- <img class="product_image" id="product_image_<?php echo wpsc_the_product_id(); ?>" alt="<?php echo wpsc_the_product_title(); ?>" title="<?php echo wpsc_the_product_title(); ?>" src="<?php echo wpsc_the_product_thumbnail(get_option('product_image_width'),get_option('product_image_height'),'','single'); ?>"/>
34
  </a>
35
  <?php
36
  if ( function_exists( 'gold_shpcrt_display_gallery' ) )
30
  <div class="imagecol">
31
  <?php if ( wpsc_the_product_thumbnail() ) : ?>
32
  <a rel="<?php echo wpsc_the_product_title(); ?>" class="<?php echo wpsc_the_product_image_link_classes(); ?>" href="<?php echo esc_url( wpsc_the_product_image() ); ?>">
33
+ <img class="product_image" id="product_image_<?php echo wpsc_the_product_id(); ?>" alt="<?php echo wpsc_the_product_title(); ?>" title="<?php echo wpsc_the_product_title(); ?>" src="<?php echo wpsc_the_product_thumbnail(); ?>"/>
34
  </a>
35
  <?php
36
  if ( function_exists( 'gold_shpcrt_display_gallery' ) )
wpsc-theme/wpsc-transaction_results.php CHANGED
File without changes
wpsc-theme/wpsc-user-log.php CHANGED
File without changes