function tablefield_import_csv in TableField 7.3
Same name and namespace in other branches
- 6 tablefield.module \tablefield_import_csv()
- 7 tablefield.module \tablefield_import_csv()
- 7.2 tablefield.module \tablefield_import_csv()
Helper function to import data from a CSV file.
Parameters
array $form: The form structure.
array $form_state: The current state of the form.
string $langcode: The language associated with the form items.
string $file_form_field_name: The key of the upload form element in the form array.
array $tablefield_parents: The parents of the tablefield element.
1 call to tablefield_import_csv()
- tablefield_field_widget_form in ./
tablefield.module - Implements hook_field_widget_form().
File
- ./
tablefield.module, line 1842 - Provides a set of fields that can be used to store tabular data with a node.
Code
function tablefield_import_csv($form, &$form_state, $langcode, $file_form_field_name, $tablefield_parents) {
// Extract the field and file name from the id of the clicked button.
$file = file_save_upload($file_form_field_name, array(
'file_validate_extensions' => array(
'csv',
),
));
if (is_object($file)) {
// Assure Mac/Linux EOL markers work with fgetcsv().
$auto_detect_line_endings = ini_get('auto_detect_line_endings');
ini_set('auto_detect_line_endings', TRUE);
if (($handle = fopen($file->uri, "r")) !== FALSE) {
tablefield_delete_table_values(drupal_array_get_nested_value($form_state['values'], $tablefield_parents));
tablefield_delete_table_values(drupal_array_get_nested_value($form_state['input'], $tablefield_parents));
// Checking the encoding of the CSV file to be UTF-8.
$encoding = 'UTF-8';
if (function_exists('mb_detect_encoding')) {
$file_contents = file_get_contents($file->uri);
$encodings_list = implode(',', variable_get('tablefield_detect_encodings', array(
'UTF-8',
'ISO-8859-1',
'WINDOWS-1251',
)));
$encoding = mb_detect_encoding($file_contents, $encodings_list);
}
// Populate CSV values.
$max_col_count = 0;
$row_count = 0;
$imported_tablefield = array();
while (($csv = fgetcsv($handle, 0, variable_get('tablefield_csv_separator', ','))) !== FALSE) {
$col_count = count($csv);
foreach ($csv as $col_id => $col) {
$imported_tablefield['row_' . $row_count]['col_' . $col_id] = tablefield_convert_encoding($col, $encoding);
}
$max_col_count = $col_count > $max_col_count ? $col_count : $max_col_count;
$row_count++;
}
fclose($handle);
ini_set('auto_detect_line_endings', $auto_detect_line_endings);
$imported_tablefield['rebuild'] = array(
'count_cols' => $max_col_count,
'count_rows' => $row_count,
);
drupal_array_set_nested_value($form_state['values'], $tablefield_parents, $imported_tablefield);
drupal_array_set_nested_value($form_state['input'], $tablefield_parents, $imported_tablefield);
drupal_set_message(t('Successfully imported @file', array(
'@file' => $file->filename,
)));
}
else {
drupal_set_message(t('There was a problem importing @file.', array(
'@file' => $file->filename,
)));
}
}
}