PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.6.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.6.1
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 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 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Middleware / CheckoutRedirectMiddleware.php
surecart / app / src / Middleware Last commit date
AccountClaimMiddleware.php 3 years ago ArchiveModelMiddleware.php 3 years ago BrandColorMiddleware.php 3 years ago CheckoutRedirectMiddleware.php 3 years ago ComponentAssetsMiddleware.php 3 years ago CustomerDashboardRedirectMiddleware.php 3 years ago EditModelMiddleware.php 3 years ago LoginLinkMiddleware.php 3 years ago LoginMiddleware.php 3 years ago NonceMiddleware.php 3 years ago OrderRedirectMiddleware.php 3 years ago PathRedirectMiddleware.php 3 years ago PaymentFailureRedirectMiddleware.php 3 years ago PurchaseRedirectMiddleware.php 3 years ago SubscriptionRedirectMiddleware.php 3 years ago WebhooksMiddleware.php 2 years ago
CheckoutRedirectMiddleware.php
115 lines
1 <?php
2
3 namespace SureCart\Middleware;
4
5 use Closure;
6 use SureCart\Models\Checkout;
7 use SureCart\Models\Product;
8 use SureCartCore\Requests\RequestInterface;
9 use SureCartCore\Responses\RedirectResponse;
10
11 /**
12 * Middleware for handling model archiving.
13 */
14 class CheckoutRedirectMiddleware {
15 /**
16 * Enqueue component assets.
17 *
18 * @param RequestInterface $request Request.
19 * @param Closure $next Next.
20 * @return function
21 */
22 public function handle( RequestInterface $request, Closure $next ) {
23 $id = $request->query( 'checkout_id' );
24
25 // no checkout id, next request.
26 if ( empty( $id ) ) {
27 return $next( $request );
28 }
29
30 $checkout = Checkout::find( $id );
31
32 // get checkout from page id.
33 if ( ! empty( $checkout->metadata->buy_page_product_id ) ) {
34 $product = Product::find( $checkout->metadata->buy_page_product_id );
35 // handle error.
36 if ( is_wp_error( $product ) ) {
37 wp_die( esc_html( $product->get_error_message() ) );
38 }
39
40 // buy link disabled and person cannot view.
41 if ( ! $product->buyLink()->isEnabled() && ! current_user_can( 'edit_sc_products' ) ) {
42 wp_die( esc_html__( 'This product is not available for purchase.', 'surecart' ) );
43 }
44
45 $url = $product->buyLink()->url();
46 if ( $url ) {
47 return ( new RedirectResponse( $request ) )->to(
48 esc_url_raw( $this->buildUrl( $url, $request ) )
49 );
50 }
51 }
52
53 // get checkout from page id.
54 if ( ! empty( $checkout->metadata->page_id ) ) {
55 $url = get_permalink( (int) $checkout->metadata->page_id );
56 if ( $url ) {
57 return ( new RedirectResponse( $request ) )->to(
58 esc_url_raw( $this->buildUrl( $url, $request ) )
59 );
60 }
61 }
62
63 // get checkout from page_url.
64 if ( ! empty( $checkout->metadata->page_url ) ) {
65 return ( new RedirectResponse( $request ) )->to(
66 esc_url_raw( $this->buildUrl( $checkout->metadata->page_url, $request ) )
67 );
68 }
69
70 // these don't exist, use the default checkout page.
71 if ( ! empty( \SureCart::pages()->url( 'checkout' ) ) ) {
72 return ( new RedirectResponse( $request ) )->to(
73 esc_url_raw( $this->buildUrl( \SureCart::pages()->url( 'checkout' ), $request ) )
74 );
75 }
76
77 // cannot find checkout page.
78 return $next( $request );
79 }
80
81 /**
82 * Build the url.
83 *
84 * @return string
85 */
86 public function buildUrl( $url, RequestInterface $request ) {
87 if ( empty( $url ) ) {
88 return $url;
89 }
90
91 // add checkout id.
92 $id = $request->query( 'checkout_id' );
93 if ( $id ) {
94 $url = add_query_arg(
95 [
96 'checkout_id' => $id,
97 ],
98 $url
99 );
100 }
101
102 $promotion_code = $request->query( 'promotion_code' );
103 if ( $promotion_code ) {
104 $url = add_query_arg(
105 [
106 'coupon' => $promotion_code,
107 ],
108 $url
109 );
110 }
111
112 return $url;
113 }
114 }
115