Index: xmlrpc.php
===================================================================
--- xmlrpc.php	(revision 12419)
+++ xmlrpc.php	(working copy)
@@ -154,6 +154,7 @@
 			'wp.editComment'		=> 'this:wp_editComment',
 			'wp.newComment'			=> 'this:wp_newComment',
 			'wp.getCommentStatusList' => 'this:wp_getCommentStatusList',
+			'wp.getPluginList'		=> 'this:wp_getPluginList',
 
 			// Blogger API
 			'blogger.getUsersBlogs' => 'this:blogger_getUsersBlogs',
@@ -1579,7 +1580,53 @@
 		//Now return the updated values
 		return $this->_getOptions($option_names);
 	}
+	
+	/**
+	 * Retrieve plugin list and information.
+	 *
+	 * @param array $args Method parameters.
+	 *
+	 * @since 2.9
+	 *
+	 * @return array
+	 */
+	function wp_getPluginList( $args ) {
+	
+		$this->escape($args);
 
+		$blog_id				= (int) $args[0];
+		$username				= $args[1];
+		$password				= $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'activate_plugins' ) )
+			return new IXR_Error( 401, __( 'Sorry, you cannot manage plugins.' ) );
+
+		do_action('xmlrpc_call', 'wp.getPluginList');
+		
+		$plugins = get_plugins();
+		$current = get_transient( 'update_plugins' );
+		
+		foreach( (array) $plugins as $plugin_file => $plugin ) {
+			$new_version = $current->response[$plugin_file]->new_version
+			
+			if( is_plugin_active( $plugin_file ) )
+				$plugins[$plugin_file]['active'] = true;
+			else
+				$plugins[$plugin_file]['active'] = false;
+			if( $new_version )
+				$plugins[$plugin_file]['latest_version'] = $new_version;
+			else
+				$plugins[$plugin_file]['latest_version'] = $plugin['Version'];
+		}
+		
+		return $plugins;
+		
+	}
+
 	/* Blogger API functions.
 	 * specs on http://plant.blogger.com/api and http://groups.yahoo.com/group/bloggerDev/
 	 */
