respect the chosen initial

This commit is contained in:
Marc Delisle
2005-10-29 18:49:54 +00:00
parent d1b7c6bb55
commit 0fd2ba167f
2 changed files with 28 additions and 17 deletions

View File

@@ -12,6 +12,7 @@ $Source$
2005-10-29 Marc Delisle <lem9@users.sourceforge.net>
* Documentation.html: clarification on FAQ 6.20
* server_privileges.php: respect the chosen initial
2005-10-28 Sebastian Mendel <cybot_tm@users.sourceforge.net>
* server_privilegs.php, libraries/common.lib.php,

View File

@@ -44,6 +44,26 @@ if (!$is_superuser) {
require_once('./footer.inc.php');
}
/**
* Generates a condition on the user name
*
* @param string the user's initial
* @return string the generated condition
*/
function PMA_RangeOfUsers($initial = '') {
// strtolower() is used because the User field
// might be BINARY, so LIKE would be case sensitive
if (!empty($initial)) {
$ret = " WHERE " . PMA_convert_using('User')
. " LIKE " . PMA_convert_using($initial . '%', 'quoted')
. " OR ". PMA_convert_using('User')
. " LIKE " . PMA_convert_using(strtolower($initial) . '%', 'quoted');
} else {
$ret = '';
}
return $ret;
} // end function
/**
* Extracts the privilege information of a priv table row
*
@@ -1257,14 +1277,7 @@ if (empty($adduser) && empty($checkprivs)) {
$sql_query .= ' FROM `mysql`.`user`';
// the strtolower() is because sometimes the User field
// might be BINARY, so LIKE would be case sensitive
if (isset($initial)) {
$sql_query .= " WHERE " . PMA_convert_using('User')
. " LIKE " . PMA_convert_using($initial . '%', 'quoted')
. " OR ". PMA_convert_using('User')
. " LIKE " . PMA_convert_using(strtolower($initial) . '%', 'quoted');
}
$sql_query .= (isset($initial) ? PMA_RangeOfUsers($initial) : '');
$sql_query .= ' ORDER BY `User` ASC, `Host` ASC;';
$res = PMA_DBI_try_query($sql_query, NULL, PMA_DBI_QUERY_STORE);
@@ -1302,7 +1315,7 @@ if (empty($adduser) && empty($checkprivs)) {
$db_rights_sqls = array();
foreach ( $tables_to_search_for_users as $table_search_in ) {
if ( in_array( $table_search_in, $tables ) ) {
$db_rights_sqls[] = 'SELECT DISTINCT `User`, `Host` FROM `mysql`.`' . $table_search_in . '` ';
$db_rights_sqls[] = 'SELECT DISTINCT `User`, `Host` FROM `mysql`.`' . $table_search_in . '` ' . (isset($initial) ? PMA_RangeOfUsers($initial) : '');
}
}
@@ -1329,10 +1342,6 @@ if (empty($adduser) && empty($checkprivs)) {
$db_rights_row = array_merge( $user_defaults, $db_rights_row );
$db_rights[$db_rights_row['User']][$db_rights_row['Host']] =
$db_rights_row;
if ( ! empty( $db_rights_row['User'] ) ) {
$letter = strtoupper( $db_rights_row['User']{0} );
$array_initials[$letter] = true;
}
}
} else {
foreach ( $db_rights_sqls as $db_rights_sql ) {
@@ -1342,10 +1351,6 @@ if (empty($adduser) && empty($checkprivs)) {
$db_rights_row = array_merge( $user_defaults, $db_rights_row );
$db_rights[$db_rights_row['User']][$db_rights_row['Host']] =
$db_rights_row;
if ( ! empty( $db_rights_row['User'] ) ) {
$letter = strtoupper( $db_rights_row['User']{0} );
$array_initials[$letter] = true;
}
}
}
}
@@ -1364,6 +1369,11 @@ if (empty($adduser) && empty($checkprivs)) {
}
}
$initials = PMA_DBI_try_query('SELECT DISTINCT UPPER(LEFT(' . PMA_convert_using('User') . ',1)) FROM `user` ORDER BY `User` ASC', NULL, PMA_DBI_QUERY_STORE);
while (list($tmp_initial) = PMA_DBI_fetch_row($initials)) {
$array_initials[$tmp_initial] = TRUE;
}
// Display the initials, which can be any characters, not
// just letters. For letters A-Z, we add the non-used letters
// as greyed out.