I have a patch which seems to fix the problem with subdomain installs. (ie. group blog was not created, posts from blog #1 were displayed instead.)
Hmm, no way to attach the patch file?
Here are the relevant bits in bp-groupblog.php. Replace your functions. Please let me know if it works for you.
function bp_groupblog_validate_blog_signup() {
global $bp, $wpdb, $current_user, $blogname, $blog_title, $errors;
global $groupblog_blog_id;
$group_id = $_COOKIE['bp_new_group_id'];
require_once( ABSPATH . WPINC . '/registration.php' );
$current_user = wp_get_current_user();
if( !is_user_logged_in() )
die();
// Re-validate user info.
$result = bp_groupblog_validate_blog_form();
extract($result);
$checks = get_site_option('bp_groupblog_blog_defaults_options');
if ( $errors->get_error_code() ) {
$message .= $errors->get_error_message('blogname');
$message .= __( ' However, you may continue with the blog address as listed below.', 'groupblog' );
$message .= __( ' We suggest adjusting the group name in group details following these requirements.', 'groupblog' );
if ( $checks['allowunderscores'] != '1' || $checks['allowdashes'] != '1' )
$message .= __( ' » Only letters and numbers allowed.', 'groupblog' );
$message .= sprintf( __( ' » Must be at least %s characters.', 'groupblog' ), $checks['minlength'] );
if ( $checks['allownumeric'] != '1' )
$message .= __( ' » Has to contain letters as well.', 'groupblog' );
bp_core_add_message( $message, 'error' );
//Hello Lost fan!
if ( $bp->action_variables[0] == 'step' ) {
bp_core_redirect( $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . $bp->action_variables[1] . '/?create_error=4815162342' );
} else {
bp_core_redirect( $bp->root_domain . '/' . $bp->current_component . '/' . $bp->current_item . '/admin/group-blog/?create_error=4815162342' );
}
}
$public = (int) $_POST['blog_public'];
if ( $bp->action_variables[0] == 'step' ) {
groups_update_groupmeta( $group_id, 'groupblog_public', $public);
groups_update_groupmeta( $group_id, 'groupblog_title', $blog_title);
groups_update_groupmeta( $group_id, 'groupblog_path', $path);
groups_update_groupmeta( $group_id, 'groupblog_domain', $domain);
} else {
$meta = apply_filters('signup_create_blog_meta', array ('lang_id' => 1, 'public' => $public)); // depreciated
$meta = apply_filters( "add_signup_meta", $meta );
$groupblog_blog_id = wpmu_create_blog( $domain, $path, $blog_title, $current_user->id, $meta, $wpdb->siteid );
}
$errors = $filtered_results['errors'];
return true;
}
/**
* bp_groupblog_create_blog( $group_id )
*
* We know everything is final and now are ready to create the blog at group complete stage.
*/
function bp_groupblog_create_blog( $group_id ) {
global $wpdb, $domain;
if ( ( groups_get_groupmeta ( $group_id, 'groupblog_enable_blog' ) != 1 ) || ( groups_get_groupmeta ( $group_id, 'groupblog_blog_id' ) != '' ) )
return;
$current_user = wp_get_current_user();
if( !is_user_logged_in() )
die();
$public = groups_get_groupmeta( $group_id, 'groupblog_public');
$blog_title = groups_get_groupmeta( $group_id, 'groupblog_title');
$path = groups_get_groupmeta( $group_id, 'groupblog_path');
$domain = groups_get_groupmeta( $group_id, 'groupblog_domain');
$meta = apply_filters('signup_create_blog_meta', array ('lang_id' => 1, 'public' => $public)); // depreciated
$meta = apply_filters( "add_signup_meta", $meta );
$groupblog_blog_id = wpmu_create_blog( $domain, $path, $blog_title, $current_user->id, $meta, $wpdb->siteid );
groups_update_groupmeta ( $group_id, 'groupblog_blog_id', $groupblog_blog_id );
groups_update_groupmeta( $group_id, 'groupblog_public', '');
groups_update_groupmeta( $group_id, 'groupblog_title', '');
groups_update_groupmeta( $group_id, 'groupblog_path', '');
groups_update_groupmeta( $group_id, 'groupblog_domain', '');
}
function bp_groupblog_show_blog_form( $blogname = '', $blog_title = '', $errors = '' ) {
global $bp, $groupblog_create_screen, $current_site;
?>
<div id="blog-details-fields">
<?php $blog_id = get_groupblog_blog_id(); ?>
<?php if ( !$groupblog_create_screen && !( $blog_id == '' ) ) { ?>
<?php //We're showing the admin form ?>
<?php $blog_details = get_blog_details( get_groupblog_blog_id(), true ); ?>
<label for="blog_title"><strong><?php _e( 'Blog Title:', 'groupblog' ) ?></strong></label>
<?php if ( $errmsg = $errors->get_error_message('blog_title') ) { ?>
<p class="error"><?php echo $errmsg ?></p>
<?php } ?>
<p><?php echo $blog_details->blogname; ?></p>
<input name="blog_title" type="hidden" id="blog_title" value="<?php echo $blog_details->blogname; ?>" />
<label for="blogname"><strong><?php _e( 'Blog Address:', 'groupblog' ) ?></strong></label>
<?php if ( $errmsg = $errors->get_error_message('blogname') ) { ?>
<p class="error"><?php echo $errmsg ?></p>
<?php }
$checks = get_site_option('bp_groupblog_blog_defaults_options');
$baddies = array ();
if ( $checks['allowdashes'] != '1' )
$baddies[] = '-';
if ( $checks['allowunderscores'] != '1' )
$baddies[] = '_';
$blog_address = str_replace ( $baddies, '', $bp->groups->current_group->slug );
?>
<p><em><?php echo $blog_details->siteurl; ?> </em></p>
<input name="blogname" type="hidden" id="blogname" value="<?php echo $blog_details->siteurl; ?>" maxlength="50" />
<?php $bp->groups->current_group->status == 'public' ? $group_public = '1' : $group_public = '0'; ?>
<input type="hidden" id="blog_public" name="blog_public" value="<?php echo $group_public ?>" />
<input type="hidden" id="groupblog_create_screen" name="groupblog_create_screen" value="<?php echo $groupblog_create_screen; ?>" />
<?php } else { ?>
<?php //Showing the create screen form ?>
<p><?php _e( 'Choose either one of your existing blogs or create a new one all together with the details displayed below.', 'groupblog' ); ?><br /><?php _e('Take care as you can only choose once. Later you may still disable or enable the blog, but your choice is set.', 'groupblog' ); ?></p>
<p><input<?php if ( !bp_groupblog_is_blog_enabled( bp_get_group_id() ) ) { ?> disabled="true"<?php } ?> type="radio" value="no" name="groupblog-create-new" /><span> <?php _e( 'Use one of your own available blogs:', 'groupblog' ); ?> </span>
<select<?php if ( !bp_groupblog_is_blog_enabled( bp_get_group_id() ) ) { ?> disabled="true"<?php } ?> name="groupblog-blogid" id="groupblog-blogid">
<option value="0"><?php _e( 'choose a blog', 'groupblog' ) ?></option>
<?php
$user_blogs = get_blogs_of_user( get_current_user_id() );
//print_r ($user_blogs);
foreach ($user_blogs AS $user_blog) {
if ( !get_groupblog_group_id( $user_blog->userblog_id ) ) { ?>
<option value="<?php echo $user_blog->userblog_id; ?>"><?php echo $user_blog->blogname; ?></option>
<?php }
} ?>
</select>
</p>
<p><input<?php if ( !bp_groupblog_is_blog_enabled( bp_get_group_id() ) ) { ?> disabled="true"<?php } ?> type="radio" value="yes" name="groupblog-create-new" checked="checked" /><span> <?php _e( 'Or, create a new blog', 'groupblog' ); ?></span></p>
<ul id="groupblog-details">
<li>
<label class="groupblog-label" for="blog_title"><strong><?php _e( 'Blog Title:', 'groupblog' ) ?></strong></label>
<?php if ( $errmsg = $errors->get_error_message('blog_title') ) { ?>
<span class="error"><?php echo $errmsg ?></span>
<?php } ?>
<span><?php echo $bp->groups->current_group->name; ?></span>
<input name="blog_title" type="hidden" id="blog_title" value="<?php echo $bp->groups->current_group->name; ?>" />
</li>
<li>
<label class="groupblog-label" for="blogname"><strong><?php _e( 'Blog Address:', 'groupblog' ) ?></strong></label>
<?php if ( $errmsg = $errors->get_error_message('blogname') ) { ?>
<span class="error"><?php echo $errmsg ?></span>
<?php }
$checks = get_site_option('bp_groupblog_blog_defaults_options');
$baddies = array ();
if ( $checks['allowdashes'] != '1' )
$baddies[] = '-';
if ( $checks['allowunderscores'] != '1' )
$baddies[] = '_';
$blog_address = str_replace ( $baddies, '', $bp->groups->current_group->slug );
/*
* If we're re-directing from bp_groupblog_validate_blog_signup(), it means that there was a problem
* creating the blog either because the name already exists, or it doesn't have enough characters, or
* because it only contains numbers.
*/
if ( isset ( $_GET['create_error'] ) ) {
$blog_address .= 'blog';
}
?>
<?php if (is_subdomain_install()) { ?>
<span><em><?php echo 'http://' . $blog_address. '.' . $current_site->domain . $current_site->path ?></em></span>
<?php } else { ?>
<span><em><?php echo 'http://' . $current_site->domain . $current_site->path . $blog_address ?></em></span>
<?php } ?>
<input name="blogname" type="hidden" id="blogname" value="<?php echo $blog_address; ?>" maxlength="50" />
</li>
</ul>
<?php $bp->groups->current_group->status == 'public' ? $group_public = '1' : $group_public = '0'; ?>
<input type="hidden" id="blog_public" name="blog_public" value="<?php echo $group_public ?>" />
<input type="hidden" id="groupblog_create_screen" name="groupblog_create_screen" value="<?php echo $groupblog_create_screen; ?>" />
<?php } ?>
</div>
<?php
do_action('signup_blogform', $errors);
}