Пример #1
0
 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();
 }
Пример #2
0
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);
 }
Пример #5
0
/**
 * 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);
    }
}
Пример #6
0
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;
}
Пример #7
0
 /**
  * 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();
 }
Пример #8
0
 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();
 }
Пример #9
0
 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));
 }