Last active
January 6, 2022 18:14
-
-
Save idokd/ae7fa7f1a69cfe19c582f252b1b0fa4d to your computer and use it in GitHub Desktop.
GravityForms Unique ID - Generates a alphanumeric, numeric, or sequential "Unique ID" for the entry when submitted
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| /* | |
| - Add this to your functions.php | |
| - Add a form input normal | |
| - give it a gf-sequence class | |
| */ | |
| $gfex_gsf = false; | |
| add_filter( 'gform_pre_render', 'gfex_sequence_field' ); | |
| function gfex_sequence_field( $form = null ) { | |
| global $gfex_gsf; | |
| foreach ( $form[ 'fields' ] as &$field ) { | |
| if ( strpos( $field->cssClass, 'gf-sequence' ) !== false ) { | |
| $field->defaultValue = gfex_sequence_next( $field->defaultValue, $field); | |
| $gfex_gsf = true; | |
| continue; | |
| $field->allowsPrepopulate = true; | |
| //if ( !empty( $field->inputName ) ) add_filter( 'gform_field_value_' . $field->inputName, 'gfex_sequence_next', 50, 3 ); | |
| //else if ( !isset( $gfex_gsf ) || !$gfex_gsf ) { | |
| // add_filter( 'gform_field_value', 'gfex_sequence_next', 50, 2 ); | |
| // $gfex_gsf = true; | |
| //} | |
| } | |
| } | |
| if ( $gfex_gsf ) { | |
| ?> | |
| <script type="text/javascript"> | |
| jQuery(document).ready(function(){ | |
| jQuery( ".gf-sequence input" ).attr( "readonly","readonly" ); | |
| }); | |
| </script> | |
| <?php | |
| } | |
| return( $form ); | |
| } | |
| add_filter( 'gform_save_field_value', 'gfex_sequence_save_field_value', 10, 3 ); | |
| function gfex_sequence_save_field_value( $value, $lead, $field ) { | |
| if ( strpos( $field->cssClass, 'gf-sequence' ) === false ) return( $value ); | |
| return( gfex_sequence_next( $value, $field, false ) ); | |
| } | |
| function gfex_sequence_next( $value, $field, $inc = 1 ) { | |
| global $gfex_gsf; | |
| if ( strpos( $field->cssClass, 'gf-sequence' ) === false ) return( $value ); | |
| $form_id = $field->formId; | |
| $field_id = $field->id; | |
| $prefix = apply_filters( 'gfex_sequence_prefix', '', $value, $field ); // date('Y') . '-'; | |
| do { | |
| $count = RGFormsModel::get_form_counts( $form_id ); | |
| $unique = $count[ 'total' ] + ( $inc ? $inc : 0 ); // count of the lead form entries incremented by one | |
| $unique = $prefix . str_pad( $unique, 3, '0', STR_PAD_LEFT ); // padding for number format 001,002...015 so 3 digit number format | |
| } while ( !gfex_sequence_check( $unique, $form_id, $field_id ) ); | |
| return( $unique ); | |
| } | |
| function gfex_sequence_check( $unique, $form_id, $field_id ) { | |
| global $wpdb; | |
| $table = $wpdb->prefix . 'rg_lead_detail'; | |
| $result = $wpdb->get_var( "SELECT value FROM $table WHERE form_id = '$form_id' AND field_number = '$field_id' AND value = '$unique'" ); | |
| return( empty( $result) ); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment