? 849986-4_clean_batching.patch ? 850652-1_column_names.patch ? libraries/simplepie.inc Index: plugins/FeedsCSVParser.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/feeds/plugins/FeedsCSVParser.inc,v retrieving revision 1.11 diff -u -p -r1.11 FeedsCSVParser.inc --- plugins/FeedsCSVParser.inc 6 Jul 2010 17:09:43 -0000 1.11 +++ plugins/FeedsCSVParser.inc 11 Jul 2010 01:28:53 -0000 @@ -11,35 +11,30 @@ class FeedsCSVParser extends FeedsParser */ public function parse(FeedsImportBatch $batch, FeedsSource $source) { - // Parse. + // Load and configure parser. feeds_include_library('ParserCSV.inc', 'ParserCSV'); $iterator = new ParserCSVIterator(realpath($batch->getFilePath())); $source_config = $source->getConfigFor($this); $parser = new ParserCSV(); $delimiter = $source_config['delimiter'] == 'TAB' ? "\t" : $source_config['delimiter']; $parser->setDelimiter($delimiter); - $parser->setSkipFirstLine(FALSE); - $rows = $parser->parse($iterator); - unset($parser); - // Apply titles in lower case. - // @todo Push this functionality into ParserCSV. + // Get first line and use it for column names, convert them to lower case. + $parser->setLineLimit(1); + $rows = $parser->parse($iterator); $header = array_shift($rows); foreach ($header as $i => $title) { - $header[$i] = trim(drupal_strtolower($title)); // Use lower case only. - } - $result_rows = array(); - foreach ($rows as $i => $row) { - $result_row = array(); - foreach ($row as $j => $col) { - $result_row[$header[$j]] = $col; - } - $result_rows[$i] = $result_row; + $header[$i] = trim(drupal_strtolower($title)); } - unset($rows); + $parser->setColumnNames($header); + + // Set line limit to 0 and start byte to last position and parse rest. + $parser->setLineLimit(0); + $parser->setStartByte($parser->lastLinePos()); + $rows = $parser->parse($iterator); // Populate batch. - $batch->setItems($result_rows); + $batch->setItems($rows); } /**