예제 #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>';
}
예제 #3
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;
}
예제 #4
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();
 }
예제 #5
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();
 }
예제 #6
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));
 }