maximeverrette
12/19/2019 - 6:28 PM

Modifier le sent_to

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 );