gpui_sequential_unique_id_pre_insert
Description
Modify the sequential ID that will be used prior to adding the ID to the database. This is useful for changing the behavior of how sequential IDs are selected.
Usage
add_filter( 'gpui_sequential_unique_id_pre_insert', 'my_custom_function', 10, 4 );Parameters
uid number|bool
The unique ID to be inserted. If
false, the next ID will be calculated using MySQLAUTO_INCREMENT.form_id int
The ID of the form for which the unique ID is being generated.
field_id int
The ID of the field for which the unique ID is being generated.
starting_number int
The number from which the sequence should start.
Examples
Fill Gaps in Sequential Unique IDs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
/**
* GP Unique ID // Gravity Perks // Fill Gaps in Sequential Unique IDs
* https://gravitywiz.com/documentation/gp-unique-id/
*
* Use this snippet to automatically fill gaps in the sequence of unique IDs for Unique ID fields of the "Sequential"
* type. Gaps will occur when entries containing a sequential unique ID are deleted.
*
* Update the filter name "gpui_sequential_unique_id_pre_insert_519_5", replacing "519" with your form ID and "5" with
* your field ID.
*/
add_filter( 'gpui_sequential_unique_id_pre_insert_519_5', function ( $uid, $form_id, $field_id ) {
global $wpdb;
$table_name = GFFormsModel::get_entry_meta_table_name();
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
$result = $wpdb->get_results( $wpdb->prepare( "select meta_value from {$table_name}
where form_id = %d and meta_key = %d", $form_id, $field_id ) );
if ( empty( $result ) ) {
return $uid;
}
$_uids = wp_list_pluck( $result, 'meta_value' );
$form = GFAPI::get_form( $form_id );
$field = GFFormsModel::get_field( $form, $field_id );
$numbers = array();
foreach ( $_uids as $_uid ) {
$clean_uid = str_replace( $field['gp-unique-id_prefix'], '', $_uid );
$clean_uid = str_replace( $field['gp-unique-id_suffix'], '', $clean_uid );
$clean_uid = intval( ltrim( $clean_uid, '0' ) );
$numbers[] = $clean_uid;
}
sort( $numbers );
$range = range( 1, max( $numbers ) );
$diff = array_diff( $range, $numbers );
// looks like we've found a gap in the sequence; busted!
if ( ! empty( $diff ) ) {
$uid = array_shift( $diff );
}
return $uid;
}, 10, 3 );Add HyperDB Support for Sequential IDs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
/**
* Gravity Perks // GP Unique ID // HyperDB Support for Sequential IDs
* https://gravitywiz.com/documentation/gravity-forms-unique-id/
*/
add_filter( 'gpui_sequential_unique_id_pre_insert', function ( $uid, $form_id, $field_id, $starting_number ) {
global $wpdb;
$wpdb->query( 'START TRANSACTION' );
$wpdb->query( $wpdb->prepare(
'INSERT INTO ' . $wpdb->prefix . 'gpui_sequence ( form_id, field_id, current ) VALUES ( %d, %d, ( @next := 1 ) ) ON DUPLICATE KEY UPDATE current = ( @next := current + 1 )',
$form_id,
$field_id
) );
$uid = $wpdb->get_var( $wpdb->prepare( 'SELECT `current` from ' . $wpdb->prefix . 'gpui_sequence where form_id = %d and field_id = %d', $form_id, $field_id ) );
$wpdb->query( 'COMMIT' );
return $uid;
}, 10, 5 );Since
This filter is available since Gravity Forms Unique ID 1.2.2.
All Connections
All Perks
- GF Address Autocomplete
- GF Advanced Calculations
- GF Advanced Phone Field
- GF Advanced Save & Continue
- GF Advanced Select
- GF Auto List Field
- GF Auto Login
- GF Better User Activation
- GF Blocklist
- GF Bookings
- GF Conditional Logic Dates
- GF Conditional Pricing
- GF Copy Cat
- GF Date Time Calculator
- GF Disable Entry Creation
- GF Easy Passthrough
- GF eCommerce Fields
- GF Email Users
- GF Email Validator
- GF Entry Blocks
- GF Expand Textareas
- GF File Renamer
- GF File Upload Pro
- GF Inventory
- GF Limit Checkboxes
- GF Limit Dates
- GF Limit Submissions
- GF Live Preview
- GF Media Library
- GF Multi-Page Navigation
- GF Nested Forms
- GF Notification Scheduler
- GF Page Transitions
- GF Pay Per Word
- GF Populate Anything
- GF Post Content Merge Tags
- GF Preview Submission
- GF Price Range
- GF QR Code
- GF Randomizer
- GF Read Only
- GF Reload Form
- GF Submit to Access
- GF Terms Of Service
- GF Unique ID
- GF Word Count