Merge pull request #4847 from kloon/master

Add email lookup to customers endpoint, try at #4845
This commit is contained in:
Coen Jacobs 2014-02-18 10:47:50 +01:00
commit 5094d2174a
1 changed files with 27 additions and 0 deletions

View File

@ -70,6 +70,11 @@ class WC_API_Customers extends WC_API_Resource {
array( array( $this, 'get_customer' ), WC_API_SERVER::READABLE ),
);
# GET /customers/<email>
$routes[ $this->base . '/email/(?P<email>.+)' ] = array(
array( array( $this, 'get_customer_by_email' ), WC_API_SERVER::READABLE ),
);
# GET /customers/<id>/orders
$routes[ $this->base . '/(?P<id>\d+)/orders' ] = array(
array( array( $this, 'get_customer_orders' ), WC_API_SERVER::READABLE ),
@ -177,6 +182,28 @@ class WC_API_Customers extends WC_API_Resource {
return array( 'customer' => apply_filters( 'woocommerce_api_customer_response', $customer_data, $customer, $fields, $this->server ) );
}
/**
* Get the customer for the given email
*
* @since 2.2
* @param string $email the customer email
* @param string $fields
* @return array
*/
function get_customer_by_email( $email, $fields = null ) {
if ( is_email( $email ) ) {
$customer = get_user_by( 'email', $email );
if ( ! is_object( $customer ) ) {
return new WP_Error( 'woocommerce_api_invalid_customer_email', __( 'Invalid customer Email', 'woocommerce' ), array( 'status' => 404 ) );
}
} else {
return new WP_Error( 'woocommerce_api_invalid_customer_email', __( 'Invalid customer Email', 'woocommerce' ), array( 'status' => 404 ) );
}
return $this->get_customer( $customer->ID, $fields );
}
/**
* Get the total number of customers
*