public function SpreadsheetIterator::current in Migrate Spreadsheet 2.0.x
Same name and namespace in other branches
- 8 src/SpreadsheetIterator.php \Drupal\migrate_spreadsheet\SpreadsheetIterator::current()
File
- src/
SpreadsheetIterator.php, line 86
Class
- SpreadsheetIterator
- Provides a spreadsheet iterator.
Namespace
Drupal\migrate_spreadsheetCode
public function current() : array {
$keys = $this
->getKeys();
$all_columns = $keys + $this
->getColumns();
if ($row_index_column = $this
->getRowIndexColumn()) {
// We set '@' here so that when it will be sorted, later, it will be the
// first in the list. Ascii of '@' is lower than ascii of 'A'.
$all_columns[$row_index_column] = '@';
}
elseif (empty($keys)) {
throw new \InvalidArgumentException("Row index should act as key but no name has been provided. Pass a string in \$config['row_index_column'] key when setting the configuration in SpreadsheetIterator::setConfiguration(\$config), to provide a name for this column.");
}
// Arrange columns in their spreadsheet native order.
asort($all_columns);
return array_map(function (string $col_letter) {
if ($col_letter === '@') {
return $this
->getAbsoluteRowIndex();
}
elseif ($cell = $this
->getWorksheet()
->getCell("{$col_letter}{$this->getAbsoluteRowIndex()}", FALSE)) {
return $cell
->getCalculatedValue();
}
// Fall back to NULL.
return NULL;
}, $all_columns);
}