PluginProbe
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.2.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.2.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 All 281 releases
surecart / app / src / Controllers / Rest / CustomerController.php
CustomerController.php
109 lines 2.8 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\Models\Customer;
6 use SureCart\Models\User;
7
8 /**
9 * Handle Price requests through the REST API
10 */
11 class CustomerController extends RestController {
12 /**
13 * Class to make the requests.
14 *
15 * @var string
16 */
17 protected $class = Customer::class;
18
19 /**
20 * Connect a user.
21 *
22 * @param \WP_REST_Request $request Rest Request.
23 *
24 * @return \WP_REST_Response
25 */
26 public function connect( \WP_REST_Request $request ) {
27 $customer = Customer::find( $request['customer_id'] );
28 if ( is_wp_error( $customer ) ) {
29 return $customer;
30 }
31
32 $user = User::find( $request['user_id'] );
33 if ( is_wp_error( $user ) ) {
34 return $user;
35 }
36
37 $response = $user->setCustomerId( $customer->id, $customer->live_mode ? 'live' : 'test', $request['force'] ?? false );
38 if ( is_wp_error( $response ) ) {
39 return $response;
40 }
41
42 $controller = new \WP_REST_Users_Controller();
43 return rest_ensure_response( $controller->prepare_item_for_response( $user->getUser(), $request ) );
44 }
45
46 /**
47 * Sync Users with platform.
48 * This catches the request and enqueues the action to start the sync.
49 *
50 * @param \WP_REST_Request $request Rest Request.
51 *
52 * @return \WP_REST_Response|\WP_Error
53 */
54 public function sync( \WP_REST_Request $request ) {
55 // enqueue action.
56 return as_enqueue_async_action(
57 'surecart/sync/customers',
58 [
59 'page' => 1,
60 'batch_size' => apply_filters( 'surecart/sync/customers/batch_size', 100 ),
61 'create_user' => $request->get_param( 'create_user' ),
62 'run_actions' => $request->get_param( 'run_actions' ),
63 ],
64 'surecart'
65 );
66 }
67
68 /**
69 * Expose media for a customer.
70 *
71 * @param \WP_REST_Request $request Rest Request.
72 *
73 * @return \SureCart\Models\Media|false
74 */
75 public function exposeMedia( \WP_REST_Request $request ) {
76 $customer = $this->middleware( new $this->class( $request['id'] ), $request );
77 if ( is_wp_error( $customer ) ) {
78 return $customer;
79 }
80
81 return $customer->where( $request->get_query_params() )->exposeMedia( $request['media_id'] );
82 }
83
84 /**
85 * Edit model.
86 *
87 * @param \WP_REST_Request $request Rest Request.
88 *
89 * @return \WP_REST_Response|\WP_Error
90 */
91 public function edit( \WP_REST_Request $request ) {
92 $wp_user = User::findByCustomerId( $request['id'] );
93
94 if ( ! empty( $wp_user->ID ) ) {
95 wp_update_user(
96 [
97 'ID' => $wp_user->ID,
98 'user_email' => ! empty( $request['email'] ) ? $request['email'] : $wp_user->user_email,
99 'first_name' => ! empty( $request['first_name'] ) ? $request['first_name'] : $wp_user->first_name,
100 'last_name' => ! empty( $request['last_name'] ) ? $request['last_name'] : $wp_user->last_name,
101 'phone' => ! empty( $request['phone'] ) ? $request['phone'] : $wp_user->phone,
102 ]
103 );
104 }
105
106 return parent::edit( $request );
107 }
108 }
109