add_filter( 'elementor_pro/forms/render/item/select', 'wl_encode_subject_emails', 10, 3 );
function wl_encode_subject_emails($item, $index, $form) {
$form_id = $form->get_settings_for_display( 'form_id' );
if ( !'sender_subject' === $form_id && !$item['custom_id'] === "subject")
return $item;
$field_options = preg_split( "/\\r\\n|\\r|\\n/", $item["field_options"] );
if ( ! $field_options )
return $item;
$new_field_options = "";
foreach ( $field_options as $option ) {
if ( false === strpos( $option, '|' ) )
continue;
list( $label, $value ) = explode( '|', $option );
$new_field_options .= $label . '|' . base64_encode($value) . "\n";
}
$item["field_options"] = rtrim($new_field_options);
return $item;
}
add_action( 'elementor_pro/forms/validation', function( $record, $handler ) {
$form_id = $record->get_form_settings( 'form_id' );
if ( 'sender_subject' !== $form_id )
return;
$settings = $record->get( 'form_settings' );
$fields = $record->get( 'fields' );
$field_id = "subject";
$subject = $record->get_field( ['id' => $field_id] );
if ($subject) {
$subject_email = base64_decode($subject[$field_id]['value']);
$current_field_settings = [];
foreach ( $settings['form_fields'] as $form_field ) {
if ( $form_field['custom_id'] === "subject" ) {
$current_field_settings = $form_field;
break;
}
}
$options = preg_split( "/\\r\\n|\\r|\\n/", $current_field_settings['field_options'] );
if ( $options ) {
foreach ( $options as $option ) {
if ( false === strpos( $option, '|' ) )
continue;
list( $label, $value ) = explode( '|', $option );
if ( $value === $subject_email ) {
$fields['subject']['value'] = $label;
$fields['subject']['raw_value'] = $label;
}
}
}
if ( filter_var($subject_email, FILTER_VALIDATE_EMAIL) )
$settings['email_to'] = $subject_email;
}
$record->set( 'form_settings', $settings );
$record->set( 'fields', $fields );
}, 10, 2 );