diff --git a/src/wp-includes/class-wp-xmlrpc-server.php b/src/wp-includes/class-wp-xmlrpc-server.php index 8cbf6d977f5a2..2d7fe58f7cdf5 100644 --- a/src/wp-includes/class-wp-xmlrpc-server.php +++ b/src/wp-includes/class-wp-xmlrpc-server.php @@ -780,6 +780,7 @@ public function wp_getUsersBlogs( $args ) { 'blogid' => (string) $blog_id, 'blogName' => get_option( 'blogname' ), 'xmlrpc' => site_url( 'xmlrpc.php', 'rpc' ), + 'siteIcon' => get_site_icon_url( 512 ), ); restore_current_blog(); @@ -4867,6 +4868,7 @@ public function blogger_getUsersBlogs( $args ) { 'blogid' => '1', 'blogName' => get_option( 'blogname' ), 'xmlrpc' => site_url( 'xmlrpc.php', 'rpc' ), + 'siteIcon' => get_site_icon_url( 512 ), ); return array( $struct ); diff --git a/tests/phpunit/tests/xmlrpc/wp/getUsersBlogs.php b/tests/phpunit/tests/xmlrpc/wp/getUsersBlogs.php new file mode 100644 index 0000000000000..63a5854c4f37b --- /dev/null +++ b/tests/phpunit/tests/xmlrpc/wp/getUsersBlogs.php @@ -0,0 +1,60 @@ +make_user_by_role( 'subscriber' ); + + // wp_getUsersBlogs + $result = $this->myxmlrpcserver->wp_getUsersBlogs( array( 'subscriber', 'subscriber' ) ); + $this->assertNotIXRError( $result ); + $this->assertIsArray( $result ); + $this->assertArrayHasKey( 0, $result ); + $this->assertArrayHasKey( 'siteIcon', $result[0] ); + $this->assertSame( '', $result[0]['siteIcon'] ); + + // blogger_getUsersBlogs + $result_blogger = $this->myxmlrpcserver->blogger_getUsersBlogs( array( '', 'subscriber', 'subscriber' ) ); + $this->assertNotIXRError( $result_blogger ); + $this->assertIsArray( $result_blogger ); + $this->assertArrayHasKey( 0, $result_blogger ); + $this->assertArrayHasKey( 'siteIcon', $result_blogger[0] ); + $this->assertSame( '', $result_blogger[0]['siteIcon'] ); + } + + public function test_with_site_icon() { + $subscriber_id = $this->make_user_by_role( 'subscriber' ); + + // Create an attachment and set it as site_icon + $attachment_id = self::factory()->attachment->create_object( + array( + 'file' => DIR_TESTDATA . '/images/test-image.jpg', + 'post_mime_type' => 'image/jpeg', + 'post_type' => 'attachment', + ) + ); + update_option( 'site_icon', $attachment_id ); + + $expected_url = get_site_icon_url( 512 ); + + // wp_getUsersBlogs + $result = $this->myxmlrpcserver->wp_getUsersBlogs( array( 'subscriber', 'subscriber' ) ); + $this->assertNotIXRError( $result ); + $this->assertIsArray( $result ); + $this->assertArrayHasKey( 0, $result ); + $this->assertArrayHasKey( 'siteIcon', $result[0] ); + $this->assertSame( $expected_url, $result[0]['siteIcon'] ); + + // blogger_getUsersBlogs + $result_blogger = $this->myxmlrpcserver->blogger_getUsersBlogs( array( '', 'subscriber', 'subscriber' ) ); + $this->assertNotIXRError( $result_blogger ); + $this->assertIsArray( $result_blogger ); + $this->assertArrayHasKey( 0, $result_blogger ); + $this->assertArrayHasKey( 'siteIcon', $result_blogger[0] ); + $this->assertSame( $expected_url, $result_blogger[0]['siteIcon'] ); + } +}