WordPress.org

Make WordPress Core

Ticket #17541: class-wp-xmlrpc-server patch for multisite.patch

File class-wp-xmlrpc-server patch for multisite.patch, 1.8 KB (added by michael_k, 7 years ago)
  • class-wp-xmlrpc-server.php

     
    17541754         * @access protected
    17551755         */
    17561756        function _multisite_getUsersBlogs($args) {
    1757                 global $current_blog;
    1758                 $domain = $current_blog->domain;
    1759                 $path = $current_blog->path . 'xmlrpc.php';
    1760                 $protocol = is_ssl() ? 'https' : 'http';
     1757                global $current_site;
     1758                $this->escape( $args );
    17611759
    1762                 $rpc = new IXR_Client("$protocol://{$domain}{$path}");
    1763                 $rpc->query('wp.getUsersBlogs', $args[1], $args[2]);
    1764                 $blogs = $rpc->getResponse();
     1760                $username = $args[1];
     1761                $password = $args[2];
    17651762
    1766                 if ( isset($blogs['faultCode']) )
    1767                         return new IXR_Error($blogs['faultCode'], $blogs['faultString']);
     1763                if ( !$user = $this->login($username, $password) )
     1764                        return $this->error;
    17681765
    1769                 if ( $_SERVER['HTTP_HOST'] == $domain && $_SERVER['REQUEST_URI'] == $path ) {
    1770                         return $blogs;
    1771                 } else {
    1772                         foreach ( (array) $blogs as $blog ) {
    1773                                 if ( strpos($blog['url'], $_SERVER['HTTP_HOST']) )
    1774                                         return array($blog);
    1775                         }
    1776                         return array();
     1766                do_action( 'xmlrpc_call', 'blogger.getUsersBlogs' );
     1767
     1768                $blogs = (array) get_blogs_of_user( $user->ID );
     1769                $struct = array( );
     1770
     1771                foreach ( $blogs as $blog ) {
     1772                        // Don't include blogs that aren't hosted at this site
     1773                        if ( $blog->site_id != $current_site->id )
     1774                                continue;
     1775
     1776                        $blog_id = $blog->userblog_id;
     1777                        switch_to_blog($blog_id);
     1778                        $is_admin = current_user_can('manage_options');
     1779
     1780                        $struct[] = array(
     1781                                'isAdmin'               => $is_admin,
     1782                                'url'                   => get_option( 'home' ) . '/',
     1783                                'blogid'                => (string) $blog_id,
     1784                                'blogName'              => get_option( 'blogname' ),
     1785                                'xmlrpc'                => site_url( 'xmlrpc.php' )
     1786                        );
     1787
     1788                        restore_current_blog( );
    17771789                }
     1790
     1791                return $struct;
    17781792        }
    17791793
    17801794        /**