$import_fields = false;
$importing = false;
$option_name = GLM_MEMBERS_LEADS_PLUGIN_IMPORT_OPTION;
- $page_size = 20;
+ $page_size = 200;
$offset = false;
$next_offset = false;
switch( $option2 ) {
case 'import':
+ $total_imported_leads = 0;
$result = '';
if ( isset( $_REQUEST['form_id'] ) ) {
$form_id = filter_var( $_REQUEST['form_id'], FILTER_VALIDATE_INT );
- //$result = '<pre>$_REQUEST: ' . print_r( $_REQUEST, true ) . '</pre>';
}
if ( $form_id ) {
$form = GFAPI::get_form( $form_id );
- //$result = '<pre>$form: ' . print_r( $form, true ) . '</pre>';
- //$result = '<pre>$_REQUEST: ' . print_r( $_REQUEST, true ) . '</pre>';
}
if ( $form_id ) {
$option_name = GLM_MEMBERS_LEADS_PLUGIN_IMPORT_OPTION . '_form_' . $form_id;
$paging = array( 'offset' => $offset, 'page_size' => $page_size );
$total_count = 0;
$entries = GFAPI::get_entries( $form_id, $search_criteria, $sorting, $paging, $total_count );
- $result = '<pre>$import_fields: ' . print_r( $import_fields, true ) . '</pre>';
- //$result .= '<pre>$_REQUEST: ' . print_r( $_REQUEST, true ) . '</pre>';
+ $result = '';
+ //$result = '<pre>$import_fields: ' . print_r( $import_fields, true ) . '</pre>';
$result .= '<p>Total Count: ' . $total_count . '</p>';
- //$result .= '<pre>$entries: ' . print_r( $entries, true ) . '</pre>';
if ( $entries ) {
foreach ( $entries as $entry ) {
- $this->addEntry( $entry, $import_fields );
+ if ($this->addEntry( $entry, $import_fields ) ) {
+ ++$total_imported_leads;
+ }
}
}
+ $result .= '<p>Importing ' . $offset . ' - ' . $next_offset . '</p>';
+ $result .= '<p>Total Leads Imported: ' . $total_imported_leads . '</p>';
} else {
$next_offset = 0;
/* If your here then it is the first page after the form setup
$this->addInterestGroup( $form, $group_id, $group_name );
}
}
- //$result .= '<pre>$form: ' . print_r( $form, true ) . '</pre>';
// anything in this $array_diff will be our new interest_groups
}
default:
$forms = GFAPI::get_forms();
- //$result = '<pre>$forms: ' . print_r( $forms, true ) . '</pre>';
break;
}
case 'checkbox':
if ( isset( $fields['inputs'] ) && is_array( $fields['inputs'] ) && !empty( $fields['inputs'] ) ) {
$interests = $fields['inputs'];
- //echo '<pre>$fields[inputs]: ' . print_r( $fields['inputs'], true ) . '</pre>';
}
break;
}
throw Exception( 'Group not added' );
}
foreach ( $interests as $interest ) {
- $this->addInterest( $group_id, $interest['id'], $interest['label'] );
+ $int_object = array(
+ 'group_id' => $group_id,
+ 'gf_field_id' => $interest['id'],
+ 'name' => $interest['label'],
+ 'form_id' => $form['id']
+ );
+ $this->addInterest( $int_object );
}
}
}
*
* @return int The id of the Interest
*/
- public function addInterest( $group_id, $gf_field_id, $name ) {
+ public function addInterest( $object ) {
+ $group_id = $object['group_id'];
+ $gf_field_id = $object['gf_field_id'];
+ $name = $object['name'];
+ $form_id = $object['form_id'];
+ if ( !filter_var( $group_id, FILTER_VALIDATE_INT ) ) {
+ return false;
+ }
+ if ( !filter_var( $form_id, FILTER_VALIDATE_INT ) ) {
+ return false;
+ }
+ if ( !$gf_field_id ) {
+ return false;
+ }
// check for this interest first.
- $interest = $this->wpdb->get_var(
+ $interest_id = $this->wpdb->get_var(
$this->wpdb->prepare(
"SELECT id
FROM " . GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . "interests
$group_id
)
);
- if ( $interest ) {
- return $interest;
+ if ( $interest_id ) {
+ // Check if the interest has the gf_interests for it.
+ $gf_interests_id = $this->wpdb->get_var(
+ $this->wpdb->prepare(
+ "SELECT id
+ FROM " . GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . "gf_interests
+ WHERE form_id = %d
+ AND gf_field_id = %s",
+ $form_id,
+ $gf_field_id
+ )
+ );
+ if ( !$gf_interests_id ) {
+ // add the record for the gf_field_id
+ $this->wpdb->insert(
+ GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . 'gf_interests',
+ array(
+ 'interest_id' => $interest_id,
+ 'gf_field_id' => $gf_field_id,
+ 'form_id' => $form_id
+ ),
+ array( '%d', '%s', '%d' )
+ );
+ }
+ return $interest_id;
} else {
// It is not in the db so add it.
$this->wpdb->insert(
),
array( '%s', '%d', '%s' )
);
- return $this->wpdb->insert_id;
+ $interest_id = $this->wpdb->insert_id;
+ // add the record for the gf_field_id
+ $this->wpdb->insert(
+ GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . 'gf_interests',
+ array(
+ 'interest_id' => $interest_id,
+ 'gf_field_id' => $gf_field_id,
+ 'form_id' => $form_id
+ ),
+ array( '%d', '%s', '%d' )
+ );
+ return $interest_id;
}
}
+ /**
+ * addEntry
+ *
+ * @param mixed $entry
+ * @param mixed $import_fields
+ *
+ * @access public
+ * @return boolean True if added false if not
+ */
public function addEntry( $entry, $import_fields ) {
$lead = array();
$mapped_keys = $this->config['mapped_keys'];
if ( $entry ) {
$entry = array_filter( $entry );
- echo '<pre>$entry: ' . print_r( $entry, true ) . '</pre>';
foreach ( $import_fields as $field_id => $mapped_name ) {
if ( isset( $entry[$field_id] ) ) {
$lead[$mapped_name] = $entry[$field_id];
}
}
- echo '<pre>$lead: ' . print_r( $lead, true ) . '</pre>';
// If they don't have email then we cannot add them into leads table.
if ( !isset( $lead['email'] ) ) {
return false;
}
$member_lead_id = $this->addMemberLead( $lead );
- echo '<pre>$member_lead_id: ' . print_r( $member_lead_id, true ) . '</pre>';
-
+ if ( $member_lead_id ) {
+ // see if the gf_entry_id is already in
+ $entry_id = $this->wpdb->get_var(
+ $this->wpdb->prepare(
+ "SELECT id
+ FROM " . GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . "lead_entry
+ WHERE gf_entry_id = %d",
+ $entry['id']
+ )
+ );
+ if ( !$entry_id ) {
+ $entry_id = $this->addMemberLeadEntry( $member_lead_id, $lead, $entry );
+ }
+ if ( $entry_id ) {
+ // now we can add the interest field for the entry record
+ $this->addMemberLeadInterests( $entry_id, $entry );
+ return true;
+ }
+ }
}
+ return false;
}
/**
* addMemberLead
GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . 'leads',
array(
'email' => $lead['email'],
- 'mail_ok' => ( $lead['mail_ok'] ) ? 1 : 0,
+ 'mail_ok' => ( $lead['mail_ok'] ) ? 1 : 0,
'member_ok' => ( $lead['member_ok'] ) ? 1 : 0,
+ 'created' => current_time( 'mysql' ),
),
- array( '%s', '%s', '%s' )
+ '%s'
);
return $this->wpdb->insert_id;
}
}
+ public function getSourceId( $form_id ) {
+ $source_id = $this->wpdb->get_var(
+ $this->wpdb->prepare(
+ "SELECT id
+ FROM " . GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . "sources
+ WHERE form_id = %d",
+ $form_id
+ )
+ );
+ if ( $source_id ) {
+ return $source_id;
+ }
+ // If no source_id then we have to add the new source and return id.
+ $form = GFAPI::get_form( $form_id );
+ $this->wpdb->insert(
+ GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . 'sources',
+ array(
+ 'title' => $form['title'],
+ 'form_id' => $form_id,
+ ),
+ array( '%s', '%d' )
+ );
+ return $this->wpdb->insert_id;
+ }
/**
* addMemberLeadEntry
*
if ( !isset( $lead ) || !is_array( $lead ) ) {
return false;
}
+ $source_id = $this->getSourceId( $entry['form_id'] );
$this->wpdb->insert(
GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . 'lead_entry',
array(
- 'fname' => '',
- 'lname' => '',
- 'org' => '',
- 'addr1' => '',
- 'addr2' => '',
- 'city' => '',
- 'state' => '',
- 'zip' => '',
- 'country' => '',
- 'phone' => '',
- 'phone2' => '',
- 'fax' => '',
- 'user_trace_info' => '',
+ 'source_id' => $source_id,
+ 'lead_id' => $lead_id,
+ 'gf_entry_id' => $entry['id'],
+ 'fname' => ( ( $lead['fname'] ) ? $lead['fname'] : ''),
+ 'lname' => ( ( $lead['lname'] ) ? $lead['lname'] : ''),
+ 'org' => ( ( $lead['org'] ) ? $lead['org'] : ''),
+ 'addr1' => ( ( $lead['addr1'] ) ? $lead['addr1'] : ''),
+ 'addr2' => ( ( $lead['addr2'] ) ? $lead['addr2'] : ''),
+ 'city' => ( ( $lead['city'] ) ? $lead['city'] : ''),
+ 'state' => ( ( $lead['state'] ) ? $lead['state'] : ''),
+ 'zip' => ( ( $lead['zip'] ) ? $lead['zip'] : ''),
+ 'country' => ( ( $lead['country'] ) ? $lead['country'] : ''),
+ 'phone' => ( ( $lead['phone'] ) ? $lead['phone'] : ''),
+ 'phone2' => ( ( $lead['phone2'] ) ? $lead['phone2'] : ''),
+ 'fax' => ( ( $lead['fax'] ) ? $lead['fax'] : ''),
+ 'date_submitted' => current_time( 'mysql' ),
+ 'user_trace_info' => $entry['ip'],
),
- array()
+ array(
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ )
+ );
+ return $this->wpdb->insert_id;
+ }
+ public function getMembersInterests( $form_id ) {
+ static $interest = array();
+ if ( empty( $interest ) ) {
+ $ints = $this->wpdb->get_results(
+ $this->wpdb->prepare(
+ "SELECT i.id, gfi.gf_field_id
+ FROM " . GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . "interests i,
+ " . GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX. "gf_interests gfi
+ WHERE gfi.form_id = %d
+ AND gfi.interest_id = i.id",
+ $form_id
+ ),
+ ARRAY_A
+ );
+ if ( $ints ) {
+ foreach ( $ints as $in ) {
+ $interest[$in['gf_field_id']] = $in['id'];
+ }
+ }
+ }
+ return $interest;
+ }
+ public function addMemberLeadInterests( $entry_id, $entry ) {
+ if ( !filter_var( $entry_id, FILTER_VALIDATE_INT ) ) {
+ return false;
+ }
+ if ( !is_array( $entry ) || empty( $entry ) ) {
+ return false;
+ }
+ $interest = $this->getMembersInterests( $entry['form_id'] );
+ $interest_keys = array_keys( $interest );
+ // Delete the old ones
+ $this->wpdb->delete(
+ GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . 'lead_interests',
+ array( 'lead_entry_id' => $entry_id ),
+ array( '%d' )
);
+ foreach ( $entry as $fkey => $fvalue ) {
+ if ( in_array( $fkey, $interest_keys ) ) {
+ $this->wpdb->insert(
+ GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . 'lead_interests',
+ array(
+ 'interest_id' => $interest[$fkey],
+ 'lead_entry_id' => $entry_id
+ ),
+ '%d'
+ );
+ }
+ }
}
}