*/
public $wpOptionPrefix = 'glm_members_import_';
+ /**
+ * memberProcessCountPerRound
+ *
+ * @var float
+ * @access public
+ */
+ public $memberProcessCountPerRound = 20;
+
+ /**
+ * numberProcessed
+ *
+ * @var float
+ * @access public
+ */
+ public $numberProcessed = 0;
+
+ /**
+ * totalMembers
+ *
+ * @var float
+ * @access public
+ */
+ public $totalMembers = 0;
+
/**
* Constructor
*
$fileData[$fileHeader]['results'] = $this->processFile( $uploadPath . '/' . $file['name'], $file['type'] );
}
}
+ // 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.
$view = 'processMembers.html';
break;
}
$templateData = array(
- 'errors' => $this->errors,
- 'data' => false,
- 'fileData' => $fileData,
- 'clearData' => $clearData,
- 'csvData' => '<pre>$fileData: ' . print_r( $fileData, true ) . '</pre>',
- 'readyToProcess' => $readyToProcess
+ 'errors' => $this->errors,
+ 'numberProcessed' => $this->numberProcessed,
+ 'data' => false,
+ 'fileData' => $fileData,
+ 'clearData' => $clearData,
+ 'csvData' => '<pre>$fileData: ' . print_r( $fileData, true ) . '</pre>',
+ 'readyToProcess' => $readyToProcess
);
// Return status, suggested view, and data to controller
return array(
'status' => true,
'menuItemRedirect' => false,
'modelRedirect' => false,
- 'view' => 'admin/import/'.$view,
+ 'view' => 'admin/import/' . $view,
'data' => $templateData
);
}
+ /**
+ * readCSVFileHeaders
+ *
+ * Read the cvs file. Just the first line is read.
+ *
+ * @param mixed $fileName Name of the file (path)
+
+ * @access public
+ * @return void
+ */
public function readCSVFileHeaders( $fileName )
{
$fileHeaders = array();
return $fileHeaders;
}
+ /**
+ * readCSVFile
+ *
+ * Read the entire csv file. First line is used for headers of the returned
+ * array.
+ *
+ * @param mixed $fileName
+ * @access public
+ * @return void
+ */
public function readCSVFile( $fileName )
{
$fileData = array();
return ( $errorCount == 0 );
break;
case 'member':
+ $start = 1;
+ if ( isset( $_REQUEST['start'] ) ) {
+ $start = filter_var( $_REQUEST['start'], FILTER_VALIDATE_INT );
+ }
$memberData = $this->readCSVFile( $fileName );
$ret .= '<p>Processing Member File</p>';
// Get default member type
);
$memberTypeId = $this->mpdb->insert_id;
}
- $dupeNames = 0;
- foreach ( $memberData as $data ) {
+ $dupeNames = 0;
+ $this->totalMembers = count( $memberData );
+
+ // Find out how many are left to process.
+ $testEnd = $start + $this->memberProcessCountPerRound;
+ $ending = ( $testEnd <= $this->totalMembers ) ? $testEnd : $this->totalMembers;
+
+ // We have to add one to $ending (array starts at 1 not 0).
+ $ending++;
+ for ( $index = $start; $index < $ending; $index++ ) {
+ $data = $memberData[$index];
// Check for duplicate member
$memberId = $this->wpdb->get_var(
$this->wpdb->prepare(
'region' => ((isset($data['region']) && isset($this->regions[$data['region']]['new_id'])) ? $this->regions[$data['region']]['new_id']: 0),
'county' => ((isset($data['county']) && isset($this->counties[$data['county']]['new_id'])) ? $this->counties[$data['county']]['new_id']: 0),
'zip' => $data['zip'],
-
'mailing_addr1' => $data['mailing_addr1'],
'mailing_addr2' => $data['mailing_addr2'],
'mailing_city' => ((isset($data['mailing_city']) && isset($this->cities[$data['mailing_city']]['new_id'])) ? $this->cities[$data['mailing_city']]['new_id']: 0),
'mailing_state' => $data['mailing_state'],
'mailing_zip' => $data['mailing_zip'],
-
'lat' => $data['lat'],
'lon' => $data['lon'],
'phone' => $data['phone'],
}
}
}
+ // Add this record to the processed counter.
+ $this->numberProcessed++;
}
//$ret .= '<pre>$this->members: ' . print_r( $this->members, true ) . '</pre>';
$ret .= '<p>...</p>';