PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.7.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.7.0
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 / Rest / ShipmentRestServiceProvider.php
surecart / app / src / Rest Last commit date
AbandonedCheckoutProtocolRestServiceProvider.php 3 years ago AbandonedCheckoutRestServiceProvider.php 2 years ago AccountRestServiceProvider.php 4 years ago ActivationRestServiceProvider.php 1 year ago AffiliationProductsRestServiceProvider.php 2 years ago AffiliationProtocolRestServiceProvider.php 2 years ago AffiliationRequestsRestServiceProvider.php 2 years ago AffiliationsRestServiceProvider.php 1 year ago AutoFeeProtocolRestServiceProvider.php 7 months ago AutoFeeRestServiceProvider.php 7 months ago BalanceTransactionRestServiceProvider.php 4 years ago BatchesRestServiceProvider.php 1 month ago BlockPatternsRestServiceProvider.php 4 years ago BrandRestServiceProvider.php 1 month ago BumpRestServiceProvider.php 1 month ago BundleItemsRestServiceProvider.php 1 month ago CancellationActRestServiceProvider.php 1 year ago CancellationReasonRestServiceProvider.php 1 year ago ChargesRestServiceProvider.php 4 years ago CheckEmailRestServiceProvider.php 3 years ago CheckoutRestServiceProvider.php 4 weeks ago ClicksRestServiceProvider.php 2 years ago CouponRestServiceProvider.php 4 years ago CustomerNotificationProtocolRestServiceProvider.php 4 years ago CustomerPortalProtocolRestServiceProvider.php 1 year ago CustomerRestServiceProvider.php 2 months ago DisplayCurrencyRestServiceProvider.php 1 year ago DisputesRestServiceProvider.php 11 months ago DownloadRestServiceProvider.php 4 months ago DraftCheckoutRestServiceProvider.php 1 year ago ExportsRestServiceProvider.php 2 years ago FulfillmentRestServiceProvider.php 3 years ago ImportRowsRestServiceProvider.php 3 months ago IncomingWebhooksRestServiceProvider.php 2 years ago IntegrationProvidersRestServiceProvider.php 4 years ago IntegrationsCatalogRestServiceProvider.php 1 year ago IntegrationsRestServiceProvider.php 4 years ago InvoicesRestServiceProvider.php 1 year ago LicenseRestServiceProvider.php 1 year ago LineItemsRestServiceProvider.php 1 year ago LoginRestServiceProvider.php 2 months ago ManualPaymentMethodsRestServiceProvider.php 3 years ago MediaRestServiceProvider.php 1 year ago OrderProtocolRestServiceProvider.php 1 year ago OrderRestServiceProvider.php 1 year ago ParcelTemplateRestServiceProvider.php 1 week ago PaymentIntentsRestServiceProvider.php 4 years ago PaymentMethodsRestServiceProvider.php 3 years ago PayoutGroupsRestServiceProvider.php 2 years ago PayoutsRestServiceProvider.php 6 months ago PeriodRestServiceProvider.php 3 years ago PluginInstallerRestServiceProvider.php 1 month ago PriceRestServiceProvider.php 1 month ago ProcessorRestServiceProvider.php 3 years ago ProductCollectionsRestServiceProvider.php 1 month ago ProductGroupsRestServiceProvider.php 1 month ago ProductMediaRestServiceProvider.php 1 month ago ProductsRestServiceProvider.php 1 month ago PromotionRestServiceProvider.php 4 years ago ProvisionalAccountRestServiceProvider.php 3 years ago PurchasesRestServiceProvider.php 4 years ago ReferralItemsRestServiceProvider.php 2 years ago ReferralsRestServiceProvider.php 2 years ago RefundsRestServiceProvider.php 4 years ago RegisteredWebhookRestServiceProvider.php 2 years ago RestServiceInterface.php 4 years ago RestServiceProvider.php 1 month ago ReturnItemsRestServiceProvider.php 2 years ago ReturnReasonsRestServiceProvider.php 2 years ago ReturnRequestsRestServiceProvider.php 2 years ago ReviewProtocolRestServiceProvider.php 6 months ago ReviewsRestServiceProvider.php 1 month ago RuleSchemaRestServiceProvider.php 7 months ago SettingsRestServiceProvider.php 1 year ago ShipmentRestServiceProvider.php 1 week ago ShippingMethodRestServiceProvider.php 3 years ago ShippingProfileRestServiceProvider.php 3 years ago ShippingProtocolRestServiceProvider.php 1 year ago ShippingProviderTypeRestServiceProvider.php 1 week ago ShippingRateRestServiceProvider.php 3 years ago ShippingZoneRestServiceProvider.php 3 years ago SiteHealthRestServiceProvider.php 2 years ago StatisticRestServiceProvider.php 3 years ago SubscriptionProtocolRestServiceProvider.php 6 months ago SubscriptionRestServiceProvider.php 2 years ago SwapRestServiceProvider.php 1 year ago TaxOverrideRestServiceProvider.php 1 year ago TaxProtocolRestServiceProvider.php 1 year ago TaxRegistrationRestServiceProvider.php 1 year ago TaxZoneRestServiceProvider.php 1 year ago UploadsRestServiceProvider.php 4 years ago UpsellFunnelRestServiceProvider.php 1 year ago UpsellRestServiceProvider.php 1 month ago VariantOptionsRestServiceProvider.php 1 month ago VariantValuesRestServiceProvider.php 1 month ago VariantsRestServiceProvider.php 1 month ago VerificationCodeRestServiceProvider.php 3 years ago WarehouseRestServiceProvider.php 1 week ago WebhooksRestServiceProvider.php 4 years ago
ShipmentRestServiceProvider.php
203 lines
1 <?php
2
3 namespace SureCart\Rest;
4
5 use SureCart\Rest\RestServiceInterface;
6 use SureCart\Controllers\Rest\ShipmentsController;
7
8 /**
9 * Service provider for Shipment Rest Requests
10 */
11 class ShipmentRestServiceProvider extends RestServiceProvider implements RestServiceInterface {
12 /**
13 * Endpoint.
14 *
15 * @var string
16 */
17 protected $endpoint = 'shipments';
18
19 /**
20 * Rest Controller
21 *
22 * @var string
23 */
24 protected $controller = ShipmentsController::class;
25
26 /**
27 * Methods allowed for the model.
28 *
29 * @var array
30 */
31 protected $methods = [ 'index', 'find', 'edit' ];
32
33 /**
34 * Register REST Routes
35 *
36 * @return void
37 */
38 public function registerRoutes() {
39 register_rest_route(
40 "$this->name/v$this->version",
41 $this->endpoint . '/(?P<id>[^/]+)/purchase/',
42 [
43 [
44 'methods' => \WP_REST_Server::EDITABLE,
45 'callback' => $this->callback( $this->controller, 'purchaseLabel' ),
46 'permission_callback' => [ $this, 'purchase_label_permissions_check' ],
47 ],
48 'schema' => [ $this, 'get_item_schema' ],
49 ]
50 );
51
52 register_rest_route(
53 "$this->name/v$this->version",
54 $this->endpoint . '/(?P<id>[^/]+)/void/',
55 [
56 [
57 'methods' => \WP_REST_Server::EDITABLE,
58 'callback' => $this->callback( $this->controller, 'voidLabel' ),
59 'permission_callback' => [ $this, 'void_label_permissions_check' ],
60 ],
61 'schema' => [ $this, 'get_item_schema' ],
62 ]
63 );
64
65 register_rest_route(
66 "$this->name/v$this->version",
67 $this->endpoint . '/(?P<id>[^/]+)/quote/',
68 [
69 [
70 'methods' => \WP_REST_Server::EDITABLE,
71 'callback' => $this->callback( $this->controller, 'quoteRates' ),
72 'permission_callback' => [ $this, 'quote_rates_permissions_check' ],
73 ],
74 'schema' => [ $this, 'get_item_schema' ],
75 ]
76 );
77 }
78
79 /**
80 * Get our sample schema for a shipment.
81 *
82 * @return array The sample schema for a shipment
83 */
84 public function get_item_schema() {
85 if ( $this->schema ) {
86 return $this->schema;
87 }
88
89 $this->schema = [
90 '$schema' => 'http://json-schema.org/draft-04/schema#',
91 'title' => $this->endpoint,
92 'type' => 'object',
93 'properties' => [
94 'id' => [
95 'description' => esc_html__( 'Unique identifier for the object.', 'surecart' ),
96 'type' => 'string',
97 'context' => [ 'view', 'edit', 'embed' ],
98 'readonly' => true,
99 ],
100 ],
101 ];
102
103 return $this->schema;
104 }
105
106 /**
107 * Get the collection params.
108 *
109 * @return array
110 */
111 public function get_collection_params() {
112 return [
113 'page' => [
114 'description' => esc_html__( 'The page of items you want returned.', 'surecart' ),
115 'type' => 'integer',
116 ],
117 'per_page' => [
118 'description' => esc_html__( 'A limit on the number of items to be returned, between 1 and 100.', 'surecart' ),
119 'type' => 'integer',
120 ],
121 'fulfillment_ids' => [
122 'description' => esc_html__( 'Filter by fulfillment IDs.', 'surecart' ),
123 'type' => 'array',
124 'items' => [
125 'type' => 'string',
126 ],
127 ],
128 'status' => [
129 'description' => esc_html__( 'Filter by shipment status.', 'surecart' ),
130 'type' => 'string',
131 ],
132 ];
133 }
134
135 /**
136 * Retrieve permissions.
137 *
138 * @param \WP_REST_Request $request Full details about the request.
139 * @return true|\WP_Error True if the request has access, WP_Error object otherwise.
140 */
141 public function get_item_permissions_check( $request ) {
142 return current_user_can( 'read_sc_orders' );
143 }
144
145 /**
146 * List permissions.
147 *
148 * @param \WP_REST_Request $request Full details about the request.
149 * @return true|\WP_Error True if the request has access, WP_Error object otherwise.
150 */
151 public function get_items_permissions_check( $request ) {
152 // Listing shipments — including with a fulfillment_ids filter — is an
153 // admin operation requiring the global read_sc_orders cap. The earlier
154 // per-fulfillment object-level branch passed a fulfillment ID to
155 // read_sc_order, but that cap's map (OrderPermissionsController) calls
156 // Order::find() with the ID and 404s for any fulfillment ID, so the
157 // branch was effectively a no-op for non-admins and redundant for
158 // admins (the global cap check inside read_sc_order short-circuits
159 // first). Customer-facing access should use a dedicated endpoint.
160 return current_user_can( 'read_sc_orders' );
161 }
162
163 /**
164 * Update permissions.
165 *
166 * @param \WP_REST_Request $request Full details about the request.
167 * @return true|\WP_Error True if the request has access, WP_Error object otherwise.
168 */
169 public function update_item_permissions_check( $request ) {
170 return current_user_can( 'edit_sc_orders' );
171 }
172
173 /**
174 * Purchase label permissions.
175 *
176 * @param \WP_REST_Request $request Full details about the request.
177 * @return true|\WP_Error True if the request has access, WP_Error object otherwise.
178 */
179 public function purchase_label_permissions_check( $request ) {
180 return current_user_can( 'edit_sc_orders' );
181 }
182
183 /**
184 * Void label permissions.
185 *
186 * @param \WP_REST_Request $request Full details about the request.
187 * @return true|\WP_Error True if the request has access, WP_Error object otherwise.
188 */
189 public function void_label_permissions_check( $request ) {
190 return current_user_can( 'edit_sc_orders' );
191 }
192
193 /**
194 * Re-quote rates permissions.
195 *
196 * @param \WP_REST_Request $request Full details about the request.
197 * @return true|\WP_Error True if the request has access, WP_Error object otherwise.
198 */
199 public function quote_rates_permissions_check( $request ) {
200 return current_user_can( 'edit_sc_orders' );
201 }
202 }
203