Builder
3 years ago
MyAccount
3 years ago
EditProfileTag.php
4 years ago
FormProcessor.php
3 years ago
FrontendProfileTag.php
3 years ago
Init.php
3 years ago
LoginFormTag.php
4 years ago
MelangeTag.php
4 years ago
MemberDirectoryTag.php
4 years ago
MembershipShortcodes.php
3 years ago
PasswordResetTag.php
4 years ago
RegistrationFormTag.php
4 years ago
index.php
5 years ago
MembershipShortcodes.php
120 lines
| 1 | <?php |
| 2 | |
| 3 | namespace ProfilePress\Core\ShortcodeParser; |
| 4 | |
| 5 | use ProfilePress\Core\Membership\Controllers\CheckoutSessionData; |
| 6 | use ProfilePress\Core\Membership\Models\Coupon\CouponFactory; |
| 7 | use ProfilePress\Core\Membership\Models\Customer\CustomerFactory; |
| 8 | use ProfilePress\Core\Membership\Models\Order\OrderFactory; |
| 9 | |
| 10 | class MembershipShortcodes |
| 11 | { |
| 12 | public function __construct() |
| 13 | { |
| 14 | add_shortcode('profilepress-checkout', [$this, 'checkout_page']); |
| 15 | add_shortcode('profilepress-receipt', [$this, 'success_page']); |
| 16 | |
| 17 | add_filter('the_content', [$this, 'filter_success_page_content'], 99999); |
| 18 | } |
| 19 | |
| 20 | function filter_success_page_content($content) |
| 21 | { |
| 22 | if (isset($_GET['order_key'], $_GET['payment_method']) && ppress_is_success_page()) { |
| 23 | $order = OrderFactory::fromOrderKey(sanitize_key($_GET['order_key'])); |
| 24 | if ($order->exists() && $order->is_pending()) { |
| 25 | ob_start(); |
| 26 | ppress_render_view('order-processing', [ |
| 27 | 'order_success_page' => ppress_get_success_url($order->order_key) |
| 28 | ]); |
| 29 | |
| 30 | $content = ob_get_clean(); |
| 31 | } |
| 32 | } |
| 33 | |
| 34 | return $content; |
| 35 | } |
| 36 | |
| 37 | public function checkout_page() |
| 38 | { |
| 39 | ob_start(); |
| 40 | |
| 41 | echo '<div class="ppress-checkout__form">'; |
| 42 | |
| 43 | if ( ! isset($_GET['plan']) || ! is_numeric($_GET['plan'])) { |
| 44 | |
| 45 | do_action('ppress_membership_checkout_empty_cart'); |
| 46 | |
| 47 | echo '<p>'; |
| 48 | printf( |
| 49 | __('Your cart is currently empty. Click <a href="%s">here</a> to get started.', 'wp-user-avatar'), |
| 50 | /** @todo add setting to set url to redirect to when cart is empty */ |
| 51 | apply_filters('ppress_membership_checkout_empty_cart_url', home_url()) |
| 52 | ); |
| 53 | echo '</p>'; |
| 54 | |
| 55 | } else { |
| 56 | |
| 57 | $planObj = ppress_get_plan(absint($_GET['plan'])); |
| 58 | |
| 59 | if ( |
| 60 | is_user_logged_in() && |
| 61 | CustomerFactory::fromUserId(get_current_user_id())->has_active_subscription($planObj->id)) { |
| 62 | echo '<p>'; |
| 63 | printf( |
| 64 | esc_html__('It looks like you’re already subscribed to this plan. Please go to %syour account%s to manage your subscription.', 'wp-user-avatar'), |
| 65 | '<a href="' . ppress_my_account_url() . '">', '</a>' |
| 66 | ); |
| 67 | echo '</p>'; |
| 68 | } else { |
| 69 | |
| 70 | if ($planObj->is_active()) { |
| 71 | |
| 72 | add_filter('ppress_logout_url_enable_redirect_get_query', '__return_true'); |
| 73 | |
| 74 | if ( ! empty($_GET['coupon'])) { |
| 75 | |
| 76 | $coupon = CouponFactory::fromCode(sanitize_text_field($_GET['coupon'])); |
| 77 | |
| 78 | if ($coupon->exists()) { |
| 79 | |
| 80 | ppress_session()->set(CheckoutSessionData::COUPON_CODE, [ |
| 81 | 'plan_id' => $planObj->id, |
| 82 | 'coupon_code' => $coupon->code, |
| 83 | ]); |
| 84 | } |
| 85 | } |
| 86 | |
| 87 | ppress_render_view('checkout/form-checkout', [ |
| 88 | 'planObj' => $planObj |
| 89 | ]); |
| 90 | } else { |
| 91 | do_action('ppress_membership_checkout_invalid_plan'); |
| 92 | echo '<p>' . esc_html__('Invalid subscription plan.', 'wp-user-avatar') . '</p>'; |
| 93 | } |
| 94 | } |
| 95 | } |
| 96 | echo '</div>'; |
| 97 | |
| 98 | return ob_get_clean(); |
| 99 | } |
| 100 | |
| 101 | public function success_page() |
| 102 | { |
| 103 | ob_start(); |
| 104 | require apply_filters('ppress_order_receipt_template', dirname(__FILE__) . '/MyAccount/view-order.tmpl.php'); |
| 105 | |
| 106 | return ob_get_clean(); |
| 107 | } |
| 108 | |
| 109 | public static function get_instance() |
| 110 | { |
| 111 | static $instance = null; |
| 112 | |
| 113 | if (is_null($instance)) { |
| 114 | $instance = new self(); |
| 115 | } |
| 116 | |
| 117 | return $instance; |
| 118 | } |
| 119 | } |
| 120 |