Index: branches/5.2.x/core/units/helpers/cat_dbitem_export_helper.php =================================================================== diff -u -N -r15246 -r16000 --- branches/5.2.x/core/units/helpers/cat_dbitem_export_helper.php (.../cat_dbitem_export_helper.php) (revision 15246) +++ branches/5.2.x/core/units/helpers/cat_dbitem_export_helper.php (.../cat_dbitem_export_helper.php) (revision 16000) @@ -1,6 +1,6 @@ CheckFolder(EXPORT_PATH); - if ($event->Special == 'export') { - $write_mode = ($this->exportOptions['start_from'] == 0) ? 'w' : 'a'; - $this->filePointer = fopen($this->getExportFilename(), $write_mode); + if ( $event->Special == 'export' ) { + $first_step = $this->exportOptions['start_from'] == 0; + $this->filePointer = fopen($this->getExportFilename(), $first_step ? 'w' : 'r+'); + + if ( !$first_step ) { + fseek($this->filePointer, 0, SEEK_END); + } } else { $this->filePointer = fopen($this->getImportFilename(), 'r'); - } - // skip UTF-8 BOM Modifier - $first_chars = fread($this->filePointer, 3); - if (bin2hex($first_chars) != 'efbbbf') { - fseek($this->filePointer, 0); + // skip UTF-8 BOM Modifier + $first_chars = fread($this->filePointer, 3); + if ( bin2hex($first_chars) != 'efbbbf' ) { + fseek($this->filePointer, 0); + } } } Index: branches/5.2.x/core/kernel/globals.php =================================================================== diff -u -N -r15856 -r16000 --- branches/5.2.x/core/kernel/globals.php (.../globals.php) (revision 15856) +++ branches/5.2.x/core/kernel/globals.php (.../globals.php) (revision 16000) @@ -1,6 +1,6 @@ $field_value) { - // replaces an enclosure with two enclosures - $data[$field_index] = str_replace($enclosure, $enclosure.$enclosure, $field_value); - } + $file = new SplFileObject('php://output', 'w'); - $line = $enclosure.implode($enclosure.$delimiter.$enclosure, $data).$enclosure.$recordSeparator; - $line = preg_replace('/'.preg_quote($enclosure, '/').'([0-9\.]+)'.preg_quote($enclosure, '/').'/', '$1', $line); + ob_start(); + $file->fputcsv($data, $delimiter, $enclosure); + $ret = ob_get_clean(); - return $line; + if ( $recordSeparator != "\n" ) { + return substr($ret, 0, -1) . $recordSeparator; + } + + return $ret; } /**