Projekt

Obecné

Profil

Stáhnout (8.29 KB) Statistiky
| Větev: | Tag: | Revize:
1 6daefa8c Petr Lukašík
<?php
2
3
	/**
4
	 * Alternative SQL editing window
5
	 *
6
	 * $Id: sqledit.php,v 1.29 2005/10/18 03:45:16 chriskl Exp $
7
	 */
8
9
	// Include application functions
10
	include_once('./libraries/lib.inc.php');
11
12
	$action = (isset($_REQUEST['action'])) ? $_REQUEST['action'] : '';
13
	if (!isset($msg)) $msg = '';
14
	$PHP_SELF = $_SERVER['PHP_SELF'];
15
16
	/**
17
	 * Private function to display server and list of databases
18
	 */
19
	function _printConnection() {
20
		global $data, $lang, $conf, $action, $misc;
21
		
22
		// The javascript action on the select box reloads the
23
		// popup whenever the server or database is changed.
24
		// This ensures that the correct page encoding is used.
25
		$onchange = "onchange=\"location.href='sqledit.php?action=" . 
26
				urlencode($action) . "&amp;server=' + encodeURI(server.options[server.selectedIndex].value) + '&amp;database=' + encodeURI(database.options[database.selectedIndex].value) + ";
27
		
28
		// The exact URL to reload to is different between SQL and Find mode, however.
29
		if ($action == 'find') {
30
			$onchange .= "'&amp;term=' + encodeURI(term.value) + '&amp;filter=' + encodeURI(filter.value) + '&amp;" . SID . "'\">\n";
31
		} else {
32
			$onchange .= "'&amp;query=' + encodeURI(query.value) ";
33
			if ($data->hasSchemas()) $onchange .= "+ '&amp;search_path=' + encodeURI(search_path.value) ";
34
			$onchange .= "+ (paginate.checked ? '&amp;paginate=on' : '')  + '&amp;" . SID . "'\"";
35
		}
36
		
37
		echo "<table width=\"100%\"><tr><td>\n";
38
		echo "<label>";
39
		$misc->printHelp($lang['strserver'], 'pg.server');
40
		echo "</label>";
41
		echo ": <select name=\"server\" {$onchange}>\n";
42
		
43
		$servers = $misc->getServers();
44
		foreach($servers as $info) {
45
			if (empty($info['username'])) continue;
46
			echo "<option value=\"", htmlspecialchars($info['id']), "\"",
47
				((isset($_REQUEST['server']) && $info['id'] == $_REQUEST['server'])) ? ' selected="selected"' : '', ">",
48
				htmlspecialchars("{$info['desc']} ({$info['id']})"), "</option>\n";
49
		}
50
		echo "</select>\n</td><td align=\"right\">\n";
51
		
52
		// Get the list of all databases
53
		$databases = $data->getDatabases();
54
55
		if ($databases->recordCount() > 0) {
56
			// The javascript action on the select box reloads
57
			// the popup whenever the database is changed.
58
			// This ensures that the correct page encoding is used.
59
60
			echo "<label>";
61
			$misc->printHelp($lang['strdatabase'], 'pg.database');
62
			echo ": <select name=\"database\" {$onchange}>\n";
63
			
64
			while (!$databases->EOF) {
65
				$dbname = $databases->f['datname'];
66
				echo "<option value=\"", htmlspecialchars($dbname), "\"",
67
				((isset($_REQUEST['database']) && $dbname == $_REQUEST['database'])) ? ' selected="selected"' : '', ">",
68
					htmlspecialchars($dbname), "</option>\n";
69
				$databases->moveNext();
70
			}
71
			echo "</select></label>\n";
72
		}
73
		else {
74
			$server_info = $misc->getServerInfo();
75
			echo "<input type=\"hidden\" name=\"database\" value=\"", 
76
				htmlspecialchars($server_info['defaultdb']), "\" />\n";
77
		}
78
		
79
		echo "</td></tr></table>\n";
80
	}
81
	
82
	/**
83
	 * Searches for a named database object
84
	 */
85
	function doFind() {
86
		global $PHP_SELF, $data, $misc;
87
		global $lang, $conf;
88
		
89
		if (!isset($_GET['term'])) $_GET['term'] = '';
90
		if (!isset($_GET['filter'])) $_GET['filter'] = '';
91
		
92
		$misc->printHeader($lang['strfind']);
93
		
94
		// Bring to the front always
95
		echo "<body onload=\"window.focus();\">\n";
96
		
97
		$misc->printTabs($misc->getNavTabs('popup'), 'find');
98
		
99
		echo "<form action=\"database.php\" method=\"get\" target=\"detail\">\n<p>";
100
		_printConnection();
101
		echo "</p><p><input name=\"term\" value=\"", htmlspecialchars($_GET['term']), 
102
			"\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" />\n";
103
			
104
		// Output list of filters.  This is complex due to all the 'has' and 'conf' feature possibilities
105
		echo "<select name=\"filter\">\n";
106
		echo "\t<option value=\"\"", ($_GET['filter'] == '') ? ' selected="selected"' : '', ">{$lang['strallobjects']}</option>\n";
107
		if ($data->hasSchemas())
108
			echo "\t<option value=\"SCHEMA\"", ($_GET['filter'] == 'SCHEMA') ? ' selected="selected"' : '', ">{$lang['strschemas']}</option>\n";
109
		echo "\t<option value=\"TABLE\"", ($_GET['filter'] == 'TABLE') ? ' selected="selected"' : '', ">{$lang['strtables']}</option>\n";
110
		echo "\t<option value=\"VIEW\"", ($_GET['filter'] == 'VIEW') ? ' selected="selected"' : '', ">{$lang['strviews']}</option>\n";
111
		echo "\t<option value=\"SEQUENCE\"", ($_GET['filter'] == 'SEQUENCE') ? ' selected="selected"' : '', ">{$lang['strsequences']}</option>\n";
112
		echo "\t<option value=\"COLUMN\"", ($_GET['filter'] == 'COLUMN') ? ' selected="selected"' : '', ">{$lang['strcolumns']}</option>\n";
113
		echo "\t<option value=\"RULE\"", ($_GET['filter'] == 'RULE') ? ' selected="selected"' : '', ">{$lang['strrules']}</option>\n";
114
		echo "\t<option value=\"INDEX\"", ($_GET['filter'] == 'INDEX') ? ' selected="selected"' : '', ">{$lang['strindexes']}</option>\n";
115
		echo "\t<option value=\"TRIGGER\"", ($_GET['filter'] == 'TRIGGER') ? ' selected="selected"' : '', ">{$lang['strtriggers']}</option>\n";
116
		echo "\t<option value=\"CONSTRAINT\"", ($_GET['filter'] == 'CONSTRAINT') ? ' selected="selected"' : '', ">{$lang['strconstraints']}</option>\n";
117
		echo "\t<option value=\"FUNCTION\"", ($_GET['filter'] == 'FUNCTION') ? ' selected="selected"' : '', ">{$lang['strfunctions']}</option>\n";
118
		if ($data->hasDomains())
119
			echo "\t<option value=\"DOMAIN\"", ($_GET['filter'] == 'DOMAIN') ? ' selected="selected"' : '', ">{$lang['strdomains']}</option>\n";
120
		if ($conf['show_advanced']) {
121
			echo "\t<option value=\"AGGREGATE\"", ($_GET['filter'] == 'AGGREGATE') ? ' selected="selected"' : '', ">{$lang['straggregates']}</option>\n";
122
			echo "\t<option value=\"TYPE\"", ($_GET['filter'] == 'TYPE') ? ' selected="selected"' : '', ">{$lang['strtypes']}</option>\n";
123
			echo "\t<option value=\"OPERATOR\"", ($_GET['filter'] == 'OPERATOR') ? ' selected="selected"' : '', ">{$lang['stroperators']}</option>\n";
124
			echo "\t<option value=\"OPCLASS\"", ($_GET['filter'] == 'OPCLASS') ? ' selected="selected"' : '', ">{$lang['stropclasses']}</option>\n";
125
			if ($data->hasConversions())
126
				echo "\t<option value=\"CONVERSION\"", ($_GET['filter'] == 'CONVERSION') ? ' selected="selected"' : '', ">{$lang['strconversions']}</option>\n";
127
			echo "\t<option value=\"LANGUAGE\"", ($_GET['filter'] == 'LANGUAGE') ? ' selected="selected"' : '', ">{$lang['strlanguages']}</option>\n";
128
		}
129
		echo "</select>\n";
130
					
131
		echo "<input type=\"submit\" value=\"{$lang['strfind']}\" />\n";
132
		echo "<input type=\"hidden\" name=\"action\" value=\"find\" /></p>\n";
133
		echo "</form>\n";
134
135
		// Default focus
136
		$misc->setFocus('forms[0].term');
137
	}
138
139
	/**
140
	 * Allow execution of arbitrary SQL statements on a database
141
	 */
142
	function doDefault() {
143
		global $PHP_SELF, $data, $misc;
144
		global $lang, $conf;
145
		
146
		if (!isset($_REQUEST['query'])) $_REQUEST['query'] = '';
147
		
148
		$misc->printHeader($lang['strsql']);
149
		
150
		// Bring to the front always
151
		echo "<body onload=\"window.focus();\">\n";
152
		
153
		$misc->printTabs($misc->getNavTabs('popup'), 'sql');
154
		
155
		echo "<form action=\"sql.php\" method=\"post\" target=\"detail\">\n<p>";
156
		_printConnection();
157
		echo "</p>\n";
158
		if ($data->hasSchemas()) {
159
			if (!isset($_REQUEST['search_path']))
160
				$_REQUEST['search_path'] = implode(',',$data->getSearchPath());
161
		
162
			echo "<p><label>";
163
			$misc->printHelp($lang['strsearchpath'], 'pg.schema.search_path');
164
			echo ": <input type=\"text\" name=\"search_path\" size=\"50\" value=\"",
165
				htmlspecialchars($_REQUEST['search_path']), "\" /></label></p>\n";
166
		}
167
		
168
		echo "<textarea style=\"width: 100%;\" rows=\"10\" cols=\"50\" name=\"query\">",
169
			htmlspecialchars($_REQUEST['query']), "</textarea>\n";
170
		echo "<label><input type=\"checkbox\" name=\"paginate\"", (isset($_REQUEST['paginate']) ? ' checked="checked"' : ''), " />&nbsp;{$lang['strpaginate']}</label>\n";
171
		
172
		echo "<p><input type=\"submit\" value=\"{$lang['strrun']}\" />\n";
173
		if ($data->hasFullExplain()) {
174
			echo "<input type=\"submit\" name=\"explain\" value=\"{$lang['strexplain']}\" />\n";
175
			echo "<input type=\"submit\" name=\"explain_analyze\" value=\"{$lang['strexplainanalyze']}\" />\n";
176
		}
177
		echo "<input type=\"reset\" value=\"{$lang['strreset']}\" /></p>\n";
178
		echo "</form>\n";
179
		
180
		// Default focus
181
		$misc->setFocus('forms[0].query');
182
	}
183
184
	switch ($action) {
185
		case 'find':
186
			doFind();
187
			break;
188
		case 'sql':
189
		default:
190
			doDefault();
191
			break;
192
	}
193
	
194
	// Set the name of the window
195
	$misc->setWindowName('sqledit');
196
	
197
	$misc->printFooter();
198
	
199
?>