2 /* vim: set expandtab sw=4 ts=4 sts=4: */
4 * this file is register_globals save
6 * @todo move JavaScript out of here into .js files
7 * @uses $cfg['QueryWindowDefTab']
8 * @uses $cfg['PropertiesIconic']
9 * @uses $cfg['QueryHistoryDB']
10 * @uses $cfg['Server']['user']
11 * @uses $cfg['AllowUserDropDatabase']
12 * @uses $cfg['Confirm']
13 * @uses $GLOBALS['db']
14 * @uses $GLOBALS['table']
15 * @uses $GLOBALS['strSQL']
16 * @uses $GLOBALS['strImportFiles']
17 * @uses $GLOBALS['strQuerySQLHistory']
18 * @uses $GLOBALS['strAll']
19 * @uses $GLOBALS['strChange']
20 * @uses $GLOBALS['strFormEmpty']
21 * @uses $GLOBALS['strNotNumber']
22 * @uses $GLOBALS['strNoDropDatabases']
23 * @uses $GLOBALS['strDoYouReally']
24 * @uses $GLOBALS['strQuerySQLHistory']
25 * @uses PMA_isSuperuser()
26 * @uses PMA_outBufferPre()
27 * @uses PMA_getRelationsParam()
30 * @uses PMA_setHistory()
31 * @uses PMA_getHistory()
32 * @uses PMA_generate_common_url()
33 * @uses PMA_generate_common_hidden_inputs()
34 * @uses PMA_escapeJsString()
36 * @uses PMA_sqlQueryForm()
37 * @uses PMA_jsFormat()
40 * @uses preg_replace()
41 * @uses htmlspecialchars()
48 require_once './libraries/common.inc.php';
50 $is_superuser = PMA_isSuperuser();
53 * Gets a core script and starts output buffering work
55 require_once './libraries/sql_query_form.lib.php';
58 * starts output buffering if requested and supported
60 require_once './libraries/ob.lib.php';
66 require_once './libraries/relation.lib.php';
67 $cfgRelation = PMA_getRelationsParam();
70 * load bookmark support
72 require_once './libraries/bookmark.lib.php';
74 $querydisplay_tabs = array(
81 if (isset($_REQUEST['querydisplay_tab'])
82 && in_array($_REQUEST['querydisplay_tab'], $querydisplay_tabs)) {
83 $querydisplay_tab = $_REQUEST['querydisplay_tab'];
85 $querydisplay_tab = $GLOBALS['cfg']['QueryWindowDefTab'];
89 * $_REQUEST['no_js'] is set if open new window by JavaScript failed
90 * so this page is loaded in main frame
92 $no_js = PMA_ifSetOr($_REQUEST['no_js'], false);
95 $querydisplay_tab = 'full';
99 $tabs['sql']['icon'] = 'b_sql.png';
100 $tabs['sql']['text'] = $GLOBALS['strSQL'];
101 $tabs['sql']['fragment'] = '#';
102 $tabs['sql']['attr'] = 'onclick="javascript:PMA_querywindowCommit(\'sql\');return false;"';
103 $tabs['sql']['active'] = (bool) ($querydisplay_tab == 'sql');
104 $tabs['import']['icon'] = 'b_import.png';
105 $tabs['import']['text'] = $GLOBALS['strImportFiles'];
106 $tabs['import']['fragment'] = '#';
107 $tabs['import']['attr'] = 'onclick="javascript:PMA_querywindowCommit(\'files\');return false;"';
108 $tabs['import']['active'] = (bool) ($querydisplay_tab == 'files');
109 $tabs['history']['icon'] = 'b_bookmark.png';
110 $tabs['history']['text'] = $GLOBALS['strQuerySQLHistory'];
111 $tabs['history']['fragment'] = '#';
112 $tabs['history']['attr'] = 'onclick="javascript:PMA_querywindowCommit(\'history\');return false;"';
113 $tabs['history']['active'] = (bool) ($querydisplay_tab == 'history');
115 if ($GLOBALS['cfg']['QueryWindowDefTab'] == 'full') {
116 $tabs['all']['text'] = $GLOBALS['strAll'];
117 $tabs['all']['fragment'] = '#';
118 $tabs['all']['attr'] = 'onclick="javascript:PMA_querywindowCommit(\'full\');return false;"';
119 $tabs['all']['active'] = (bool) ($querydisplay_tab == 'full');
123 if ($GLOBALS['cfg']['PropertiesIconic']) {
125 '<img class="icon" width="16" height="16" src="' . $pmaThemeImage
126 . 'b_edit.png" alt="' . $GLOBALS['strChange'] . '" title="' . $GLOBALS['strChange']
129 if ('both' === $GLOBALS['cfg']['PropertiesIconic']) {
130 $titles['Change'] .= $GLOBALS['strChange'];
133 $titles['Change'] = $GLOBALS['strChange'];
136 $url_query = PMA_generate_common_url($db, $table);
138 if (! empty($sql_query)) {
143 // ... we redirect to appropriate query sql page
144 // works only full if $db and $table is also stored/grabbed from $_COOKIE
145 if (strlen($table)) {
146 require './tbl_sql.php';
147 } elseif (strlen($db)) {
148 require './db_sql.php';
150 require './server_sql.php';
156 * Defines the query to be displayed in the query textarea
158 if (! empty($show_query)) {
159 $query_to_display = $sql_query;
161 $query_to_display = '';
168 require_once './libraries/header_http.inc.php';
169 require_once './libraries/header_meta_style.inc.php';
171 <script type
="text/javascript">
173 var errorMsg0
= '<?php echo PMA_escapeJsString($GLOBALS['strFormEmpty
']); ?>';
174 var errorMsg1
= '<?php echo PMA_escapeJsString($GLOBALS['strNotNumber
']); ?>';
175 var noDropDbMsg
= '<?php echo (!$is_superuser && !$GLOBALS['cfg
']['AllowUserDropDatabase
'])
176 ? PMA_escapeJsString($GLOBALS['strNoDropDatabases
']) : ''; ?>';
177 var confirmMsg
= '<?php echo $GLOBALS['cfg
']['Confirm
']
178 ? PMA_escapeJsString($GLOBALS['strDoYouReally
']) : ''; ?>';
180 function PMA_queryAutoCommit() {
181 document
.getElementById('sqlqueryform').target
= window
.opener
.frame_content
.name
;
182 document
.getElementById('sqlqueryform').submit();
186 function PMA_querywindowCommit(tab
) {
187 document
.getElementById('hiddenqueryform').querydisplay_tab
.value
= tab
;
188 document
.getElementById('hiddenqueryform').submit();
192 function PMA_querywindowResize() {
194 if (typeof(self
.sizeToContent
) == 'function') {
195 self
.sizeToContent();
196 //self.scrollbars.visible = false;
197 // give some more space ... to prevent 'fli(pp/ck)ing'
198 self
.resizeBy(10, 50);
203 if (document
.getElementById
&& typeof(document
.getElementById('querywindowcontainer')) != 'undefined') {
206 var newWidth
= document
.getElementById('querywindowcontainer').offsetWidth
;
207 var newHeight
= document
.getElementById('querywindowcontainer').offsetHeight
;
209 // set size to contentsize
210 // plus some offset for scrollbars, borders, statusbar, menus ...
211 self
.resizeTo(newWidth +
45, newHeight +
75);
215 function PMA_querywindowInit()
218 if (PMA_isValid($_REQUEST['auto_commit'], 'identical', 'true')) {
219 echo 'PMA_queryAutoCommit();' . "\n";
221 if (PMA_isValid($_REQUEST['init'])) {
222 echo 'PMA_querywindowResize();' . "\n";
224 if ($querydisplay_tab == 'sql' ||
$querydisplay_tab == 'full') {
225 echo "document.getElementById('sqlquery').focus();" . "\n";
232 <script src
="./js/functions.js" type
="text/javascript"></script
>
235 <body id
="bodyquerywindow" onload
="PMA_querywindowInit();">
236 <div id
="querywindowcontainer">
240 echo PMA_getTabs($tabs);
244 PMA_sqlQueryForm($query_to_display, $querydisplay_tab);
246 // Hidden forms and query frame interaction stuff
248 $_sql_history = PMA_getHistory($GLOBALS['cfg']['Server']['user']);
249 if (! empty($_sql_history)
250 && ($querydisplay_tab == 'history' ||
$querydisplay_tab == 'full')) {
251 $tab = $querydisplay_tab != 'full' ?
'sql' : 'full';
252 echo $GLOBALS['strQuerySQLHistory'] . ':<br />' . "\n"
254 foreach ($_sql_history as $query) {
259 'querydisplay_tab' => $tab,
260 'sql_query' => $query['sqlquery'],
261 'db' => $query['db'],
262 'table' => $query['table'],
264 echo '<a href="querywindow.php' . PMA_generate_common_url($url_params)
265 . '">' . $titles['Change'] . '</a>';
268 $url_params['auto_commit'] = 'true';
269 echo '<a href="import.php' . PMA_generate_common_url($url_params) . '"'
270 . ' target="frame_content">';
272 if (! empty($query['db'])) {
274 echo htmlspecialchars(PMA_backquote($query['db']));
275 if (! empty($query['table'])) {
276 echo '.' . htmlspecialchars(PMA_backquote($query['table']));
280 if (strlen($query['sqlquery']) > 120) {
281 echo '<span title="' . htmlspecialchars($query['sqlquery']) . '">';
282 echo htmlspecialchars(substr($query['sqlquery'], 0, 50)) . ' [...] ';
283 echo htmlspecialchars(substr($query['sqlquery'], -50));
286 echo htmlspecialchars($query['sqlquery']);
291 unset($tab, $_sql_history, $query);
295 <form action
="querywindow.php" method
="post" name
="hiddenqueryform"
296 id
="hiddenqueryform">
297 <?php
echo PMA_generate_common_hidden_inputs('', ''); ?
>
298 <input type
="hidden" name
="db" value
="<?php echo htmlspecialchars($db); ?>" />
299 <input type
="hidden" name
="table" value
="<?php echo htmlspecialchars($table); ?>" />
300 <input type
="hidden" name
="sql_query" value
="" />
301 <input type
="hidden" name
="querydisplay_tab" value
="<?php echo $querydisplay_tab; ?>" />
309 * Close MySql connections
311 if (! empty($controllink)) {
312 PMA_DBI_close($controllink);
314 if (! empty($userlink)) {
315 PMA_DBI_close($userlink);