Merge branch 'QA_3_3'
[phpmyadmin/dkf.git] / libraries / display_import.lib.php
blob343248a58d1f384ca6624e3caa85e13e3d684165
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
5 * @version $Id$
6 * @package phpMyAdmin
7 */
8 if (! defined('PHPMYADMIN')) {
9 exit;
12 /**
15 require_once './libraries/file_listing.php';
16 require_once './libraries/plugin_interface.lib.php';
17 require_once './libraries/display_import_ajax.lib.php';
19 /* Scan for plugins */
20 $import_list = PMA_getPlugins('./libraries/import/', $import_type);
22 /* Fail if we didn't find any plugin */
23 if (empty($import_list)) {
24 PMA_Message::error('strCanNotLoadImportPlugins')->display();
25 require './libraries/footer.inc.php';
29 <iframe id="import_upload_iframe" name="import_upload_iframe" width="1" height="1" style="display: none"></iframe>
30 <div id="import_form_status" style="display: none;"></div>
31 <div id="importmain">
32 <img src="<?php echo $GLOBALS['pmaThemeImage'];?>ajax_clock_small.gif" alt="ajax clock" style="display: none;" />
33 <script type="text/javascript">
34 //<![CDATA[
35 $(document).ready( function() {
36 // add event when user click on "Go" button
37 $('#buttonGo').bind('click', function() {
38 $('#upload_form_form').css("display", "none"); // hide form
39 $('#upload_form_status').css("display", "inline"); // show progress bar
40 $('#upload_form_status_info').css("display", "inline"); // - || -
41 <?php
42 if ($_SESSION[$SESSION_KEY]["handler"]!="noplugin") {
44 $('#upload_form_status').html('<div class="upload_progress_bar_outer"><div id="status" class="upload_progress_bar_inner"></div></div>'); // add the progress bar
46 var finished = false;
47 var percent = 0.0;
48 var total = 0;
49 var complete = 0;
51 var perform_upload;
52 var periodical_upload;
54 var request_upload = [];
56 perform_upload = function () {
57 new $.getJSON(
58 'import_status.php?id=<?php echo $upload_id ; ?>&<?php echo PMA_generate_common_url(); ?>',
59 {},
60 function(response) {
61 finished = response.finished;
62 percent = response.percent;
63 total = response.total;
64 complete = response.complete;
66 if (total==0 && complete==0 && percent==0) {
67 $('#upload_form_status_info').html('<img src="<?php echo $GLOBALS['pmaThemeImage'];?>ajax_clock_small.gif" 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.')); ?>');
68 $('#upload_form_status').css("display", "none");
69 } else {
70 $('#upload_form_status_info').html(' '+Math.round(percent)+'%, '+complete+'/'+total);
71 $('#status').animate({width: Math.round(percent)*2+'px'},150);
72 } // else
74 if (finished==true) {
75 $('#importmain').css('display', 'none');
76 $('#import_form_status').css('display', 'inline');
77 $('#import_form_status').html('<img src="<?php echo $GLOBALS['pmaThemeImage'];?>ajax_clock_small.gif" alt="ajax clock" /> <?php echo __('The file is being processed, please be patient.'); ?> ');
78 $('#import_form_status').load('import_status.php?message=true&<?php echo PMA_generate_common_url(); ?>'); // loads the message, either success or mysql error
79 <?php
80 // reload the left sidebar when the import is finished
81 $GLOBALS['reload']=true;
82 PMA_reloadNavigation(true);
85 } // if finished
86 else {
87 window.setTimeout(perform_upload, 1000);
94 window.setTimeout(perform_upload, 1000);
96 <?php
97 } else { // no plugin avaliable
99 $('#upload_form_status_info').html('<img src="<?php echo $GLOBALS['pmaThemeImage'];?>ajax_clock_small.gif" alt="ajax clock" /> <?php echo __('Please be patient, the file is being uploaded. Details about the upload are not available.') . PMA_showDocu('faq2_9'); ?>');
100 $('#upload_form_status').css("display", "none");
101 <?php
102 } // else
104 }); // onclick
105 }); // domready
107 document.write('<form action="import.php" method="post" enctype="multipart/form-data" name="import"<?php if ($_SESSION[$SESSION_KEY]["handler"]!="noplugin") echo ' target="import_upload_iframe"'; ?>>');
108 //]]>
109 </script>
110 <noscript>
111 <form action="import.php" method="post" enctype="multipart/form-data" name="import">
112 </noscript>
113 <input type="hidden" name="<?php echo $ID_KEY; ?>" value="<?php echo $upload_id ; ?>" />
114 <?php
115 if ($import_type == 'server') {
116 echo PMA_generate_common_hidden_inputs('', '', 1);
117 } elseif ($import_type == 'database') {
118 echo PMA_generate_common_hidden_inputs($db, '', 1);
119 } else {
120 echo PMA_generate_common_hidden_inputs($db, $table, 1);
122 echo ' <input type="hidden" name="import_type" value="' . $import_type . '" />'."\n";
123 echo PMA_pluginGetJavascript($import_list);
125 <fieldset class="options">
126 <legend><?php echo __('File to import'); ?></legend>
128 <?php
130 if ($GLOBALS['is_upload']) {
131 $uid = uniqid("");
133 <div class="formelementrow" id="upload_form">
134 <div id="upload_form_status" style="display: none;"></div>
135 <div id="upload_form_status_info" style="display: none;"></div>
136 <div id="upload_form_form">
137 <label for="input_import_file"><?php echo __('Location of the text file'); ?></label>
138 <input style="margin: 5px" type="file" name="import_file" id="input_import_file" onchange="match_file(this.value);" />
139 <?php
140 echo PMA_displayMaximumUploadSize($max_upload_size) . "\n";
141 // some browsers should respect this :)
142 echo PMA_generateHiddenMaxFileSize($max_upload_size) . "\n";
144 </div>
145 </div>
146 <?php
147 } else {
148 PMA_Message::warning('strUploadsNotAllowed')->display();
150 if (!empty($cfg['UploadDir'])) {
151 $extensions = '';
152 foreach ($import_list as $key => $val) {
153 if (!empty($extensions)) {
154 $extensions .= '|';
156 $extensions .= $val['extension'];
158 $matcher = '@\.(' . $extensions . ')(\.(' . PMA_supportedDecompressions() . '))?$@';
160 $files = PMA_getFileSelectOptions(PMA_userDir($cfg['UploadDir']), $matcher, (isset($timeout_passed) && $timeout_passed && isset($local_import_file)) ? $local_import_file : '');
161 echo '<div class="formelementrow">' . "\n";
162 if ($files === FALSE) {
163 PMA_Message::error('strWebServerUploadDirectoryError')->display();
164 } elseif (!empty($files)) {
165 echo "\n";
166 echo ' <i>' . __('Or') . '</i><br/><label for="select_local_import_file">' . __('web server upload directory') . '</label>&nbsp;: ' . "\n";
167 echo ' <select style="margin: 5px" size="1" name="local_import_file" onchange="match_file(this.value)" id="select_local_import_file">' . "\n";
168 echo ' <option value="">&nbsp;</option>' . "\n";
169 echo $files;
170 echo ' </select>' . "\n";
172 echo '</div>' . "\n";
173 } // end if (web-server upload directory)
175 // charset of file
176 echo '<div class="formelementrow">' . "\n";
177 if ($cfg['AllowAnywhereRecoding']) {
178 echo '<label for="charset_of_file">' . __('Character set of the file:') . '</label>';
179 reset($cfg['AvailableCharsets']);
180 echo '<select id="charset_of_file" name="charset_of_file" size="1">';
181 foreach ($cfg['AvailableCharsets'] as $temp_charset) {
182 echo '<option value="' . htmlentities($temp_charset) . '"';
183 if ((empty($cfg['Import']['charset']) && $temp_charset == $charset)
184 || $temp_charset == $cfg['Import']['charset']) {
185 echo ' selected="selected"';
187 echo '>' . htmlentities($temp_charset) . '</option>';
189 echo ' </select><br />';
190 } else {
191 echo '<label for="charset_of_file">' . __('Character set of the file:') . '</label>' . "\n";
192 echo PMA_generateCharsetDropdownBox(PMA_CSDROPDOWN_CHARSET, 'charset_of_file', 'charset_of_file', 'utf8', FALSE);
193 } // end if (recoding)
194 echo '</div>' . "\n";
196 // zip, gzip and bzip2 encode features
197 $compressions = __('None');
199 if ($cfg['GZipDump'] && @function_exists('gzopen')) {
200 $compressions .= ', gzip';
202 if ($cfg['BZipDump'] && @function_exists('bzopen')) {
203 $compressions .= ', bzip2';
205 if ($cfg['ZipDump'] && @function_exists('zip_open')) {
206 $compressions .= ', zip';
209 // We don't have show anything about compression, when no supported
210 if ($compressions != __('None')) {
211 echo '<div class="formelementrow">' . "\n";
212 printf(__('Imported file compression will be automatically detected from: %s'), $compressions);
213 echo '</div>' . "\n";
215 echo "\n";
217 </fieldset>
218 <fieldset class="options">
219 <legend><?php echo __('Partial import'); ?></legend>
221 <?php
222 if (isset($timeout_passed) && $timeout_passed) {
223 echo '<div class="formelementrow">' . "\n";
224 echo '<input type="hidden" name="skip" value="' . $offset . '" />';
225 echo sprintf(__('Previous import timed out, after resubmitting will continue from position %d.'), $offset) . '';
226 echo '</div>' . "\n";
229 <div class="formelementrow">
230 <input type="checkbox" name="allow_interrupt" value="yes"
231 id="checkbox_allow_interrupt" <?php echo PMA_pluginCheckboxCheck('Import', 'allow_interrupt'); ?>/>
232 <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. This might be good way to import large files, however it can break transactions.'); ?></label><br />
233 </div>
235 <?php
236 if (! (isset($timeout_passed) && $timeout_passed)) {
238 <div class="formelementrow">
239 <label for="text_skip_queries"><?php echo __('Number of records (queries) to skip from start'); ?></label>
240 <input type="text" name="skip_queries" value="<?php echo PMA_pluginGetDefault('Import', 'skip_queries');?>" id="text_skip_queries" />
241 </div>
242 <?php
243 } else {
244 // If timeout has passed,
245 // do not show the Skip dialog to avoid the risk of someone
246 // entering a value here that would interfere with "skip"
248 <input type="hidden" name="skip_queries" value="<?php echo PMA_pluginGetDefault('Import', 'skip_queries');?>" id="text_skip_queries" />
249 <?php
252 </fieldset>
254 <fieldset class="options">
255 <legend><?php echo __('Format of imported file'); ?></legend>
256 <?php
257 // Let's show format options now
258 echo '<div style="float: left;">';
259 echo PMA_pluginGetChoice('Import', 'format', $import_list);
260 echo '</div>';
262 echo '<div style="float: left;">';
263 echo PMA_pluginGetOptions('Import', $import_list);
264 echo '</div>';
266 <div class="clearfloat"></div>
267 </fieldset>
268 <?php
269 // Encoding setting form appended by Y.Kawada
270 if (function_exists('PMA_set_enc_form')) {
271 echo PMA_set_enc_form(' ');
273 echo "\n";
275 <fieldset class="tblFooters">
276 <input type="submit" value="<?php echo __('Go'); ?>" id="buttonGo" />
277 </fieldset>
278 </form>
279 </div>