diff --git a/ChangeLog b/ChangeLog index 2c39a56fb..8cbd32570 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ phpMyAdmin - ChangeLog 3.4.10.0 (not yet released) - bug #3460090 [interface] TextareaAutoSelect feature broken - patch #3375984 [export] PHP Array export might generate invalid php code +- bug #3049209 [import] Import from ODS ignores cell that is the same as cell before 3.4.9.0 (2011-12-21) - bug #3442028 [edit] Inline editing enum fields with null shows no dropdown diff --git a/libraries/import/ods.php b/libraries/import/ods.php index cd48f68d5..03736e2f2 100644 --- a/libraries/import/ods.php +++ b/libraries/import/ods.php @@ -118,25 +118,31 @@ foreach ($sheets as $sheet) { $cell_attrs = $cell->attributes('office', true); if (count($text) != 0) { - if (! $col_names_in_first_row) { - if ($_REQUEST['ods_recognize_percentages'] && !strcmp('percentage', $cell_attrs['value-type'])) { - $tempRow[] = (double)$cell_attrs['value']; - } elseif ($_REQUEST['ods_recognize_currency'] && !strcmp('currency', $cell_attrs['value-type'])) { - $tempRow[] = (double)$cell_attrs['value']; - } else { - $tempRow[] = (string)$text; - } - } else { - if ($_REQUEST['ods_recognize_percentages'] && !strcmp('percentage', $cell_attrs['value-type'])) { - $col_names[] = (double)$cell_attrs['value']; - } else if ($_REQUEST['ods_recognize_currency'] && !strcmp('currency', $cell_attrs['value-type'])) { - $col_names[] = (double)$cell_attrs['value']; - } else { - $col_names[] = (string)$text; - } - } + $attr = $cell->attributes('table', true); + $num_repeat = (int) $attr['number-columns-repeated']; + $num_iterations = $num_repeat ? $num_repeat : 1; - ++$col_count; + for ($k = 0; $k < $num_iterations; $k++) { + if (! $col_names_in_first_row) { + if ($_REQUEST['ods_recognize_percentages'] && !strcmp('percentage', $cell_attrs['value-type'])) { + $tempRow[] = (double)$cell_attrs['value']; + } elseif ($_REQUEST['ods_recognize_currency'] && !strcmp('currency', $cell_attrs['value-type'])) { + $tempRow[] = (double)$cell_attrs['value']; + } else { + $tempRow[] = (string)$text; + } + } else { + if ($_REQUEST['ods_recognize_percentages'] && !strcmp('percentage', $cell_attrs['value-type'])) { + $col_names[] = (double)$cell_attrs['value']; + } else if ($_REQUEST['ods_recognize_currency'] && !strcmp('currency', $cell_attrs['value-type'])) { + $col_names[] = (double)$cell_attrs['value']; + } else { + $col_names[] = (string)$text; + } + } + + ++$col_count; + } } else { /* Number of blank columns repeated */ if ($col_count < count($row->children('table', true)) - 1) {