diff options
Diffstat (limited to 'hugo/libraries/display_import.lib.php')
| -rw-r--r-- | hugo/libraries/display_import.lib.php | 338 |
1 files changed, 338 insertions, 0 deletions
diff --git a/hugo/libraries/display_import.lib.php b/hugo/libraries/display_import.lib.php new file mode 100644 index 0000000..79149d1 --- /dev/null +++ b/hugo/libraries/display_import.lib.php @@ -0,0 +1,338 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * + * @package PhpMyAdmin + */ +if (! defined('PHPMYADMIN')) { + exit; +} + +/** + * + */ +require_once './libraries/file_listing.lib.php'; +require_once './libraries/plugin_interface.lib.php'; +require_once './libraries/display_import_ajax.lib.php'; + +/* Scan for plugins */ +$import_list = PMA_getPlugins( + "import", + 'libraries/plugins/import/', + $import_type +); + +/* Fail if we didn't find any plugin */ +if (empty($import_list)) { + PMA_Message::error( + __( + 'Could not load import plugins, please check your installation!' + ) + )->display(); + exit; +} +?> + +<iframe id="import_upload_iframe" name="import_upload_iframe" width="1" height="1" style="display: none;"></iframe> +<div id="import_form_status" style="display: none;"></div> +<div id="importmain"> + <img src="<?php echo $GLOBALS['pmaThemeImage'];?>ajax_clock_small.gif" width="16" height="16" alt="ajax clock" style="display: none;" /> + <script type="text/javascript"> + //<![CDATA[ + $( function() { + // add event when user click on "Go" button + $('#buttonGo').bind('click', function() { + $('#upload_form_form').css("display", "none"); // hide form + $('#upload_form_status').css("display", "inline"); // show progress bar + $('#upload_form_status_info').css("display", "inline"); // - || - +<?php +if ($_SESSION[$SESSION_KEY]["handler"] != "UploadNoplugin") { + ?> + var finished = false; + var percent = 0.0; + var total = 0; + var complete = 0; + var original_title = parent && parent.document ? parent.document.title : false; + var import_start; + + var perform_upload = function () { + new $.getJSON( + 'import_status.php?id=<?php echo $upload_id ; ?>&<?php echo PMA_generate_common_url(array('import_status'=>1), '&'); ?>', + {}, + function(response) { + finished = response.finished; + percent = response.percent; + total = response.total; + complete = response.complete; + + if (total==0 && complete==0 && percent==0) { + $('#upload_form_status_info').html('<img src="<?php echo $GLOBALS['pmaThemeImage'];?>ajax_clock_small.gif" width="16" height="16" alt="ajax clock" /> <?php echo PMA_jsFormat(__('The file being uploaded is probably larger than the maximum allowed size or this is a known bug in webkit based (Safari, Google Chrome, Arora etc.) browsers.'), false); ?>'); + $('#upload_form_status').css("display", "none"); + } else { + var now = new Date(); + now = Date.UTC( + now.getFullYear(), now.getMonth(), now.getDate(), + now.getHours(), now.getMinutes(), now.getSeconds()) + + now.getMilliseconds() - 1000; + var statustext = $.sprintf('<?php echo PMA_escapeJsString(__('%s of %s')); ?>', + formatBytes(complete, 1, PMA_messages.strDecimalSeparator), + formatBytes(total, 1, PMA_messages.strDecimalSeparator) + ); + + if ($('#importmain').is(':visible')) { + // show progress UI + $('#importmain').hide(); + $('#import_form_status') + .html('<div class="upload_progress"><div class="upload_progress_bar_outer"><div class="percentage"></div><div id="status" class="upload_progress_bar_inner"><div class="percentage"></div></div></div><div><img src="<?php echo $GLOBALS['pmaThemeImage'];?>ajax_clock_small.gif" width="16" height="16" alt="ajax clock" /> <?php echo PMA_jsFormat(__('Uploading your import fileā¦'), false); ?></div><div id="statustext"></div></div>') + .show(); + import_start = now; + } + else if (percent > 9 || complete > 2000000) { + // calculate estimated time + var used_time = now - import_start; + var seconds = parseInt(((total - complete) / complete) * used_time / 1000); + var speed = $.sprintf('<?php echo PMA_jsFormat(__('%s/sec.'), false); ?>' + , formatBytes(complete / used_time * 1000, 1, PMA_messages.strDecimalSeparator)); + + var minutes = parseInt(seconds / 60); + seconds %= 60; + var estimated_time; + if (minutes > 0) { + estimated_time = '<?php echo PMA_jsFormat(__('About %MIN min. %SEC sec. remaining.'), false); ?>' + .replace('%MIN', minutes).replace('%SEC', seconds); + } + else { + estimated_time = '<?php echo PMA_jsFormat(__('About %SEC sec. remaining.'), false); ?>' + .replace('%SEC', seconds); + } + + statustext += '<br />' + speed + '<br /><br />' + estimated_time; + } + + var percent_str = Math.round(percent) + '%'; + $('#status').animate({width: percent_str}, 150); + $('.percentage').text(percent_str); + + // show percent in window title + if (original_title !== false) { + parent.document.title = percent_str + ' - ' + original_title; + } + else { + document.title = percent_str + ' - ' + original_title; + } + $('#statustext').html(statustext); + } // else + + if (finished == true) { + if (original_title !== false) { + parent.document.title = original_title; + } + else { + document.title = original_title; + } + $('#importmain').hide(); + $('#import_form_status') + .html('<img src="<?php echo $GLOBALS['pmaThemeImage'];?>ajax_clock_small.gif" width="16" height="16" alt="ajax clock" /> <?php echo PMA_jsFormat(__('The file is being processed, please be patient.'), false); ?> ') + .show(); + $('#import_form_status').load('import_status.php?message=true&<?php echo PMA_generate_common_url(array('import_status'=>1), '&'); ?>'); // loads the message, either success or mysql error + <?php + // reload the left sidebar when the import is finished + $GLOBALS['reload'] = true; + ?> + + } // if finished + else { + setTimeout(perform_upload, 1000); + } + }); + }; + setTimeout(perform_upload, 1000); + + <?php +} else { // no plugin available + ?> + $('#upload_form_status_info').html('<img src="<?php echo $GLOBALS['pmaThemeImage'];?>ajax_clock_small.gif" width="16" height="16" alt="ajax clock" /> <?php echo PMA_jsFormat(__('Please be patient, the file is being uploaded. Details about the upload are not available.'), false) . PMA_Util::showDocu('faq', 'faq2-9'); ?>'); + $('#upload_form_status').css("display", "none"); + <?php +} // else +?> + }); // onclick + }); // domready + //]]> + </script> + <form action="import.php" method="post" enctype="multipart/form-data" + name="import"<?php +if ($_SESSION[$SESSION_KEY]["handler"] != "UploadNoplugin") { + echo ' target="import_upload_iframe"'; +} +echo ' class="ajax"'; +?>> + <input type="hidden" name="<?php + echo call_user_func($_SESSION[$SESSION_KEY]['handler'] . '::getIdKey'); + ?>" value="<?php echo $upload_id ; ?>" /> + + <?php +if ($import_type == 'server') { + echo PMA_generate_common_hidden_inputs('', '', 1); +} elseif ($import_type == 'database') { + echo PMA_generate_common_hidden_inputs($db, '', 1); +} else { + echo PMA_generate_common_hidden_inputs($db, $table, 1); +} +echo ' <input type="hidden" name="import_type" value="' . $import_type . '" />'."\n"; + ?> + + <div class="exportoptions" id="header"> + <h2> + <?php echo PMA_Util::getImage('b_import.png', __('Import')); ?> + <?php +if ($import_type == 'server') { + echo __('Importing into the current server'); +} elseif ($import_type == 'database') { + printf(__('Importing into the database "%s"'), htmlspecialchars($db)); +} else { + printf(__('Importing into the table "%s"'), htmlspecialchars($table)); +}?> + </h2> + </div> + + <div class="importoptions"> + <h3><?php echo __('File to Import:'); ?></h3> + <?php +// zip, gzip and bzip2 encode features +$compressions = array(); + +if ($cfg['GZipDump'] && @function_exists('gzopen')) { + $compressions[] = 'gzip'; +} +if ($cfg['BZipDump'] && @function_exists('bzopen')) { + $compressions[] = 'bzip2'; +} +if ($cfg['ZipDump'] && @function_exists('zip_open')) { + $compressions[] = 'zip'; +} +// We don't have show anything about compression, when no supported +if ($compressions != array()) { + echo '<div class="formelementrow" id="compression_info">'; + printf(__('File may be compressed (%s) or uncompressed.'), implode(", ", $compressions)); + echo '<br />'; + echo __('A compressed file\'s name must end in <b>.[format].[compression]</b>. Example: <b>.sql.zip</b>'); + echo '</div>'; +}?> + + <div class="formelementrow" id="upload_form"> + <?php +if ($GLOBALS['is_upload'] && !empty($cfg['UploadDir'])) { ?> + <ul> + <li> + <input type="radio" name="file_location" id="radio_import_file" /> + <?php + echo PMA_Util::getBrowseUploadFileBlock($max_upload_size); + ?> + </li> + <li> + <input type="radio" name="file_location" id="radio_local_import_file" /> + <?php + echo PMA_Util::getSelectUploadFileBlock($import_list, $cfg['UploadDir']); + ?> + </li> + </ul> + <?php +} elseif ($GLOBALS['is_upload']) { + $uid = uniqid(''); + echo PMA_Util::getBrowseUploadFileBlock($max_upload_size); +} elseif (!$GLOBALS['is_upload']) { + PMA_Message::notice(__('File uploads are not allowed on this server.'))->display(); +} elseif (!empty($cfg['UploadDir'])) { + echo PMA_Util::getSelectUploadFileBlock($import_list, $cfg['UploadDir']); +} // end if (web-server upload directory) +?> + </div> + + <div class="formelementrow" id="charaset_of_file"> + <?php // charset of file +if ($GLOBALS['PMA_recoding_engine'] != PMA_CHARSET_NONE) { + echo '<label for="charset_of_file">' . __('Character set of the file:') . '</label>'; + reset($cfg['AvailableCharsets']); + echo '<select id="charset_of_file" name="charset_of_file" size="1">'; + foreach ($cfg['AvailableCharsets'] as $temp_charset) { + echo '<option value="' . htmlentities($temp_charset) . '"'; + if ((empty($cfg['Import']['charset']) && $temp_charset == 'utf-8') + || $temp_charset == $cfg['Import']['charset'] + ) { + echo ' selected="selected"'; + } + echo '>' . htmlentities($temp_charset) . '</option>'; + } + echo ' </select><br />'; +} else { + echo '<label for="charset_of_file">' . __('Character set of the file:') . '</label>' . "\n"; + echo PMA_generateCharsetDropdownBox(PMA_CSDROPDOWN_CHARSET, 'charset_of_file', 'charset_of_file', 'utf8', false); +} // end if (recoding) + ?> + </div> + </div> + <div class="importoptions"> + <h3><?php echo __('Partial Import:'); ?></h3> + + <?php +if (isset($timeout_passed) && $timeout_passed) { + echo '<div class="formelementrow">' . "\n"; + echo '<input type="hidden" name="skip" value="' . $offset . '" />'; + echo sprintf(__('Previous import timed out, after resubmitting will continue from position %d.'), $offset) . ''; + echo '</div>' . "\n"; +} + ?> + <div class="formelementrow"> + <input type="checkbox" name="allow_interrupt" value="yes" + id="checkbox_allow_interrupt" <?php echo PMA_pluginCheckboxCheck('Import', 'allow_interrupt'); ?>/> + <label for="checkbox_allow_interrupt"><?php echo __('Allow the interruption of an import in case the script detects it is close to the PHP timeout limit. <i>(This might be a good way to import large files, however it can break transactions.)</i>'); ?></label><br /> + </div> + + <?php +if (! (isset($timeout_passed) && $timeout_passed)) { + ?> + <div class="formelementrow"> + <label for="text_skip_queries"><?php echo __('Number of rows to skip, starting from the first row:'); ?></label> + <input type="text" name="skip_queries" value="<?php echo PMA_pluginGetDefault('Import', 'skip_queries');?>" id="text_skip_queries" /> + </div> + <?php +} else { + // If timeout has passed, + // do not show the Skip dialog to avoid the risk of someone + // entering a value here that would interfere with "skip" + ?> + <input type="hidden" name="skip_queries" value="<?php echo PMA_pluginGetDefault('Import', 'skip_queries');?>" id="text_skip_queries" /> + <?php +} + ?> + </div> + + <div class="importoptions"> + <h3><?php echo __('Format:'); ?></h3> + <?php echo PMA_pluginGetChoice('Import', 'format', $import_list); ?> + <div id="import_notification"></div> + </div> + + <div class="importoptions" id="format_specific_opts"> + <h3><?php echo __('Format-Specific Options:'); ?></h3> + <p class="no_js_msg" id="scroll_to_options_msg">Scroll down to fill in the options for the selected format and ignore the options for other formats.</p> + <?php echo PMA_pluginGetOptions('Import', $import_list); ?> + </div> + <div class="clearfloat"></div> + <?php +// Encoding setting form appended by Y.Kawada +if (function_exists('PMA_set_enc_form')) { ?> + <div class="importoptions" id="kanji_encoding"> + <h3><?php echo __('Encoding Conversion:'); ?></h3> + <?php echo PMA_set_enc_form(' '); ?> + </div> + <?php +} +echo "\n"; + ?> + <div class="importoptions" id="submit"> + <input type="submit" value="<?php echo __('Go'); ?>" id="buttonGo" /> + </div> +</form> +</div> |
