Plugin: BuddyPress Groupblog

Join this plugin group to follow comments, support topics and reviews.

Fix for subdomains (4 posts)

Started 1 year, 8 months ago by: Lemmy

  • Profile picture of Lemmy Lemmy said 1 year, 8 months ago:

    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://&#039; . $blog_address. '.' . $current_site->domain . $current_site->path ?></em></span>
    				<?php } else { ?>
    				<span><em><?php echo 'http://&#039; . $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);
    }
  • Profile picture of Lemmy Lemmy said 1 year, 8 months ago:

    http://pastebin.com/E7G7dbEG

  • Profile picture of Lemmy Lemmy said 1 year, 8 months ago:

    I had a problem with the admin bar not showing but that’s just because I have Activities switched off. The same error occurs in subdirectory installs.

    I just commented out the include( ‘groupblog/inc/activity.php’ ); lines for a quick fix. Maybe there’s a better solution?

    I was getting the following error:
    Fatal error: Call to undefined function bp_has_activities() in …./wp-content/plugins/bp-groupblog/groupblog/inc/activity.php on line 9

  • Profile picture of Mariusooms Mariusooms said 1 year, 6 months ago:

    Thanks Lemmy…the fix is in the latest release! I’ll have to take a look at that activity component in case it is turned off. Thanks for pointing that out.