From 619d4eb2b03b5ad6e073fb06eacbf64c1d348e24 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Fri, 16 Jun 2017 14:51:20 -0400 Subject: [PATCH] More updates for the member import Working on short description. Removing it from the csv files. Short description will be generated from the descr field. --- models/admin/import/index.php | 52 +++++++++++++++++++++++--- setup/shortcodes.php | 2 +- views/admin/import/processMembers.html | 17 +++++++-- 3 files changed, 60 insertions(+), 11 deletions(-) diff --git a/models/admin/import/index.php b/models/admin/import/index.php index f9278fea..97e13603 100644 --- a/models/admin/import/index.php +++ b/models/admin/import/index.php @@ -21,6 +21,7 @@ class GlmMembersAdmin_import_index { + const CSV_CHARS_PER_LINE = 6000; /** * WordPress Database Object * @@ -117,6 +118,14 @@ class GlmMembersAdmin_import_index */ public $totalMembers = 0; + /** + * processingComplete + * + * @var bool + * @access public + */ + public $processingComplete = false; + /** * Constructor * @@ -177,6 +186,9 @@ class GlmMembersAdmin_import_index $failure = false; $option = ''; $clearData = false; + if ( isset( $_REQUEST['numberProcessed'] ) ) { + $this->numberProcessed = filter_var( $_REQUEST['numberProcessed'], FILTER_VALIDATE_INT ); + } $fileData = array( 'Amenity' => array( 'field' => 'amenity_file', @@ -218,7 +230,7 @@ class GlmMembersAdmin_import_index 'name' => 'memberData.csv', 'exists' => false, 'validate' => array( - 'id', 'member_name', 'status', 'descr', 'short_descr', + 'id', 'member_name', 'status', 'descr', 'addr1', 'addr2', 'city', 'state', 'country', 'zip', 'mailing_addr1', 'mailing_addr2', 'mailing_city', 'mailing_state', 'mailing_zip', 'region', 'county', 'lat', 'lon', 'phone', 'toll_free', @@ -352,8 +364,10 @@ class GlmMembersAdmin_import_index } } // Here we need to check to see if we processed all members. - // If not we need to use the process.html view. // Also the counter has to increment the total processed so far. + if ( $this->numberProcessed == $this->totalMembers ) { + $this->processingComplete = true; + } $view = 'processMembers.html'; break; @@ -374,6 +388,8 @@ class GlmMembersAdmin_import_index $templateData = array( 'errors' => $this->errors, 'numberProcessed' => $this->numberProcessed, + 'totalMembers' => $this->totalMembers, + 'completed' => $this->processingComplete, 'data' => false, 'fileData' => $fileData, 'clearData' => $clearData, @@ -406,7 +422,7 @@ class GlmMembersAdmin_import_index $fileHeaders = array(); if ( ( $fp = fopen( $fileName, 'r' ) ) !== false ) { // get first line to use as headers - $fileHeaders = fgetcsv( $fp, 1000, ',' ); + $fileHeaders = fgetcsv( $fp, SELF::CSV_CHARS_PER_LINE, ',' ); fclose( $fp ); } @@ -430,7 +446,7 @@ class GlmMembersAdmin_import_index if ( ( $fp = fopen( $fileName, 'r' ) ) !== false ) { // get first line to use as headers $rowNumber = 0; - while ( ( $data = fgetcsv( $fp, 1000, ',' ) ) !== false ) { + while ( ( $data = fgetcsv( $fp, SELF::CSV_CHARS_PER_LINE, ',' ) ) !== false ) { if ( $rowNumber == 0 ) { $fileHeaders = $data; } else { @@ -639,6 +655,10 @@ class GlmMembersAdmin_import_index return ( $errorCount == 0 ); 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); + $start = 1; if ( isset( $_REQUEST['start'] ) ) { $start = filter_var( $_REQUEST['start'], FILTER_VALIDATE_INT ); @@ -714,7 +734,27 @@ class GlmMembersAdmin_import_index $this->members[$data['id']]['new_id'] = $this->wpdb->insert_id; // Logo needs to be a complete url. + if ( isset( $data['logo'] ) ) { + $logo = filter_var( $data['logo'], FILTER_VALIDATE_URL ); + if ( $logo ) { + $res = $ImageUpload->storeImage( $logo ); + if ($res['newFileName']) { + $data['logo'] = $res['newFileName']; + } + } + } + // 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'] ) ) ) + ); + $short_descr = implode(' ', array_slice(explode(' ', $stripped), 0, 30)); + + if (strlen($short_descr) < strlen($stripped)) { + $short_descr .= ' ...'; + } // Add the member info record $insert = $this->wpdb->insert( @@ -725,7 +765,7 @@ class GlmMembersAdmin_import_index 'status' => $this->config['status_numb']['Active'], 'reference_name' => 'Imported Member Information', 'descr' => $data['descr'], - 'short_descr' => $data['short_descr'], + 'short_descr' => $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), @@ -765,7 +805,7 @@ class GlmMembersAdmin_import_index '%s', // state '%d', // country '%d', // region - '%s', // county + '%d', // county '%s', // zip '%s', // mailing_addr1 '%s', // mailing_addr2 diff --git a/setup/shortcodes.php b/setup/shortcodes.php index c091a6c5..a15c1539 100644 --- a/setup/shortcodes.php +++ b/setup/shortcodes.php @@ -74,7 +74,7 @@ if ( isset( $config['settings'] ) && $config['settings']['enable_members'] ) { 'action' => 'list', 'table' => GLM_MEMBERS_PLUGIN_DB_PREFIX.'settings_general', 'cacheControl' => array( - 'active' => true, + 'active' => false, 'cacheTime' => '2 WEEK' // MySQL "DATE_ADD" time interval - see https://www.w3schools.com/sql/func_date_add.asp ), 'attributes' => array( diff --git a/views/admin/import/processMembers.html b/views/admin/import/processMembers.html index ef702dcc..5ac631a3 100644 --- a/views/admin/import/processMembers.html +++ b/views/admin/import/processMembers.html @@ -3,13 +3,22 @@

Data Import Step 3: Process Members

- {foreach $fileData as $fileHeader => $file} - + + + + + + + {if !$completed} + + - {/foreach} + {/if} {if $errors} {foreach $errors as $error} -- 2.17.1
- {$file.results} + Total Member{$totalMembers}
Processed Member{$numberProcessed}
+ Process Next Count Members