Index: user_import.module
===================================================================
--- user_import.module (revision 3045)
+++ user_import.module (working copy)
@@ -280,6 +280,21 @@
);
}
+
+ $form['file_settings'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('File Settings'),
+ '#collapsible' => TRUE,
+ '#description' => t("File column delimiter"),
+ );
+
+ $form['file_settings']['delimiter'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Delimiter'),
+ '#size' => 4,
+ '#default_value' => ',',
+ '#description' => t('The column delimiter for the file. Use t for tab. '),
+ );
$form['next'] = array(
'#type' => 'submit',
@@ -945,9 +960,13 @@
}
// get first row of file
-function _user_import_file_row($filename, $handle) {
+function _user_import_file_row($filename, $handle, $delim) {
+
+ // Handle folks who may list 'tab' as 't' or 'tab'
+ $delim = strtolower($delim) == 't' ? "\t" : $delim;
+ $delim = strtolower($delim) == 'tab' ? "\t" : $delim;
- $data_row = @fgetcsv ($handle, 1000000, ",");
+ $data_row = @fgetcsv ($handle, 1000000, $delim);
if (!$data_row) {
form_set_error('file', t("Could not get data, the file '%filename' is either empty or has incompatible line endings.", array('%filename' => $filename)), 'error');
}
@@ -987,6 +1006,11 @@
'#value' => $import['filepath'],
);
+ $form['delimiter'] = array(
+ '#type' => 'value',
+ '#value' => $import['delimiter'],
+ );
+
return;
}
@@ -994,7 +1018,7 @@
$collapsed = (empty($import['name'])) ? FALSE: TRUE;
$handle = _user_import_file_open($form['filepath']['#value'], $form['filename']['#value']);
- $data_row = _user_import_file_row($form['filename']['#value'], $handle);
+ $data_row = _user_import_file_row($form['filename']['#value'], $handle, $import['delimiter']);
$fieldmatch_description = t("Match columns in CSV file to profile fields, leave as '----' if there is no match.");
$fieldmatch_description .= '
' . t('Username') . ': ' . t("The Username will be built from CSV columns in the order selected.");
@@ -1211,18 +1235,18 @@
if ($settings['import_id']) {
db_query("UPDATE {user_import}
- SET name = '%s', filename = '%s', oldfilename = '%s', filepath = '%s', pointer = %d, processed = %d, valid= %d, first_line_skip = %d, contact = %d, username_space = %d, send_email = %d, field_match = '%s', roles = '%s', options = '%s', setting = '%s'
+ SET name = '%s', filename = '%s', oldfilename = '%s', filepath = '%s', delimiter = '%s', pointer = %d, processed = %d, valid= %d, first_line_skip = %d, contact = %d, username_space = %d, send_email = %d, field_match = '%s', roles = '%s', options = '%s', setting = '%s'
WHERE import_id = %d
- ", trim($settings['name']), $settings['filename'], $settings['oldfilename'], $settings['filepath'], $settings['pointer'], $settings['processed'], $settings['valid'], $settings['first_line_skip'], $settings['contact'], $settings['username_space'], $settings['send_email'], serialize($settings['field_match']), serialize($settings['roles']), serialize($settings['options']), $settings['setting'], $settings['import_id']);
+ ", trim($settings['name']), $settings['filename'], $settings['oldfilename'], $settings['filepath'], $settings['delimiter'], $settings['pointer'], $settings['processed'], $settings['valid'], $settings['first_line_skip'], $settings['contact'], $settings['username_space'], $settings['send_email'], serialize($settings['field_match']), serialize($settings['roles']), serialize($settings['options']), $settings['setting'], $settings['import_id']);
// Save settings for new import
}
else {
db_query("INSERT INTO {user_import}
- (name, filename, oldfilename, filepath, started, pointer, processed, valid, first_line_skip, contact, username_space, send_email, field_match, roles, options, setting)
- VALUES ('%s', '%s', '%s', '%s', %d, %d, %d, %d, %d, %d, %d, %d, '%s', '%s', '%s', '%s')
- ", trim($settings['name']), $settings['filename'], $settings['oldfilename'], $settings['filepath'], time(), $settings['pointer'], $settings['processed'], $settings['valid'], $settings['first_line_skip'], $settings['contact'], $settings['username_space'], $settings['send_email'], serialize($settings['field_match']), serialize($settings['roles']), serialize($settings['options']), $settings['setting']);
+ (name, filename, oldfilename, filepath, delimiter, started, pointer, processed, valid, first_line_skip, contact, username_space, send_email, field_match, roles, options, setting)
+ VALUES ('%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, %d, %d, %d, %d, '%s', '%s', '%s', '%s')
+ ", trim($settings['name']), $settings['filename'], $settings['oldfilename'], $settings['filepath'], $settings['delimiter'], time(), $settings['pointer'], $settings['processed'], $settings['valid'], $settings['first_line_skip'], $settings['contact'], $settings['username_space'], $settings['send_email'], serialize($settings['field_match']), serialize($settings['roles']), serialize($settings['options']), $settings['setting']);
switch ($GLOBALS['db_type']) {
case 'mysql':
@@ -1343,6 +1367,8 @@
function _user_import_process($settings) {
user_import_load_supported();
+ $delim = strtolower($settings['delimiter']) == 't' ? "\t" : $settings['delimiter'];
+ $delim = strtolower($settings['delimiter']) == 'tab' ? "\t" : $settings['delimiter'];
$line_max = variable_get('user_import_line_max', 1000);
$import_max = variable_get('user_import_max', 250);
$field_match = _user_import_unconcatenate_field_match($settings['field_match']);
@@ -1358,7 +1384,7 @@
// start count of imports on this cron run
$send_counter = 0;
- while ($data = fgetcsv($handle, $line_max, ',')) {
+ while ($data = fgetcsv($handle, $line_max, $delim)) {
$errors = user_import_errors(FALSE, TRUE);