PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 4.9.0
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v4.9.0
4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 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 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / ShortcodeParser / MembershipShortcodes.php
wp-user-avatar / src / ShortcodeParser Last commit date
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
179 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\Group\GroupFactory;
9 use ProfilePress\Core\Membership\Models\Order\OrderFactory;
10 use ProfilePress\Core\Membership\Models\Subscription\SubscriptionFactory;
11
12 class MembershipShortcodes
13 {
14 public function __construct()
15 {
16 add_shortcode('profilepress-checkout', [$this, 'checkout_page_wrapper']);
17 add_shortcode('profilepress-receipt', [$this, 'success_page']);
18
19 add_filter('the_content', [$this, 'filter_success_page_content'], 99999);
20 }
21
22 function filter_success_page_content($content)
23 {
24 if (isset($_GET['order_key'], $_GET['payment_method']) && ppress_is_success_page()) {
25 $order = OrderFactory::fromOrderKey(sanitize_key($_GET['order_key']));
26 if ($order->exists() && $order->is_pending()) {
27 ob_start();
28 ppress_render_view('order-processing', [
29 'order_success_page' => ppress_get_success_url($order->order_key)
30 ]);
31
32 $content = ob_get_clean();
33 }
34 }
35
36 return $content;
37 }
38
39 public function checkout_page_wrapper()
40 {
41 ob_start();
42
43 echo '<div class="ppress-checkout__form">';
44 $this->checkout_page();
45 echo '</div>';
46
47 return ob_get_clean();
48 }
49
50 public function checkout_page()
51 {
52 if (
53 ( ! isset($_GET['plan']) || ! is_numeric($_GET['plan'])) &&
54 ( ! isset($_GET['group']) || ! is_numeric($_GET['group']))
55 ) {
56
57 do_action('ppress_membership_checkout_empty_cart');
58
59 echo '<p>';
60 printf(
61 __('Your cart is currently empty. Click <a href="%s">here</a> to get started.', 'wp-user-avatar'),
62 /** @todo add setting to set url to redirect to when cart is empty */
63 apply_filters('ppress_membership_checkout_empty_cart_url', home_url())
64 );
65 echo '</p>';
66
67 return;
68 }
69
70 $isGroupCheckout = ! empty($_GET['group']);
71
72 $isChangePlanCheckout = ! empty($_GET['change_plan']);
73
74 if ($isChangePlanCheckout) {
75
76 if ( ! is_user_logged_in()) {
77 echo '<p>';
78 esc_html_e('You must be logged in to switch to another plan.', 'wp-user-avatar');
79 echo '</p>';
80
81 return;
82 }
83
84 $sub = SubscriptionFactory::fromId(absint($_GET['change_plan']));
85
86 if ( ! $sub->exists() || ! ppress_get_plan($sub->plan_id)->get_group_id()) {
87
88 echo '<p>';
89 esc_html_e('You can not switch to another plan because this plan does not belong to any group.', 'wp-user-avatar');
90 echo '</p>';
91
92 return;
93 }
94 }
95
96 if ($isGroupCheckout) {
97
98 $group = GroupFactory::fromId(absint($_GET['group']));
99
100 if ( ! $group->exists()) {
101 esc_html_e('Invalid plan group.', 'wp-user-avatar');
102
103 return;
104 }
105
106 if (empty($group->get_plan_ids())) {
107 esc_html_e('Error: group has no membership plans.', 'wp-user-avatar');
108
109 return;
110 }
111 }
112
113 $planObj = ppress_get_plan(absint(ppressGET_var('plan', 0)));
114 $groupObj = GroupFactory::fromId(absint(ppressGET_var('group', 0)));
115
116 if (
117 is_user_logged_in() &&
118 ! $isGroupCheckout &&
119 ! $isChangePlanCheckout &&
120 CustomerFactory::fromUserId(get_current_user_id())->has_active_subscription($planObj->id)) {
121 echo '<p>';
122 printf(
123 esc_html__('You have an active subscription to this plan. Please go to %syour account%s to manage your subscription.', 'wp-user-avatar'),
124 '<a href="' . ppress_my_account_url() . '">', '</a>'
125 );
126 echo '</p>';
127
128 return;
129 }
130
131 if ( ! $planObj->is_active()) {
132 do_action('ppress_membership_checkout_invalid_plan');
133 echo '<p>' . esc_html__('Invalid subscription plan.', 'wp-user-avatar') . '</p>';
134
135 return;
136 }
137
138 add_filter('ppress_logout_url_enable_redirect_get_query', '__return_true');
139
140 if ( ! empty($_GET['coupon'])) {
141
142 $coupon = CouponFactory::fromCode(sanitize_text_field($_GET['coupon']));
143
144 if ($coupon->exists()) {
145
146 ppress_session()->set(CheckoutSessionData::COUPON_CODE, [
147 'plan_id' => $planObj->id,
148 'coupon_code' => $coupon->code,
149 ]);
150 }
151 }
152
153 ppress_render_view('checkout/form-checkout', [
154 'planObj' => $planObj,
155 'groupObj' => $groupObj,
156 'changePlanSubId' => absint(ppressGET_var('change_plan', 0)),
157 ]);
158 }
159
160 public function success_page()
161 {
162 ob_start();
163 require apply_filters('ppress_order_receipt_template', dirname(__FILE__) . '/MyAccount/view-order.tmpl.php');
164
165 return ob_get_clean();
166 }
167
168 public static function get_instance()
169 {
170 static $instance = null;
171
172 if (is_null($instance)) {
173 $instance = new self();
174 }
175
176 return $instance;
177 }
178 }
179