/** * @param $account * @param $mapping_context * @return WP_User */ function memberful_wp_sync_member_account($account, $mapping_context) { $mapper = new Memberful_User_Map(); $user = $mapper->map($account->member, $mapping_context); if (!is_wp_error($user)) { Memberful_Wp_User_Downloads::sync($user->ID, $account->products); Memberful_Wp_User_Subscriptions::sync($user->ID, $account->subscriptions); Memberful_Wp_User_Role_Decision::ensure_user_role_is_correct($user); } else { memberful_wp_record_error(array('error' => $user->get_error_messages(), 'code' => $user->get_error_code(), 'data' => $user->get_error_data())); } return $user; }
/** * Gets the access token and refresh token from an authorization code * * @param string $auth_code The authorization code returned from OAuth endpoint * @return StdObject Access token and Refresh token */ public function get_oauth_tokens($auth_code) { $params = array('client_id' => get_option('memberful_client_id'), 'client_secret' => get_option('memberful_client_secret'), 'grant_type' => 'authorization_code', 'code' => $auth_code); $response = memberful_wp_post_data_to_api_as_json(self::oauth_member_url('token'), $params); if (is_wp_error($response)) { memberful_wp_record_wp_error($response); return $this->_error('could_not_get_tokens', $response); } $body = json_decode($response['body']); $code = $response['response']['code']; if ($code != 200 || $body === NULL || empty($body->access_token)) { $payload = array('code' => 'oauth_access_fail', 'error' => 'Could not get access token from Memberful', 'response' => $response); memberful_wp_record_error($payload); return $this->_error($payload['code'], $payload['error']); } return json_decode($response['body']); }
function memberful_wp_record_wp_error($wp_error) { return memberful_wp_record_error(array('codes' => $wp_error->get_error_codes(), 'messages' => $wp_error->get_error_messages(), 'data' => $wp_error->get_error_data())); }