PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.7.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.7.1
4.7.2 4.7.1 4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.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 / Abilities / ListSubscriptions.php
surecart / app / src / Abilities / Abilities Last commit date
AbstractAbility.php 2 weeks ago ArchiveProduct.php 4 months ago CancelSubscription.php 4 months ago CreateCoupon.php 4 months ago CreateCustomer.php 4 months ago CreateFulfillment.php 4 months ago CreateInvoice.php 2 months ago CreatePrice.php 2 months ago CreateProduct.php 4 months ago CreatePromotion.php 4 months ago CreateRefund.php 2 months ago DeleteCoupon.php 4 months ago DeleteCustomer.php 4 months ago DeleteFulfillment.php 4 months ago DeletePromotion.php 4 months ago DuplicateProduct.php 4 months ago FilterCustomers.php 2 months ago FilterOrders.php 2 months ago FilterSubscriptions.php 2 months ago GetAbandonedCheckout.php 3 months ago GetCoupon.php 4 months ago GetCustomer.php 4 months ago GetCustomersFilterSchema.php 2 months ago GetFulfillment.php 4 months ago GetFulfillmentItem.php 4 months ago GetLicense.php 4 months ago GetOrder.php 4 months ago GetOrderStatistics.php 4 months ago GetOrdersFilterSchema.php 2 months ago GetProduct.php 4 months ago GetPromotion.php 4 months ago GetRefund.php 4 months ago GetStoreDashboard.php 4 months ago GetStoreInfo.php 4 months ago GetSubscription.php 4 months ago GetSubscriptionsFilterSchema.php 2 months ago ListAbandonedCheckouts.php 3 months ago ListCoupons.php 4 months ago ListCustomers.php 4 months ago ListFulfillments.php 4 months ago ListLicenses.php 4 months ago ListOrders.php 4 months ago ListPrices.php 4 months ago ListProducts.php 4 months ago ListPromotions.php 4 months ago ListRefunds.php 4 months ago ListSubscriptions.php 4 months ago UpdateCoupon.php 4 months ago UpdateCustomer.php 4 months ago UpdateFulfillment.php 4 months ago UpdateInvoice.php 4 months ago UpdatePrice.php 4 months ago UpdateProduct.php 4 months ago UpdatePromotion.php 4 months ago UpdateSubscriptionRenewalDate.php 4 months ago
ListSubscriptions.php
150 lines
1 <?php
2
3 namespace SureCart\Abilities\Abilities;
4
5 use SureCart\Models\Subscription;
6
7 /**
8 * List subscriptions with filters.
9 */
10 class ListSubscriptions extends AbstractAbility {
11
12 /**
13 * {@inheritDoc}
14 */
15 public function get_name(): string {
16 return 'surecart/list-subscriptions';
17 }
18
19 /**
20 * {@inheritDoc}
21 */
22 public function get_label(): string {
23 return __( 'List Subscriptions', 'surecart' );
24 }
25
26 /**
27 * {@inheritDoc}
28 */
29 public function get_description(): string {
30 return __( 'Retrieve a paginated list of SureCart subscriptions. Supports filtering by status, customer, price, and product. Returns subscription summaries with IDs, statuses, and billing details.', 'surecart' );
31 }
32
33 /**
34 * {@inheritDoc}
35 */
36 public function get_annotations(): array {
37 return array(
38 'readonly' => true,
39 'destructive' => false,
40 'idempotent' => true,
41 );
42 }
43
44 /**
45 * {@inheritDoc}
46 */
47 public function get_instructions(): string {
48 return 'Use this to browse or filter subscriptions. Common status values: active, trialing, past_due, canceled, completed. For full details on a single subscription, use get-subscription instead. Only known parameters are accepted: status, customer, price, product, page, per_page.';
49 }
50
51 /**
52 * {@inheritDoc}
53 */
54 public function check_permission(): bool {
55 return current_user_can( 'read_sc_subscriptions' );
56 }
57
58 /**
59 * {@inheritDoc}
60 */
61 public function get_input_schema(): array {
62 return array(
63 'type' => 'object',
64 'properties' => array(
65 'status' => array(
66 'type' => 'string',
67 'description' => __( 'Filter by subscription status (active, trialing, past_due, canceled, completed).', 'surecart' ),
68 ),
69 'customer_id' => array(
70 'type' => 'string',
71 'description' => __( 'Filter by customer ID.', 'surecart' ),
72 ),
73 'page' => array(
74 'type' => 'integer',
75 'description' => __( 'Page number for pagination.', 'surecart' ),
76 'default' => 1,
77 ),
78 'per_page' => array(
79 'type' => 'integer',
80 'description' => __( 'Number of subscriptions per page (max 100).', 'surecart' ),
81 'default' => 10,
82 ),
83 ),
84 );
85 }
86
87 /**
88 * {@inheritDoc}
89 */
90 public function get_output_schema(): array {
91 return array(
92 'type' => 'object',
93 'properties' => array(
94 'success' => array( 'type' => 'boolean' ),
95 'subscriptions' => array(
96 'type' => 'array',
97 'items' => array( 'type' => 'object' ),
98 ),
99 'pagination' => array(
100 'type' => 'object',
101 'properties' => array(
102 'count' => array( 'type' => 'integer' ),
103 'page' => array( 'type' => 'integer' ),
104 'limit' => array( 'type' => 'integer' ),
105 ),
106 ),
107 ),
108 );
109 }
110
111 /**
112 * {@inheritDoc}
113 */
114 public function execute( array $input ) {
115 $page = absint( $input['page'] ?? 1 );
116 $per_page = max( 1, min( absint( $input['per_page'] ?? 10 ), 100 ) );
117
118 $args = array();
119
120 if ( ! empty( $input['status'] ) ) {
121 $args['status'] = array( sanitize_text_field( $input['status'] ) );
122 }
123
124 if ( ! empty( $input['customer_id'] ) ) {
125 $args['customer_ids'] = array( sanitize_text_field( $input['customer_id'] ) );
126 }
127
128 $subscriptions = Subscription::where( $args )->paginate(
129 array(
130 'page' => $page,
131 'per_page' => $per_page,
132 )
133 );
134 if ( is_wp_error( $subscriptions ) ) {
135 return $subscriptions;
136 }
137
138 return $this->success(
139 array(
140 'subscriptions' => array_map( array( $this, 'model_to_array' ), $subscriptions->data ?? array() ),
141 'pagination' => array(
142 'count' => $subscriptions->pagination->count ?? 0,
143 'page' => $page,
144 'limit' => $per_page,
145 ),
146 )
147 );
148 }
149 }
150