File "hook-examples.md"

Full Path: /var/www/bvnghean.vn/save_bvnghean.vn/wp-content/plugins/super-forms/docs/hook-examples.md
File size: 6.06 KB
MIME-type: text/plain
Charset: utf-8

# Hook Example Code

**Examples:**
- [Track form submissions with third party](#track-form-submissions-with-third-party)
- [Insert form data into a custom database table](#insert-form-data-into-a-custom-database-table)
- [Send submitted form data to another site](#send-submitted-form-data-to-another-site)
- [Exclude empty fields from emails](#exclude-empty-fields-from-emails)
- [Delete uploaded files after email has been send](#delete-uploaded-files-after-email-has-been-send)

### Track form submissions with third party

PHP code:

	// Load f4d-custom.js
	function f4d_enqueue_script() {
		wp_enqueue_script( 'f4d-custom', plugin_dir_url( __FILE__ ) . 'f4d-custom.js', array( 'super-common' ) );
	}
	add_action( 'wp_enqueue_scripts', 'f4d_enqueue_script' );
	add_action( 'admin_enqueue_scripts', 'f4d_enqueue_script' );

	// Add custom javascript function
	function f4d_add_dynamic_function( $functions ) {
	    $functions['after_email_send_hook'][] = array(
	        'name' => 'after_form_submission'
	    );
	    return $functions;
	}
	add_filter( 'super_common_js_dynamic_functions_filter', 'f4d_add_dynamic_function', 100, 2 );

JS script (f4d-custom.js)

	// Execute after form submission
	SUPER.after_form_submission = function($form){
	    // Your third party code here
		alert('Your third party code here');
	}

### Insert form data into a custom database table

	add_action('super_before_email_success_msg_action', '_super_save_data_into_database', 10, 1);
	function _super_save_data_into_database( $atts ) {
		
		// REPLACE 123 WITH YOUR FORM ID
		$id = 123; 

		// REPLACE table_name WITH YOUR TABLE NAME
		$table = 'table_name';

		// CHANGE THE BELOW ARRAY AND ADD COLUMNS AND FIELDS ACCORDINGLY
		$fields = array(
			'column_name' => 'first_name', // replace column_name with correct column name for your table, and first_name with the appropriate field name from your form
			'column_name2' => 'last_name', // replace column_name with correct column name for your table, and first_name with the appropriate field name from your form
			// etc...
		);

		$form_id = absint($atts['post']['form_id']); // contains the form ID that was submitted
		if( $form_id == $id ) {
			global $wpdb;
			$data = $atts['data']; // contains the submitted form data
			$values = array();
			foreach( $fields as $k => $v ) {
				$values[$k] = $data[$v]['value'];
			}
			$wpdb->insert( $table, $values );
		}
	}


### Send submitted form data to another site

With the below example code you can send the submitted form data to a different site.
	
	add_action('super_before_email_success_msg_action', '_super_submit_data_to_site', 10, 1);
	function _super_submit_data_to_site( $atts ) {
	
		// CHANGE THE BELOW 2 VARIABLES ACCORDINGLY
		$url = 'http://example.com'; // change this URL accordingly
		$id = 123; // replace 123 with the ID of the form

		// CHANGE THE BELOW ARRAY AND ADD FIELDS ACCORDINGLY
		$fields = array(
			'first_name', // replace first_name with the appropriate field name from your form
			'last_name', // replace last_name with the appropriate field name from your form
			'field_name1', // add your own fields to this array to send them to your site
			'field_name2', // add your own fields to this array to send them to your site
			'field_name3', // add your own fields to this array to send them to your site
			// etc...
		);

		$form_id = absint($atts['post']['form_id']); // contains the form ID that was submitted
		if( $form_id == $id ) {
			$data = $atts['data']; // contains the submitted form data
	    	$args = array();

	    	// Add field values to arguments
	    	foreach( $fields as $k ) {
	    		if( isset( $data[$k]['value'] ) ) {
	      			$args[$k] = $data[$k]['value'];
	    		}
	    	}

	    	// Send the request
	    	$response = wp_remote_post( $url, array('body' => $args));

	    	// Output error message if any
            if ( is_wp_error( $response ) ) {
                $error_message = $response->get_error_message();
                SUPER_Common::output_error(
                    $error = true,
                    $msg = $error_message
                );
            }

	    }
	}


### Exclude empty fields from emails

	add_filter( 'super_before_sending_email_data_filter', '_super_exclude_empty_field_from_email', 10, 2 );
	function _super_exclude_empty_field_from_email( $data, $atts ) {

		// REPLACE 123 WITH YOUR FORM ID
		$id = 123; 

		$form_id = absint($atts['post']['form_id']); // contains the form ID that was submitted

		if( $form_id == $id ) { 
		    foreach( $data as $k => $v ) {
		        if( $v['type']=='files' ) {
			        if( !isset($v['files']) ) {
			        	// 1 = Exclude from confirmation email only
			        	// 2 = Exclude from all emails
			        	$data[$k]['exclude'] = 2; 
		        	}
		        	continue;
		        }

		        // We exclude whenever the field value equals 0 or when the value was empty
		        if( ($v['value']=='0') || ($v['value']=='') ) {
			        // 1 = Exclude from confirmation email only
			        // 2 = Exclude from all emails
			        $data[$k]['exclude'] = 2;
		        }
		    }
	    }
	    return $data;
	}


### Delete uploaded files after email has been send
	
	add_action('super_before_email_success_msg_action', '_super_delete_uploaded_files', 30, 1);
	function _super_delete_uploaded_files( $atts ) {
	
		// REPLACE 123 WITH YOUR FORM ID
		$id = 123; 	

		// CHANGE AND ADD THE NAMES OF FILE UPLOAD FIELDS
		$fields = array(
			'file1',
			'file2',
			'file3',
		);

		$form_id = absint($atts['post']['form_id']); // contains the form ID that was submitted
		if( $form_id == $id ) {
			$data = $atts['data']; // contains the submitted form data
            foreach( $fields as $field_name ) {
            	if( isset( $data[$field_name]['files'] ) ) {
					$files = $data[$field_name]['files'];
					if( is_array( $files ) ) {
						foreach( $files as $file ) {
							wp_delete_attachment(absint($file['attachment']), true);
						}
	            	}
            	}
        	}
		}
	}