PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.6
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.6
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 / CreateProduct.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
CreateProduct.php
143 lines
1 <?php
2
3 namespace SureCart\Abilities\Abilities;
4
5 use SureCart\Models\Product;
6
7 /**
8 * Create a new product with prices.
9 */
10 class CreateProduct extends AbstractAbility {
11
12 /**
13 * {@inheritDoc}
14 */
15 public function get_name(): string {
16 return 'surecart/create-product';
17 }
18
19 /**
20 * {@inheritDoc}
21 */
22 public function get_label(): string {
23 return __( 'Create Product', 'surecart' );
24 }
25
26 /**
27 * {@inheritDoc}
28 */
29 public function get_description(): string {
30 return __( 'Create a new SureCart product with a name, description, and optional initial price. The product is created in active (non-archived) state. Returns the newly created product object.', 'surecart' );
31 }
32
33 /**
34 * {@inheritDoc}
35 */
36 public function get_annotations(): array {
37 return array(
38 'readonly' => false,
39 'destructive' => false,
40 'idempotent' => false,
41 );
42 }
43
44 /**
45 * {@inheritDoc}
46 */
47 public function get_instructions(): string {
48 return 'A product name is required. An initial price can be set via the price_amount and price_currency fields. Each call creates a new product — do not call multiple times for the same product.';
49 }
50
51 /**
52 * {@inheritDoc}
53 */
54 public function check_permission(): bool {
55 return current_user_can( 'publish_sc_products' );
56 }
57
58 /**
59 * {@inheritDoc}
60 */
61 public function get_input_schema(): array {
62 return array(
63 'type' => 'object',
64 'properties' => array(
65 'name' => array(
66 'type' => 'string',
67 'description' => __( 'Product name.', 'surecart' ),
68 ),
69 'description' => array(
70 'type' => 'string',
71 'description' => __( 'Product description.', 'surecart' ),
72 ),
73 'price' => array(
74 'type' => 'integer',
75 'description' => __( 'Price amount in the smallest currency unit (e.g., cents).', 'surecart' ),
76 ),
77 'currency' => array(
78 'type' => 'string',
79 'description' => __( 'Three-letter ISO currency code (e.g., usd).', 'surecart' ),
80 'default' => 'usd',
81 ),
82 'recurring' => array(
83 'type' => 'boolean',
84 'description' => __( 'Whether this is a recurring/subscription product.', 'surecart' ),
85 'default' => false,
86 ),
87 ),
88 'required' => array( 'name' ),
89 );
90 }
91
92 /**
93 * {@inheritDoc}
94 */
95 public function get_output_schema(): array {
96 return array(
97 'type' => 'object',
98 'properties' => array(
99 'success' => array( 'type' => 'boolean' ),
100 'product' => array( 'type' => 'object' ),
101 ),
102 );
103 }
104
105 /**
106 * {@inheritDoc}
107 */
108 public function execute( array $input ) {
109 $data = array(
110 'name' => sanitize_text_field( $input['name'] ),
111 );
112
113 if ( ! empty( $input['description'] ) ) {
114 $data['description'] = sanitize_textarea_field( $input['description'] );
115 }
116
117 if ( ! empty( $input['price'] ) ) {
118 $price_data = array(
119 'amount' => absint( $input['price'] ),
120 'currency' => sanitize_text_field( $input['currency'] ?? 'usd' ),
121 );
122
123 if ( ! empty( $input['recurring'] ) ) {
124 $price_data['recurring_interval'] = 'month';
125 $price_data['recurring_interval_count'] = 1;
126 }
127
128 $data['prices'] = array( $price_data );
129 }
130
131 $product = Product::create( $data );
132 if ( is_wp_error( $product ) ) {
133 return $product;
134 }
135
136 return $this->success(
137 array(
138 'product' => $this->model_to_array( $product ),
139 )
140 );
141 }
142 }
143