Index: wp-admin/includes/plugin.php
===================================================================
--- wp-admin/includes/plugin.php	(revision 23961)
+++ wp-admin/includes/plugin.php	(working copy)
@@ -179,35 +179,46 @@
  * @param string $plugin Plugin ID
  * @return array List of files relative to the plugin root.
  */
-function get_plugin_files($plugin) {
+function get_plugin_files( $plugin ) {
 	$plugin_file = WP_PLUGIN_DIR . '/' . $plugin;
-	$dir = dirname($plugin_file);
-	$plugin_files = array($plugin);
-	if ( is_dir($dir) && $dir != WP_PLUGIN_DIR ) {
+	$dir = dirname( $plugin_file );
+	$plugin_files = array( $plugin );
+	if ( is_dir( $dir ) && $dir != WP_PLUGIN_DIR ) {
 		$plugins_dir = @ opendir( $dir );
 		if ( $plugins_dir ) {
-			while (($file = readdir( $plugins_dir ) ) !== false ) {
-				if ( substr($file, 0, 1) == '.' )
+			while ( ( $file = readdir( $plugins_dir ) ) !== false ) {
+				if ( substr( $file, 0, 1 ) == '.' )
 					continue;
 				if ( is_dir( $dir . '/' . $file ) ) {
-					$plugins_subdir = @ opendir( $dir . '/' . $file );
-					if ( $plugins_subdir ) {
-						while (($subfile = readdir( $plugins_subdir ) ) !== false ) {
-							if ( substr($subfile, 0, 1) == '.' )
-								continue;
-							$plugin_files[] = plugin_basename("$dir/$file/$subfile");
-						}
-						@closedir( $plugins_subdir );
-					}
+					$subfiles = get_plugin_sub_files( $dir . '/' . $file );
+					$plugin_files = array_merge( $plugin_files, $subfiles );
 				} else {
-					if ( plugin_basename("$dir/$file") != $plugin )
-						$plugin_files[] = plugin_basename("$dir/$file");
+					if ( plugin_basename( "$dir/$file" ) != $plugin )
+						$plugin_files[] = plugin_basename( "$dir/$file" );
 				}
 			}
-			@closedir( $plugins_dir );
+			@ closedir( $plugins_dir );
 		}
 	}
+	return $plugin_files;
+}
 
+function get_plugin_sub_files( $subdir ) {
+	$plugins_subdir = @ opendir( $subdir );
+	if ( $plugins_subdir ) {
+		$plugin_files = array();
+		while ( ( $subfile = readdir( $plugins_subdir ) ) !== false ) {
+			if ( substr( $subfile, 0, 1 ) == '.' )
+				continue;
+			if ( is_dir( $subdir  . '/' . $subfile ) ) {
+				$subfiles = get_plugin_sub_files( $subdir . '/' . $subfile );
+				$plugin_files = array_merge( $plugin_files, $subfiles );
+			} else {
+				$plugin_files[] = plugin_basename( "$subdir/$subfile" );	
+			}
+		}
+		@ closedir( $plugins_subdir );
+	}
 	return $plugin_files;
 }
 
