diff --git a/ChangeLog b/ChangeLog index 3d0daacb1..aa85de7b7 100755 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,12 @@ phpMyAdmin - Changelog $Id$ $Source$ +2003-01-14 Alexander M. Turek + * server_privileges.php3: + - Lookup database / table lists if possible; + - The database name was displayed instead of the table name in the sub + page heading. + 2003-01-14 Marc Delisle * lang/galician: update, thanks to Xosé Calvo * lang/spanish: update, thanks to Dr. med. Daniel Hinostroza C. diff --git a/server_privileges.php3 b/server_privileges.php3 index 8c03af3f3..c064f02e7 100644 --- a/server_privileges.php3 +++ b/server_privileges.php3 @@ -10,6 +10,19 @@ $js_to_run = 'server_privileges.js'; require('./server_common.inc.php3'); +/** + * Checks if a dropdown box has been used for selecting a database / table + */ +if (!empty($pred_dbname)) { + $dbname = $pred_dbname; + unset($pred_dbname); +} +if (!empty($pred_tablename)) { + $tablename = $pred_tablename; + unset($pred_tablename); +} + + /** * Checks if the user is allowed to do what he tries to... */ @@ -697,7 +710,8 @@ if (empty($adduser)) { . ' ' . sprintf($strFlushPrivilegesNote, '', '') . "\n" . '' . "\n"; } - } else if (isset($username)) { + } else { + // A user was selected -> display the user's properties if (!isset($hostname)) { $hostname = '%'; } @@ -706,7 +720,7 @@ if (empty($adduser)) { if (!empty($dbname)) { echo ' - ' . $strDatabase . ' ' . htmlspecialchars($dbname) . '' . "\n"; if (!empty($tablename)) { - echo ' - ' . $strTable . ' ' . htmlspecialchars($dbname) . '' . "\n"; + echo ' - ' . $strTable . ' ' . htmlspecialchars($tablename) . '' . "\n"; } } echo '' . "\n"; @@ -765,8 +779,10 @@ if (empty($adduser)) { $res2 = PMA_mysql_query('SELECT `Db` FROM `tables_priv` WHERE `Host` = "' . $hostname . '" AND `User` = "' . $username . '" GROUP BY `Db` ORDER BY `Db` ASC;') or PMA_mysqlDie(PMA_mysql_error($userlink), 'SELECT `Db` FROM `tables_priv` WHERE `Host` = "' . $hostname . '" AND `User` = "' . $username . '" GROUP BY `Db` ORDER BY `Db` ASC;'); $row2 = PMA_mysql_fetch_array($res2, MYSQL_ASSOC); } + $found_rows = array(); while ($row = PMA_mysql_fetch_array($res, MYSQL_ASSOC)) { while (empty($dbname) && $row2 && $row['Db'] > $row2['Db']) { + $found_rows[] = $row2['Db']; echo ' ' . "\n" . ' ' . htmlspecialchars($row2['Db']) . '' . "\n" . ' ' . "\n" @@ -782,6 +798,7 @@ if (empty($adduser)) { $row2 = PMA_mysql_fetch_array($res2, MYSQL_ASSOC); $useBgcolorOne = !$useBgcolorOne; } // end while + $found_rows[] = empty($dbname) ? $row['Db'] : $row['Table_name']; echo ' ' . "\n" . ' ' . htmlspecialchars(empty($dbname) ? $row['Db'] : $row['Table_name']) . '' . "\n" . ' ' . "\n" @@ -807,6 +824,7 @@ if (empty($adduser)) { $useBgcolorOne = !$useBgcolorOne; } // end while while (empty($dbname) && $row2 = PMA_mysql_fetch_array($res2, MYSQL_ASSOC)) { + $found_rows[] = $row2['Db']; echo ' ' . "\n" . ' ' . htmlspecialchars($row2['Db']) . '' . "\n" . ' ' . "\n" @@ -840,12 +858,51 @@ if (empty($adduser)) { echo ' ' . "\n"; } if (empty($dbname)) { - echo ' ' . "\n" - . ' ' . "\n"; + echo ' ' . "\n"; + $res = PMA_mysql_query('SHOW DATABASES;', $userlink) or PMA_mysqlDie(PMA_mysql_error($userlink), 'SHOW DATABASES;'); + $pred_db_array = array(); + while ($row = PMA_mysql_fetch_row($res)) { + if (!isset($found_rows) || !in_array($row[0], $found_rows)) { + $pred_db_array[] = $row[0]; + } + } + mysql_free_result($res); + unset($res); + unset($row); + if (!empty($pred_db_array)) { + echo ' ' . "\n"; + } + echo ' ' . "\n"; } else { echo ' ' . "\n" - . ' ' . "\n" - . ' ' . "\n"; + . ' ' . "\n"; + if ($res = @PMA_mysql_query('SHOW TABLES FROM ' . PMA_backquote($dbname) . ';', $userlink)) { + $pred_tbl_array = array(); + while ($row = PMA_mysql_fetch_row($res)) { + if (!isset($found_rows) || !in_array($row[0], $found_rows)) { + $pred_tbl_array[] = $row[0]; + } + } + mysql_free_result($res); + unset($res); + unset($row); + if (!empty($pred_tbl_array)) { + echo ' ' . "\n"; + } + } else { + unset($res); + } + echo ' ' . "\n"; } echo ' ' . "\n" . ' ' . "\n"