@@ -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