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);