diff --git a/export.php b/export.php index 46271f88cd..f1210c669b 100644 --- a/export.php +++ b/export.php @@ -685,45 +685,16 @@ if (!defined('TESTSUITE')) { ); } - // Do the compression - // 1. as a zipped file - if ($compression == 'zip') { - if (@function_exists('gzcompress')) { - $zipfile = new ZipFile(); - $zipfile->addFile($dump_buffer, substr($filename, 0, -4)); - $dump_buffer = $zipfile->file(); - } - } elseif ($compression == 'bzip2') { - // 2. as a bzipped file - if (@function_exists('bzcompress')) { - $dump_buffer = bzcompress($dump_buffer); - } - } elseif ($compression == 'gzip' && PMA_gzencodeNeeded()) { - // 3. as a gzipped file - // without the optional parameter level because it bugs - $dump_buffer = gzencode($dump_buffer); + // Compression needed? + if ($compression) { + $dump_buffer = PMA_compressExport($dump_buffer, $compression); } /* If we saved on server, we have to close file now */ if ($save_on_server) { - $write_result = @fwrite($file_handle, $dump_buffer); - fclose($file_handle); - if (strlen($dump_buffer) > 0 - && (! $write_result || ($write_result != strlen($dump_buffer))) - ) { - $message = new PMA_Message( - __('Insufficient space to save the file %s.'), - PMA_Message::ERROR, - $save_filename - ); - } else { - $message = new PMA_Message( - __('Dump has been saved to file %s.'), - PMA_Message::SUCCESS, - $save_filename - ); - } - + $message = PMA_closeExportFile( + $file_handle, $dump_buffer, $save_filename + ); if ($export_type == 'server') { $active_page = 'server_export.php'; include_once 'server_export.php'; diff --git a/libraries/export.lib.php b/libraries/export.lib.php index cbd002e477..cb93ff176c 100644 --- a/libraries/export.lib.php +++ b/libraries/export.lib.php @@ -342,4 +342,59 @@ function PMA_openExportFile($filename, $quick_export) } return array($save_filename, $message, $file_handle); } + +/** + * Close the export file + * + * @param resource $file_handle the export file handle + * @param string $dump_buffer the current dump buffer + * @param string $save_filename the export filename + * + * @return object $message a message object (or empty string) + */ +function PMA_closeExportFile($file_handle, $dump_buffer, $save_filename) +{ + $message = ''; + $write_result = @fwrite($file_handle, $dump_buffer); + fclose($file_handle); + if (strlen($dump_buffer) > 0 + && (! $write_result || ($write_result != strlen($dump_buffer))) + ) { + $message = new PMA_Message( + __('Insufficient space to save the file %s.'), + PMA_Message::ERROR, + $save_filename + ); + } else { + $message = new PMA_Message( + __('Dump has been saved to file %s.'), + PMA_Message::SUCCESS, + $save_filename + ); + } + return $message; +} + +/** + * Compress the export buffer + * + * @param string $dump_buffer the current dump buffer + * @param string $compression the compression mode + * + * @return object $message a message object (or empty string) + */ +function PMA_compressExport($dump_buffer, $compression) +{ + if ($compression == 'zip' && @function_exists('gzcompress')) { + $zipfile = new ZipFile(); + $zipfile->addFile($dump_buffer, substr($filename, 0, -4)); + $dump_buffer = $zipfile->file(); + } elseif ($compression == 'bzip2' && @function_exists('bzcompress')) { + $dump_buffer = bzcompress($dump_buffer); + } elseif ($compression == 'gzip' && PMA_gzencodeNeeded()) { + // without the optional parameter level because it bugs + $dump_buffer = gzencode($dump_buffer); + } + return $dump_buffer; +} ?>