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 Description
Parameters 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 notification HTML link or 'array' for separate link and text. for WP Toolbar. Default: 'string'.
Default value: 'string'
Return Return
(string)
Source 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"', 'buddypress' ), (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 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 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', 'buddypress' ), $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 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 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', 'buddypress' ), (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 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 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', 'buddypress' ), $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 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 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', 'buddypress' ), (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 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 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', 'buddypress' ), $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 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 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 an admin in %d groups', 'buddypress' ), (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 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 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 an admin in the group "%s"', 'buddypress' ), $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 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 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 mod in %d groups', 'buddypress' ), (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 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 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 mod in the group "%s"', 'buddypress' ), $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 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 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', 'buddypress' ), (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 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 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', 'buddypress' ), $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 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 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 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 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 Changelog
| Version | Description |
|---|---|
| 1.0.0 | Introduced. |