--- plugins/FeedsCSVParser.inc 2010-08-30 16:46:46.000000000 +1000 +++ plugins/FeedsCSVParser.inc 2010-08-31 10:49:02.000000000 +1000 @@ -18,14 +18,22 @@ class FeedsCSVParser extends FeedsParser $parser = new ParserCSV(); $delimiter = $source_config['delimiter'] == 'TAB' ? "\t" : $source_config['delimiter']; $parser->setDelimiter($delimiter); + $rows = $parser->parse($iterator); + $parser->setLineLimit(1); // 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)); + if ($source_config['headers']) { + $header = array_shift($rows); + foreach ($header as $i => $title) { + $header[$i] = trim(drupal_strtolower($title)); + } + } else { + $header = array(); + for ($i=0; $i < count(reset($rows)); $i++ ) { + $header[] = 'column' . $i ; + } } + $parser->setColumnNames($header); // Set line limit to 0 and start byte to last position and parse rest. @@ -51,6 +59,7 @@ class FeedsCSVParser extends FeedsParser public function sourceDefaults() { return array( 'delimiter' => $this->config['delimiter'], + 'headers' => $this->config['headers'], ); } @@ -89,6 +98,12 @@ class FeedsCSVParser extends FeedsParser ), '#default_value' => isset($source_config['delimiter']) ? $source_config['delimiter'] : ',', ); + $form['headers'] = array( + '#type' => 'checkbox', + '#title' => t('Headers'), + '#description' => t('The first row of the CSV file contains column headers. If this is unchecked, mapping sources must be named \'column0\', \'column1\', \'column2\' etc.'), + '#default_value' => isset($source_config['headers']) ? $source_config['headers'] : 1, + ); return $form; } @@ -96,7 +111,7 @@ class FeedsCSVParser extends FeedsParser * Define default configuration. */ public function configDefaults() { - return array('delimiter' => ','); + return array('delimiter' => ',','headers' => 1); } /** @@ -115,6 +130,12 @@ class FeedsCSVParser extends FeedsParser ), '#default_value' => $this->config['delimiter'], ); + $form['headers'] = array( + '#type' => 'checkbox', + '#title' => t('Headers'), + '#description' => t('The first row of the CSV file contains column headers. If this is unchecked, mapping sources must be named \'column0\', \'column1\', \'column2\' etc.'), + '#default_value' => $this->config['headers'] + ); return $form; } }