From 276370f4057d6f3a3264c9eb4e7e50076e59b5d8 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Tue, 23 Oct 2018 10:07:35 -0400 Subject: [PATCH] Updating import csv scripts. Adding lat lon to city file. Adding member type file. Adjusting script to deal with the member types. --- models/admin/import/index.php | 111 ++++++++++++++++++++-------------- sample-files/filesData.csv | 4 +- 2 files changed, 67 insertions(+), 48 deletions(-) diff --git a/models/admin/import/index.php b/models/admin/import/index.php index 9cf0e68d..e2d34db0 100644 --- a/models/admin/import/index.php +++ b/models/admin/import/index.php @@ -79,6 +79,8 @@ class GlmMembersAdmin_import_index * @access public */ public $members = array(); + + public $membertypes = array(); /** * errors * @@ -287,7 +289,7 @@ class GlmMembersAdmin_import_index 'field' => 'city_file', 'name' => 'cityData.csv', 'exists' => false, - 'validate' => array( 'id', 'name' ), + 'validate' => array( 'id', 'name', 'lat', 'lon' ), 'type' => 'city', ), 'Region' => array( @@ -304,12 +306,19 @@ class GlmMembersAdmin_import_index 'validate' => array( 'id', 'name' ), 'type' => 'county', ), + 'MemberType' => array( + 'field' => 'membertype_file', + 'name' => 'membertypeData.csv', + 'exists' => false, + 'validate' => array( 'id', 'name' ), + 'type' => 'membertype', + ), 'Member' => array( 'field' => 'member_file', 'name' => 'memberData.csv', 'exists' => false, 'validate' => array( - 'id', 'old_member_id', 'member_name', 'status', 'short_descr', 'descr', + 'id', 'old_member_id', 'member_name', 'member_type', 'status', 'short_descr', 'descr', 'addr1', 'addr2', 'city', 'state', 'country', 'zip', 'mailing_addr1', 'mailing_addr2', 'mailing_city', 'mailing_state', 'mailing_zip', 'region', 'county', 'lat', 'lon', 'phone', 'toll_free', @@ -398,6 +407,7 @@ class GlmMembersAdmin_import_index $this->wpdb->query('DELETE FROM ' . GLM_MEMBERS_PLUGIN_DB_PREFIX . 'images'); $this->wpdb->query('DELETE FROM ' . GLM_MEMBERS_PLUGIN_DB_PREFIX . 'member_detail_stats'); $this->wpdb->query('DELETE FROM ' . GLM_MEMBERS_PLUGIN_DB_PREFIX . 'member_info'); + $this->wpdb->query('DELETE FROM ' . GLM_MEMBERS_PLUGIN_DB_PREFIX . 'member_type'); $this->wpdb->query('DELETE FROM ' . GLM_MEMBERS_PLUGIN_DB_PREFIX . 'members'); } @@ -429,6 +439,9 @@ class GlmMembersAdmin_import_index case 'county': update_option( $this->wpOptionPrefix . $file['type'], $this->counties ); break; + case 'membertype': + update_option( $this->wpOptionPrefix . $file['type'], $this->membertypes ); + break; } } } @@ -459,6 +472,9 @@ class GlmMembersAdmin_import_index case 'county': $this->counties = get_option( $this->wpOptionPrefix . $file['type'], array() ); break; + case 'membertype': + $this->membertypes = get_option( $this->wpOptionPrefix . $file['type'], array() ); + break; } } else if ( is_file( $uploadPath . '/' . $file['name'] ) && $fileHeader == 'Member' ) { $fileData[$fileHeader]['results'] = $this->processFile( $uploadPath . '/' . $file['name'], $file['type'] ); @@ -1056,9 +1072,15 @@ class GlmMembersAdmin_import_index $success = $this->wpdb->insert( GLM_MEMBERS_PLUGIN_DB_PREFIX . 'cities', array( - 'name' => $data['name'] + 'name' => $data['name'], + 'lat' => $data['lat'], + 'lon' => $data['lon'] ), - '%s' + array( + '%s', + '%s', + '%s' + ) ); if ( $success ) { $this->cities[$data['id']]['new_id'] = $this->wpdb->insert_id; @@ -1108,6 +1130,41 @@ class GlmMembersAdmin_import_index $ret .= '

...

'; return ( $errorCount == 0 ); break; + case 'membertype': + $membertypeData = $this->readCSVFile( $fileName ); + $ret .= '

Processing Member Types File

'; + foreach ( $membertypeData as $data ) { + // import membertype names if not found + $membertypeId = $this->wpdb->get_var( + $this->wpdb->prepare( + "SELECT id + FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_type + WHERE name = %s", + $data['name'] + + ) + ); + if ( $membertypeId ) { + $this->membertypes[$data['name']] = $membertypeId; + } else { + $success = $this->wpdb->insert( + GLM_MEMBERS_PLUGIN_DB_PREFIX . 'member_type', + array( + 'name' => $data['name'] + ), + '%s' + ); + if ( $success ) { + $this->membertypes[$data['name']] = $this->wpdb->insert_id; + } else { + $errorCount++; + $this->errors[] = '

There was an error adding membertype

'; + } + } + } + $ret .= '

...

'; + return ( $errorCount == 0 ); + break; case 'county': $countyData = $this->readCSVFile( $fileName ); $ret .= '

Processing County File

'; @@ -1156,26 +1213,6 @@ class GlmMembersAdmin_import_index } $memberData = $this->readCSVFile( $fileName ); $ret .= '

Processing Member File

'; - // Get default member type - $memberTypeId = $this->wpdb->get_var( - $this->wpdb->prepare( - "SELECT id - FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_type - WHERE name = %s", - 'Default' - ) - ); - if ( !$memberTypeId ) { - $this->wpdb->insert( - GLM_MEMBERS_PLUGIN_DB_PREFIX . 'member_type', - array( - 'name' => 'Default', - 'descr' => '' - ), - '%s' - ); - $memberTypeId = $this->mpdb->insert_id; - } $dupeNames = 0; $this->totalMembers = count( $memberData ); @@ -1183,6 +1220,8 @@ class GlmMembersAdmin_import_index $testEnd = $start + $this->memberProcessCountPerRound; $ending = ( $testEnd <= $this->totalMembers ) ? $testEnd : $this->totalMembers; + $this->wpdb->show_errors(); + // We have to add one to $ending (array starts at 1 not 0). $ending++; for ( $index = $start; $index < $ending; $index++ ) { @@ -1210,7 +1249,7 @@ class GlmMembersAdmin_import_index GLM_MEMBERS_PLUGIN_DB_PREFIX . 'members', array( 'access' => $access, - 'member_type' => $memberTypeId, + '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'] ), @@ -1246,26 +1285,6 @@ class GlmMembersAdmin_import_index } } - // create truncated short_descr from descriptions - less tags, html encoded characters, newlines, tabs, etc. - $stripped = str_replace( - PHP_EOL, - '', - preg_replace( '/\t+/', '', preg_replace( "/&#?[a-z0-9]{2,8};/i", "", strip_tags( $data['descr'] ) ) ) - ); - - if ( isset( $this->config['settings']['short_desc_char_limit'] ) ) { - $short_desc_char_limit = $this->config['settings']['short_desc_char_limit']; - } else { - $short_desc_char_limit = 120; - } - $ellipsis = ' ...'; - - $short_descr = substr(implode(' ', array_slice(explode(' ', $stripped), 0, 30)), 0, $short_desc_char_limit - strlen($ellipsis)); - - if (strlen($short_descr) < strlen($stripped)) { - $short_descr .= $ellipsis; - } - // Setup the Member Profile Status // Initial status if not being set $profileStatus = $this->config['status_numb']['Active']; @@ -1299,7 +1318,6 @@ class GlmMembersAdmin_import_index 'status' => $profileStatus, 'reference_name' => 'Imported Member Information', 'descr' => $data['descr'], - //'short_descr' => $short_descr, 'short_descr' => $data['short_descr'], 'addr1' => $data['addr1'], 'addr2' => $data['addr2'], @@ -1363,6 +1381,7 @@ class GlmMembersAdmin_import_index ); if ( !$insert ) { echo '
$data: ' . print_r( $data, true ) . '
'; + echo '
Errors: '.$this->wpdb->print_error().'
'; die( 'Error importing member data' ); } // get last id for member_info table to use for profile id diff --git a/sample-files/filesData.csv b/sample-files/filesData.csv index ce3c12a9..a7c0aad7 100644 --- a/sample-files/filesData.csv +++ b/sample-files/filesData.csv @@ -1,2 +1,2 @@ -member_id,file_url,file_name -3723,fs74-1388431354-17569.pdf,"http://is0.gaslightmedia.com/demo/original/Piece of Cake PHP" +"member_id","file_url","file_name" +3723,"http://is0.gaslightmedia.com/demo/original/fs74-1388431354-17569.pdf","Piece of Cake PHP" -- 2.17.1