PluginProbe
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.4.2
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.4.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 / CustomerController.php
CustomerController.php
131 lines 3.3 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 Customer related REST API requests.
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 * Get the current logged-in user's customer record.
21 *
22 * @param \WP_REST_Request $request Rest Request.
23 *
24 * @return \SureCart\Models\Customer|null|\WP_Error
25 */
26 public function me( \WP_REST_Request $request ) {
27 $mode = $request->get_param( 'mode' ) ?? 'live';
28 $user = User::current();
29
30 $customer_id = $user->customerId( $mode );
31 if ( empty( $customer_id ) ) {
32 return null;
33 }
34
35 // Set the ID in the request to fetch the customer record.
36 $request->set_param( 'id', $customer_id );
37
38 return $this->find( $request );
39 }
40
41 /**
42 * Connect a user.
43 *
44 * @param \WP_REST_Request $request Rest Request.
45 *
46 * @return \WP_REST_Response
47 */
48 public function connect( \WP_REST_Request $request ) {
49 $customer = Customer::find( $request['customer_id'] );
50 if ( is_wp_error( $customer ) ) {
51 return $customer;
52 }
53
54 $user = User::find( $request['user_id'] );
55 if ( is_wp_error( $user ) ) {
56 return $user;
57 }
58
59 $response = $user->setCustomerId( $customer->id, $customer->live_mode ? 'live' : 'test', $request['force'] ?? false );
60 if ( is_wp_error( $response ) ) {
61 return $response;
62 }
63
64 $controller = new \WP_REST_Users_Controller();
65 return rest_ensure_response( $controller->prepare_item_for_response( $user->getUser(), $request ) );
66 }
67
68 /**
69 * Sync Users with platform.
70 * This catches the request and enqueues the action to start the sync.
71 *
72 * @param \WP_REST_Request $request Rest Request.
73 *
74 * @return \WP_REST_Response|\WP_Error
75 */
76 public function sync( \WP_REST_Request $request ) {
77 // enqueue action.
78 return as_enqueue_async_action(
79 'surecart/sync/customers',
80 [
81 'page' => 1,
82 'batch_size' => apply_filters( 'surecart/sync/customers/batch_size', 100 ),
83 'create_user' => $request->get_param( 'create_user' ),
84 'run_actions' => $request->get_param( 'run_actions' ),
85 ],
86 'surecart'
87 );
88 }
89
90 /**
91 * Expose media for a customer.
92 *
93 * @param \WP_REST_Request $request Rest Request.
94 *
95 * @return \SureCart\Models\Media|false
96 */
97 public function exposeMedia( \WP_REST_Request $request ) {
98 $customer = $this->middleware( new $this->class( $request['id'] ), $request );
99 if ( is_wp_error( $customer ) ) {
100 return $customer;
101 }
102
103 return $customer->where( $request->get_query_params() )->exposeMedia( $request['media_id'] );
104 }
105
106 /**
107 * Edit model.
108 *
109 * @param \WP_REST_Request $request Rest Request.
110 *
111 * @return \WP_REST_Response|\WP_Error
112 */
113 public function edit( \WP_REST_Request $request ) {
114 $wp_user = User::findByCustomerId( $request['id'] );
115
116 if ( ! empty( $wp_user->ID ) ) {
117 wp_update_user(
118 [
119 'ID' => $wp_user->ID,
120 'user_email' => ! empty( $request['email'] ) ? $request['email'] : $wp_user->user_email,
121 'first_name' => ! empty( $request['first_name'] ) ? $request['first_name'] : $wp_user->first_name,
122 'last_name' => ! empty( $request['last_name'] ) ? $request['last_name'] : $wp_user->last_name,
123 'phone' => ! empty( $request['phone'] ) ? $request['phone'] : $wp_user->phone,
124 ]
125 );
126 }
127
128 return parent::edit( $request );
129 }
130 }
131