Skip to content

Commit

Permalink
Improve the logic around adding users to sites on group status modifi…
Browse files Browse the repository at this point in the history
…cation.

By ensuring the default roles are always set, we avoid issues where an
empty role is passed to `add_user_to_blog()`, resulting in the user
being assigned the Subscriber role.

In addition, there's no reason to run the "promote" code when the
'silent_add' option is not checked. This is likely the cause of many
bugs around the internet.
  • Loading branch information
boonebgorges committed Sep 19, 2016
1 parent d470094 commit 3e81e99
Showing 1 changed file with 39 additions and 4 deletions.
43 changes: 39 additions & 4 deletions bp-groupblog.php
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,36 @@ function bp_groupblog_member_join( $group_id ) {
}
}

/**
* Gets a group's groupblog settings.
*
* @since 1.8.13
*
* @return array
*/
function bp_groupblog_get_group_settings( $group_id ) {
$defaults = array(
'groupblog_silent_add' => false,
'groupblog_default_member_role' => BP_GROUPBLOG_DEFAULT_MEMBER_ROLE,
'groupblog_default_mod_role' => BP_GROUPBLOG_DEFAULT_MOD_ROLE,
'groupblog_default_admin_role' => BP_GROUPBLOG_DEFAULT_ADMIN_ROLE,
'groupblog_enable_blog' => false,
'groupblog_blog_id' => null,
);

$r = array();
foreach ( $defaults as $key => $default_value ) {
$saved_value = groups_get_groupmeta( $group_id, $key, true );
if ( '' === $saved_value ) {
$r[ $key ] = $default_value;
} else {
$r[ $key ] = $saved_value;
}
}

return $r;
}

/**
* bp_groupblog_upgrade_user( $user_id, $group_id, $blog_id )
*
Expand All @@ -306,11 +336,16 @@ function bp_groupblog_upgrade_user( $user_id, $group_id, $blog_id = false ) {
if ( !$blog_id )
return;

$settings = bp_groupblog_get_group_settings( $group_id );
if ( ! $settings['groupblog_silent_add'] ) {
return;
}

// Set up some variables
$groupblog_silent_add = groups_get_groupmeta ( $group_id, 'groupblog_silent_add' );
$groupblog_default_member_role = groups_get_groupmeta ( $group_id, 'groupblog_default_member_role' );
$groupblog_default_mod_role = groups_get_groupmeta ( $group_id, 'groupblog_default_mod_role' );
$groupblog_default_admin_role = groups_get_groupmeta ( $group_id, 'groupblog_default_admin_role' );
$groupblog_silent_add = $settings['groupblog_silent_add'];
$groupblog_default_member_role = $settings['groupblog_default_member_role'];
$groupblog_default_mod_role = $settings['groupblog_default_mod_role'];
$groupblog_default_admin_role = $settings['groupblog_default_admin_role'];
$groupblog_creator_role = 'admin';

// get user's blog role
Expand Down

0 comments on commit 3e81e99

Please sign in to comment.