WordPress.org

Make WordPress Core

Ticket #7130: xmlrpc.php.diff

File xmlrpc.php.diff, 2.0 KB (added by josephscott, 6 years ago)
  • xmlrpc.php

     
    110110        function wp_xmlrpc_server() { 
    111111                $this->methods = array( 
    112112                        // WordPress API 
     113                        'wp.getUsersBlogs'              => 'this:wp_getUsersBlogs', 
    113114                        'wp.getPage'                    => 'this:wp_getPage', 
    114115                        'wp.getPages'                   => 'this:wp_getPages', 
    115116                        'wp.newPage'                    => 'this:wp_newPage', 
     
    256257 
    257258        /** 
    258259         * WordPress XML-RPC API 
     260         * wp_getUsersBlogs 
     261         */ 
     262        function wp_getUsersBlogs( $args ) { 
     263                // If this isn't on WPMU then just use blogger_getUsersBlogs 
     264                if( !function_exists( 'is_site_admin' ) ) { 
     265                        array_unshift( $args, 1 ); 
     266                        return $this->blogger_getUsersBlogs( $args ); 
     267                } 
     268 
     269                $this->escape( $args ); 
     270 
     271                $username = $args[0]; 
     272                $password = $args[1]; 
     273 
     274                if( !$this->login_pass_ok( $username, $password ) ) 
     275                        return $this->error; 
     276 
     277                do_action( 'xmlrpc_call', 'wp.getUsersBlogs' ); 
     278 
     279                $user = set_current_user( 0, $username ); 
     280 
     281                $blogs = (array) get_blogs_of_user( $user->ID ); 
     282                $struct = array( ); 
     283 
     284                foreach( $blogs as $blog ) { 
     285                        // Don't include blogs that aren't hosted at this site 
     286                        if( $blog->site_id != 1 ) 
     287                                continue; 
     288 
     289                        $blog_id = $blog->userblog_id; 
     290                        switch_to_blog($blog_id); 
     291                        $is_admin = current_user_can('level_8'); 
     292 
     293                        $struct[] = array( 
     294                                'isAdmin'               => $is_admin, 
     295                                'url'                   => get_option( 'home' ) . '/', 
     296                                'blogid'                => $blog_id, 
     297                                'blogName'              => get_option( 'blogname' ), 
     298                                'xmlrpc'                => get_option( 'home' ) . '/xmlrpc.php' 
     299                        ); 
     300                } 
     301 
     302                return $struct; 
     303        } 
     304 
     305        /** 
     306         * WordPress XML-RPC API 
    259307         * wp_getPage 
    260308         */ 
    261309        function wp_getPage($args) { 
     
    841889                        'isAdmin'  => $is_admin, 
    842890                        'url'      => get_option('home') . '/', 
    843891                        'blogid'   => '1', 
    844                         'blogName' => get_option('blogname') 
     892                        'blogName' => get_option('blogname'), 
     893                        'xmlrpc'   => get_option('home') . '/xmlrpc.php', 
    845894                ); 
    846895 
    847896                return array($struct); 
     
    24592508 
    24602509$wp_xmlrpc_server = new wp_xmlrpc_server(); 
    24612510 
    2462 ?> 
    2463  No newline at end of file 
     2511?>