1#!/usr/local/bin/perl 2# exec_form.cgi 3# Display a form for executing SQL in some database 4 5require './mysql-lib.pl'; 6&ReadParse(); 7&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'}); 8$access{'edonly'} && &error($text{'dbase_ecannot'}); 9&ui_print_header(undef, $text{'exec_title'}, "", "exec_form"); 10 11# Generate tabs for sections 12$prog = "exec_form.cgi?db=".&urlize($in{'db'})."&mode="; 13@tabs = ( [ "exec", $text{'exec_tabexec'}, $prog."exec" ], 14 [ "file", $text{'exec_tabfile'}, $prog."file" ], 15 [ "import", $text{'exec_tabimport'}, $prog."import" ] ); 16print &ui_tabs_start(\@tabs, "mode", $in{'mode'} || "exec", 1); 17 18# Get recently run commands 19open(OLD, "<$commands_file.$in{'db'}"); 20while(<OLD>) { 21 s/\r|\n//g; 22 push(@old, $_); 23 } 24close(OLD); 25 26# Build charset selector 27@css = &list_character_sets($in{'db'}); 28$csel = &ui_select("charset", $sql_charset, 29 [ [ "", "<".$text{'default'}.">" ], 30 (map { [ $_->[0], $_->[1]." (".$_->[0].")" ] } @css) ]); 31 32# Form for executing an SQL command 33print &ui_tabs_start_tab("mode", "exec"); 34print &text('exec_header', "<tt>$in{'db'}</tt>"),"<p>\n"; 35print &ui_form_start("exec.cgi", "form-data"); 36print &ui_hidden("db", $in{'db'}); 37print &ui_textarea("cmd", undef, 10, 70),"<br>\n"; 38if (@old) { 39 print $text{'exec_old'}," ", 40 &ui_select("old", undef, 41 [ map { [ $_, &html_escape(length($_) > 80 ? 42 substr($_, 0, 80).".." : $_) ] } @old ]),"\n", 43 &ui_button($text{'exec_edit'}, "movecmd", undef, 44 "onClick='cmd.value = old.options[old.selectedIndex].value'"), 45 " ",&ui_submit($text{'exec_clear'}, "clear"),"<br>\n"; 46 } 47print "<b>$text{'exec_cs'}</b> ",$csel,"<br>\n"; 48print &ui_form_end([ [ undef, $text{'exec_exec'} ] ]); 49print &ui_tabs_end_tab(); 50 51# Form for executing commands from a file 52print &ui_tabs_start_tab("mode", "file"); 53print &text('exec_header2', "<tt>$in{'db'}</tt>"),"<br>\n"; 54print $text{'exec_header2a'},"<p>\n"; 55print &ui_form_start("exec_file.cgi", "form-data"); 56print &ui_hidden("db", $in{'db'}); 57print &ui_radio_table("mode", 0, [ 58 [ 0, $text{'exec_file'}, &ui_textbox("file", undef, 50)." ". 59 &file_chooser_button("file", 0, 1) ], 60 [ 1, $text{'exec_upload'}, &ui_upload("upload", 50) ] ]); 61print "<b>$text{'exec_cs'}</b> ",$csel,"<br>\n"; 62print &ui_form_end([ [ undef, $text{'exec_exec'} ] ]); 63print &ui_tabs_end_tab(); 64 65# Form for loading a CSV or tab-separated file 66print &ui_tabs_start_tab("mode", "import"); 67print &text('exec_header3', "<tt>$in{'db'}</tt>"),"<br>", 68 $text{'exec_header4'},"<p>\n"; 69 70print &ui_form_start("import.cgi", "form-data"); 71print &ui_hidden("db", $in{'db'}); 72print &ui_table_start($text{'exec_iheader'}, undef, 2); 73 74# Data source 75print &ui_table_row($text{'exec_isource'}, 76 &ui_radio_table("mode", 0, [ 77 [ 0, $text{'exec_file'}, &ui_textbox("file", undef, 50)." ". 78 &file_chooser_button("file", 0, 1) ], 79 [ 1, $text{'exec_upload'}, &ui_upload("upload", 50) ] ])); 80 81print &ui_table_row($text{'exec_import'}, 82 &ui_select("table", undef, 83 [ [ undef, "<$text{'exec_filename'}>" ], 84 &list_tables($in{'db'}) ])); 85 86print &ui_table_row($text{'exec_delete'}, 87 &ui_yesno_radio("delete", 0)); 88 89print &ui_table_row($text{'exec_ignore'}, 90 &ui_yesno_radio("ignore", 0)); 91 92print &ui_table_row($text{'exec_format'}, 93 &ui_radio("format", 2, [ [ 0, $text{'csv_format0'} ], 94 [ 1, $text{'csv_format1'} ], 95 [ 2, $text{'csv_format2'} ] ])); 96 97print &ui_table_row($text{'exec_cs'}, $csel); 98 99print &ui_table_end(); 100print &ui_form_end([ [ undef, $text{'exec_exec'} ] ]); 101print &ui_tabs_end_tab(); 102 103print &ui_tabs_end(1); 104 105&ui_print_footer("edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'}, 106 &get_databases_return_link($in{'db'}), $text{'index_return'}); 107 108 109