Index: bp-core.php
===================================================================
--- bp-core.php	(revision 1474)
+++ bp-core.php	(working copy)
@@ -23,10 +23,6 @@
 if ( !defined( 'CUSTOM_USER_META_TABLE' ) )
 	define( 'CUSTOM_USER_META_TABLE', $wpdb->base_prefix . 'usermeta' );
 
-/* Load the language file */ 
-if ( file_exists( BP_PLUGIN_DIR . '/bp-languages/buddypress-' . get_locale() . '.mo' ) ) 
-	load_textdomain( 'buddypress', BP_PLUGIN_DIR . '/bp-languages/buddypress-' . get_locale() . '.mo' );
-
 /* Load the files containing functions that we globally will need. */
 require ( BP_PLUGIN_DIR . '/bp-core/bp-core-catchuri.php' );
 require ( BP_PLUGIN_DIR . '/bp-core/bp-core-classes.php' );
@@ -158,7 +154,7 @@
 		$bp->current_component = $bp->default_component;
 }
 add_action( 'plugins_loaded', 'bp_core_setup_globals', 3 );
-add_action( '_admin_menu', 'bp_core_setup_globals', 1 ); // must be _admin_menu hook.
+add_action( '_admin_menu', 'bp_core_setup_globals', 3 ); // must be _admin_menu hook.
 
 function bp_core_setup_root_components() {
 	/* Add core root components */
@@ -168,7 +164,7 @@
 	bp_core_add_root_component( BP_SEARCH_SLUG );
 	bp_core_add_root_component( BP_HOME_BLOG_SLUG );
 }
-add_action( 'plugins_loaded', 'bp_core_setup_root_components', 1 );
+add_action( 'plugins_loaded', 'bp_core_setup_root_components', 2 );
 
 function bp_core_setup_session() {
 	// Start a session for error/success feedback on redirect and for signup functions.
@@ -330,7 +326,7 @@
 		$bp->current_component = false;
 
 		wp_enqueue_script( 'bp-core-directory-members', BP_PLUGIN_URL . '/bp-core/js/directory-members.js', array( 'jquery', 'jquery-livequery-pack' ) );
-		bp_core_load_template( apply_filters( 'bp_core_template_directory_members', 'directories/members/index' ) );
+		bp_core_load_template( apply_filters( 'bp_core_directory_members', 'directories/members/index' ) );
 	}
 }
 add_action( 'wp', 'bp_core_directory_members', 5 );
@@ -353,7 +349,7 @@
 	
 	$ud = get_userdata($user_id);
 	
-	return $bp->root_domain . '/' . BP_MEMBERS_SLUG . '/' . $ud->user_login . '/';
+	return apply_filters('bp_core_get_user_domain', $bp->root_domain . '/') . BP_MEMBERS_SLUG . '/' . $ud->user_login . '/';
 }
 
 /**
@@ -367,7 +363,7 @@
  * @return $domain The domain URL for the blog.
  */
 function bp_core_get_root_domain() {
-	return get_blog_option( BP_ROOT_BLOG, 'siteurl' );
+	return apply_filters('bp_core_get_root_domain', get_blog_option( BP_ROOT_BLOG, 'siteurl' ));
 }
 
 /**
@@ -610,7 +606,7 @@
 		$user = BP_Core_User::get_random_users(1);
 
 		$ud = get_userdata( $user['users'][0]->user_id );
-		bp_core_redirect( $bp->root_domain . '/' . BP_MEMBERS_SLUG . '/' . $ud->user_login );
+		bp_core_redirect( apply_filters('bp_core_get_random_member', $bp->root_domain . '/') . BP_MEMBERS_SLUG . '/' . $ud->user_login );
 	}
 }
 add_action( 'wp', 'bp_core_get_random_member', 6 );
@@ -693,8 +689,8 @@
 		return false;
 	
 	$ud = get_userdata($uid);
-		
-	return $bp->root_domain . '/' . BP_MEMBERS_SLUG . '/' . $ud->user_login . '/';
+	
+	return apply_filters('bp_core_get_userurl', $bp->root_domain . '/') . BP_MEMBERS_SLUG . '/' . $ud->user_login . '/';
 }
 
 /**
@@ -737,9 +733,9 @@
  */
 function bp_core_get_userlink( $user_id, $no_anchor = false, $just_link = false, $deprecated = false, $with_s = false ) {
 	global $userdata;
-	
+
 	$ud = get_userdata($user_id);
-	
+
 	if ( !$ud )
 		return false;
 
@@ -761,7 +757,9 @@
 
 	if ( !$url = bp_core_get_userurl($user_id) )
 		return false;
-		
+	
+	$url = apply_filters('bp_core_get_userlink', $url);
+	
 	if ( $just_link )
 		return $url;
 
@@ -1045,7 +1043,7 @@
     // as this conflicts with wp_redirect()
 	$bp_no_status_set = true;
 	
-	wp_redirect( $location, $status );
+	wp_redirect( apply_filters('bp_core_redirect', $location), $status );
 	die;
 }
 
@@ -1154,6 +1152,32 @@
 	return apply_filters( 'bp_core_set_member_theme_root_uri', WP_CONTENT_URL . '/bp-themes' );
 }
 
+/**
+ * bp_get_member_theme_url()
+ *
+ * Get the url of the selected member theme.
+ * 
+ * @package BuddyPress Core
+ * @uses get_site_option() 
+ * @return The member theme URL
+ */
+function bp_get_member_theme_url() {
+	return WP_CONTENT_URL . '/bp-themes/' . get_site_option( 'active-member-theme' );
+}
+
+/**
+ * bp_get_member_theme_path()
+ *
+ * Get the path of the selected member theme.
+ * 
+ * @package BuddyPress Core
+ * @uses get_site_option() 
+ * @return The member theme path
+ */
+function bp_get_member_theme_path() {
+	return WP_CONTENT_DIR . '/bp-themes/' . get_site_option( 'active-member-theme' );
+}
+
 function bp_core_add_illegal_names() {
 	global $bp;
 	
@@ -1216,15 +1240,22 @@
 	return wpmu_delete_user( $bp->loggedin_user->id  );
 }
 
-function bp_core_search_site() {
+function bp_core_search_site( $search_which = '', $search_slug = '' ) {
 	global $bp;
 	
 	if ( $bp->current_component == BP_SEARCH_SLUG ) {
+		
+		// terms from text-box
 		$search_terms = $_POST['search-terms'];
-		$search_which = $_POST['search-which'];
-		
+
+		// type from drop-down
+		if (!$search_which) {
+			$search_which = $_POST['search-which'];
+		}
+
+		// core + other possibilities
 		switch ( $search_which ) {
-			case 'members': default:
+			case 'members':
 				$search = BP_MEMBERS_SLUG;
 				break;
 			case 'groups':
@@ -1233,10 +1264,17 @@
 			case 'blogs':
 				$search = BP_BLOGS_SLUG;
 				break;
+			default:
+				if ( $search_which != '') {
+					$search = $search_slug;
+				} else {
+					$search = BP_MEMBERS_SLUG;
+				}
+				break;
 		}
-		
+
 		$search_url = apply_filters( 'bp_core_search_site', site_url( $search . '/?s=' . urlencode($search_terms) ), $search_terms );
-		
+
 		bp_core_redirect( $search_url );
 	}
 }
@@ -1333,6 +1371,15 @@
 	wp_cache_delete( 'newest_users' );
 }
 
+// Load the buddypress translation file for current language
+function bp_load_buddypress_textdomain() {
+	$locale = get_locale();
+	$locale = apply_filters('buddypress_locale', $locale);
+	$mofile = BP_PLUGIN_DIR . "/bp-languages/buddypress-$locale.mo";
+	load_textdomain( 'buddypress', $mofile );
+}
+add_action ( 'plugins_loaded', 'bp_load_buddypress_textdomain', 9);
+
 // List actions to clear object caches on
 add_action( 'bp_core_delete_avatar', 'bp_core_clear_user_object_cache' );
 add_action( 'bp_core_avatar_save', 'bp_core_clear_user_object_cache' );
