Skip to content

Instantly share code, notes, and snippets.

@gicolek
Last active September 2, 2017 16:31
Show Gist options
  • Save gicolek/4573617 to your computer and use it in GitHub Desktop.
Save gicolek/4573617 to your computer and use it in GitHub Desktop.
Gravity Forms modify lead detail table
<?php
function update() {
global $wpdb;
// get the lead detail table name
$lead_details_table_name = RGFormsModel::get_lead_details_table_name();
// as stored in the $lead_details_table_name * 10
// these are respective to the form field ids for a constructed form
$field_number_old_values = array(
50, // email
70, // username
// etc.
);
// field values taken from the new entry
$field_number_new_values = array(
'a',
'b',
// $entry['5'], // email
// $entry['6'], // username
// etc.
);
$size = count( $field_number_new_values );
$when = '';
$in = '';
// get current user name, has to have a respective entry in the 6th field of Membership form
$user = wp_get_current_user();
$username = $user->display_name;
// select lead id for the currently logged in user
$query = "SELECT lead_id FROM $lead_details_table_name WHERE value = %s";
$prepare = $wpdb->prepare( $query, $username );
// get lead ID for the given username
$lead_id = $wpdb->get_var( $prepare );
var_dump( $lead_id );
// construct when part of the sql update statement
// construct the 'IN' part of the SQL query to make sure that other fields don't get affected
// http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#operator_case
for ( $i = 0; $i < $size; $i++ ) {
$when .= "WHEN {$field_number_old_values[$i]} THEN '{$field_number_new_values[$i]}' ";
}
$in = implode( ', ', $field_number_old_values );
// use ROUND to omit floating point error http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html
$query = "UPDATE $lead_details_table_name
SET value = CASE ROUND(field_number*10)
$when
END
WHERE ROUND(field_number*10) IN ($in) AND lead_id = $lead_id";
$query = $wpdb->query( $query );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment