diff --git a/htdocs/sql/export.php b/htdocs/sql/export.php deleted file mode 100755 --- a/htdocs/sql/export.php +++ /dev/null @@ -1,684 +0,0 @@ - $export_type, 'single_table' => isset($single_table))); - -// Backward compatbility -$type = $what; - -// Check export type -if (!isset($export_list[$type])) { - die('Bad type!'); -} - -/** - * valid compression methods - */ -$compression_methods = array( - 'zip', - 'gzip', - 'bzip', -); - -/** - * init and variable checking - */ -$compression = false; -$onserver = false; -$save_on_server = false; -$buffer_needed = false; -if (empty($_REQUEST['asfile'])) { - $asfile = false; -} else { - $asfile = true; - if (in_array($_REQUEST['compression'], $compression_methods)) { - $compression = $_REQUEST['compression']; - $buffer_needed = true; - } - if (!empty($_REQUEST['onserver'])) { - $onserver = $_REQUEST['onserver']; - // Will we save dump on server? - $save_on_server = ! empty($cfg['SaveDir']) && $onserver; - } -} - -// Does export require to be into file? -if (isset($export_list[$type]['force_file']) && ! $asfile) { - $message = $strExportMustBeFile; - $GLOBALS['show_error_header'] = true; - $js_to_run = 'functions.js'; - require_once './libraries/header.inc.php'; - if ($export_type == 'server') { - $active_page = 'server_export.php'; - require './server_export.php'; - } elseif ($export_type == 'database') { - $active_page = 'db_export.php'; - require './db_export.php'; - } else { - $active_page = 'tbl_export.php'; - require './tbl_export.php'; - } - exit(); -} - -// Generate error url and check for needed variables -if ($export_type == 'server') { - $err_url = 'server_export.php?' . PMA_generate_common_url(); -} elseif ($export_type == 'database' && strlen($db)) { - $err_url = 'db_export.php?' . PMA_generate_common_url($db); - // Check if we have something to export - if (isset($table_select)) { - $tables = $table_select; - } else { - $tables = array(); - } -} elseif ($export_type == 'table' && strlen($db) && strlen($table)) { - $err_url = 'tbl_export.php?' . PMA_generate_common_url($db, $table); -} else { - die('Bad parameters!'); -} - -// Get the functions specific to the export type -require './libraries/export/' . PMA_securePath($type) . '.php'; - -/** - * Increase time limit for script execution and initializes some variables - */ -@set_time_limit($cfg['ExecTimeLimit']); -if (!empty($cfg['MemoryLimit'])) { - @ini_set('memory_limit', $cfg['MemoryLimit']); -} - -// Start with empty buffer -$dump_buffer = ''; -$dump_buffer_len = 0; - -// We send fake headers to avoid browser timeout when buffering -$time_start = time(); - - -/** - * Output handler for all exports, if needed buffering, it stores data into - * $dump_buffer, otherwise it prints thems out. - * - * @param string the insert statement - * - * @return bool Whether output suceeded - */ -function PMA_exportOutputHandler($line) -{ - global $time_start, $dump_buffer, $dump_buffer_len, $save_filename; - - // Kanji encoding convert feature - if ($GLOBALS['output_kanji_conversion']) { - $line = PMA_kanji_str_conv($line, $GLOBALS['knjenc'], isset($GLOBALS['xkana']) ? $GLOBALS['xkana'] : ''); - } - // If we have to buffer data, we will perform everything at once at the end - if ($GLOBALS['buffer_needed']) { - - $dump_buffer .= $line; - if ($GLOBALS['onfly_compression']) { - - $dump_buffer_len += strlen($line); - - if ($dump_buffer_len > $GLOBALS['memory_limit']) { - if ($GLOBALS['output_charset_conversion']) { - $dump_buffer = PMA_convert_string($GLOBALS['charset'], $GLOBALS['charset_of_file'], $dump_buffer); - } - // as bzipped - if ($GLOBALS['compression'] == 'bzip' && @function_exists('bzcompress')) { - $dump_buffer = bzcompress($dump_buffer); - } - // as a gzipped file - elseif ($GLOBALS['compression'] == 'gzip' && @function_exists('gzencode')) { - // without the optional parameter level because it bug - $dump_buffer = gzencode($dump_buffer); - } - if ($GLOBALS['save_on_server']) { - $write_result = @fwrite($GLOBALS['file_handle'], $dump_buffer); - if (!$write_result || ($write_result != strlen($dump_buffer))) { - $GLOBALS['message'] = sprintf($GLOBALS['strNoSpace'], htmlspecialchars($save_filename)); - $GLOBALS['show_error_header'] = true; - return false; - } - } else { - echo $dump_buffer; - } - $dump_buffer = ''; - $dump_buffer_len = 0; - } - } else { - $time_now = time(); - if ($time_start >= $time_now + 30) { - $time_start = $time_now; - header('X-pmaPing: Pong'); - } // end if - } - } else { - if ($GLOBALS['asfile']) { - if ($GLOBALS['output_charset_conversion']) { - $line = PMA_convert_string($GLOBALS['charset'], $GLOBALS['charset_of_file'], $line); - } - if ($GLOBALS['save_on_server'] && strlen($line) > 0) { - $write_result = @fwrite($GLOBALS['file_handle'], $line); - if (!$write_result || ($write_result != strlen($line))) { - $GLOBALS['message'] = sprintf($GLOBALS['strNoSpace'], htmlspecialchars($save_filename)); - $GLOBALS['show_error_header'] = true; - return false; - } - $time_now = time(); - if ($time_start >= $time_now + 30) { - $time_start = $time_now; - header('X-pmaPing: Pong'); - } // end if - } else { - // We export as file - output normally - echo $line; - } - } else { - // We export as html - replace special chars - echo htmlspecialchars($line); - } - } - return true; -} // end of the 'PMA_exportOutputHandler()' function - -// Defines the default format. For SQL always use \n as MySQL wants this on all platforms. -if ($what == 'sql') { - $crlf = "\n"; -} else { - $crlf = PMA_whichCrlf(); -} - -$output_kanji_conversion = function_exists('PMA_kanji_str_conv') && $type != 'xls'; - -// Do we need to convert charset? -$output_charset_conversion = $asfile && - $cfg['AllowAnywhereRecoding'] && $allow_recoding - && isset($charset_of_file) && $charset_of_file != $charset - && $type != 'xls'; - -// Use on fly compression? -$onfly_compression = $GLOBALS['cfg']['CompressOnFly'] && ($compression == 'gzip' | $compression == 'bzip'); -if ($onfly_compression) { - $memory_limit = trim(@ini_get('memory_limit')); - // 2 MB as default - if (empty($memory_limit)) { - $memory_limit = 2 * 1024 * 1024; - } - - if (strtolower(substr($memory_limit, -1)) == 'm') { - $memory_limit = (int)substr($memory_limit, 0, -1) * 1024 * 1024; - } elseif (strtolower(substr($memory_limit, -1)) == 'k') { - $memory_limit = (int)substr($memory_limit, 0, -1) * 1024; - } elseif (strtolower(substr($memory_limit, -1)) == 'g') { - $memory_limit = (int)substr($memory_limit, 0, -1) * 1024 * 1024 * 1024; - } else { - $memory_limit = (int)$memory_limit; - } - - // Some of memory is needed for other thins and as treshold. - // Nijel: During export I had allocated (see memory_get_usage function) - // approx 1.2MB so this comes from that. - if ($memory_limit > 1500000) { - $memory_limit -= 1500000; - } - - // Some memory is needed for compression, assume 1/3 - $memory_limit /= 8; -} - -// Generate filename and mime type if needed -if ($asfile) { - $pma_uri_parts = parse_url($cfg['PmaAbsoluteUri']); - if ($export_type == 'server') { - if (isset($remember_template)) { - PMA_setCookie('pma_server_filename_template', $filename_template); - } - $filename = str_replace('__SERVER__', $GLOBALS['cfg']['Server']['host'], strftime($filename_template)); - } elseif ($export_type == 'database') { - if (isset($remember_template)) { - PMA_setCookie('pma_db_filename_template', $filename_template); - } - $filename = str_replace('__DB__', $db, str_replace('__SERVER__', $GLOBALS['cfg']['Server']['host'], strftime($filename_template))); - } else { - if (isset($remember_template)) { - PMA_setCookie('pma_table_filename_template', $filename_template); - } - $filename = str_replace('__TABLE__', $table, str_replace('__DB__', $db, str_replace('__SERVER__', $GLOBALS['cfg']['Server']['host'], strftime($filename_template)))); - } - - // convert filename to iso-8859-1, it is safer - if (!(isset($cfg['AllowAnywhereRecoding']) && $cfg['AllowAnywhereRecoding'] && $allow_recoding)) { - $filename = PMA_convert_string($charset, 'iso-8859-1', $filename); - } else { - $filename = PMA_convert_string($convcharset, 'iso-8859-1', $filename); - } - - // Grab basic dump extension and mime type - $filename .= '.' . $export_list[$type]['extension']; - $mime_type = $export_list[$type]['mime_type']; - - // If dump is going to be compressed, set correct encoding or mime_type and add - // compression to extension - $content_encoding = ''; - if ($compression == 'bzip') { - $filename .= '.bz2'; - // browsers don't like this: - //$content_encoding = 'x-bzip2'; - $mime_type = 'application/x-bzip2'; - } elseif ($compression == 'gzip') { - $filename .= '.gz'; - // Needed to avoid recompression by server modules like mod_gzip. - // It seems necessary to check about zlib.output_compression - // to avoid compressing twice - if (!@ini_get('zlib.output_compression')) { - // On Firefox 3, sending this content encoding corrupts the .gz - // (as tested on Windows and Linux) but detect GECKO 1.9 - if (! (PMA_USR_BROWSER_AGENT == 'GECKO' && PMA_USR_BROWSER_VER == '1.9')) { - $content_encoding = 'x-gzip'; - } - $mime_type = 'application/x-gzip'; - } - } elseif ($compression == 'zip') { - $filename .= '.zip'; - $mime_type = 'application/zip'; - } -} - -// Open file on server if needed -if ($save_on_server) { - $save_filename = PMA_userDir($cfg['SaveDir']) . preg_replace('@[/\\\\]@', '_', $filename); - unset($message); - if (file_exists($save_filename) && empty($onserverover)) { - $message = sprintf($strFileAlreadyExists, htmlspecialchars($save_filename)); - $GLOBALS['show_error_header'] = true; - } else { - if (is_file($save_filename) && !is_writable($save_filename)) { - $message = sprintf($strNoPermission, htmlspecialchars($save_filename)); - $GLOBALS['show_error_header'] = true; - } else { - if (!$file_handle = @fopen($save_filename, 'w')) { - $message = sprintf($strNoPermission, htmlspecialchars($save_filename)); - $GLOBALS['show_error_header'] = true; - } - } - } - if (isset($message)) { - $js_to_run = 'functions.js'; - require_once './libraries/header.inc.php'; - if ($export_type == 'server') { - $active_page = 'server_export.php'; - require './server_export.php'; - } elseif ($export_type == 'database') { - $active_page = 'db_export.php'; - require './db_export.php'; - } else { - $active_page = 'tbl_export.php'; - require './tbl_export.php'; - } - exit(); - } -} - -/** - * Send headers depending on whether the user chose to download a dump file - * or not - */ -if (!$save_on_server) { - if ($asfile) { - // Download - // (avoid rewriting data containing HTML with anchors and forms; - // this was reported to happen under Plesk) - @ini_set('url_rewriter.tags',''); - - if (!empty($content_encoding)) { - header('Content-Encoding: ' . $content_encoding); - } - header('Content-Type: ' . $mime_type); - header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); - // lem9: Tested behavior of - // IE 5.50.4807.2300 - // IE 6.0.2800.1106 (small glitch, asks twice when I click Open) - // IE 6.0.2900.2180 - // Firefox 1.0.6 - // in http and https - header('Content-Disposition: attachment; filename="' . $filename . '"'); - if (PMA_USR_BROWSER_AGENT == 'IE') { - header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); - header('Pragma: public'); - } else { - header('Pragma: no-cache'); - // test case: exporting a database into a .gz file with Safari - // would produce files not having the current time - if ('SAFARI' == PMA_USR_BROWSER_AGENT) { - header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); - } - } - } else { - // HTML - if ($export_type == 'database') { - $num_tables = count($tables); - if ($num_tables == 0) { - $message = $strNoTablesFound; - $js_to_run = 'functions.js'; - require_once './libraries/header.inc.php'; - $active_page = 'db_export.php'; - require './db_export.php'; - exit(); - } - } - $backup_cfgServer = $cfg['Server']; - require_once './libraries/header.inc.php'; - $cfg['Server'] = $backup_cfgServer; - unset($backup_cfgServer); - echo "\n" . '
' . "\n"; - //echo '
' . "\n";
-        echo '    
' . "\n" - // remove auto-select for now: there is no way to select - // only a part of the text; anyway, it should obey - // $cfg['TextareaAutoSelect'] - //. ' ' . "\n" - . '
' . "\n"; - echo '
' . "\n"; - echo "\n"; -?> - -