Updating for the member files.
authorSteve Sutton <steve@gaslightmedia.com>
Fri, 23 Jun 2017 19:48:43 +0000 (15:48 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Fri, 23 Jun 2017 19:48:43 +0000 (15:48 -0400)
Add some setup for member file upload.
not finished with it though.

14 files changed:
css/admin.css
models/admin/import/index.php
sample-files/amenityData.csv [new file with mode: 0644]
sample-files/categoryData.csv [new file with mode: 0644]
sample-files/cityData.csv [new file with mode: 0644]
sample-files/countyData.csv [new file with mode: 0644]
sample-files/filesData.csv [new file with mode: 0644]
sample-files/memberData.csv [new file with mode: 0644]
sample-files/photosData.csv [new file with mode: 0644]
sample-files/regionData.csv [new file with mode: 0644]
views/admin/import/files.html
views/admin/import/filesValidate.html [new file with mode: 0644]
views/admin/import/index.html
views/admin/import/photos.html

index 9cbaff7..065aa7b 100644 (file)
@@ -761,4 +761,5 @@ input[type=submit], input[type=file] {
 .notice-link
 {
     cursor: pointer;
-}
\ No newline at end of file
+}
+.glm-import-td { padding:15px !important; margin: 0; }
index cf374eb..8fac51d 100644 (file)
@@ -205,6 +205,7 @@ class GlmMembersAdmin_import_index
         $clearData   = false;
         $haveMembers = false;
         $fileExists  = false;
+        $isValid     = false;
         // Check to see if they have members
         $haveMembers = $this->wpdb->get_var(
             "SELECT count(id)
@@ -440,6 +441,25 @@ class GlmMembersAdmin_import_index
 
             break;
 
+        case 'filesValidate':
+            if ( isset( $_FILES ) ) {
+                move_uploaded_file( $_FILES['files_file']['tmp_name'], $uploadPath . '/filesData.csv' );
+            }
+            if ( is_file( $uploadPath . '/filesData.csv' ) ) {
+                $fileExists = true;
+            }
+            // validate the header line
+            $fData    = $this->readCSVFileHeaders( $uploadPath . '/filesData.csv' );
+            $validate = array( 'member_id', 'file_url', 'file_name' );
+            $isValid  = ( $fData == $validate );
+            // If the file validates then we're ready to process
+            $readyToProcess = $isValid;
+            // Set the view file
+            $view= 'filesValidate.html';
+            $fileData = '<pre>$_FILES: ' . print_r( $_FILES, true ) . '</pre>';
+
+            break;
+
         case 'photosProcess':
             // Setup the image processing
             require_once GLM_MEMBERS_PLUGIN_PATH . '/models/admin/ajax/imageUpload.php';
@@ -508,11 +528,43 @@ class GlmMembersAdmin_import_index
         case 'photos':
             // Set the view file
             $view= 'photos.html';
+            unset( $fileData );
+            if ( is_file( $uploadPath . '/photoData.csv' ) ) {
+                $fileExists = true;
+                $fileData['Photos'] = array(
+                    'field'  => 'photos_file',
+                    'name'   => 'photosData.csv',
+                    'exists' => true,
+                    'mtime'  => filemtime( $uploadPath . '/photoData.csv' ),
+                );
+            } else {
+                $fileData['Photos'] = array(
+                    'field'  => 'photos_file',
+                    'name'   => 'photosData.csv',
+                    'exists' => false,
+                );
+            }
             break;
 
         case 'files':
             // Set the view file
             $view = 'files.html';
+            unset( $fileData );
+            if ( is_file( $uploadPath . '/filesData.csv' ) ) {
+                $fileExists = true;
+                $fileData['Files'] = array(
+                    'field'  => 'photos_file',
+                    'name'   => 'filesData.csv',
+                    'exists' => true,
+                    'mtime'  => filemtime( $uploadPath . '/filesData.csv' ),
+                );
+            } else {
+                $fileData['Files'] = array(
+                    'field'  => 'files_file',
+                    'name'   => 'filesData.csv',
+                    'exists' => false,
+                );
+            }
             break;
 
         case 'default':
@@ -548,6 +600,7 @@ class GlmMembersAdmin_import_index
             'readyToProcess'  => $readyToProcess,
             'haveMembers'     => $haveMembers,
             'isValid'         => $isValid,
+            'sampleFileUrl'   => GLM_MEMBERS_PLUGIN_BASE_URL . '/sample-files/',
         );
 
         // Return status, suggested view, and data to controller
diff --git a/sample-files/amenityData.csv b/sample-files/amenityData.csv
new file mode 100644 (file)
index 0000000..c6b73de
--- /dev/null
@@ -0,0 +1,2 @@
+id,name
+38,"Free Wireless Access"
diff --git a/sample-files/categoryData.csv b/sample-files/categoryData.csv
new file mode 100644 (file)
index 0000000..a7dd286
--- /dev/null
@@ -0,0 +1,19 @@
+id,name,parent
+1931,Accommodations,0
+1932,Hotels/Motels,1931
+1933,"Bed and Breakfast",1931
+1934,"Condo Rentals",1931
+1935,Resort,1931
+1936,Recreation,0
+1937,Golf,1936
+1938,Skiing,1936
+1939,Attractions,0
+1940,Dining,0
+1941,"Fine Dining",1940
+1944,Bar/Restaurant,1940
+1945,"Fast Food",1940
+1946,"Family Friendly",1939
+1947,Shopping,0
+1948,Boutiques,1947
+1949,"Gift and Specialty Items",1947
+1950,"New Category",1931
diff --git a/sample-files/cityData.csv b/sample-files/cityData.csv
new file mode 100644 (file)
index 0000000..6460b80
--- /dev/null
@@ -0,0 +1,12 @@
+id,name
+744,"Harbor Springs"
+745,"Traverse City"
+746,Petoskey
+747,Gaylord
+748,Ludington
+749,"Grand Haven"
+750,"Silver Lake"
+751,Midland
+752,"Sault Ste Marie"
+753,"Bay City"
+754,"Mackinaw City"
diff --git a/sample-files/countyData.csv b/sample-files/countyData.csv
new file mode 100644 (file)
index 0000000..902c63c
--- /dev/null
@@ -0,0 +1,2 @@
+"id","name"
+1,"Emmet"
diff --git a/sample-files/filesData.csv b/sample-files/filesData.csv
new file mode 100644 (file)
index 0000000..ce3c12a
--- /dev/null
@@ -0,0 +1,2 @@
+member_id,file_url,file_name
+3723,fs74-1388431354-17569.pdf,"http://is0.gaslightmedia.com/demo/original/Piece of Cake PHP"
diff --git a/sample-files/memberData.csv b/sample-files/memberData.csv
new file mode 100644 (file)
index 0000000..77033f1
--- /dev/null
@@ -0,0 +1,6 @@
+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,url,reservation_url,email,logo,categories,amenities
+3723,"@AAAA Test",Active,"<p>Dictumst sed, et aliquam et sed, odio, pellentesque natoque, purus ac rhoncus! Magna turpis sagittis massa ac magna diam cum dictumst, habitasse ridiculus mauris, scelerisque porta porttitor diam mattis montes, dignissim est integer urna, lundium magna? Eros penatibus nascetur vut pulvinar massa? Tincidunt a adipiscing. Pulvinar nunc platea adipiscing sit enim elementum magna lectus. Et, adipiscing augue, nunc montes porttitor, magnis placerat rhoncus eros lundium ac. Nisi penatibus lundium cum? Arcu amet in turpis eros dignissim ridiculus placerat proin amet, quis, diam dolor placerat nisi porta ultrices, magna elementum platea pulvinar mus rhoncus nisi ac hac porta mattis. Et lundium proin dignissim augue scelerisque, ut sed duis massa, sociis, scelerisque proin non aliquam et. Penatibus, ac vel mus, lundium, proin.</p>
+
+<p>Tempor, turpis augue scelerisque in urna mauris urna arcu vel parturient placerat, in pulvinar? Nisi auctor lundium purus tincidunt, nisi rhoncus et parturient. Scelerisque ridiculus augue aliquam cum rhoncus! Magnis parturient. Rhoncus cum amet dis est sociis placerat urna, risus! Montes, et a pulvinar quis dapibus cras magna adipiscing. Nec et parturient porttitor tincidunt cras habitasse diam aliquet pulvinar. Porttitor ut! Etiam eu elit amet! Mid integer cum cursus, dictumst odio rhoncus dictumst auctor rhoncus. Sagittis dictumst pulvinar sed non a! Magna, parturient, arcu porta dis, dapibus pellentesque habitasse? Nunc amet, egestas lacus turpis augue! Et, turpis non ut, tincidunt nunc? Elementum proin. Montes nascetur nunc ac adipiscing augue diam. Nisi ac non! Ultrices aliquet urna dapibus, pellentesque elit.</p>
+
+<p>Porttitor nisi vel in nisi sociis placerat, urna parturient dignissim in, proin etiam, nunc! Nisi sed, sociis? Parturient auctor? Ridiculus? Est in integer, odio aenean quis. Odio pulvinar tempor. Ridiculus a? Habitasse, eros ultricies, dolor, et non mauris tempor a elit nunc ultricies odio sit. Vel turpis cum dolor dignissim nunc. Porta sed mauris turpis et. Aenean et! Penatibus. Magnis porta scelerisque augue rhoncus velit? Nec vel! Aliquet lectus, turpis ac, in mus sed! Rhoncus sed nunc risus lundium! Phasellus nec cursus integer nec! Sed egestas ridiculus velit massa, nisi sit tincidunt tincidunt? Duis lacus odio pid tempor pellentesque velit et nunc cum penatibus tortor ac pulvinar placerat mauris porttitor, porta. Augue porta tincidunt parturient et! Integer augue augue.</p>","120 E. Lake St",,746,MI,US,49770,,,,,,30,,45.374893,-84.958404,"(881) 231-0266","(881) 231-0268",http://www.gaslightmedia.com,,info@gaslightmedia.com,http://is0.gaslightmedia.com/demo/CKImage/is38-1352840253-62045.jpeg,"1948,1933,1944,1937",38
diff --git a/sample-files/photosData.csv b/sample-files/photosData.csv
new file mode 100644 (file)
index 0000000..ede72a6
--- /dev/null
@@ -0,0 +1,2 @@
+member_id,image,caption
+3723,http://is0.gaslightmedia.com/demo/CKImage/is23-1287751840-06841.jpeg,Lightning
diff --git a/sample-files/regionData.csv b/sample-files/regionData.csv
new file mode 100644 (file)
index 0000000..d248912
--- /dev/null
@@ -0,0 +1,3 @@
+id,name
+30,Testing
+31,.
index 821a318..300bb24 100644 (file)
@@ -1,18 +1,42 @@
 {include file='admin/import/header.html'}
 
     <h2>Data Import: Files</h2>
+    <form action="{$thisUrl}?page={$thisPage}" method="post" enctype="multipart/form-data">
+        <input type="hidden" name="glm_action" value="index" />
+        <input type="hidden" name="option" value="filesValidate" />
 
-    <table class="glm-admin-table">
-        <tr>
-            <th>Total Member</th>
-            <td>{$totalMembers}</td>
-        </tr>
-        <tr>
-            <th>Processed Member</th>
-            <td>{$numberProcessed}</td>
-        </tr>
+        <table class="glm-admin-table">
+            <tr>
+                <th>File Type</th>
+                <th>New File</th>
+                <th>Current File</th>
+                <th>Updated</th>
+            </tr>
+            {foreach $fileData as $fileHeader => $file}
+            <tr>
+                <td class="glm-import-td">
+                    {$fileHeader}
+                </td>
+                <td class="glm-import-td">
+                    <input type="file" name="files_file">
+                    <a href="{$sampleFileUrl}{$file.name}">Sample {$fileHeader} File</a>
+                </td>
+                <td class="glm-import-td">
+                    {if $file.exists}
+                        {$fileHeader} File
+                    {/if}
+                </td>
+            <td class="glm-import-td">
+                {if $file.exists}
+                    {$file.mtime|date_format:"%D %I:%M %p"}
+                {/if}
+            </td>
+            {/foreach}
+            </tr>
 
-    </table>
+        </table>
 
+        <input type="submit" value="Continue" class="button button-primary submit-import">
+    </form>
 
 {include file='admin/footer.html'}
diff --git a/views/admin/import/filesValidate.html b/views/admin/import/filesValidate.html
new file mode 100644 (file)
index 0000000..6a8acaa
--- /dev/null
@@ -0,0 +1,31 @@
+{include file='admin/import/header.html'}
+
+<h2>Data Import: Photos Validation</h2>
+
+<table class="glm-admin-table">
+
+    <tr>
+        <td>
+            {if $fileExists}
+                filesData.csv
+            {/if}
+        </td>
+        <td>
+            {if $isValid}
+                Is Valid
+            {else}
+                Not Valid
+            {/if}
+        </td>
+    </tr>
+        {if $readyToProcess}
+        <tr>
+            <td colspan="2">
+                <a href="{$thisUrl}?page={$thisPage}&glm_action=index&option=photosFiles" class="button">Process Files</a>
+            </td>
+        </tr>
+        {/if}
+
+</table>
+
+{include file='admin/footer.html'}
index 91d57a5..a04419e 100644 (file)
@@ -1,10 +1,5 @@
 {include file='admin/import/header.html'}
-<style>
-.glm-import-td {
-    padding:10px;
-    margin: 0;
-}
-</style>
+
     <h2>Data Import Step 1: Upload files</h2>
 
     <form action="{$thisUrl}?page={$thisPage}" method="post" enctype="multipart/form-data">
@@ -26,7 +21,7 @@
                 </td>
                 <td class="glm-import-td">
                     <input type="file" name="{$file.field}">
-                    <a href="#">Sample {$fileHeader} File</a>
+                    <a href="{$sampleFileUrl}{$file.name}">Sample {$fileHeader} File</a>
                 </td>
                 <td class="glm-import-td">
                     {if $file.exists}
index a2af2a2..b8219c5 100644 (file)
@@ -7,8 +7,31 @@
 
         <table class="glm-admin-table">
             <tr>
-                <th>Upload File</th>
-                <td><input type="file" name="photos_file"></td>
+                <th>File Type</th>
+                <th>New File</th>
+                <th>Current File</th>
+                <th>Updated</th>
+            </tr>
+            {foreach $fileData as $fileHeader => $file}
+            <tr>
+                <td class="glm-import-td">
+                    {$fileHeader}
+                </td>
+                <td class="glm-import-td">
+                    <input type="file" name="photos_file">
+                    <a href="{$sampleFileUrl}{$file.name}">Sample {$fileHeader} File</a>
+                </td>
+                <td class="glm-import-td">
+                    {if $file.exists}
+                        {$fileHeader} File
+                    {/if}
+                </td>
+            <td class="glm-import-td">
+                {if $file.exists}
+                    {$file.mtime|date_format:"%D %I:%M %p"}
+                {/if}
+            </td>
+            {/foreach}
             </tr>
 
         </table>