PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.0
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 / ProductMediaRestServiceProvider.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 11 months ago AutoFeeProtocolRestServiceProvider.php 5 months ago AutoFeeRestServiceProvider.php 5 months ago BalanceTransactionRestServiceProvider.php 3 years ago BatchesRestServiceProvider.php 1 week ago BlockPatternsRestServiceProvider.php 3 years ago BrandRestServiceProvider.php 5 days ago BumpRestServiceProvider.php 5 days ago BundleItemsRestServiceProvider.php 5 days ago CancellationActRestServiceProvider.php 1 year ago CancellationReasonRestServiceProvider.php 1 year ago ChargesRestServiceProvider.php 4 years ago CheckEmailRestServiceProvider.php 3 years ago CheckoutRestServiceProvider.php 1 year ago ClicksRestServiceProvider.php 2 years ago CouponRestServiceProvider.php 4 years ago CustomerNotificationProtocolRestServiceProvider.php 4 years ago CustomerPortalProtocolRestServiceProvider.php 1 year ago CustomerRestServiceProvider.php 1 month ago DisplayCurrencyRestServiceProvider.php 1 year ago DisputesRestServiceProvider.php 9 months ago DownloadRestServiceProvider.php 3 months ago DraftCheckoutRestServiceProvider.php 1 year ago ExportsRestServiceProvider.php 2 years ago FulfillmentRestServiceProvider.php 3 years ago ImportRowsRestServiceProvider.php 2 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 1 month ago ManualPaymentMethodsRestServiceProvider.php 3 years ago MediaRestServiceProvider.php 1 year ago OrderProtocolRestServiceProvider.php 1 year ago OrderRestServiceProvider.php 1 year ago ParcelTemplateRestServiceProvider.php 4 months ago PaymentIntentsRestServiceProvider.php 4 years ago PaymentMethodsRestServiceProvider.php 2 years ago PayoutGroupsRestServiceProvider.php 2 years ago PayoutsRestServiceProvider.php 5 months ago PeriodRestServiceProvider.php 3 years ago PluginInstallerRestServiceProvider.php 1 week ago PriceRestServiceProvider.php 5 days ago ProcessorRestServiceProvider.php 3 years ago ProductCollectionsRestServiceProvider.php 5 days ago ProductGroupsRestServiceProvider.php 5 days ago ProductMediaRestServiceProvider.php 5 days ago ProductsRestServiceProvider.php 5 days 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 5 days ago ReturnItemsRestServiceProvider.php 2 years ago ReturnReasonsRestServiceProvider.php 2 years ago ReturnRequestsRestServiceProvider.php 2 years ago ReviewProtocolRestServiceProvider.php 5 months ago ReviewsRestServiceProvider.php 1 week ago RuleSchemaRestServiceProvider.php 5 months ago SettingsRestServiceProvider.php 1 year ago ShippingMethodRestServiceProvider.php 3 years ago ShippingProfileRestServiceProvider.php 3 years ago ShippingProtocolRestServiceProvider.php 1 year ago ShippingRateRestServiceProvider.php 3 years ago ShippingZoneRestServiceProvider.php 3 years ago SiteHealthRestServiceProvider.php 2 years ago StatisticRestServiceProvider.php 3 years ago SubscriptionProtocolRestServiceProvider.php 5 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 5 days ago VariantOptionsRestServiceProvider.php 5 days ago VariantValuesRestServiceProvider.php 5 days ago VariantsRestServiceProvider.php 5 days ago VerificationCodeRestServiceProvider.php 3 years ago WebhooksRestServiceProvider.php 4 years ago
ProductMediaRestServiceProvider.php
200 lines
1 <?php
2
3 namespace SureCart\Rest;
4
5 use SureCart\Controllers\Rest\ProductMediaController;
6 use SureCart\Rest\RestServiceInterface;
7
8 /**
9 * Service provider for Product Medias Rest Requests
10 */
11 class ProductMediaRestServiceProvider extends RestServiceProvider implements RestServiceInterface {
12
13 /**
14 * Endpoint.
15 *
16 * @var string
17 */
18 protected $endpoint = 'product_medias';
19
20 /**
21 * Rest Controller
22 *
23 * @var string
24 */
25 protected $controller = ProductMediaController::class;
26
27 /**
28 * Filter index list items by schema context.
29 *
30 * @var boolean
31 */
32 protected $filters_list_items = true;
33
34 /**
35 * Methods allowed for the model.
36 *
37 * @var array
38 */
39 protected $methods = [ 'index', 'create', 'find', 'edit', 'delete' ];
40
41 /**
42 * Register Additional REST Routes
43 *
44 * @return void
45 */
46 public function registerRoutes() {
47 register_rest_route(
48 "$this->name/v$this->version",
49 $this->endpoint . '/(?P<id>\S+)/download/',
50 [
51 [
52 'methods' => \WP_REST_Server::EDITABLE,
53 'callback' => $this->callback( $this->controller, 'download' ),
54 'permission_callback' => [ $this, 'update_item_permissions_check' ],
55 ],
56 // Register our schema callback.
57 'schema' => [ $this, 'get_item_schema' ],
58 ]
59 );
60 }
61
62 /**
63 * Get our sample schema for a post.
64 *
65 * @return array The sample schema for a post
66 */
67 public function get_item_schema() {
68 if ( $this->schema ) {
69 // Since WordPress 5.3, the schema can be cached in the $schema property.
70 return $this->schema;
71 }
72
73 $this->schema = [
74 // This tells the spec of JSON Schema we are using which is draft 4.
75 '$schema' => 'http://json-schema.org/draft-04/schema#',
76 // The title property marks the identity of the resource.
77 'title' => $this->endpoint,
78 'type' => 'object',
79 // In JSON Schema you can specify object properties in the properties attribute.
80 'properties' => [
81 'id' => [
82 'description' => esc_html__( 'Unique identifier for the object.', 'surecart' ),
83 'type' => 'string',
84 'context' => array( 'view', 'edit', 'embed' ),
85 'readonly' => true,
86 ],
87 'content' => array(
88 'description' => esc_html__( 'The content for the object.', 'surecart' ),
89 'type' => 'string',
90 ),
91 ],
92 ];
93
94 return $this->schema;
95 }
96
97 /**
98 * Get the collection params.
99 *
100 * @return array
101 */
102 public function get_collection_params() {
103 return [
104 'ids' => [
105 'description' => __( 'Ensure result set excludes specific IDs.', 'surecart' ),
106 'type' => 'array',
107 'items' => [
108 'type' => 'string',
109 ],
110 'default' => [],
111 ],
112 'product_ids' => [
113 'description' => __( 'Only return objects that belong to the given products.', 'surecart' ),
114 'type' => 'array',
115 'items' => [
116 'type' => 'string',
117 ],
118 'default' => [],
119 ],
120 'page' => [
121 'description' => esc_html__( 'The page of items you want returned.', 'surecart' ),
122 'type' => 'integer',
123 ],
124 'per_page' => [
125 'description' => esc_html__( 'A limit on the number of items to be returned, between 1 and 100.', 'surecart' ),
126 'type' => 'integer',
127 ],
128 'limit' => [
129 'description' => esc_html__( 'A limit on the number of records returned', 'surecart' ),
130 'type' => 'integer',
131 ],
132
133 ];
134 }
135
136 /**
137 * Anyone can get a specific product media.
138 *
139 * @param \WP_REST_Request $request Full details about the request.
140 * @return true|\WP_Error True if the request has access to create items, WP_Error object otherwise.
141 */
142 public function get_item_permissions_check( $request ) {
143 $check = $this->forbidEditContextWithout( $request, 'edit_sc_products' );
144 if ( is_wp_error( $check ) ) {
145 return $check;
146 }
147
148 return true;
149 }
150
151 /**
152 * Who can list product media
153 *
154 * @param \WP_REST_Request $request Full details about the request.
155 * @return true|\WP_Error True if the request has access to create items, WP_Error object otherwise.
156 */
157 public function get_items_permissions_check( $request ) {
158 $check = $this->forbidEditContextWithout( $request, 'edit_sc_products' );
159 if ( is_wp_error( $check ) ) {
160 return $check;
161 }
162
163 if ( $request['archived'] ) {
164 return current_user_can( 'edit_sc_products' );
165 }
166
167 return true;
168 }
169
170 /**
171 * Create product media.
172 *
173 * @param \WP_REST_Request $request Full details about the request.
174 * @return true|\WP_Error True if the request has access to create items, WP_Error object otherwise.
175 */
176 public function create_item_permissions_check( $request ) {
177 return current_user_can( 'publish_sc_products' );
178 }
179
180 /**
181 * Update product media.
182 *
183 * @param \WP_REST_Request $request Full details about the request.
184 * @return true|\WP_Error True if the request has access to create items, WP_Error object otherwise.
185 */
186 public function update_item_permissions_check( $request ) {
187 return current_user_can( 'edit_sc_products' );
188 }
189
190 /**
191 * Delete product media.
192 *
193 * @param \WP_REST_Request $request Full details about the request.
194 * @return true|\WP_Error True if the request has access to create items, WP_Error object otherwise.
195 */
196 public function delete_item_permissions_check( $request ) {
197 return current_user_can( 'delete_sc_products' );
198 }
199 }
200