Opened 8 years ago
Last modified 8 years ago
#7451 new enhancement
Adding comments from non-registered users into activity stream.
Reported by: | pavelevap | Owned by: | |
---|---|---|---|
Milestone: | Awaiting Contributions | Priority: | normal |
Severity: | normal | Version: | |
Component: | Activity | Keywords: | needs-patch |
Cc: | pavelevap@… |
Description
There was an old plugin "BP Include Non-member Comments" by @boonebgorges, but it does not work anymore.
https://wordpress.org/plugins/bp-include-non-member-comments/
I tried to update it, but there is too much new functionality that I would have to duplicate too much code. So, I tried to use comment_post
action and adding comments to activity stream, but there are some blocking points:
1) Function bp_activity_post_type_comment()
is checking if user is registered: https://buddypress.trac.wordpress.org/browser/tags/2.8.1/src/bp-activity/bp-activity-functions.php#L2310
2) Function bp_activity_new_comment()
is also checking if user_id
is available: https://buddypress.trac.wordpress.org/browser/tags/2.8.1/src/bp-activity/bp-activity-functions.php#L2587
When it is be possible to go through both places (for example with the help of some hook), it could be achived easily.
I did not want to hardcode changes, so I used some kind of cache hack to bypass it (adding user with user_id = 9999999
into user cache before BuddyPress will check it):
add_action( 'comment_post', 'custom_include_non_registered_comments_into_stream', 8, 2 ); function custom_include_non_registered_comments_into_stream( $comment_id, $is_approved ) { if ( $is_approved == 1 ) { $comment = get_comment( $comment_id ); $user = get_user_by( 'email', $comment->comment_author_email ); if ( empty ( $user ) ) { wp_cache_add( $comment->comment_author_email, 9999999, 'useremail' ); $user_object = new WP_User(); $user_object->ID = 9999999; wp_cache_add( 9999999, $user_object, 'users' ); } } }
Everything works now, there are no warnings, but I am not sure if there are any possible consequences? I had to use also filters bp_activity_comment_action
, bp_core_gravatar_email
, bp_activity_comment_name
and bp_activity_comment_user_link
to customize display of these comments in activity stream (especially to handle special user_id = 9999999
), but hook with possibility of adding comments from non-registered users (empty or zero user_id
) would be easier and very helpful for some users. I understand that BuddyPress is network of registered members, but in this case blog comments from non-registered users in activity stream can be also helpful.
Maybe there is another way to achieve, but I did not find it :-(
Change History (2)
#2
@
8 years ago
- Keywords needs-patch added
- Milestone changed from Awaiting Review to Future Release
@pavelevap Thanks for the ticket.
I agree with @tw2113 that my plugin is not so important as to require major changes in BP. That said, the root problem here is not my plugin - it's the fact that BP hardcodes the user_id requirement in a way that's very difficult to circumvent. If a plugin or a site wants to allow anonymous activity items to be created, why shouldn't BP let it? We should centralize our user_id
checks so that they occur higher in the stack, or make the requirement filterable, or something like that.
Honestly feels like Boone's plugin should be amended, or perhaps deprecated, for the current BP version instead of trying to change BP core for the sake of one plugin with a very low install count.