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 wprt_screen() { echo '<div class="wrap"><h2>WP Remote Test</h2>'; $action = isset($_POST['action']) ? $_POST['action'] : null; $url = isset($_POST['url']) ? $_POST['url'] : null; $method = isset($_POST['method']) ? $_POST['method'] : null; $useragent = isset($_POST['useragent']) ? $_POST['useragent'] : null; if ($action == 'xmlrpc') { echo "<h3>Results</h3>"; require_once ABSPATH . WPINC . '/class-IXR.php'; require_once ABSPATH . WPINC . '/class-wp-http-ixr-client.php'; $client = new WP_HTTP_IXR_Client($url); $client->useragent = $useragent; if (!$client->query($method)) { print_r($client->error); } else { print_r($client->getResponse()); } } ?> <h3>XML/RPC (WP_HTTP_IXR_Client)</h3> <form id="posts-filter" action="" method="POST"> <p> <label>URL</label><br /> <input type="text" name="url" style="width: 360px;" value="http://apps.meow.fr/xmlrpc.php"><br /> </p> <p> <label>Method</label><br /> <input type="text" name="method" style="width: 360px;" value="meow_sales.auth"><br /> </p> <p> <label>User Agent</label><br /> <input type="text" name="useragent" style="width: 360px;" value="MeowApps"><br /> </p> <input type="hidden" name="action" value="xmlrpc"> <input type="submit" class="button" value="Query"> </form> <?php echo '</div>'; }
function __construct($site_ID) { // @TODO check port, timeout etc $server = untrailingslashit(get_post_meta($site_ID, 'syn_site_url', true)); if (false === strpos($server, 'xmlrpc.php')) { $server = esc_url_raw(trailingslashit($server) . 'xmlrpc.php'); } else { $server = esc_url_raw($server); } $this->username = get_post_meta($site_ID, 'syn_site_username', true); $this->password = push_syndicate_decrypt(get_post_meta($site_ID, 'syn_site_password', true)); $this->site_ID = $site_ID; parent::__construct($server); if (true === apply_filters('syn_xmlrpc_push_send_thumbnail', true, $site_ID, $this)) { add_action('syn_xmlrpc_push_new_post_success', array($this, 'post_push_send_thumbnail'), 10, 6); add_action('syn_xmlrpc_push_edit_post_success', array($this, 'post_push_send_thumbnail'), 10, 6); // TODO: on delete post, delete thumbnail } }
public function init($site_ID = 0) { global $settings_manager; $this->username = get_post_meta($site_ID, 'syn_site_username', true); $this->password = $settings_manager->syndicate_decrypt(get_post_meta($site_ID, 'syn_site_password', true)); $this->site_ID = $site_ID; $server = untrailingslashit(get_post_meta($site_ID, 'syn_site_url', true)); /** * Set up the callbacks for attachments. */ /** * Filter whether the XML push client should push thumbnails. * * Return false to skip sending thumbnails. * * @param bool $push_thumbnails Whether to push thumbnails. Default is true. * @param int $site_ID The id of the site being pushed to. * @param XML_Push $this The push client instance. */ if (true === apply_filters('syn_xmlrpc_push_send_thumbnail', true, $site_ID, $this)) { add_action('syn_xmlrpc_push_new_post_success', array($this, 'post_push_send_thumbnail'), 10, 6); add_action('syn_xmlrpc_push_edit_post_success', array($this, 'post_push_send_thumbnail'), 10, 6); // TODO: on delete post, delete thumbnail } /** * Bail on connection test if we don't have a server URL. */ if ('' === $server) { return false; } if (false === strpos($server, 'xmlrpc.php')) { $server = esc_url_raw(trailingslashit($server) . 'xmlrpc.php'); } else { $server = esc_url_raw($server); } parent::__construct($server); }
/** * Send a pingback. * * @since 1.2.0 * * @global string $wp_version * * @param string $server Host of blog to connect to. * @param string $path Path to send the ping. */ function weblog_ping($server = '', $path = '') { global $wp_version; include_once ABSPATH . WPINC . '/class-IXR.php'; include_once ABSPATH . WPINC . '/class-wp-http-ixr-client.php'; // using a timeout of 3 seconds should be enough to cover slow servers $client = new WP_HTTP_IXR_Client($server, !strlen(trim($path)) || '/' == $path ? false : $path); $client->timeout = 3; $client->useragent .= ' -- WordPress/' . $wp_version; // when set to true, this outputs debug messages by itself $client->debug = false; $home = trailingslashit(home_url()); if (!$client->query('weblogUpdates.extendedPing', get_option('blogname'), $home, get_bloginfo('rss2_url'))) { // then try a normal ping $client->query('weblogUpdates.ping', get_option('blogname'), $home); } }
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; }
/** * Send an XMLRPC request to the Catalyst API. * * @param string $request * @param array $args * * @return bool|IXR_Error */ protected function _send_request($request, $args) { $client = new WP_HTTP_IXR_Client(trailingslashit(CATALYST_URL) . 'xmlrpc.php'); $response = $client->query("catalyst.{$request}", $args); if (false === $response) { // store error for use in implementation $this->request_error = isset($client->error->message) ? $client->error->message : ''; return $client->error; } return $client->getResponse(); }
function infusionsoft_lists() { // Include WordPress libraries to handle XML-RPC require_once ABSPATH . '/wp-includes/class-IXR.php'; require_once ABSPATH . '/wp-includes/class-wp-http-ixr-client.php'; // get options $options = get_option('optinoid_options'); // Initialize the client $client = new WP_HTTP_IXR_Client('https://' . $options['infusionsoft_subdomain'] . '.infusionsoft.com/api/xmlrpc'); $client->query('WebFormService.getMap', $options['infusionsoft_api']); $response = $client->getResponse(); // empty list array $lists = array(); if (!empty($response['faultCode'])) { wp_send_json(array('error' => $response['faultString'])); } else { if (!empty($response)) { foreach ($response as $k => $v) { $lists[$k]['id'] = $k; $lists[$k]['name'] = $v; } } wp_send_json($lists); } wp_die(); }
public function infusionsoft_subscribe($list_id, $email, $name = null) { // Include WordPress libraries to handle XML-RPC require_once ABSPATH . '/wp-includes/class-IXR.php'; require_once ABSPATH . '/wp-includes/class-wp-http-ixr-client.php'; // get options $options = get_option('optinoid_options'); // Initialize the client $client = new WP_HTTP_IXR_Client('https://' . $options['infusionsoft_subdomain'] . '.infusionsoft.com/api/xmlrpc'); $first_name = null; $last_name = null; if (!empty($name)) { $name_arr = explode(' ', $name); if (!empty($name_arr[0])) { $first_name = $name_arr[0]; } if (!empty($name_arr[1])) { $last_name = $name_arr[1]; } } $client->query('WebFormService.getHTML', $options['infusionsoft_api'], $list_id); $dom = new DOMDocument(); $dom->loadHTML($client->getResponse()); $inputs = $dom->getelementsbytagname('input'); $data = array(); foreach ($inputs as $input) { $name = $input->getAttribute('name'); if ($name == 'inf_field_Email') { $data[$name] = $email; } elseif ($name == 'inf_field_FirstName') { $data[$name] = $first_name; } elseif ($name == 'inf_field_LastName') { $data[$name] = $last_name; } else { $data[$name] = $input->getAttribute('value'); } } $endpoint = 'https://' . $options['infusionsoft_subdomain'] . '.infusionsoft.com/app/form/process/' . $data['inf_form_xid']; $response = wp_remote_post($endpoint, array('body' => $data)); }