113 lines
2.5 KiB
PHP
113 lines
2.5 KiB
PHP
<?php
|
|
/**
|
|
* Simply Schedule Appointments Customers.
|
|
*
|
|
* @since 2.7.1
|
|
* @package Simply_Schedule_Appointments
|
|
*/
|
|
|
|
/**
|
|
* Simply Schedule Appointments Customers.
|
|
*
|
|
* @since 2.7.1
|
|
*/
|
|
class SSA_Customers {
|
|
/**
|
|
* Parent plugin class.
|
|
*
|
|
* @since 2.7.1
|
|
*
|
|
* @var Simply_Schedule_Appointments
|
|
*/
|
|
protected $plugin = null;
|
|
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @since 2.7.1
|
|
*
|
|
* @param Simply_Schedule_Appointments $plugin Main plugin object.
|
|
*/
|
|
public function __construct( $plugin ) {
|
|
$this->plugin = $plugin;
|
|
$this->hooks();
|
|
}
|
|
|
|
/**
|
|
* Initiate our hooks.
|
|
*
|
|
* @since 2.7.1
|
|
*/
|
|
public function hooks() {
|
|
add_action( 'rest_api_init', array( $this, 'register_customers_endpoint' ) );
|
|
}
|
|
|
|
public function register_customers_endpoint( $request ) {
|
|
$namespace = 'ssa/v1';
|
|
$base = 'customers';
|
|
|
|
register_rest_route( $namespace, '/' . $base . '/', array(
|
|
array(
|
|
'methods' => WP_REST_Server::READABLE,
|
|
'callback' => array( $this, 'get_items' ),
|
|
'permission_callback' => array( $this, 'get_items_permissions_check' ),
|
|
'args' => array(
|
|
'context' => array(
|
|
'default' => 'view',
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'methods' => WP_REST_Server::CREATABLE,
|
|
'callback' => array( $this, 'get_items' ),
|
|
'permission_callback' => array( $this, 'get_items_permissions_check' ),
|
|
'args' => array(),
|
|
),
|
|
) );
|
|
}
|
|
|
|
public function get_items_permissions_check( $request ) {
|
|
return current_user_can( 'ssa_manage_appointments' );
|
|
}
|
|
|
|
public function get_items( $request ) {
|
|
$params = $request->get_params();
|
|
|
|
// Support both GET (legacy) and POST (to avoid 414 errors with large ID lists)
|
|
if ( 'POST' === $request->get_method() ) {
|
|
$body = $request->get_json_params();
|
|
if ( ! empty( $body['ids'] ) ) {
|
|
$params['ids'] = $body['ids'];
|
|
}
|
|
}
|
|
|
|
$data = array();
|
|
if ( ! empty( $params['ids'] ) ) {
|
|
if ( ! is_array( $params['ids'] ) ) {
|
|
$params['ids'] = json_decode( $params['ids'], true );
|
|
}
|
|
foreach ($params['ids'] as $key => $id) {
|
|
$user = new WP_User( $id );
|
|
if ( empty( (array)$user->data ) ) {
|
|
continue;
|
|
}
|
|
|
|
$user_data = (array)$user->data;
|
|
$data[] = array(
|
|
'id' => $user_data['ID'],
|
|
'name' => $user_data['display_name'],
|
|
'gravatar_url' => get_avatar_url( $user_data['ID'] )
|
|
);
|
|
}
|
|
}
|
|
|
|
$response = array(
|
|
'response_code' => 200,
|
|
'error' => '',
|
|
'data' => $data,
|
|
);
|
|
|
|
return new WP_REST_Response( $response, 200 );
|
|
}
|
|
}
|