public function __call($name, $arguments) { // Make sure no error already exists if ($this->error) { return new WP_Error('invalid-request', __('You must provide a subdomain and API key for your Infusionsoft application.', 'infusionsoftwp')); } // Get the full method name with the service and method $method = ucfirst($name) . 'Service' . '.' . array_shift($arguments); $arguments = array_merge(array($method, $this->api_key), $arguments); // Initialize the client $client = new WP_HTTP_IXR_Client('https://' . $this->subdomain . '.infusionsoft.com/api/xmlrpc'); // Call the function and return any error that happens if (!call_user_func_array(array($client, 'query'), $arguments)) { return new WP_Error('invalid-request', $client->getErrorMessage()); } // Pass the response directly to the user return $client->getResponse(); }
function wr2x_validate_pro($subscr_id) { if (empty($subscr_id)) { delete_option('wr2x_pro_serial', ""); delete_option('wr2x_pro_status', ""); set_transient('wr2x_validated', false, 0); return false; } require_once wr2x_get_wordpress_root() . WPINC . '/class-IXR.php'; require_once wr2x_get_wordpress_root() . WPINC . '/class-wp-http-ixr-client.php'; $client = new WP_HTTP_IXR_Client('http://apps.meow.fr/xmlrpc.php'); if (!$client->query('meow_sales.auth', $subscr_id, 'retina', get_site_url())) { update_option('wr2x_pro_serial', ""); update_option('wr2x_pro_status', "A network error: " . $client->getErrorMessage()); set_transient('wr2x_validated', false, 0); return false; } $post = $client->getResponse(); if (!$post['success']) { if ($post['message_code'] == "NO_SUBSCRIPTION") { $status = __("Your serial does not seem right."); } else { if ($post['message_code'] == "NOT_ACTIVE") { $status = __("Your subscription is not active."); } else { if ($post['message_code'] == "TOO_MANY_URLS") { $status = __("Too many URLs are linked to your subscription."); } else { $status = "There is a problem with your subscription."; } } } update_option('wr2x_pro_serial', ""); update_option('wr2x_pro_status', $status); set_transient('wr2x_validated', false, 0); return false; } set_transient('wr2x_validated', $subscr_id, 3600 * 24 * 100); update_option('wr2x_pro_serial', $subscr_id); update_option('wr2x_pro_status', __("Your subscription is enabled.")); return true; }