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 .= '<p>Processing Member File</p>';
- $dupeNames = 0;
+ $ret .= '<p>Processing Member File</p>';
+ $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 '<pre>$logo: ' . print_r( $logo, true ) . '</pre>';
$logoImage = $this->fetchRemoteImage( $logo, '/tmp' );
- // echo '<pre>$logoImage: ' . print_r( '/tmp/'. $logoImage, true ) . '</pre>';
$res = $ImageUpload->storeImage( '/tmp/'. $logoImage );
- // echo '<pre>$res: ' . print_r( $res, true ) . '</pre>';
if ($res['newFileName']) {
$data['logo'] = $res['newFileName'];
}
}
}
- // 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 '<pre>$data: ' . print_r( $data, true ) . '</pre>';
- echo '<pre>Errors: '.$this->wpdb->print_error().'</pre>';
- 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 '<pre>$data: ' . print_r( $data, true ) . '</pre>';
+ echo '<pre>Errors: '.$this->wpdb->print_error().'</pre>';
+ 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'] );
}
// Add this record to the processed counter.
$this->numberProcessed++;
+
+ // Ending iterating over memberData
}
//$ret .= '<pre>$this->members: ' . print_r( $this->members, true ) . '</pre>';
$ret .= '<p>...</p>';