#5688 closed defect (bug) (no action required)
Activity Heartbeat doesn't work for custom non-components scopes
Reported by: | slaFFik | Owned by: | |
---|---|---|---|
Milestone: | Priority: | normal | |
Severity: | major | Version: | |
Component: | Activity | Keywords: | |
Cc: |
Description
Related to #5687
Heartbeat checks the overall latest activity, not in the current scope. It doesn't send scope so I can't filter properly what I need.
Change History (7)
#3
@
10 years ago
Yes thanks, i think it's actually working and i suspect a plugin filtering the bp_ajax_querystring before the priority you use to reset the scope reason why it's not arriving to heartbeat filter.
This is the test i've made, on activity directory, i go on the "My Groups" scope. I'm user_id 1, user_id 2 has created a group after me, so after going on My Groups, if i add the following hooks, and wait 15s
function slaffik_li() { // scope is js parsed to what is after "activity-" in the LI id. ?> <li id="activity-slaffik"><a href="#" title="testing">Slaffik</a></li> <?php } add_action( 'bp_activity_type_tabs', 'slaffik_li' ); function slaffik_qs( $qs, $object ) { if ( 'activity' != $object ) { return $qs; } $qs = wp_parse_args( $qs, array() ); $qs['user_id'] = 2; return $qs; } add_filter( 'bp_ajax_querystring', 'slaffik_qs', 99, 2 ); function slaffik_dump_scope( $hb_args ) { $hb_args = wp_parse_args( $hb_args, array() ); // Dumping args var_dump( $hb_args ); return $hb_args; } add_filter( 'bp_after_activity_latest_args_parse_args', 'slaffik_dump_scope', 10, 1 );
this is what i get :
array(3) { ["since"]=> string(19) "2014-06-01 15:20:46" ["scope"]=> string(6) "groups" ["user_id"]=> int(2) }
So the scope is once again catched, which is logic as the heartbeat filter is using bp_ajax_querystring( 'activity' )
to be sure to load the newest activities from the active scope.
So IMO something must be wrong before your 99 priority, a theme or a plugin ?
#5
@
10 years ago
I really think there's no difference at all :) but this is what i got on the slaffik tab
array(3) { ["since"]=> string(19) "2014-06-01 21:12:01" ["scope"]=> string(7) "slaffik" ["user_id"]=> int(2) } {"wp-auth-check":true,"server_time":1402156096}
So the scope is catched.
I'm sorry, slaFFik, but as activity HeartBeat is using bp_ajax_querystring( 'activity' ) to set his arguments, then, the scope is carried. From the test i've made on #5688, if i var_dump the ajax querystring i have the scope argument.
Moreover, you can filter the argument of Activity Heartbeat using the
'bp_before_activity_latest_args_parse_args'
filter.As i've said in #5688 i'd be curious to see how you succeed in displaying activities from your custom scope into a tab of the activity directory.