Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
11/30/2013 05:13:05 AM (13 years ago)
Author:
johnjamesjacoby
Message:

Refactor Activity component's approach to Notifications integration:

  • Introduce helper functions for handling the adding/marking/deleting of notifications. Hook these new functions into their respective actions rather than have them hardcoded and interspersed amongst the first-class code.
  • See #5266.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-activity/bp-activity-functions.php

    r7576 r7622  
    189189
    190190        return true;
    191 }
    192 
    193 /**
    194  * Format notifications related to activity.
    195  *
    196  * @since BuddyPress (1.5)
    197  *
    198  * @uses bp_loggedin_user_domain()
    199  * @uses bp_get_activity_slug()
    200  * @uses bp_core_get_user_displayname()
    201  * @uses apply_filters() To call the 'bp_activity_multiple_at_mentions_notification' hook.
    202  * @uses apply_filters() To call the 'bp_activity_single_at_mentions_notification' hook.
    203  * @uses do_action() To call 'activity_format_notifications' hook.
    204  *
    205  * @param string $action The type of activity item. Just 'new_at_mention' for now.
    206  * @param int $item_id The activity ID.
    207  * @param int $secondary_item_id In the case of at-mentions, this is the mentioner's ID.
    208  * @param int $total_items The total number of notifications to format.
    209  * @param string $format 'string' to get a BuddyBar-compatible notification, 'array' otherwise.
    210  * @return string $return Formatted @mention notification.
    211  */
    212 function bp_activity_format_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) {
    213 
    214         switch ( $action ) {
    215                 case 'new_at_mention':
    216                         $activity_id      = $item_id;
    217                         $poster_user_id   = $secondary_item_id;
    218                         $at_mention_link  = bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/';
    219                         $at_mention_title = sprintf( __( '@%s Mentions', 'buddypress' ), bp_get_loggedin_user_username() );
    220 
    221                         if ( (int) $total_items > 1 ) {
    222                                 $text = sprintf( __( 'You have %1$d new mentions', 'buddypress' ), (int) $total_items );
    223                                 $filter = 'bp_activity_multiple_at_mentions_notification';
    224                         } else {
    225                                 $user_fullname = bp_core_get_user_displayname( $poster_user_id );
    226                                 $text =  sprintf( __( '%1$s mentioned you', 'buddypress' ), $user_fullname );
    227                                 $filter = 'bp_activity_single_at_mentions_notification';
    228                         }
    229                 break;
    230         }
    231 
    232         if ( 'string' == $format ) {
    233                 $return = apply_filters( $filter, '<a href="' . $at_mention_link . '" title="' . $at_mention_title . '">' . $text . '</a>', $at_mention_link, (int) $total_items, $activity_id, $poster_user_id );
    234         } else {
    235                 $return = apply_filters( $filter, array(
    236                         'text' => $text,
    237                         'link' => $at_mention_link
    238                 ), $at_mention_link, (int) $total_items, $activity_id, $poster_user_id );
    239         }
    240 
    241         do_action( 'activity_format_notifications', $action, $item_id, $secondary_item_id, $total_items );
    242 
    243         return $return;
    244191}
    245192
     
    12671214 */
    12681215function bp_activity_new_comment( $args = '' ) {
    1269         global $bp;
    1270 
    1271         $defaults = array(
     1216
     1217        $params = wp_parse_args( $args, array(
    12721218                'id'          => false,
    12731219                'content'     => false,
     
    12751221                'activity_id' => false, // ID of the root activity item
    12761222                'parent_id'   => false  // ID of a parent comment (optional)
    1277         );
    1278 
    1279         $params = wp_parse_args( $args, $defaults );
     1223        ) );
     1224
    12801225        extract( $params, EXTR_SKIP );
    12811226
    1282         if ( empty( $content ) || empty( $user_id ) || empty( $activity_id ) )
    1283                 return false;
    1284 
    1285         if ( empty( $parent_id ) )
     1227        // Bail if missing necessary data
     1228        if ( empty( $content ) || empty( $user_id ) || empty( $activity_id ) ) {
     1229                return false;
     1230        }
     1231
     1232        // Maybe set current activity ID as the parent
     1233        if ( empty( $parent_id ) ) {
    12861234                $parent_id = $activity_id;
     1235        }
    12871236
    12881237        // Check to see if the parent activity is hidden, and if so, hide this comment publically.
    1289         $activity = new BP_Activity_Activity( $activity_id );
     1238        $activity  = new BP_Activity_Activity( $activity_id );
    12901239        $is_hidden = ( (int) $activity->hide_sitewide ) ? 1 : 0;
    12911240
     
    12951244                'action'            => apply_filters( 'bp_activity_comment_action', sprintf( __( '%s posted a new activity comment', 'buddypress' ), bp_core_get_userlink( $user_id ) ) ),
    12961245                'content'           => apply_filters( 'bp_activity_comment_content', $content ),
    1297                 'component'         => $bp->activity->id,
     1246                'component'         => buddypress()->activity->id,
    12981247                'type'              => 'activity_comment',
    12991248                'user_id'           => $user_id,
     
    13021251                'hide_sitewide'     => $is_hidden
    13031252        ) );
    1304 
    1305         // Send an email notification if settings allow
    1306         bp_activity_new_comment_notification( $comment_id, $user_id, $params );
    13071253
    13081254        // Clear the comment cache for this activity
Note: See TracChangeset for help on using the changeset viewer.