Skip to content

Commit 5ea8b61

Browse files
authored
Merge pull request #158 from BoldGrid/issue-pro-88
Fixes #88
2 parents 7b2b51a + 1af083a commit 5ea8b61

File tree

1 file changed

+29
-16
lines changed

1 file changed

+29
-16
lines changed

includes/class-notification.php

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -486,27 +486,40 @@ public static function replace_field_tags( $text, $entry_id ) {
486486
}
487487

488488
// Users looking for {field:something} or {value:something}, determine which one.
489-
$is_field = preg_match( '/{field:(\w*)}/', $text, $matches_field );
490-
$is_value = preg_match( '/{value:(\w*)}/', $text, $matches_value );
489+
$is_field = preg_match_all( '/{field:(\w*)}/', $text, $matches_field );
490+
$is_value = preg_match_all( '/{value:(\w*)}/', $text, $matches_value );
491491

492492
if ( $is_field ) {
493-
$meta_key = $matches_field[1];
494-
$meta_value = weforms_get_entry_meta( $entry_id, $meta_key, true );
495-
if ( is_array( $meta_value ) ) {
496-
$meta_value = implode( WeForms::$field_separator, $meta_value );
493+
$meta_keys = $matches_field[1];
494+
// Create an array of meta values to replace.
495+
$meta_values = array();
496+
foreach ( $meta_keys as $meta_key ) {
497+
$meta_value = weforms_get_entry_meta( $entry_id, $meta_key, true );
498+
// Add values to the array.
499+
array_push( $meta_values, $meta_value );
500+
if ( is_array( $meta_value ) ) {
501+
$meta_value = implode( WeForms::$field_separator, $meta_value );
502+
}
497503
}
498-
// $text may include HTML tags, only replace tag that was matched.
499-
$text = str_replace( $matches_field[0], $meta_value, $text );
500-
} elseif ( $is_value ) {
501-
$meta_key = $matches_value[1];
502-
$form_field_values = WeForms_Form_Entry::get_form( $entry_id )->get_field_values()[ $meta_key ]['options'];
503-
$meta_value = weforms_get_entry_meta( $entry_id, $meta_key, true );
504-
$modified_value = array_search( $meta_value, $form_field_values );
505-
if ( is_array( $modified_value ) ) {
506-
$modified_value = implode( WeForms::$field_separator, $modified_value );
504+
// $text may include HTML tags, only replace tag that was matched. Replace all matches.
505+
$text = str_replace( $matches_field[0], $meta_values, $text );
506+
}
507+
if ( $is_value ) {
508+
$meta_keys = $matches_value[1];
509+
// Create an array of modified values to replace.
510+
$modified_values = array();
511+
foreach ( $meta_keys as $meta_key ) {
512+
$form_field_values = WeForms_Form_Entry::get_form( $entry_id )->get_field_values()[ $meta_key ]['options'];
513+
$meta_value = weforms_get_entry_meta( $entry_id, $meta_key, true );
514+
$modified_value = array_search( $meta_value, $form_field_values );
515+
// Add values to the array.
516+
array_push( $modified_values, $modified_value );
517+
if ( is_array( $modified_value ) ) {
518+
$modified_value = implode( WeForms::$field_separator, $modified_value );
519+
}
507520
}
508521
// $text may include HTML tags, only replace tag that was matched.
509-
$text = str_replace( $matches_value[0], $modified_value, $text );
522+
$text = str_replace( $matches_value[0], $modified_values, $text );
510523
}
511524
return $text;
512525
}

0 commit comments

Comments
 (0)