I’m using More Privacy Options to allow users to fine-tune the privacy settings on their blogs. It works by creating three new privacy settings and assigning them to values -1, -2, -3 in wp_blogs ‘public’. BuddyPress only puts a new blog post in the activity streams if the privacy value is an integer, which works fine if you’re only dealing with WPMU’s default values of 1 for public and 0 for private, but having the additional values from More Privacy Options screws things up.
I changed a line in /bp-blogs/bp-blogs-classes.php to keep this from happening. In the function is_hidden(), replace
$wpdb->prepare( "SELECT DISTINCT public FROM {$wpdb->base_prefix}blogs WHERE blog_id = %d", $blog_id ) ) )
with
if ( $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT public FROM {$wpdb->base_prefix}blogs WHERE blog_id = %d", $blog_id ) ) < 1 )
In other words, instead of ignoring blog entries with a non-integer privacy value, ignore all blog entries whose privacy value is less than 1.
Because this problem arises from a plugin conflict, I’m not sure if it qualifies as patch-worthy in BP trunk. But I hope it will be useful to someone out there.