Updating import csv scripts.
authorSteve Sutton <steve@gaslightmedia.com>
Tue, 23 Oct 2018 14:07:35 +0000 (10:07 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Tue, 23 Oct 2018 14:07:35 +0000 (10:07 -0400)
Adding lat lon to city file.
Adding member type file.
Adjusting script to deal with the member types.

models/admin/import/index.php
sample-files/filesData.csv

index 9cf0e68..e2d34db 100644 (file)
@@ -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 .= '<p>...</p>';
             return ( $errorCount == 0 );
             break;
+        case 'membertype':
+            $membertypeData = $this->readCSVFile( $fileName );
+            $ret .= '<p>Processing Member Types File</p>';
+            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[] = '<p>There was an error adding membertype</p>';
+                    }
+                }
+            }
+            $ret .= '<p>...</p>';
+            return ( $errorCount == 0 );
+            break;
         case 'county':
             $countyData = $this->readCSVFile( $fileName );
             $ret .= '<p>Processing County File</p>';
@@ -1156,26 +1213,6 @@ class GlmMembersAdmin_import_index
             }
             $memberData = $this->readCSVFile( $fileName );
             $ret .= '<p>Processing Member File</p>';
-            // 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 '<pre>$data: ' . print_r( $data, true ) . '</pre>';
+                    echo '<pre>Errors: '.$this->wpdb->print_error().'</pre>';
                     die( 'Error importing member data' );
                 }
                 // get last id for member_info table to use for profile id
index ce3c12a..a7c0aad 100644 (file)
@@ -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"