groups_format_notifications( string $action, int $item_id, int $secondary_item_id, int $total_items, string $format = 'string' )
Format notifications for the Groups component.
Description
Parameters
- $action
-
(Required) The kind of notification being rendered.
- $item_id
-
(Required) The primary item ID.
- $secondary_item_id
-
(Required) The secondary item ID.
- $total_items
-
(Required) The total number of messaging-related notifications waiting for the user.
- $format
-
(Optional) 'string' for BuddyBar-compatible notifications; 'array' for WP Toolbar. Default: 'string'.
Default value: 'string'
Return
(string)
Source
File: bp-groups/bp-groups-notifications.php
function groups_format_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) { switch ( $action ) { case 'new_membership_request': $group_id = $item_id; $requesting_user_id = $secondary_item_id; $group = groups_get_group( $group_id ); $group_link = bp_get_group_permalink( $group ); $amount = 'single'; // Set up the string and the filter // because different values are passed to the filters, // we'll return values inline. if ( (int) $total_items > 1 ) { $text = sprintf( __( '%1$d new membership requests for the group "%2$s"', 'buddyboss' ), (int) $total_items, $group->name ); $amount = 'multiple'; $notification_link = $group_link . 'admin/membership-requests/?n=1'; if ( 'string' == $format ) { /** * Filters groups multiple new membership request notification for string format. * * This is a dynamic filter that is dependent on item count and action. * Complete filter - bp_groups_multiple_new_membership_requests_notification. * * @since BuddyPress 1.0.0 * * @param string $string HTML anchor tag for request. * @param string $group_link The permalink for the group. * @param int $total_items Total number of membership requests. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . 's_notification', '<a href="' . $notification_link . '">' . $text . '</a>', $group_link, $total_items, $group->name, $text, $notification_link ); } else { /** * Filters groups multiple new membership request notification for any non-string format. * * This is a dynamic filter that is dependent on item count and action. * Complete filter - bp_groups_multiple_new_membership_requests_notification. * * @since BuddyPress 1.0.0 * * @param array $array Array holding permalink and content for notification. * @param string $group_link The permalink for the group. * @param int $total_items Total number of membership requests. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . 's_notification', array( 'link' => $notification_link, 'text' => $text ), $group_link, $total_items, $group->name, $text, $notification_link ); } } else { $user_fullname = bp_core_get_user_displayname( $requesting_user_id ); $text = sprintf( __( '%s requests group membership', 'buddyboss' ), $user_fullname ); $notification_link = $group_link . 'admin/membership-requests/?n=1'; if ( 'string' == $format ) { /** * Filters groups single new membership request notification for string format. * * This is a dynamic filter that is dependent on item count and action. * Complete filter - bp_groups_single_new_membership_request_notification. * * @since BuddyPress 1.0.0 * * @param string $string HTML anchor tag for request. * @param string $group_link The permalink for the group. * @param string $user_fullname Full name of requesting user. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', '<a href="' . $notification_link . '">' . $text . '</a>', $group_link, $user_fullname, $group->name, $text, $notification_link ); } else { /** * Filters groups single new membership request notification for any non-string format. * * This is a dynamic filter that is dependent on item count and action. * Complete filter - bp_groups_single_new_membership_request_notification. * * @since BuddyPress 1.0.0 * * @param array $array Array holding permalink and content for notification. * @param string $group_link The permalink for the group. * @param string $user_fullname Full name of requesting user. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', array( 'link' => $notification_link, 'text' => $text ), $group_link, $user_fullname, $group->name, $text, $notification_link ); } } break; case 'membership_request_accepted': $group_id = $item_id; $group = groups_get_group( $group_id ); $group_link = bp_get_group_permalink( $group ); $amount = 'single'; if ( (int) $total_items > 1 ) { $text = sprintf( __( '%d accepted group membership requests', 'buddyboss' ), (int) $total_items, $group->name ); $amount = 'multiple'; $notification_link = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) . '?n=1'; if ( 'string' == $format ) { /** * Filters multiple accepted group membership requests notification for string format. * Complete filter - bp_groups_multiple_membership_request_accepted_notification. * * @since BuddyPress 1.0.0 * * @param string $string HTML anchor tag for notification. * @param int $total_items Total number of accepted requests. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', '<a href="' . $notification_link . '">' . $text . '</a>', $total_items, $group->name, $text, $notification_link ); } else { /** * Filters multiple accepted group membership requests notification for non-string format. * Complete filter - bp_groups_multiple_membership_request_accepted_notification. * * @since BuddyPress 1.0.0 * * @param array $array Array holding permalink and content for notification * @param int $total_items Total number of accepted requests. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', array( 'link' => $notification_link, 'text' => $text ), $total_items, $group->name, $text, $notification_link ); } } else { $text = sprintf( __( 'Membership for group "%s" accepted', 'buddyboss' ), $group->name ); $filter = 'bp_groups_single_membership_request_accepted_notification'; $notification_link = $group_link . '?n=1'; if ( 'string' == $format ) { /** * Filters single accepted group membership request notification for string format. * Complete filter - bp_groups_single_membership_request_accepted_notification. * * @since BuddyPress 1.0.0 * * @param string $string HTML anchor tag for notification. * @param string $group_link The permalink for the group. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', '<a href="' . $notification_link . '">' . $text . '</a>', $group_link, $group->name, $text, $notification_link ); } else { /** * Filters single accepted group membership request notification for non-string format. * Complete filter - bp_groups_single_membership_request_accepted_notification. * * @since BuddyPress 1.0.0 * * @param array $array Array holding permalink and content for notification. * @param string $group_link The permalink for the group. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( $filter, array( 'link' => $notification_link, 'text' => $text ), $group_link, $group->name, $text, $notification_link ); } } break; case 'membership_request_rejected': $group_id = $item_id; $group = groups_get_group( $group_id ); $group_link = bp_get_group_permalink( $group ); $amount = 'single'; if ( (int) $total_items > 1 ) { $text = sprintf( __( '%d rejected group membership requests', 'buddyboss' ), (int) $total_items, $group->name ); $amount = 'multiple'; $notification_link = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) . '?n=1'; if ( 'string' == $format ) { /** * Filters multiple rejected group membership requests notification for string format. * Complete filter - bp_groups_multiple_membership_request_rejected_notification. * * @since BuddyPress 1.0.0 * * @param string $string HTML anchor tag for notification. * @param int $total_items Total number of rejected requests. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', '<a href="' . $notification_link . '">' . $text . '</a>', $total_items, $group->name ); } else { /** * Filters multiple rejected group membership requests notification for non-string format. * Complete filter - bp_groups_multiple_membership_request_rejected_notification. * * @since BuddyPress 1.0.0 * * @param array $array Array holding permalink and content for notification. * @param int $total_items Total number of rejected requests. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', array( 'link' => $notification_link, 'text' => $text ), $total_items, $group->name, $text, $notification_link ); } } else { $text = sprintf( __( 'Membership for group "%s" rejected', 'buddyboss' ), $group->name ); $notification_link = $group_link . '?n=1'; if ( 'string' == $format ) { /** * Filters single rejected group membership requests notification for string format. * Complete filter - bp_groups_single_membership_request_rejected_notification. * * @since BuddyPress 1.0.0 * * @param string $string HTML anchor tag for notification. * @param int $group_link The permalink for the group. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', '<a href="' . $notification_link . '">' . $text . '</a>', $group_link, $group->name, $text, $notification_link ); } else { /** * Filters single rejected group membership requests notification for non-string format. * Complete filter - bp_groups_single_membership_request_rejected_notification. * * @since BuddyPress 1.0.0 * * @param array $array Array holding permalink and content for notification. * @param int $group_link The permalink for the group. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', array( 'link' => $notification_link, 'text' => $text ), $group_link, $group->name, $text, $notification_link ); } } break; case 'member_promoted_to_admin': $group_id = $item_id; $group = groups_get_group( $group_id ); $group_link = bp_get_group_permalink( $group ); $amount = 'single'; if ( (int) $total_items > 1 ) { $text = sprintf( __( 'You were promoted to the role of %s in %d groups', 'buddyboss' ), strtolower( get_group_role_label( $group_id, 'organizer_singular_label_name' ) ), (int) $total_items ); $amount = 'multiple'; $notification_link = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) . '?n=1'; if ( 'string' == $format ) { /** * Filters multiple promoted to group admin notification for string format. * Complete filter - bp_groups_multiple_member_promoted_to_admin_notification. * * @since BuddyPress 1.0.0 * * @param string $string HTML anchor tag for notification. * @param int $total_items Total number of rejected requests. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', '<a href="' . $notification_link . '">' . $text . '</a>', $total_items, $text, $notification_link ); } else { /** * Filters multiple promoted to group admin notification for non-string format. * Complete filter - bp_groups_multiple_member_promoted_to_admin_notification. * * @since BuddyPress 1.0.0 * * @param array $array Array holding permalink and content for notification. * @param int $total_items Total number of rejected requests. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', array( 'link' => $notification_link, 'text' => $text ), $total_items, $text, $notification_link ); } } else { $text = sprintf( __( 'You were promoted to the role of %s in the group "%s"', 'buddyboss' ), strtolower( get_group_role_label( $group_id, 'organizer_singular_label_name' ) ), $group->name ); $notification_link = $group_link . '?n=1'; if ( 'string' == $format ) { /** * Filters single promoted to group admin notification for non-string format. * Complete filter - bp_groups_single_member_promoted_to_admin_notification. * * @since BuddyPress 1.0.0 * * @param string $string HTML anchor tag for notification. * @param int $group_link The permalink for the group. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', '<a href="' . $notification_link . '">' . $text . '</a>', $group_link, $group->name, $text, $notification_link ); } else { /** * Filters single promoted to group admin notification for non-string format. * Complete filter - bp_groups_single_member_promoted_to_admin_notification. * * @since BuddyPress 1.0.0 * * @param array $array Array holding permalink and content for notification. * @param int $group_link The permalink for the group. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', array( 'link' => $notification_link, 'text' => $text ), $group_link, $group->name, $text, $notification_link ); } } break; case 'member_promoted_to_mod': $group_id = $item_id; $group = groups_get_group( $group_id ); $group_link = bp_get_group_permalink( $group ); $amount = 'single'; if ( (int) $total_items > 1 ) { $text = sprintf( __( 'You were promoted to a %s in %d groups', 'buddyboss' ), strtolower( get_group_role_label( $group_id, 'moderator_singular_label_name' ) ), (int) $total_items ); $amount = 'multiple'; $notification_link = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) . '?n=1'; if ( 'string' == $format ) { /** * Filters multiple promoted to group mod notification for string format. * Complete filter - bp_groups_multiple_member_promoted_to_mod_notification. * * @since BuddyPress 1.0.0 * * @param string $string HTML anchor tag for notification. * @param int $total_items Total number of rejected requests. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', '<a href="' . $notification_link . '">' . $text . '</a>', $total_items, $text, $notification_link ); } else { /** * Filters multiple promoted to group mod notification for non-string format. * Complete filter - bp_groups_multiple_member_promoted_to_mod_notification. * * @since BuddyPress 1.0.0 * * @param array $array Array holding permalink and content for notification. * @param int $total_items Total number of rejected requests. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', array( 'link' => $notification_link, 'text' => $text ), $total_items, $text, $notification_link ); } } else { $text = sprintf( __( 'You were promoted to a %s in the group "%s"', 'buddyboss' ), strtolower( get_group_role_label( $group_id, 'moderator_singular_label_name' ) ), $group->name ); $notification_link = $group_link . '?n=1'; if ( 'string' == $format ) { /** * Filters single promoted to group mod notification for string format. * Complete filter - bp_groups_single_member_promoted_to_mod_notification. * * @since BuddyPress 1.0.0 * * @param string $string HTML anchor tag for notification. * @param int $group_link The permalink for the group. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', '<a href="' . $notification_link . '">' . $text . '</a>', $group_link, $group->name, $text, $notification_link ); } else { /** * Filters single promoted to group admin notification for non-string format. * Complete filter - bp_groups_single_member_promoted_to_mod_notification. * * @since BuddyPress 1.0.0 * * @param array $array Array holding permalink and content for notification. * @param int $group_link The permalink for the group. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', array( 'link' => $notification_link, 'text' => $text ), $group_link, $group->name, $text, $notification_link ); } } break; case 'group_invite': $group_id = $item_id; $group = groups_get_group( $group_id ); $group_link = bp_get_group_permalink( $group ); $amount = 'single'; $notification_link = bp_loggedin_user_domain() . bp_get_groups_slug() . '/invites/?n=1'; if ( (int) $total_items > 1 ) { $text = sprintf( __( 'You have %d new group invitations', 'buddyboss' ), (int) $total_items ); $amount = 'multiple'; if ( 'string' == $format ) { /** * Filters multiple group invitation notification for string format. * Complete filter - bp_groups_multiple_group_invite_notification. * * @since BuddyPress 1.0.0 * * @param string $string HTML anchor tag for notification. * @param int $total_items Total number of rejected requests. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', '<a href="' . $notification_link . '">' . $text . '</a>', $total_items, $text, $notification_link ); } else { /** * Filters multiple group invitation notification for non-string format. * Complete filter - bp_groups_multiple_group_invite_notification. * * @since BuddyPress 1.0.0 * * @param array $array Array holding permalink and content for notification. * @param int $total_items Total number of rejected requests. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', array( 'link' => $notification_link, 'text' => $text ), $total_items, $text, $notification_link ); } } else { $text = sprintf( __( 'You have an invitation to the group: %s', 'buddyboss' ), $group->name ); $filter = 'bp_groups_single_group_invite_notification'; if ( 'string' == $format ) { /** * Filters single group invitation notification for string format. * Complete filter - bp_groups_single_group_invite_notification. * * @since BuddyPress 1.0.0 * * @param string $string HTML anchor tag for notification. * @param int $group_link The permalink for the group. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', '<a href="' . $notification_link . '">' . $text . '</a>', $group_link, $group->name, $text, $notification_link ); } else { /** * Filters single group invitation notification for non-string format. * Complete filter - bp_groups_single_group_invite_notification. * * @since BuddyPress 1.0.0 * * @param array $array Array holding permalink and content for notification. * @param int $group_link The permalink for the group. * @param string $group->name Name of the group. * @param string $text Notification content. * @param string $notification_link The permalink for notification. */ return apply_filters( 'bp_groups_' . $amount . '_' . $action . '_notification', array( 'link' => $notification_link, 'text' => $text ), $group_link, $group->name, $text, $notification_link ); } } break; default: /** * Filters plugin-added group-related custom component_actions. * * @since BuddyPress 2.4.0 * * @param string $notification Null value. * @param int $item_id The primary item ID. * @param int $secondary_item_id The secondary item ID. * @param int $total_items The total number of messaging-related notifications * waiting for the user. * @param string $format 'string' for BuddyBar-compatible notifications; * 'array' for WP Toolbar. */ $custom_action_notification = apply_filters( 'bp_groups_' . $action . '_notification', null, $item_id, $secondary_item_id, $total_items, $format ); if ( ! is_null( $custom_action_notification ) ) { return $custom_action_notification; } break; } /** * Fires right before returning the formatted group notifications. * * @since BuddyPress 1.0.0 * * @param string $action The type of notification being rendered. * @param int $item_id The primary item ID. * @param int $secondary_item_id The secondary item ID. * @param int $total_items Total amount of items to format. */ do_action( 'groups_format_notifications', $action, $item_id, $secondary_item_id, $total_items ); return false; }
Changelog
Version | Description |
---|---|
BuddyPress 1.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.