diff --git a/CHANGELOG.md b/CHANGELOG.md index e6a5e42..8e97650 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## v1.4.1 - 2023-11-09 + +### Added + +- Support empty columns in CSV conversion. + ## v1.4.0 - 2023-11-07 ### Added diff --git a/Classes/Converter/Csv.php b/Classes/Converter/Csv.php index 7ef1cbe..4b248b2 100644 --- a/Classes/Converter/Csv.php +++ b/Classes/Converter/Csv.php @@ -71,7 +71,7 @@ class Csv implements Converter break; } - if (is_array($line) && count($line) === 1 && is_string($line[0])) { + if (is_array($line) && count(array_filter($line)) === 1 && is_string($line[0])) { // Line is a new table, introducing also new columns o next row $tableName = $line[0]; $columns = []; @@ -79,12 +79,12 @@ class Csv implements Converter } if ($columns === [] && is_array($line)) { - $columns = array_slice($line, 1); + $columns = array_filter($line); continue; } if (is_array($line)) { - $values = array_slice($line, 1); + $values = array_slice($line, 1, count($columns)); $phpArray[$tableName][] = array_combine($columns, $values); } } diff --git a/Tests/Functional/Converter/CsvTest.php b/Tests/Functional/Converter/CsvTest.php index 68fbe97..38d74e4 100644 --- a/Tests/Functional/Converter/CsvTest.php +++ b/Tests/Functional/Converter/CsvTest.php @@ -99,6 +99,10 @@ class CsvTest extends TestCase 'incomingCsvFile' => __DIR__ . '/Fixtures/Csv/RecordsInDifferentTablesIncoming.csv', 'expectedResultFile' => __DIR__ . '/Fixtures/Csv/RecordsInDifferentTablesAssert.php', ], + 'Extra columns' => [ + 'incomingCsvFile' => __DIR__ . '/Fixtures/Csv/ExtraColumnsIncoming.csv', + 'expectedResultFile' => __DIR__ . '/Fixtures/Csv/ExtraColumnsAssert.php', + ], ]; } } diff --git a/Tests/Functional/Converter/Fixtures/Csv/ExtraColumnsAssert.php b/Tests/Functional/Converter/Fixtures/Csv/ExtraColumnsAssert.php new file mode 100644 index 0000000..78d597e --- /dev/null +++ b/Tests/Functional/Converter/Fixtures/Csv/ExtraColumnsAssert.php @@ -0,0 +1,14 @@ + + array ( + 0 => + array ( + 'uid' => '1', + 'pid' => '0', + 'title' => 'Page with uid 1 below 0', + 'deleted' => '0', + ), + ), +); diff --git a/Tests/Functional/Converter/Fixtures/Csv/ExtraColumnsIncoming.csv b/Tests/Functional/Converter/Fixtures/Csv/ExtraColumnsIncoming.csv new file mode 100644 index 0000000..7ef2d19 --- /dev/null +++ b/Tests/Functional/Converter/Fixtures/Csv/ExtraColumnsIncoming.csv @@ -0,0 +1,3 @@ +pages,,,,,,,, +,uid,pid,title,deleted,,,, +,1,0,Page with uid 1 below 0,0,,,,