Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
<?php
/**
* Route the notification to multiple users in a bcc field.
*
* @see https://joshuadnelson.com/user-dropdown-list-custom-notification-routing-gravity-forms/#comment-12376
* @see https://www.gravityhelp.com/documentation/article/notification/
*/
// NOTE: This is untested code, please use with caution. Test and improve as necessary.
add_filter( 'gform_notification_3', 'route_user_email_notification', 10, 3 );
function route_user_email_notification( $notification, $form , $entry ) {
// Creat an array to store all the user ids from the checkbox field. Initializing it here in case it's not filled.
$bcc_users_array = array();
foreach( $form['fields'] as &$field ) {
// Find the right field
if( $field['type'] != 'checkbox' || strpos($field['cssClass'], 'user-emails') === false )
continue;
// Pull out the field id and the $entry element
$field_id = (string) $field['id'];
// ------- Since your field is a checkbox, this should return an array, correct?
// I'm not 100% sure on the output here, so you might need to debug and modify to build an array of user ids
$bcc_users_array = $entry[ $field_id ];
}
// Make sure we have an array with values in it
if( !empty( $bcc_users_array ) && is_array( $bcc_users_array ) ) {
// Initilize this value as an empty string, then we can add to it.
$notification[ 'bcc' ] = '';
// Cycle through the users, assuming the values are all user ids
foreach( $bcc_users_array as $bcc_user_id ) {
// Make sure the user id is a valid int, otherwise skip it.
if( !absint( $bcc_user_id ) )
continue;
// Grab the email address from the user id, add it to the bcc field
$email = get_the_author_meta( 'user_email', $bcc_user_id );
if ( is_email( $email ) ) {
$notification[ 'bcc' ] .= $email . ',';
}
}
// Remove the trailing comma
$notification[ 'bcc' ] = rtrim( $notification[ 'bcc' ], "," );
}
return $notification;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.