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 / Permissions / Models / SubscriptionPermissionsController.php
surecart / app / src / Permissions / Models Last commit date
BalanceTransactionPermissionsController.php 3 years ago ChargePermissionsController.php 3 years ago CheckoutPermissionsController.php 3 years ago CustomerPermissionsController.php 2 years ago InvoicePermissionsController.php 3 years ago LicensePermissionsController.php 3 years ago MediaPermissionsController.php 3 years ago ModelPermissionsController.php 3 years ago OrderPermissionsController.php 3 years ago PaymentMethodPermissionsController.php 3 years ago PurchasePermissionsController.php 3 years ago RefundPermissionsController.php 3 years ago SubscriptionPermissionsController.php 3 years ago
SubscriptionPermissionsController.php
207 lines
1 <?php
2 namespace SureCart\Permissions\Models;
3
4 use SureCart\Models\Subscription;
5
6 /**
7 * Handle various permissions.
8 */
9 class SubscriptionPermissionsController extends ModelPermissionsController {
10 /**
11 * Subscription cancelation.
12 *
13 * @param \SureCart\Models\User $user User model.
14 * @param array $args {
15 * Arguments that accompany the requested capability check.
16 * @type string $0 Requested capability.
17 * @type int $1 Concerned user ID.
18 * @type mixed ...$2 The quantity to update.
19 * }
20 * @param bool[] $allcaps Array of key/value pairs where keys represent a capability name
21 * and boolean values represent whether the user has that capability.
22 *
23 * @return boolean
24 */
25 public function cancel_sc_subscription( $user, $args, $allcaps ) {
26 if ( ! empty( $allcaps['edit_sc_subscriptions'] ) ) {
27 return true;
28 }
29
30 // It's disabled on the account.
31 if ( empty( \SureCart::account()->portal_protocol->subscription_cancellations_enabled ) ) {
32 return false;
33 }
34
35 return $this->belongsToUser( Subscription::class, $args[2], $user );
36 }
37
38 /**
39 * Subscription Update Quantity.
40 *
41 * @param \SureCart\Models\User $user User model.
42 * @param array $args {
43 * Arguments that accompany the requested capability check.
44 * @type string $0 Requested capability.
45 * @type int $1 Concerned user ID.
46 * @type mixed ...$2 The quantity to update.
47 * }
48 * @param bool[] $allcaps Array of key/value pairs where keys represent a capability name
49 * and boolean values represent whether the user has that capability.
50 *
51 * @return boolean
52 */
53 public function update_sc_subscription_quantity( $user, $args, $allcaps ) {
54 if ( ! empty( $allcaps['edit_sc_subscriptions'] ) ) {
55 return true;
56 }
57
58 $subscription = Subscription::find( $args[2] );
59
60 if ( empty( \SureCart::account()->portal_protocol->subscription_quantity_updates_enabled ) ) {
61 $subscription = Subscription::find( $args[2] );
62 if ( is_wp_error( $subscription ) ) {
63 return false;
64 }
65
66 $quantity = $args[3];
67
68 // quantities don't match.
69 if ( $subscription->quantity !== $quantity ) {
70 return false;
71 }
72 }
73
74 return $this->belongsToUser( Subscription::class, $args[2], $user );
75 }
76
77 /**
78 * Subscription Switch.
79 *
80 * @param \SureCart\Models\User $user User model.
81 * @param array $args {
82 * Arguments that accompany the requested capability check.
83 * @type string $0 Requested capability.
84 * @type int $1 Concerned user ID.
85 * @type mixed ...$2 The quantity to update.
86 * }
87 * @param bool[] $allcaps Array of key/value pairs where keys represent a capability name
88 * and boolean values represent whether the user has that capability.
89 * @return boolean
90 */
91 public function switch_sc_subscription( $user, $args, $allcaps ) {
92 if ( ! empty( $allcaps['edit_sc_subscriptions'] ) ) {
93 return true;
94 }
95
96 if ( empty( $args[2] ) ) {
97 return false;
98 }
99
100 // It's disabled on the account.
101 if ( empty( \SureCart::account()->portal_protocol->subscription_updates_enabled ) ) {
102 return false;
103 }
104
105 return $this->belongsToUser( Subscription::class, $args[2], $user );
106 }
107
108 /**
109 * Can user read.
110 *
111 * @param \SureCart\Models\User $user User model.
112 * @param array $args {
113 * Arguments that accompany the requested capability check.
114 * @type string $0 Requested capability.
115 * @type int $1 Concerned user ID.
116 * @type mixed ...$2 Optional second and further parameters, typically object ID.
117 * }
118 * @param bool[] $allcaps Array of key/value pairs where keys represent a capability name
119 * and boolean values represent whether the user has that capability.
120 *
121 * @return boolean Does user have permission.
122 */
123 public function read_sc_subscription( $user, $args, $allcaps ) {
124 if ( ! empty( $allcaps['read_sc_subscriptions'] ) ) {
125 return true;
126 }
127 return $this->belongsToUser( Subscription::class, $args[2], $user );
128 }
129
130 /**
131 * Can user list.
132 *
133 * @param \SureCart\Models\User $user User model.
134 * @param array $args {
135 * Arguments that accompany the requested capability check.
136 * @type string $0 Requested capability.
137 * @type int $1 Concerned user ID.
138 * @type string[] ...$2 The ids to list.
139 * }
140 * @param bool[] $allcaps Array of key/value pairs where keys represent a capability name
141 * and boolean values represent whether the user has that capability.
142 *
143 * @return boolean Does user have permission.
144 */
145 public function read_sc_subscriptions( $user, $args, $allcaps ) {
146 if ( ! empty( $allcaps['read_sc_subscriptions'] ) ) {
147 return true;
148 }
149 return $this->isListingOwnCustomerIds( $user, $args[2]['customer_ids'] ?? [] );
150 }
151
152 /**
153 * Can user edit.
154 *
155 * @param \SureCart\Models\User $user User model.
156 * @param array $args {
157 * Arguments that accompany the requested capability check.
158 * @type string $0 Requested capability.
159 * @type int $1 Concerned user ID.
160 * @type string $2 The id of the subscription.
161 * @type array ...$4 The data that is being requested to update.
162 * }
163 * @param bool[] $allcaps Array of key/value pairs where keys represent a capability name
164 * and boolean values represent whether the user has that capability.
165 * @return boolean Does user have permission.
166 */
167 public function edit_sc_subscription( $user, $args, $allcaps ) {
168 // no user to check.
169 if ( empty( $user->ID ) ) {
170 return false;
171 }
172
173 // user is not a customer.
174 if ( ! $user->isCustomer() ) {
175 return false;
176 }
177
178 if ( ! empty( $allcaps['edit_sc_subscriptions'] ) ) {
179 return true;
180 }
181
182 // no data provided to update. Make sure to at least pass an empty array.
183 if ( is_null( $args[3] ?? null ) ) {
184 return false;
185 }
186
187 $params = $args[3];
188
189 // request has blacklisted keys.
190 if ( ! $this->requestOnlyHasKeys( $params, [ 'cancel_at_period_end', 'quantity', 'price', 'purge_pending_update', 'payment_method', 'cancellation_act', 'ad_hoc_amount' ] ) ) {
191 return false;
192 }
193
194 // check if they can modify price.
195 if ( ! empty( $params['price'] ) && ! $this->switch_sc_subscription( $user, $args, $allcaps ) ) {
196 return false;
197 }
198
199 // check if user can modify quantity.
200 if ( ! empty( $params['quantity'] ) && $params['quantity'] > 1 && ! $this->update_sc_subscription_quantity( $user, $args, $allcaps ) ) {
201 return false;
202 }
203
204 return $this->belongsToUser( Subscription::class, $args[2], $user );
205 }
206 }
207