Last active
September 2, 2017 16:31
-
-
Save gicolek/4573617 to your computer and use it in GitHub Desktop.
Gravity Forms modify lead detail table
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 | |
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