Allow query strings for servers in IXR_Client and WP_HTTP_IXR_Client.

props cfinke.
fixes #26947.


git-svn-id: https://develop.svn.wordpress.org/trunk@27552 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrew Nacin
2014-03-15 05:00:27 +00:00
parent 8355232a65
commit 0ed014743d
3 changed files with 40 additions and 1 deletions

View File

@@ -629,6 +629,10 @@ class IXR_Client
if (!$this->path) {
$this->path = '/';
}
if ( ! empty( $bits['query'] ) ) {
$this->path .= '?' . $bits['query'];
}
} else {
$this->server = $server;
$this->path = $path;

View File

@@ -18,8 +18,13 @@ class WP_HTTP_IXR_Client extends IXR_Client {
$this->path = !empty($bits['path']) ? $bits['path'] : '/';
// Make absolutely sure we have a path
if ( ! $this->path )
if ( ! $this->path ) {
$this->path = '/';
}
if ( ! empty( $bits['query'] ) ) {
$this->path .= '?' . $bits['query'];
}
} else {
$this->scheme = 'http';
$this->server = $server;

View File

@@ -0,0 +1,30 @@
<?php
require_once ABSPATH . WPINC . '/class-IXR.php';
require_once ABSPATH . WPINC . '/class-wp-http-ixr-client.php';
/**
* @group xmlrpc
*/
class Tests_XMLRPC_Client extends WP_XMLRPC_UnitTestCase {
/**
* @ticket 26947
*/
function test_ixr_client_allows_query_strings() {
$client = new IXR_Client( 'http://example.com/server.php?this-is-needed=true#not-this' );
$this->assertEquals( 'example.com', $client->server );
$this->assertEquals( 80, $client->port );
$this->assertEquals( '/server.php?this-is-needed=true', $client->path );
}
/**
* @ticket 26947
*/
function test_wp_ixr_client_allows_query_strings() {
$client = new WP_HTTP_IXR_Client( 'http://example.com/server.php?this-is-needed=true#not-this' );
$this->assertEquals( 'example.com', $client->server );
$this->assertFalse( $client->port );
$this->assertEquals( '/server.php?this-is-needed=true', $client->path );
}
}