PluginProbe
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.2.2
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.2.2
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 All 281 releases
surecart / app / src / Controllers / Rest / IntegrationsController.php
IntegrationsController.php
141 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace SureCart\Controllers\Rest;
4
5 use SureCart\Concerns\SanitizesRestParams;
6 use SureCart\Models\Integration;
7
8 /**
9 * Handle Price requests through the REST API
10 */
11 class IntegrationsController extends RestController {
12 use SanitizesRestParams;
13
14 /**
15 * The model class.
16 *
17 * @var string
18 */
19 protected $class = Integration::class;
20
21 /**
22 * Create a product integration.
23 *
24 * @param \WP_REST_Request $request Rest Request.
25 *
26 * @return \WP_REST_Response|\WP_Error
27 */
28 public function create( \WP_REST_Request $request ) {
29 do_action( 'surecart/integrations/create', $request->get_params() );
30 return Integration::create( $request->get_params() );
31 }
32
33 /**
34 * List all product integrations.
35 *
36 * @param \WP_REST_Request $request Rest Request.
37 *
38 * @return \WP_REST_Response|\WP_Error
39 */
40 public function index( \WP_REST_Request $request ) {
41 $integration = new Integration();
42
43 // integration model ids.
44 $integration_ids = $request->get_param( 'integration_ids' );
45 if ( ! empty( $integration_ids ) ) {
46 $integration = $integration->whereIn( 'integration_id', array_map( 'sanitize_text_field', (array) $integration_ids ) );
47 }
48
49 // model ids.
50 $model_ids = $request->get_param( 'model_ids' );
51 if ( ! empty( $model_ids ) ) {
52 $integration = $integration->whereIn( 'model_id', array_map( 'sanitize_text_field', (array) $model_ids ) );
53 }
54
55 $total = $integration->count();
56 $page = $request->get_param( 'page' ) ? $request->get_param( 'page' ) : 1;
57 $per_page = $request->get_param( 'per_page' ) ? $request->get_param( 'per_page' ) : 10;
58
59 // handle pagination.
60 $items = $integration->paginate(
61 [
62 'page' => $page,
63 'per_page' => $per_page,
64 ]
65 );
66
67 $response = rest_ensure_response( $items );
68 $response->header( 'X-WP-Total', (int) $total );
69 $response->header( 'X-WP-TotalPages', (int) ceil( $total / (int) $per_page ) );
70
71 return $response;
72 }
73
74 /**
75 * Find a specific product integration.
76 *
77 * @param \WP_REST_Request $request Rest Request.
78 *
79 * @return \WP_REST_Response|\WP_Error
80 */
81 public function find( \WP_REST_Request $request ) {
82 $model = $this->middleware( new $this->class(), $request );
83 if ( is_wp_error( $model ) ) {
84 return $model;
85 }
86
87 return $model->where(
88 array_filter(
89 [
90 'model_id' => $this->sanitizeFilterParam( $request->get_param( 'model_id' ) ),
91 'integration_id' => $this->sanitizeFilterParam( $request->get_param( 'integration_id' ) ),
92 'model_name' => $this->sanitizeFilterParam( $request->get_param( 'model_name' ) ),
93 'provider' => $this->sanitizeFilterParam( $request->get_param( 'provider' ) ),
94 ],
95 function ( $value ) {
96 return null !== $value;
97 }
98 )
99 )->find( $this->sanitizeFilterParam( $request['id'] ) );
100 }
101
102 /**
103 * Edit model.
104 *
105 * @param \WP_REST_Request $request Rest Request.
106 *
107 * @return \WP_REST_Response|\WP_Error
108 */
109 public function edit( \WP_REST_Request $request ) {
110 $model = $this->middleware( new $this->class( $this->sanitizeFilterParam( $request['id'] ) ), $request );
111 if ( is_wp_error( $model ) ) {
112 return $model;
113 }
114 return $model->where(
115 array_filter(
116 [
117 'model_id' => $this->sanitizeFilterParam( $request->get_param( 'model_id' ) ),
118 'integration_id' => $this->sanitizeFilterParam( $request->get_param( 'integration_id' ) ),
119 'model_name' => $this->sanitizeFilterParam( $request->get_param( 'model_name' ) ),
120 'provider' => $this->sanitizeFilterParam( $request->get_param( 'provider' ) ),
121 ],
122 function ( $value ) {
123 return null !== $value;
124 }
125 )
126 )->update( $request->get_json_params() );
127 }
128
129 /**
130 * Delete model.
131 *
132 * @param \WP_REST_Request $request Rest Request.
133 *
134 * @return \WP_REST_Response|\WP_Error
135 */
136 public function delete( \WP_REST_Request $request ) {
137 do_action( 'surecart/integrations/delete', $request->get_params() );
138 return ( new $this->class() )->delete( $request['id'] );
139 }
140 }
141