ID, 'phone', $request['phone'] ); } if (isset($request['vatCode'])){ update_user_meta( $customer->ID, 'vat_code', $request['vatCode']); } if (isset($request['companyName'])){ update_user_meta( $customer->ID, 'company_name', $request['companyName']); } if (isset($request['deliveryAddress'])){ $received_address = json_decode($request['deliveryAddress']); $profile_addresses = get_user_meta($customer->ID, 'profile_addresses', true) ?: []; if ($received_address->id){ $updated = array( 'id' => $received_address->id, 'countryName' => Wiaas_Countries::get_country_name_by_id($received_address->idCountrySelected), 'deliveryMail' => $received_address->deliveryMail, 'idCountrySelected' => $received_address->idCountrySelected, 'city' => $received_address->city, 'detailedAddress' => $received_address->detailedAddress, 'zipCode' => $received_address->zipCode, 'firstName' => $received_address->firstName, 'lastName' => $received_address->lastName, 'deliveryMail' => $received_address->deliveryMail ); foreach($profile_addresses as $key => $address){ if ($address['id'] === $received_address->id){ $profile_addresses[$key] = $updated; break; } } }else{ $new_delivery_address = array( 'id' => time(), 'countryName' => Wiaas_Countries::get_country_name_by_id($received_address->idCountrySelected), 'deliveryMail' => $received_address->deliveryMail, 'idCountrySelected' => $received_address->idCountrySelected, 'city' => $received_address->city, 'detailedAddress' => $received_address->detailedAddress, 'zipCode' => $received_address->zipCode, 'firstName' => $received_address->firstName, 'lastName' => $received_address->lastName, 'deliveryMail' => $received_address->deliveryMail ); array_push($profile_addresses, $new_delivery_address); } update_user_meta( $customer->ID, 'profile_addresses', $profile_addresses); //delete_user_meta ($customer->ID, 'profile_addresses'); } if (isset($request['billingAddress'])){ $received_address = json_decode($request['billingAddress']); $billing_addresses = get_user_meta($customer->ID, 'billing_addresses', true) ?: []; if ($received_address->id){ $updated = array( 'id' => $received_address->id, 'countryName' => Wiaas_Countries::get_country_name_by_id($received_address->idCountrySelected), 'deliveryMail' => $received_address->deliveryMail, 'idCountrySelected' => $received_address->idCountrySelected, 'city' => $received_address->city, 'detailedAddress' => $received_address->detailedAddress, 'zipCode' => $received_address->zipCode, 'firstName' => $received_address->firstName, 'lastName' => $received_address->lastName, 'invoiceMail' => $received_address->invoiceMail ); foreach($billing_addresses as $key => $address){ if ($address['id'] === $received_address->id){ $billing_addresses[$key] = $updated; break; } } }else{ $new_billing_address = array( 'id' => time(), 'countryName' => Wiaas_Countries::get_country_name_by_id($received_address->idCountrySelected), 'deliveryMail' => $received_address->deliveryMail, 'idCountrySelected' => $received_address->idCountrySelected, 'city' => $received_address->city, 'detailedAddress' => $received_address->detailedAddress, 'zipCode' => $received_address->zipCode, 'firstName' => $received_address->firstName, 'lastName' => $received_address->lastName, 'invoiceMail' => $received_address->invoiceMail ); array_push($billing_addresses, $new_billing_address); } update_user_meta( $customer->ID, 'billing_addresses', $billing_addresses); //delete_user_meta ($customer->ID, 'profile_addresses'); } if (isset($request['removeDeliveryAddress'])){ $addressID = $request['removeDeliveryAddress']; $profile_addresses = get_user_meta($customer->ID, 'profile_addresses', true) ?: []; $counter = 0; foreach($profile_addresses as $key => $address){ if ($address['id'] == $addressID){ array_splice($profile_addresses, $counter, 1); break; } $counter++; } update_user_meta( $customer->ID, 'profile_addresses', $profile_addresses); } if (isset($request['removeBillingAddress'])){ $addressID = $request['removeBillingAddress']; $billing_addresses = get_user_meta($customer->ID, 'billing_addresses', true) ?: []; $counter = 0; foreach($billing_addresses as $key => $address){ if ($address['id'] == $addressID){ array_splice($billing_addresses, $counter, 1); break; } $counter++; } update_user_meta( $customer->ID, 'billing_addresses', $billing_addresses); } } public static function load_user_organization() { if (class_exists('WP_User_Taxonomy')) { require_once dirname( __FILE__ ) . '/user/class-wiaas-user-organization.php'; new Wiaas_User_Organization(); } } public static function remove_default_user_groups() { remove_action( 'init', 'wp_register_default_user_group_taxonomy' ); remove_action( 'init', 'wp_register_default_user_type_taxonomy' ); } /** * Apply wiaas custom transformation on retrieved JSON customer object * * @param $response * @param $order * @param $request * * @return mixed */ public static function transform_rest_customer($response, $order, $request) { $data = $response->get_data(); $user_id = $data['id']; $result = array( 'id' => $user_id, 'idCompany' => 0, 'isCompanyAdmin' => 1, 'mail' => $data['email'], 'name' => $data['first_name'] . ' ' . $data['last_name'], 'phone' => get_user_meta($user_id, 'phone', true), 'companyName' => get_user_meta($user_id, 'company_name', true), 'vatCode' => get_user_meta($user_id, 'vat_code', true), 'billingAddresses' => get_user_meta($user_id, 'billing_addresses', true) ?: [], 'profileAddresses' => get_user_meta($user_id, 'profile_addresses', true) ?: [], 'userType' => $data['role'] ); return new WP_REST_Response($result); } /** * Apply wiaas custom transformation on JWT token response * * @param $data * @param $user * * @return mixed */ public static function transform_jwt_token_response($data, $user) { return new WP_REST_Response(array( 'token' => $data['token'], 'userInfo' => array( 'wiaas_id_user' => $user->ID, 'wiaas_is_company_admin' => 1, //TODO: don't hardcode this 'wiaas_user_full_name' => $user->first_name . ' ' . $user->last_name, 'wiaas_user_type' => $user->roles, 'wiaas_username' => $user->data->user_login ) )); } } Wiaas_User::init();