[buddypress-trac] [BuddyPress Trac] #6026: And if the Blogs component had Single items?

buddypress-trac noreply at wordpress.org
Tue Jun 16 18:54:22 UTC 2015

#6026: And if the Blogs component had Single items?
 Reporter:  imath                         |       Owner:
     Type:  enhancement                   |      Status:  new
 Priority:  normal                        |   Milestone:  2.4
Component:  Component - Blogs             |     Version:
 Severity:  normal                        |  Resolution:
 Keywords:  dev-feedback has-patch early  |

Comment (by imath):

 I've been working on improving 02.patch trying to take in account
 everybody's feedback. Thanks a lot to all of you.

 Today i'm back on this ticket with a new version of the patch:
 6026.03.patch. It would be great if you could review it to make sure i'm
 on the right way with this feature and i haven't forgot anything.

 1. Reorganization of the patch. Since r-a-y's introduction of
 `bp_is_active( 'component', 'feature' )` in 2.3, i've centralized as much
 as i could the functions about the Blogs single item feature in a specific
 file (bp-blogs-blog.php). It only loads if the feature is enabled, which
 is by default the case. If network admins do not want it, they just need
 to do `add_filter( 'bp_is_blogs_blog_active', '__return_false' )`

 2. Single items navigation. boonebgorges and jjj was worried about me
 editing the `buddypress()->bp_nav` and `buddypress()->bp_options_nav` at
 the end of 2.3 dev-cycle. And i must admit i'm not feeling very
 comfortable in this area. So in this new version of the patch, i'm taking
 no risk at all about what's in place for the displayed user or Groups
 single item navigation. I'm convinced, as `buddypress()->bp_nav` is first
 designed to manage the displayed user nav, single items should not use it
 - avoid slug collisions
 - be able to use a main nav and a subnav and not only a subnav, like it's
 the case today for the Groups component.

 So I'm using a new class `BP_Single_Item_Navigation` to clearly put things
 apart and attach the generated navigation to the component's single item
 feature (eg: `buddypress()->blogs->nav`). It might be improvable, but it's
 already doing a nice job for Blogs single items :)

 3. Subscriptions. Bowe shared his worries about adding a role to the user
 on the subscribed blog and r-a-y about my use of the
 `$wpdb->base_prefix}->bp_user_blogs` reminding me this table was first
 designed to list each blog contributors. I really thought about these 2
 points and came to this conclusion: I think, by default, the
 subscription's feature should really mean to get the subscriber role on
 the blog to avoid any confusion because to me the goal of "subscribing" is
 to become a part of. Moreover i can see an interest of having the users
 visible from the WordPress Edit users Administration screen because it's
 then possible to promote a motivated subscriber to a contributor. But, i
 can also understand Network admins not thinking like me, so i've included
 a filter for them, they simply need to do `add_filter(
 'bp_blogs_blog_wp_subscriber_role', '__return_false' );` and the user
 won't get a role on the blog and will be able to follow the blog's
 activity from his profile or the activity directory thanks to new
 navigations. I've alse explored how the user / blog relationship was
 managed so far in the blogs component. And i think we should improve it.
 Let's say a user is added to the blog as a subscriber, he doesn't see the
 blog in his "My sites" profile nav, which is right. But let's imagine he's
 promoted as a contributor by the blog's administrator, he won't see the
 blog in his profile navigation. We then need to repair the user to blog
 association for all blogs. To come back to how to save a blog's
 subscription, i then thought the best was to introduce a new field into
 the `$wpdb->base_prefix}->bp_user_blogs`: 'is_contributor' which will be
 filled by a '1' if the user is at least a contributor or by a 0 if the
 user is a subscriber. Doing so we're able to separate the 2 kinds of blog
 users and add a new user's profile nav next to "My blogs": "My
 subscriptions". Then i've edited some blogs functions like
 `bp_blogs_record_existing_blogs()` or `BP_Blogs_Blog->populate()` so that
 existing subscriptions are not removed, but blog association is repaired
 by updating each row instead of truncating the table before adding rows.
 I've also edited the hooks the function `bp_blogs_add_user_to_blog()` was
 attached to in favor of 'set_user_role' so that when a user is edited from
 the Administration, his contribution level is also updated (eg: when a
 subscriber is promoted to a contributor) without the need to repopulate
 blogs records.

 4. Some other improvements:
 - a new WP Admin Bar menu when viewing a blogs single item so that the
 admin can easily access the manage screens of his blog or his WordPress
 - If the blog is using a theme that supports custom header, i set it as
 the background of the blogs single item's header.

 To conclude this quite long comment, here's a demo of the patch :)


Ticket URL: <https://buddypress.trac.wordpress.org/ticket/6026#comment:25>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac

More information about the buddypress-trac mailing list