From: Steve Sutton Date: Fri, 22 Feb 2019 21:48:51 +0000 (-0500) Subject: Working on update member data from csv import files X-Git-Tag: v2.12.0^2~28 X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/?a=commitdiff_plain;h=f74e92481429a7a39072325716efca70acb8c344;p=WP-Plugins%2Fglm-member-db.git Working on update member data from csv import files Updating the import script to also do member and member info updates --- diff --git a/models/admin/import/index.php b/models/admin/import/index.php index e2d34db0..8182b9b1 100644 --- a/models/admin/import/index.php +++ b/models/admin/import/index.php @@ -1204,79 +1204,112 @@ class GlmMembersAdmin_import_index break; case 'member': // Setup the image processing - require_once GLM_MEMBERS_PLUGIN_PATH.'/models/admin/ajax/imageUpload.php'; - $ImageUpload = new GlmMembersAdmin_ajax_imageUpload($this->wpdb, $this->config); + require_once GLM_MEMBERS_PLUGIN_PATH . '/models/admin/ajax/imageUpload.php'; + $ImageUpload = new GlmMembersAdmin_ajax_imageUpload( $this->wpdb, $this->config ); + // Set start to 1 $start = 1; + + // Unless there's a start in $_REQUEST if ( isset( $_REQUEST['start'] ) ) { $start = filter_var( $_REQUEST['start'], FILTER_VALIDATE_INT ); } + + // Get $memberData from csv file $memberData = $this->readCSVFile( $fileName ); - $ret .= '

Processing Member File

'; - $dupeNames = 0; + $ret .= '

Processing Member File

'; + $dupeNames = 0; + + // Get total number of members $this->totalMembers = count( $memberData ); // Find out how many are left to process. $testEnd = $start + $this->memberProcessCountPerRound; $ending = ( $testEnd <= $this->totalMembers ) ? $testEnd : $this->totalMembers; + // Turn on wpdb errors $this->wpdb->show_errors(); // We have to add one to $ending (array starts at 1 not 0). $ending++; + // Starting iterating over memberData for ( $index = $start; $index < $ending; $index++ ) { $data = $memberData[$index]; - // Check for duplicate member - $memberId = $this->wpdb->get_var( + // First check to see if this member is already in system + $memberNeedsUpdate = $this->wpdb->get_var( $this->wpdb->prepare( "SELECT id - FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "members - WHERE name = %s", - $data['member_name'] + FROM " . GLM_MEMBERS_PLUGIN_PATH . "members + WHERE old_member_id = %d", + $data['old_member_id'] ) ); - if ( $memberId ) { - // We need to get a unique name for this member - $dupeNames++; - $data['member_name'] .= ' DUPE-' . $dupeNames; + if ( $memberNeedsUpdate ) { + // This member needs an update + } else { + // Check for duplicate member + $memberId = $this->wpdb->get_var( + $this->wpdb->prepare( + "SELECT id + FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "members + WHERE name = %s", + $data['member_name'] + ) + ); + if ( $memberId ) { + // We need to get a unique name for this member + $dupeNames++; + $data['member_name'] .= ' DUPE-' . $dupeNames; + } } if ( $data['status'] == 'Moderated' ) { $access = $this->config['access_numb']['Moderated']; } else { $access = $this->config['access_numb']['NotDisplayedModerated']; } - $this->wpdb->insert( - GLM_MEMBERS_PLUGIN_DB_PREFIX . 'members', - array( - 'access' => $access, - 'member_type' => ((isset($data['member_type']) && isset($this->membertypes[$data['member_type']])) ? $this->membertypes[$data['member_type']]: 0), - 'created' => date( 'Y-m-d' ), - 'name' => $data['member_name'], - 'member_slug' => sanitize_title( $data['member_name'] ), - 'old_member_id' => $data['old_member_id'] - ), - array( - '%d', - '%d', - '%s', - '%s', - '%s', - '%s' - ) + $memberRecordData = array( + 'access' => $access, + 'member_type' => ((isset($data['member_type']) && isset($this->membertypes[$data['member_type']])) ? $this->membertypes[$data['member_type']]: 0), + 'created' => date( 'Y-m-d' ), + 'name' => $data['member_name'], + 'member_slug' => sanitize_title( $data['member_name'] ), + 'old_member_id' => $data['old_member_id'] + ); + $memberRecordDataFormat = array( + '%d', + '%d', + '%s', + '%s', + '%s', + '%s' ); - $memberId = $this->wpdb->insert_id; - $this->members[$data['id']]['new_id'] = $this->wpdb->insert_id; + if ( $memberNeedsUpdate ) { + $this->wpdb->update( + GLM_MEMBERS_PLUGIN_DB_PREFIX . 'members', + $memberRecordData, + array( 'id' => $memberNeedsUpdate ), + $memberRecordDataFormat, + array( '%d' ) + ); + $memberId = $memberNeedsUpdate; + $this->members[$data['id']]['new_id'] = $memberId; + } else { + $this->wpdb->insert( + GLM_MEMBERS_PLUGIN_DB_PREFIX . 'members', + $memberRecordData, + $memberRecordDataFormat + ); + $memberId = $this->wpdb->insert_id; + $this->members[$data['id']]['new_id'] = $memberId; + } // Logo needs to be a complete url. if ( isset( $data['logo'] ) ) { $logo = filter_var( $data['logo'], FILTER_VALIDATE_URL ); if ( $logo ) { // Transfer the image over to temp directory. - // echo '
$logo: ' . print_r( $logo, true ) . '
'; $logoImage = $this->fetchRemoteImage( $logo, '/tmp' ); - // echo '
$logoImage: ' . print_r( '/tmp/'. $logoImage, true ) . '
'; $res = $ImageUpload->storeImage( '/tmp/'. $logoImage ); - // echo '
$res: ' . print_r( $res, true ) . '
'; if ($res['newFileName']) { $data['logo'] = $res['newFileName']; } @@ -1309,83 +1342,99 @@ class GlmMembersAdmin_import_index } } - // Add the member info record - $insert = $this->wpdb->insert( - GLM_MEMBERS_PLUGIN_DB_PREFIX . 'member_info', - array( - 'member' => $memberId, - 'member_name' => $data['member_name'], - 'status' => $profileStatus, - 'reference_name' => 'Imported Member Information', - 'descr' => $data['descr'], - 'short_descr' => $data['short_descr'], - 'addr1' => $data['addr1'], - 'addr2' => $data['addr2'], - 'city' => ((isset($data['city']) && isset($this->cities[$data['city']]['new_id'])) ? $this->cities[$data['city']]['new_id']: 0), - 'state' => $data['state'], - 'country' => $data['country'], - 'region' => ((isset($data['region']) && isset($this->regions[$data['region']]['new_id'])) ? $this->regions[$data['region']]['new_id']: 0), - 'county' => ((isset($data['county']) && isset($this->counties[$data['county']]['new_id'])) ? $this->counties[$data['county']]['new_id']: 0), - 'zip' => $data['zip'], - 'mailing_addr1' => $data['mailing_addr1'], - 'mailing_addr2' => $data['mailing_addr2'], - 'mailing_city' => ((isset($data['mailing_city']) && isset($this->cities[$data['mailing_city']]['new_id'])) ? $this->cities[$data['mailing_city']]['new_id']: 0), - 'mailing_state' => $data['mailing_state'], - 'mailing_zip' => $data['mailing_zip'], - 'lat' => $data['lat'], - 'lon' => $data['lon'], - 'phone' => $data['phone'], - 'toll_free' => $data['toll_free'], - 'url' => ((strlen($data['url']) > 255) ? substr($data['url'], 0, 250) : $data['url']), - 'reservation_url' => $data['reservation_url'], - 'email' => $data['email'], - 'logo' => $data['logo'], - 'notes' => '', - 'create_time' => date( 'Y-m-d' ), - 'modify_time' => date( 'Y-m-d' ), - 'cc_type' => 0, - ), - array( - '%d', // member - '%s', // member_name - '%d', // status - '%s', // reference_name - '%s', // descr - '%s', // short_descr - '%s', // addr1 - '%s', // addr2 - '%d', // city - '%s', // state - '%d', // country - '%d', // region - '%d', // county - '%s', // zip - '%s', // mailing_addr1 - '%s', // mailing_addr2 - '%d', // mailing_city - '%s', // mailing_state - '%s', // mailing_zip - '%s', // lat - '%s', // lon - '%s', // phone - '%s', // toll_free - '%s', // url - '%s', // reservation_url - '%s', // email - '%s', // logo - '%s', // notes - '%s', // create_time - '%s', // modify_time - '%d', // cc_type - ) + $memberInfoData = array( + 'member' => $memberId, + 'member_name' => $data['member_name'], + 'status' => $profileStatus, + 'reference_name' => 'Imported Member Information', + 'descr' => $data['descr'], + 'short_descr' => $data['short_descr'], + 'addr1' => $data['addr1'], + 'addr2' => $data['addr2'], + 'city' => ((isset($data['city']) && isset($this->cities[$data['city']]['new_id'])) ? $this->cities[$data['city']]['new_id']: 0), + 'state' => $data['state'], + 'country' => $data['country'], + 'region' => ((isset($data['region']) && isset($this->regions[$data['region']]['new_id'])) ? $this->regions[$data['region']]['new_id']: 0), + 'county' => ((isset($data['county']) && isset($this->counties[$data['county']]['new_id'])) ? $this->counties[$data['county']]['new_id']: 0), + 'zip' => $data['zip'], + 'mailing_addr1' => $data['mailing_addr1'], + 'mailing_addr2' => $data['mailing_addr2'], + 'mailing_city' => ((isset($data['mailing_city']) && isset($this->cities[$data['mailing_city']]['new_id'])) ? $this->cities[$data['mailing_city']]['new_id']: 0), + 'mailing_state' => $data['mailing_state'], + 'mailing_zip' => $data['mailing_zip'], + 'lat' => $data['lat'], + 'lon' => $data['lon'], + 'phone' => $data['phone'], + 'toll_free' => $data['toll_free'], + 'url' => ((strlen($data['url']) > 250) ? substr($data['url'], 0, 250) : $data['url']), + 'reservation_url' => $data['reservation_url'], + 'email' => $data['email'], + 'logo' => $data['logo'], + 'notes' => '', + 'create_time' => date( 'Y-m-d' ), + 'modify_time' => date( 'Y-m-d' ), + 'cc_type' => 0, ); - if ( !$insert ) { - echo '
$data: ' . print_r( $data, true ) . '
'; - echo '
Errors: '.$this->wpdb->print_error().'
'; - die( 'Error importing member data' ); + $memberInfoDataFormat = array( + '%d', // member + '%s', // member_name + '%d', // status + '%s', // reference_name + '%s', // descr + '%s', // short_descr + '%s', // addr1 + '%s', // addr2 + '%d', // city + '%s', // state + '%d', // country + '%d', // region + '%d', // county + '%s', // zip + '%s', // mailing_addr1 + '%s', // mailing_addr2 + '%d', // mailing_city + '%s', // mailing_state + '%s', // mailing_zip + '%s', // lat + '%s', // lon + '%s', // phone + '%s', // toll_free + '%s', // url + '%s', // reservation_url + '%s', // email + '%s', // logo + '%s', // notes + '%s', // create_time + '%s', // modify_time + '%d', // cc_type + ); + + if ( $memberNeedsUpdate ) { + // Get the active member info id + $profileId = $memberInfoObj->getActiveInfoIdForMember( $memberNeedsUpdate ); + // Update the member info record + $insert = $this->wpdb->update( + GLM_MEMBERS_PLUGIN_DB_PREFIX . 'member_info', + $memberInfoData, + array( 'id' => $profileId ), + $memberInfoDataFormat, + array( '%d' ) + ); + } else { + // Add the member info record + $insert = $this->wpdb->insert( + GLM_MEMBERS_PLUGIN_DB_PREFIX . 'member_info', + $memberInfoData, + $memberInfoDataFormat + ); + if ( !$insert ) { + echo '
$data: ' . print_r( $data, true ) . '
'; + echo '
Errors: '.$this->wpdb->print_error().'
'; + die( 'Error importing member data' ); + } + $profileId = $this->wpdb->insert_id; } // get last id for member_info table to use for profile id - $profileId = $this->wpdb->insert_id; // Setup the categories for this profile record if ( $data['categories'] ) { $categories = explode( ',', $data['categories'] ); @@ -1434,6 +1483,8 @@ class GlmMembersAdmin_import_index } // Add this record to the processed counter. $this->numberProcessed++; + + // Ending iterating over memberData } //$ret .= '
$this->members: ' . print_r( $this->members, true ) . '
'; $ret .= '

...

';