PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 1.4.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v1.4.0
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 3 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
197 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 if ( ! empty( $allcaps['edit_sc_subscriptions'] ) ) {
169 return true;
170 }
171
172 // no data provided to update. Make sure to at least pass an empty array.
173 if ( is_null( $args[3] ?? null ) ) {
174 return false;
175 }
176
177 $params = $args[3];
178
179 // request has blacklisted keys.
180 if ( ! $this->requestOnlyHasKeys( $params, [ 'cancel_at_period_end', 'quantity', 'price', 'purge_pending_update', 'payment_method' ] ) ) {
181 return false;
182 }
183
184 // check if they can modify price.
185 if ( ! empty( $params['price'] ) && ! $this->switch_sc_subscription( $user, $args, $allcaps ) ) {
186 return false;
187 }
188
189 // check if user can modify quantity.
190 if ( ! empty( $params['quantity'] ) && $params['quantity'] > 1 && ! $this->update_sc_subscription_quantity( $user, $args, $allcaps ) ) {
191 return false;
192 }
193
194 return $this->belongsToUser( Subscription::class, $args[2], $user );
195 }
196 }
197