From fdc9b2518282b6af0473439bd6ff1b19886fe928 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Fri, 21 Apr 2017 13:32:06 -0400 Subject: [PATCH] Add in the file import for trailmaps. This is setup to import files from the current member db. Could be used then for other member databases that use this version of member database. --- models/admin/management/import.php | 4 + .../management/import/trailmapsFiles.php | 131 ++++++++++++++++++ views/admin/management/import.html | 10 +- .../management/import/trailmapsFiles.html | 37 +++++ 4 files changed, 176 insertions(+), 6 deletions(-) create mode 100644 models/admin/management/import/trailmapsFiles.php create mode 100644 views/admin/management/import/trailmapsFiles.html diff --git a/models/admin/management/import.php b/models/admin/management/import.php index a1f15b5e..f2ea68ef 100644 --- a/models/admin/management/import.php +++ b/models/admin/management/import.php @@ -154,6 +154,10 @@ class GlmMembersAdmin_management_import require GLM_MEMBERS_PLUGIN_PATH.'/models/admin/management/import/brewbakersFiles.php'; break; + case 'trailmapsFiles': + require GLM_MEMBERS_PLUGIN_PATH.'/models/admin/management/import/trailmapsFiles.php'; + break; + case 'importOldMemberIds': require GLM_MEMBERS_PLUGIN_PATH.'/models/admin/management/import/oldMemberIds.php'; break; diff --git a/models/admin/management/import/trailmapsFiles.php b/models/admin/management/import/trailmapsFiles.php new file mode 100644 index 00000000..428a5bb8 --- /dev/null +++ b/models/admin/management/import/trailmapsFiles.php @@ -0,0 +1,131 @@ +wpdb, $this->config); +$refType = $this->config['ref_type_numb']['MemberInfo']; +$refTable = $this->config['ref_type_table'][$refType]; +$fileBaseURL = 'http://www.michigantrailmaps.com/uploads/member_files/'; + + +// Read in all member files. +$file = array(); +$numbFilesFound = 0; +if (!$failure && $start === 0) { + // Grab the files for members + $sql = " + SELECT * + FROM members.member_files + ORDER BY member_id"; + $res = pg_query($db, $sql); + $rows = pg_num_rows($res); + if ($rows == 0) { + $templateData['genError'] = 'There does not appear to be any member files listed in this database!'; + $failure = true; + } else { + $tmp = pg_fetch_all($res); + if (count($tmp) != $rows) { + $notice = pg_last_notice($res); + $templateData['genError'] = 'While reading member photo data, we did not receive the expected number of member files! '; + if ($notice) { + $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice; + } + $failure = true; + } else { + + // Reprocess into array grouped by member with the main index the member ID + foreach ($tmp as $x) { + + // If member entry hasn't been created yet, add it now + if (!isset($file['members'][$x['member_id']])) { + $file['members'][$x['member_id']] = array( + 'member_id' => $x['member_id'], + 'files' => array() + ); + } + + $file['members'][$x['member_id']]['files'][] = $x; + $numbFilesFound++; + } + //echo '
$file: ' . print_r( $file, true ) . '
'; + } + } +} +//echo '
$file: ' . print_r( $file, true ) . '
'; +//exit; +function getMemberInfoIdFromOldMemberId( $wpdb, $oldMemberId ) +{ + return $wpdb->get_var( + $wpdb->prepare( + "SELECT id + FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info + WHERE member IN ( + SELECT id + FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "members + WHERE old_member_id = %d)", + $oldMemberId + ) + ); +} +//echo '
$file: ' . print_r( $file, true ) . '
'; +//exit; +// Reset member files data tables if needed +if ( !$failure && $resetdb && $start === 0 ) { + // Reset the data + $this->wpdb->query( "DELETE FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX."files" ); + + // Delete Files + foreach( new RecursiveIteratorIterator( + + new RecursiveDirectoryIterator( GLM_MEMBERS_PLUGIN_FILES_PATH, FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS ), + RecursiveIteratorIterator::CHILD_FIRST ) as $value ) { + if ($value->isFile()) { + unlink( $value ); + } + } +} +// If we have file URLs +if ($file != false) { + + // For each member + foreach ($file as $memType) { + foreach ($memType as $oldMemberId => $m) { + + $newMemberId = getMemberInfoIdFromOldMemberId( $this->wpdb, $oldMemberId); + + // For each file in this member's gallery + if ($m['files']) { + foreach ($m['files'] as $i) { + $fileURL = $fileBaseURL.$i['name_on_disk']; + $fileName = ( $i['file_name'] ) ? $i['file_name'] : $i['original_name']; + $res = $FileUpload->storeFile ($fileURL, $refType, $refTable, $newMemberId, $fileName ); + } + } + + } + } + +} + +$templateData['newStart'] = $start + $limit; +$templateData['start'] = $start; +$templateData['total'] = $totalFiles; +$templateData['numbFilesFound'] = $numbFilesFound; + +$requestedView = 'import/trailmapsFiles.html'; diff --git a/views/admin/management/import.html b/views/admin/management/import.html index af3b5131..5cdffad7 100644 --- a/views/admin/management/import.html +++ b/views/admin/management/import.html @@ -23,11 +23,9 @@ Import Trail Maps - + -

Import Images

-

Import Files

-

Fix Brands

+

Import Files

@@ -142,10 +140,10 @@ $('.for-member-import').addClass('glm-hidden'); } else if (selected == 'importMailingAddresses') { $('.for-member-import').addClass('glm-hidden'); - } else if (selected == 'importBrewbakers') { + } else if (selected == 'importTrailMaps') { $('.for-member-import').addClass('glm-hidden'); $('.all-import-fields').addClass('glm-hidden'); - $('.for-brewbakers').removeClass('glm-hidden'); + $('.for-trailmaps').removeClass('glm-hidden'); } else { $('.for-member-import').addClass('glm-hidden'); $('.all-import-fields').addClass('glm-hidden'); diff --git a/views/admin/management/import/trailmapsFiles.html b/views/admin/management/import/trailmapsFiles.html new file mode 100644 index 00000000..46b5c272 --- /dev/null +++ b/views/admin/management/import/trailmapsFiles.html @@ -0,0 +1,37 @@ +{include file='admin/management/header.html'} + +

Data Import - Test Database

+
    +
  1. Provide legacy database information and import member data.
  2. +
  3. Import any images.
  4. +
  5. Review results
  6. +
+ + +

Data Import Step 3: Review Results.

+{if isset($genError)} +

+

Oops!

+

{$genError}

+

+{/if} + +
+Found: {$numbFilesFound} files
+Start: {$start}
+End: {$newStart}
+Total: {$total}
+
+ Next Set of Files + + {if $newStart > $total } +

Process Complete

+

+ The data and image import process is complete. You should now have all member data and images imported. +

+

+ You should now go to the "Member List" and make sure the data and images have been imported properly. +

+ {/if} + +{include file='admin/footer.html'} -- 2.17.1