Index: src/wp-includes/ms-functions.php
===================================================================
--- src/wp-includes/ms-functions.php	(revision 25133)
+++ src/wp-includes/ms-functions.php	(working copy)
@@ -1983,3 +1983,42 @@
 	$count = get_blog_count();
 	return apply_filters( 'wp_is_large_network', $count > 10000, 'sites', $count );
 }
+
+/**
+ * Return an array of sites on the specified network. If no network is specified,
+ * use the current network.
+ *
+ * @since 3.7.0
+ *
+ * @param int $network_id Optional. The id for the network of sites being retrieved.
+ * @param array|string $args Optional. Specify the status of the sites to return.
+ * @return array An array of site data containing blog_id, domain, and path for each site.
+ */
+function wp_get_sites( $network_id = null, $args = array() ) {
+	global $wpdb;
+
+	if( null === $network_id )
+		$network_id = get_current_site()->id;
+
+	$defaults = array(
+		'public'	=> '1',
+		'archived'	=> '0',
+		'mature'	=> '0',
+		'spam'		=> '0',
+		'deleted'	=> '0',
+	);
+
+	$args = wp_parse_args( $args, $defaults );
+
+	$site_results = $wpdb->get_results( $wpdb->prepare( "SELECT blog_id, domain, path FROM $wpdb->blogs
+		WHERE site_id = %d AND public = %s AND archived = %s AND mature = %s AND spam = %s AND deleted = %s",
+		$network_id, $args['public'], $args['archived'], $args['mature'], $args['spam'], $args['deleted'] ) );
+
+	$sites = Array();
+
+	foreach ( $site_results as $site ) {
+		$sites[ $site->blog_id ] = $site;
+	}
+
+	return $sites;
+}
