From 94eea943d61dfc0759197b9cca977b8d5269c1be Mon Sep 17 00:00:00 2001 From: ryan Date: Thu, 12 Jun 2008 21:41:18 +0000 Subject: [PATCH] wp.getUsersBlogs from josephscott. fixes #7130 git-svn-id: http://svn.automattic.com/wordpress/trunk@8075 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- xmlrpc.php | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/xmlrpc.php b/xmlrpc.php index 179596d1c..d918c2d79 100644 --- a/xmlrpc.php +++ b/xmlrpc.php @@ -110,6 +110,7 @@ class wp_xmlrpc_server extends IXR_Server { function wp_xmlrpc_server() { $this->methods = array( // WordPress API + 'wp.getUsersBlogs' => 'this:wp_getUsersBlogs', 'wp.getPage' => 'this:wp_getPage', 'wp.getPages' => 'this:wp_getPages', 'wp.newPage' => 'this:wp_newPage', @@ -254,6 +255,53 @@ class wp_xmlrpc_server extends IXR_Server { } } + /** + * WordPress XML-RPC API + * wp_getUsersBlogs + */ + function wp_getUsersBlogs( $args ) { + // If this isn't on WPMU then just use blogger_getUsersBlogs + if( !function_exists( 'is_site_admin' ) ) { + array_unshift( $args, 1 ); + return $this->blogger_getUsersBlogs( $args ); + } + + $this->escape( $args ); + + $username = $args[0]; + $password = $args[1]; + + if( !$this->login_pass_ok( $username, $password ) ) + return $this->error; + + do_action( 'xmlrpc_call', 'wp.getUsersBlogs' ); + + $user = set_current_user( 0, $username ); + + $blogs = (array) get_blogs_of_user( $user->ID ); + $struct = array( ); + + foreach( $blogs as $blog ) { + // Don't include blogs that aren't hosted at this site + if( $blog->site_id != 1 ) + continue; + + $blog_id = $blog->userblog_id; + switch_to_blog($blog_id); + $is_admin = current_user_can('level_8'); + + $struct[] = array( + 'isAdmin' => $is_admin, + 'url' => get_option( 'home' ) . '/', + 'blogid' => $blog_id, + 'blogName' => get_option( 'blogname' ), + 'xmlrpc' => get_option( 'home' ) . '/xmlrpc.php' + ); + } + + return $struct; + } + /** * WordPress XML-RPC API * wp_getPage @@ -841,7 +889,8 @@ class wp_xmlrpc_server extends IXR_Server { 'isAdmin' => $is_admin, 'url' => get_option('home') . '/', 'blogid' => '1', - 'blogName' => get_option('blogname') + 'blogName' => get_option('blogname'), + 'xmlrpc' => get_option('home') . '/xmlrpc.php', ); return array($struct); @@ -2459,4 +2508,4 @@ class wp_xmlrpc_server extends IXR_Server { $wp_xmlrpc_server = new wp_xmlrpc_server(); -?> \ No newline at end of file +?>