PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.0
4.5.1 4.5.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 / Abilities / AbilityRegistrar.php
surecart / app / src / Abilities Last commit date
Abilities 2 weeks ago Concerns 3 months ago AbilitiesServiceProvider.php 2 months ago AbilityRegistrar.php 2 weeks ago
AbilityRegistrar.php
221 lines
1 <?php
2
3 namespace SureCart\Abilities;
4
5 use SureCart\Abilities\Abilities\ArchiveProduct;
6 use SureCart\Abilities\Abilities\GetAbandonedCheckout;
7 use SureCart\Abilities\Abilities\ListAbandonedCheckouts;
8 use SureCart\Abilities\Abilities\CancelSubscription;
9 use SureCart\Abilities\Abilities\CreateCoupon;
10 use SureCart\Abilities\Abilities\CreateCustomer;
11 use SureCart\Abilities\Abilities\CreateFulfillment;
12 use SureCart\Abilities\Abilities\CreateInvoice;
13 use SureCart\Abilities\Abilities\CreateProduct;
14 use SureCart\Abilities\Abilities\DeleteFulfillment;
15 use SureCart\Abilities\Abilities\GetFulfillment;
16 use SureCart\Abilities\Abilities\GetFulfillmentItem;
17 use SureCart\Abilities\Abilities\ListFulfillments;
18 use SureCart\Abilities\Abilities\UpdateFulfillment;
19 use SureCart\Abilities\Abilities\CreatePromotion;
20 use SureCart\Abilities\Abilities\CreateRefund;
21 use SureCart\Abilities\Abilities\GetRefund;
22 use SureCart\Abilities\Abilities\CreatePrice;
23 use SureCart\Abilities\Abilities\DuplicateProduct;
24 use SureCart\Abilities\Abilities\FilterCustomers;
25 use SureCart\Abilities\Abilities\FilterOrders;
26 use SureCart\Abilities\Abilities\FilterSubscriptions;
27 use SureCart\Abilities\Abilities\GetCustomer;
28 use SureCart\Abilities\Abilities\GetCustomersFilterSchema;
29 use SureCart\Abilities\Abilities\GetOrdersFilterSchema;
30 use SureCart\Abilities\Abilities\GetSubscriptionsFilterSchema;
31 use SureCart\Abilities\Abilities\GetLicense;
32 use SureCart\Abilities\Abilities\GetOrder;
33 use SureCart\Abilities\Abilities\GetOrderStatistics;
34 use SureCart\Abilities\Abilities\GetProduct;
35 use SureCart\Abilities\Abilities\GetStoreDashboard;
36 use SureCart\Abilities\Abilities\GetStoreInfo;
37 use SureCart\Abilities\Abilities\GetSubscription;
38 use SureCart\Abilities\Abilities\ListCoupons;
39 use SureCart\Abilities\Abilities\ListCustomers;
40 use SureCart\Abilities\Abilities\ListLicenses;
41 use SureCart\Abilities\Abilities\ListOrders;
42 use SureCart\Abilities\Abilities\ListPrices;
43 use SureCart\Abilities\Abilities\ListProducts;
44 use SureCart\Abilities\Abilities\ListPromotions;
45 use SureCart\Abilities\Abilities\ListRefunds;
46 use SureCart\Abilities\Abilities\ListSubscriptions;
47 use SureCart\Abilities\Abilities\DeleteCoupon;
48 use SureCart\Abilities\Abilities\DeleteCustomer;
49 use SureCart\Abilities\Abilities\DeletePromotion;
50 use SureCart\Abilities\Abilities\GetCoupon;
51 use SureCart\Abilities\Abilities\GetPromotion;
52 use SureCart\Abilities\Abilities\UpdateCoupon;
53 use SureCart\Abilities\Abilities\UpdateCustomer;
54 use SureCart\Abilities\Abilities\UpdatePromotion;
55 use SureCart\Abilities\Abilities\UpdatePrice;
56 use SureCart\Abilities\Abilities\UpdateProduct;
57 use SureCart\Abilities\Abilities\UpdateInvoice;
58 use SureCart\Abilities\Abilities\UpdateSubscriptionRenewalDate;
59
60 /**
61 * Registers the ability category and all SureCart abilities.
62 */
63 class AbilityRegistrar {
64
65 /**
66 * MCP settings for filtering abilities.
67 *
68 * @var array
69 */
70 private $settings = array(
71 'edit_enabled' => true,
72 'delete_enabled' => true,
73 );
74
75 /**
76 * Set the MCP toggle settings.
77 *
78 * @param array $settings The settings array with 'edit_enabled' and 'delete_enabled' keys.
79 * @return void
80 */
81 public function set_settings( array $settings ) {
82 $this->settings = array_merge( $this->settings, $settings );
83 }
84
85 /**
86 * Register the SureCart e-commerce ability category.
87 *
88 * @return void
89 */
90 public function register_category() {
91 wp_register_ability_category(
92 'surecart-ecommerce',
93 array(
94 'label' => __( 'SureCart E-Commerce', 'surecart' ),
95 'description' => __( 'E-commerce operations including products, orders, customers, and subscriptions.', 'surecart' ),
96 )
97 );
98 }
99
100 /**
101 * Register all SureCart abilities.
102 *
103 * @return void
104 */
105 public function register_abilities() {
106 $abilities = $this->get_abilities();
107
108 foreach ( $abilities as $ability ) {
109 // Filter out abilities based on MCP settings.
110 if ( ! $this->should_register_ability( $ability ) ) {
111 continue;
112 }
113
114 wp_register_ability( $ability->get_name(), $ability->get_config() );
115 }
116 }
117
118 /**
119 * Check if an ability should be registered based on the current settings.
120 *
121 * @param \SureCart\Abilities\Abilities\AbstractAbility $ability The ability to check.
122 * @return bool
123 */
124 private function should_register_ability( $ability ): bool {
125 $annotations = $ability->get_annotations();
126
127 $is_readonly = $annotations['readonly'] ?? false;
128 $is_destructive = $annotations['destructive'] ?? false;
129
130 // If edit abilities are disabled, skip non-readonly, non-destructive abilities (create/update).
131 if ( ! $this->settings['edit_enabled'] && ! $is_readonly && ! $is_destructive ) {
132 return false;
133 }
134
135 // If delete abilities are disabled, skip destructive abilities.
136 if ( ! $this->settings['delete_enabled'] && $is_destructive ) {
137 return false;
138 }
139
140 return true;
141 }
142
143 /**
144 * Get all ability instances.
145 *
146 * @return \SureCart\Abilities\Abilities\AbstractAbility[]
147 */
148 public function get_abilities(): array {
149 return array(
150 // Store.
151 new GetStoreInfo(),
152 new GetStoreDashboard(),
153 // Products.
154 new ListProducts(),
155 new GetProduct(),
156 new CreateProduct(),
157 new UpdateProduct(),
158 new ArchiveProduct(),
159 new DuplicateProduct(),
160 // Orders.
161 new ListOrders(),
162 new GetOrder(),
163 new GetOrderStatistics(),
164 new FilterOrders(),
165 new GetOrdersFilterSchema(),
166 // Abandoned Checkouts.
167 new ListAbandonedCheckouts(),
168 new GetAbandonedCheckout(),
169 // Customers.
170 new ListCustomers(),
171 new GetCustomer(),
172 new CreateCustomer(),
173 new UpdateCustomer(),
174 new DeleteCustomer(),
175 new FilterCustomers(),
176 new GetCustomersFilterSchema(),
177 // Subscriptions.
178 new ListSubscriptions(),
179 new GetSubscription(),
180 new CancelSubscription(),
181 new UpdateSubscriptionRenewalDate(),
182 new FilterSubscriptions(),
183 new GetSubscriptionsFilterSchema(),
184 // Prices.
185 new ListPrices(),
186 new CreatePrice(),
187 new UpdatePrice(),
188 // Coupons.
189 new ListCoupons(),
190 new GetCoupon(),
191 new CreateCoupon(),
192 new UpdateCoupon(),
193 new DeleteCoupon(),
194 // Promotions.
195 new ListPromotions(),
196 new GetPromotion(),
197 new CreatePromotion(),
198 new UpdatePromotion(),
199 new DeletePromotion(),
200 // Invoices.
201 new CreateInvoice(),
202 new UpdateInvoice(),
203 // Fulfillments.
204 new ListFulfillments(),
205 new GetFulfillment(),
206 new CreateFulfillment(),
207 new UpdateFulfillment(),
208 new DeleteFulfillment(),
209 // Fulfillment Items.
210 new GetFulfillmentItem(),
211 // Licensing.
212 new ListLicenses(),
213 new GetLicense(),
214 // Refunds.
215 new ListRefunds(),
216 new GetRefund(),
217 new CreateRefund(),
218 );
219 }
220 }
221