Changeset 2529022
- Timestamp:
- 05/10/2021 10:47:54 AM (5 years ago)
- Location:
- voucherify/trunk
- Files:
-
- 8 edited
-
readme.txt (modified) (2 diffs)
-
src/class-voucherify-order-placing-session.php (modified) (2 diffs)
-
src/class-voucherify-remove-coupon-service.php (modified) (1 diff)
-
src/class-voucherify-save-order-listener.php (modified) (4 diffs)
-
src/class-voucherify-unlock-order-listener.php (modified) (1 diff)
-
src/class-voucherify-validation-service.php (modified) (5 diffs)
-
src/class-voucherify.php (modified) (1 diff)
-
voucherify.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
voucherify/trunk/readme.txt
r2519600 r2529022 7 7 WC tested up to: 4.3.1 8 8 WC requires at least: 3.0.0 9 Stable tag: 2.1. 59 Stable tag: 2.1.6 10 10 11 11 Integrates Voucherify API with woocommerce … … 50 50 == Changelog == 51 51 52 = 2.1.6 - 2021-05-10 = 53 * Fix: adding new discount code should properly replace the previous code in the cart 54 * Fix: prevent adding multiple discount codes to the order created via admin panel 55 * Fix: discount revalidation after cart update 56 * Fix: support for woocommerce-subscriptions plugin 57 52 58 = 2.1.5 - 2021-04-22 = 53 59 * Fix: missing file -
voucherify/trunk/src/class-voucherify-order-placing-session.php
r2519268 r2529022 145 145 * 146 146 */ 147 public function clear() { 148 if ( vcrf_is_rest_request() || is_admin() ) { 147 public function clear( $coupons = null ) { 148 if ( empty( $coupons ) ) { 149 $coupons = []; 150 } elseif ( ! is_array( $coupons ) ) { 151 $coupons = [ $coupons ]; 152 } 153 154 if ( vcrf_is_rest_request() || is_admin() ) { 155 $this->clear_faked_session( $coupons ); 156 157 return; 158 } 159 if ( ! empty( WC()->session ) ) { 160 $this->clear_session( $coupons ); 161 } 162 } 163 164 private function clear_faked_session( $coupons = null ) { 165 if ( empty( $coupons ) ) { 149 166 $this->fake_session_for_rest_api['voucherify_removed_coupons'] = []; 150 167 $this->fake_session_for_rest_api['voucherify_valid_vouchers'] = []; … … 152 169 return; 153 170 } 154 if ( ! empty( WC()->session ) ) { 171 172 if ( ! isset( $this->fake_session_for_rest_api, $this->fake_session_for_rest_api['voucherify_removed_coupons'] ) ) { 173 $this->fake_session_for_rest_api['voucherify_removed_coupons'] = []; 174 } 175 176 if ( ! isset( $this->fake_session_for_rest_api, $this->fake_session_for_rest_api['voucherify_valid_vouchers'] ) ) { 177 $this->fake_session_for_rest_api['voucherify_valid_vouchers'] = []; 178 } 179 180 $removed_coupon_idx = array_search( $coupons, $this->fake_session_for_rest_api['voucherify_removed_coupons'] ); 181 if ( false !== $removed_coupon_idx ) { 182 unset( $this->fake_session_for_rest_api['voucherify_removed_coupons'][ $removed_coupon_idx ] ); 183 } 184 185 if ( isset( $this->fake_session_for_rest_api['voucherify_valid_vouchers'][ $coupons ] ) ) { 186 unset( $this->fake_session_for_rest_api['voucherify_valid_vouchers'][ $coupons ] ); 187 } 188 } 189 190 private function clear_session( $coupons = null ) { 191 if ( empty( $coupons ) ) { 155 192 unset( WC()->session->voucherify_removed_coupons ); 156 193 unset( WC()->session->voucherify_valid_vouchers ); 194 195 return; 196 } 197 198 foreach ( $coupons as $coupon ) { 199 $removed_coupon_idx = array_search( $coupon, WC()->session->voucherify_removed_coupons ); 200 if ( ! empty( $removed_coupon_idx ) ) { 201 $cached_removed_vouchers = WC()->session->voucherify_removed_coupons; 202 unset( $cached_removed_vouchers[ $removed_coupon_idx ] ); 203 WC()->session->voucherify_removed_coupons = $cached_removed_vouchers; 204 } 205 206 if ( isset( WC()->session->voucherify_valid_vouchers[ $coupon ] ) ) { 207 $cached_vouchers = WC()->session->voucherify_valid_vouchers; 208 unset( $cached_vouchers[ $coupon ] ); 209 WC()->session->voucherify_valid_vouchers = $cached_vouchers; 210 } 157 211 } 158 212 } -
voucherify/trunk/src/class-voucherify-remove-coupon-service.php
r2519268 r2529022 32 32 * Release voucherify session lock. 33 33 * 34 * @param $coupon_code string34 * @param $coupon_codes 35 35 * @param $is_in_admin_panel boolean 36 36 */ 37 public function remove_coupon_from_voucherify_session( $coupon_code, $is_in_admin_panel = false ) { 38 $order = null; 37 public function remove_coupon_from_voucherify_session( $coupon_codes, $is_in_admin_panel = false ) { 38 if ( ! is_array( $coupon_codes ) ) { 39 $coupon_codes = [ $coupon_codes ]; 40 } 41 39 42 if ( $is_in_admin_panel ) { 40 43 $order = vcrf_get_admin_order(); 41 44 $session_key = empty( $order ) ? '' : $order->get_meta( '_voucherify_session_key', true ); 42 } else { 45 $this->voucherify_client_extension->release_session_lock( current( $coupon_codes ), $session_key ); 46 $order->delete_meta_data( '_voucherify_session_key' ); 47 $order->save_meta_data(); 48 49 return; 50 } 51 52 foreach ( $coupon_codes as $coupon_code ) { 43 53 $session_key = $this->order_placing_session->get_validation_session_data( $coupon_code )['key']; 44 } 45 if ( ! empty( $session_key ) ) { 46 $result = $this->voucherify_client_extension->release_session_lock( $coupon_code, $session_key ); 47 if ( $is_in_admin_panel ) { 48 $order->delete_meta_data( '_voucherify_session_key' ); 49 $order->save_meta_data(); 54 if ( ! empty( $session_key ) ) { 55 $this->voucherify_client_extension->release_session_lock( $coupon_code, $session_key ); 50 56 } 51 57 } 52 $this->order_placing_session->clear($coupon_code); 58 59 $this->order_placing_session->clear( $coupon_codes ); 53 60 } 54 61 } -
voucherify/trunk/src/class-voucherify-save-order-listener.php
r2519268 r2529022 75 75 76 76 if ( in_array( $new_status, [ 'cancelled' ] ) ) { 77 $coupons = $this->get_applied_coupons( );77 $coupons = $this->get_applied_coupons( $order ); 78 78 if ( ! empty( $coupons ) ) { 79 $this->remove_coupon_service->remove_coupon_from_voucherify_session( current( $coupons ), is_admin() );79 $this->remove_coupon_service->remove_coupon_from_voucherify_session( $coupons, is_admin() ); 80 80 } 81 81 … … 112 112 return; 113 113 } 114 $codes = $this->get_applied_coupons(); 114 115 $codes = $this->get_applied_coupons( $order ); 115 116 if ( empty( $codes ) ) { 116 117 return; … … 184 185 } 185 186 186 private function get_applied_coupons() { 187 private function get_applied_coupons( WC_Order $order = null ) { 188 if ( ! empty( $order ) ) { 189 return $order->get_coupon_codes(); 190 } 191 187 192 if ( ! vcrf_is_rest_request() && ! is_admin() ) { 188 193 return WC()->cart->get_applied_coupons(); … … 246 251 return; 247 252 } 248 $code = current( $order_vouchers )->get_code(); 249 if ( in_array( $code, $this->order_placing_session->get_removed_coupons(), true ) ) { 250 return; 251 } 253 254 $codes = array_map( function ( $code ) { 255 return $code->get_code(); 256 }, $order_vouchers ); 257 $codes = array_filter( $codes, function ( $code ) { 258 return ! in_array( $code, $this->order_placing_session->get_removed_coupons(), true ); 259 } ); 260 $code = current( $codes ); 261 252 262 try { 253 263 $redeemed_voucher = $this->redemption_service->redeem( $code, $order ); -
voucherify/trunk/src/class-voucherify-unlock-order-listener.php
r2519590 r2529022 83 83 return; 84 84 } 85 85 86 $codes = $order->get_coupon_codes(); 86 87 if ( empty( $codes ) ) { 87 88 return; 88 89 } 89 $this->remove_coupon_service->remove_coupon_from_voucherify_session( current( $codes ), true ); 90 91 $this->remove_coupon_service->remove_coupon_from_voucherify_session( $codes, true ); 90 92 } 91 93 } -
voucherify/trunk/src/class-voucherify-validation-service.php
r2519268 r2529022 90 90 91 91 try { 92 $order = vcrf_get_admin_order(); 93 if(is_admin() && !empty($order) && count($order->get_coupon_codes()) > 0) { 94 return false; 95 } 96 92 97 return $this->get_validated_virtual_coupon( $coupon_code ); 93 98 } catch ( Exception $e ) { 94 99 $logger = wc_get_logger(); 95 $logger->error( __( 'Validation was unsuccessful', 'voucherify' ), [ 'original_message' => $e->getMessage() ] ); 100 $logger->error( 'Validation was unsuccessful' ); 101 $logger->error( 'original_message: ' . $e->getMessage() ); 96 102 97 103 return false; … … 121 127 $is_promotion = true; 122 128 $actual_code = $coupon_code_enhanced[1]; 123 }124 125 if ( ! empty( self::$vouchers_requested ) && ! array_key_exists( $actual_code, self::$vouchers_requested ) ) {126 throw new Exception();127 129 } 128 130 … … 289 291 ]; 290 292 293 $validation_response = $this->order_placing_session->get_validation_response( $code ); 294 if ( isset( $validation_response, $validation_response->session, $validation_response->session->key ) ) { 295 $session_data['session']['key'] = $validation_response->session->key; 296 } 297 291 298 $order = vcrf_get_admin_order(); 292 299 if ( empty( $order ) ) { … … 340 347 $return = apply_filters( 'voucherify_validation_service_validation_result', $return, $response, 341 348 $this->validations ); 342 $this->order_placing_session->clear( );349 $this->order_placing_session->clear( $code ); 343 350 344 351 return apply_filters( 'voucherify_validation_service_promotion_validation_result', $return, $response, … … 358 365 $return = apply_filters( 'voucherify_validation_service_validation_result', $return, $response, 359 366 $this->validations ); 360 $this->order_placing_session->clear( );367 $this->order_placing_session->clear( $code ); 361 368 362 369 return apply_filters( 'voucherify_validation_service_promotion_validation_result', $return, $response, -
voucherify/trunk/src/class-voucherify.php
r2519268 r2529022 416 416 if ( $cart_updated ) { 417 417 voucherify()->disable_coupons_validation(); 418 $current_coupon = current( WC()->cart->get_coupons());418 $current_coupons = WC()->cart->get_coupons(); 419 419 voucherify()->enable_coupons_validation(); 420 $this->remove_coupon_service->remove_coupon_from_voucherify_session( 421 $current_coupon ? $current_coupon->get_code() : '' 422 ); 420 $current_coupons = array_map( function ( $coupon ) { 421 return $coupon->get_code(); 422 }, $current_coupons ); 423 $this->remove_coupon_service->remove_coupon_from_voucherify_session( $current_coupons ); 423 424 } 424 425 -
voucherify/trunk/voucherify.php
r2519600 r2529022 8 8 * Plugin URI: https://wordpress.org/plugins/voucherify/ 9 9 * Description: Integrates Voucherify API with woocommerce replacing core coupons functionality 10 * Version: 2.1. 510 * Version: 2.1.6 11 11 * Author: rspective 12 12 * Author URI: https://www.rspective.com/
Note: See TracChangeset
for help on using the changeset viewer.