PluginProbe
StoreEngine — Complete eCommerce Solution with Memberships, Licensing, Affiliates & More / 2.2.0
StoreEngine — Complete eCommerce Solution with Memberships, Licensing, Affiliates & More v2.2.0
2.3.0 2.2.0 2.1.1 2.1.0 2.0.0 1.10.0 1.9.1 1.9.0 1.2.1 1.2.2 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 All 59 releases
storeengine / includes / hooks / after-purchase.php

after-purchase.php in StoreEngine — Complete eCommerce Solution with Memberships, Licensing, Affiliates & More 2.2.0, at includes/hooks/after-purchase.php

68 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace StoreEngine\Hooks;
4
5 use StoreEngine\Classes\AbstractProduct;
6 use StoreEngine\Classes\enums\PurchaseRedirectType;
7 use StoreEngine\Classes\Exceptions\StoreEngineException;
8 use StoreEngine\Classes\Order;
9 use StoreEngine\Utils\Helper;
10
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit;
13 }
14
15 class AfterPurchase {
16
17 public static function init() {
18 if ( ! Helper::get_settings( 'enable_after_purchase_redirect', false ) ) {
19 return;
20 }
21
22 add_filter( 'storeengine/order/get_checkout_order_received_url', [ __CLASS__, 'get_checkout_order_received_url', ], 10, 2 );
23 }
24
25 /**
26 * @throws StoreEngineException
27 */
28 public static function get_checkout_order_received_url( string $received_url, Order $order ): string {
29 if ( 'paid' !== $order->get_paid_status() || 1 !== count( $order->get_items() ) ) {
30 return $received_url;
31 }
32
33 $order_items = $order->get_items();
34 /** @var Order\OrderItemProduct $order_item */
35 $order_item = reset( $order_items );
36 $integrations = Helper::get_integrations_by_price_id( $order_item->get_price_id() );
37
38 foreach ( $integrations as $integration ) {
39 if ( 'storeengine/membership-addon' !== $integration->get_provider() ) {
40 continue;
41 }
42
43 $redirect_type = get_post_meta( $integration->get_integration_id(), '_storeengine_membership_purchase_redirect_type', true );
44 if ( PurchaseRedirectType::DEFAULT === $redirect_type ) {
45 continue;
46 }
47 $membership_redirect_url = get_post_meta( $integration->get_integration_id(), '_storeengine_membership_purchase_redirect_url', true );
48 if ( empty( $membership_redirect_url ) ) {
49 continue;
50 }
51 if ( PurchaseRedirectType::PAGE === $redirect_type ) {
52 return get_permalink( (int) $membership_redirect_url );
53 }
54
55 return $membership_redirect_url;
56 }
57
58 /** @var false|AbstractProduct $product */
59 $product = $order_item->get_product();
60 if ( ! $product || PurchaseRedirectType::DEFAULT === $product->get_purchase_redirect_type() || empty( $product->get_purchase_redirect_url() ) ) {
61 return $received_url;
62 }
63
64 return $product->get_purchase_redirect_url();
65 }
66
67 }
68