From 04d36819cc403ff396088262ae2250b6e52852b1 Mon Sep 17 00:00:00 2001 From: xmujay Date: Fri, 9 Aug 2013 21:22:43 +0800 Subject: [PATCH 01/10] refactor server_privileges.php: split long code to functions --- libraries/server_privileges.lib.php | 398 +++++++++++++++++++++++++--- server_privileges.php | 187 ++----------- 2 files changed, 386 insertions(+), 199 deletions(-) diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index c5a69d303d..da79bc2b09 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -9,6 +9,32 @@ if (! defined('PHPMYADMIN')) { exit; } + +/** + * Get Html for User Group Dialog + * + * @param string $username username + * @param bool $is_menuswork Is menuswork set in configuration + * + * @return string html + */ +function PMA_getHtmlForUserGroupDialog($username, $is_menuswork) +{ + $html = ''; + if (! empty($_REQUEST['edit_user_group_dialog']) && $is_menuswork) { + $dialog = PMA_getHtmlToChoseUserGroup($username); + $response = PMA_Response::getInstance(); + if ($GLOBALS['is_ajax_request']) { + $response->addJSON('message', $dialog); + exit; + } else { + $html .= $dialog; + } + } + + return $html; +} + /** * Escapes wildcard in a database+table specification * before using it in a GRANT statement. @@ -234,7 +260,11 @@ function PMA_getGrantsArray() array( 'Super_priv', 'SUPER', - __('Allows connecting, even if maximum number of connections is reached; required for most administrative operations like setting global variables or killing threads of other users.') + __( + 'Allows connecting, even if maximum number of connections ' + . 'is reached; required for most administrative operations ' + . 'like setting global variables or killing threads of other users.' + ) ), array( 'Create_tmp_table_priv', @@ -585,13 +615,13 @@ function PMA_getHtmlToDisplayPrivilegesTable($db = '*', } unset($res, $row1); } - // t a b l e - s p e c i f i c p r i v i l e g e s + // table-specific privileges if (! empty($columns)) { $html_output .= PMA_getHtmlForTableSpecificPrivileges( $username, $hostname, $db, $table, $columns, $row ); } else { - // g l o b a l o r d b - s p e c i f i c + // global or db-specific $html_output .= PMA_getHtmlForGlobalOrDbSpecificPrivs($db, $table, $row); } $html_output .= '' . "\n"; @@ -623,7 +653,9 @@ function PMA_getHtmlForDisplayResourceLimits($row) $html_output .= '
' . "\n" . '' . "\n" @@ -631,32 +663,44 @@ function PMA_getHtmlForDisplayResourceLimits($row) . 'value="' . $row['max_questions'] . '" ' . 'size="11" maxlength="11" ' . 'title="' - . __('Limits the number of queries the user may send to the server per hour.') + . __( + 'Limits the number of queries the user may send to the server per hour.' + ) . '" />' . "\n" . '
' . "\n"; $html_output .= '
' . "\n" . '' . "\n" . '' . "\n" . '
' . "\n"; $html_output .= '
' . "\n" . '' . "\n" . '' . "\n" . '
' . "\n"; @@ -790,7 +834,8 @@ function PMA_getHtmlForNotAttachedPrivilegesToTableSpecificColumn($row) $html_output = ''; foreach ($row as $current_grant => $current_grant_value) { $grant_type = substr($current_grant, 0, (strlen($current_grant) - 5)); - if (in_array($grant_type, array('Select', 'Insert', 'Update', 'References'))) { + if (in_array($grant_type, array('Select', 'Insert', 'Update', 'References')) + ) { continue; } // make a substitution to match the messages variables; @@ -1036,13 +1081,21 @@ function PMA_getAdministrationPrivilegeTable($db) $administration_privTable = array( array('Grant', 'GRANT', - __('Allows adding users and privileges without reloading the privilege tables.') + __( + 'Allows adding users and privileges ' + . 'without reloading the privilege tables.' + ) ), ); if ($db == '*') { $administration_privTable[] = array('Super', 'SUPER', - __('Allows connecting, even if maximum number of connections is reached; required for most administrative operations like setting global variables or killing threads of other users.') + __( + 'Allows connecting, even if maximum number ' + . 'of connections is reached; required for ' + . 'most administrative operations like ' + . 'setting global variables or killing threads of other users.' + ) ); $administration_privTable[] = array('Process', 'PROCESS', @@ -1197,7 +1250,11 @@ function PMA_getHtmlForDisplayLoginInformationFields($mode = 'new') $html_output .= ''; $html_output .= ''; @@ -1308,7 +1365,10 @@ function PMA_getHtmlForDisplayLoginInformationFields($mode = 'new') . '" title="' . __('Host') . '" onchange="pred_hostname.value = \'userdefined\';" />' . "\n" . PMA_Util::showHint( - __('When Host table is used, this field is ignored and values stored in Host table are used instead.') + __( + 'When Host table is used, this field is ignored ' + . 'and values stored in Host table are used instead.' + ) ) . '' . "\n"; @@ -1586,7 +1646,10 @@ function PMA_getHtmlForAddUser($dbname) if (! empty($dbname) ) { $html_output .= PMA_Util::getCheckbox( 'createdb-3', - sprintf(__('Grant all privileges on database "%s"'), htmlspecialchars($dbname)), + sprintf( + __('Grant all privileges on database "%s"'), + htmlspecialchars($dbname) + ), true, false ); @@ -1727,7 +1790,7 @@ function PMA_getHtmlForSpecificDbPrivileges() . '' . '' . "\n"; - if ($GLOBALS['is_ajax_request'] == true + if ($GLOBALS['is_ajax_request'] == true && empty($_REQUEST['ajax_page_request']) ) { $message = PMA_Message::success(__('User has been added.')); @@ -2087,8 +2150,15 @@ function PMA_getChangeLoginInformationHtmlForm($username, $hostname) $choices = array( '4' => __('… keep the old one.'), '1' => __('… delete the old one from the user tables.'), - '2' => __('… revoke all active privileges from the old one and delete it afterwards.'), - '3' => __('… delete the old one from the user tables and reload the privileges afterwards.')); + '2' => __( + '… revoke all active privileges from ' + . 'the old one and delete it afterwards.' + ), + '3' => __( + '… delete the old one from the user tables ' + . 'and reload the privileges afterwards.' + ) + ); $class = ' ajax'; $html_output = '
' . "\n" . '' . ((((! strlen($dbname)) && $row['Grant_priv'] == 'Y') - || (strlen($dbname) && in_array('Grant', explode(',', $row['Table_priv'])))) + || (strlen($dbname) + && in_array('Grant', explode(',', $row['Table_priv'])))) ? __('Yes') : __('No')) . '' . "\n" @@ -2729,7 +2800,10 @@ function PMA_getFieldsetForAddDeleteUser() $html_output .= '' . "\n" . '(' - . __('Revoke all active privileges from the users and delete them afterwards.') + . __( + 'Revoke all active privileges from the users ' + . 'and delete them afterwards.' + ) . ')' . '
' . "\n"; @@ -2836,7 +2910,9 @@ function PMA_getDbRightsForUserOverview() if (in_array($table_search_in, $tables)) { $db_rights_sqls[] = 'SELECT DISTINCT `User`, `Host` FROM `mysql`.`' . $table_search_in . '` ' - . (isset($_GET['initial']) ? PMA_rangeOfUsers($_GET['initial']) : ''); + . (isset($_GET['initial']) + ? PMA_rangeOfUsers($_GET['initial']) + : ''); } } $user_defaults = array( @@ -2942,7 +3018,8 @@ function PMA_updatePrivileges($username, $hostname, $tablename, $dbname) if ((isset($_POST['Grant_priv']) && $_POST['Grant_priv'] == 'Y') || (! strlen($dbname) && (isset($_POST['max_questions']) || isset($_POST['max_connections']) - || isset($_POST['max_updates']) || isset($_POST['max_user_connections']))) + || isset($_POST['max_updates']) + || isset($_POST['max_user_connections']))) ) { $sql_query2 .= PMA_getWithClauseForAddUserAndUpdatePrivs(); } @@ -2973,6 +3050,252 @@ function PMA_updatePrivileges($username, $hostname, $tablename, $dbname) return array($sql_query, $message); } +/** + * Get List of information: Changes / copies a user + * + * @param null + * + * @return array ($row, $password, $queries) + */ +function PMA_getListForChangeOrCopyUser() +{ + $row = null; + $password = null; + $queries = null; + + if (isset($_REQUEST['change_copy'])) { + $user_host_condition = ' WHERE `User` = ' + . "'". PMA_Util::sqlAddSlashes($_REQUEST['old_username']) . "'" + . ' AND `Host` = ' + . "'" . PMA_Util::sqlAddSlashes($_REQUEST['old_hostname']) . "';"; + $row = $GLOBALS['dbi']->fetchSingleRow( + 'SELECT * FROM `mysql`.`user` ' . $user_host_condition + ); + if (! $row) { + $response = PMA_Response::getInstance(); + $response->addHTML(PMA_Message::notice(__('No user found.'))->getDisplay()); + unset($_REQUEST['change_copy']); + } else { + extract($row, EXTR_OVERWRITE); + // Recent MySQL versions have the field "Password" in mysql.user, + // so the previous extract creates $Password but this script + // uses $password + if (! isset($password) && isset($Password)) { + $password = $Password; + } + $queries = array(); + } + } + + return array($row, $password, $queries); +} + +/** + * Get Data for information: Deletes users + * + * @param array $queries queries array + * + * @return null + */ +function PMA_getDataForDeleteusers(&$queries) +{ + if (isset($_REQUEST['change_copy'])) { + $selected_usr = array( + $_REQUEST['old_username'] . '&#27;' . $_REQUEST['old_hostname'] + ); + } else { + $selected_usr = $_REQUEST['selected_usr']; + $queries = array(); + } + foreach ($selected_usr as $each_user) { + list($this_user, $this_host) = explode('&#27;', $each_user); + $queries[] = '# ' + . sprintf( + __('Deleting %s'), + '\'' . $this_user . '\'@\'' . $this_host . '\'' + ) + . ' ...'; + $queries[] = 'DROP USER \'' + . PMA_Util::sqlAddSlashes($this_user) + . '\'@\'' . PMA_Util::sqlAddSlashes($this_host) . '\';'; + + if (isset($_REQUEST['drop_users_db'])) { + $queries[] = 'DROP DATABASE IF EXISTS ' + . PMA_Util::backquote($this_user) . ';'; + $GLOBALS['reload'] = true; + } + } +} + +/** + * Get Data for information: Adds a user + * + * @param array $queries queries array + * @param array $queries_for_display queries arry for display + * + * @return null + */ +function PMA_getDataForQueries(&$queries, $queries_for_display) +{ + $tmp_count = 0; + foreach ($queries as $sql_query) { + if ($sql_query{0} != '#') { + $GLOBALS['dbi']->query($sql_query); + } + // when there is a query containing a hidden password, take it + // instead of the real query sent + if (isset($queries_for_display[$tmp_count])) { + $queries[$tmp_count] = $queries_for_display[$tmp_count]; + } + $tmp_count++; + } +} + +/** + * Get Data for information: Adds a user + * + * @param string $dbname db name + * @param string $username user name + * @param string $hostname host name + * @param bool $_add_user_error store add_user_error + * @param string $password password + * @param array $message message to display + * @param array $queries queries array + * @param array $queries_for_display queries arry for display + * + * @return null + */ +function PMA_getDataForAddUser($dbname, &$username, &$hostname, &$_add_user_error, $password, &$message, $queries, $queries_for_display) +{ + if (isset($_REQUEST['adduser_submit']) || isset($_REQUEST['change_copy'])) { + $sql_query = ''; + if ($_POST['pred_username'] == 'any') { + $username = ''; + } + switch ($_POST['pred_hostname']) { + case 'any': + $hostname = '%'; + break; + case 'localhost': + $hostname = 'localhost'; + break; + case 'hosttable': + $hostname = ''; + break; + case 'thishost': + $_user_name = $GLOBALS['dbi']->fetchValue('SELECT USER()'); + $hostname = substr($_user_name, (strrpos($_user_name, '@') + 1)); + unset($_user_name); + break; + } + $sql = "SELECT '1' FROM `mysql`.`user`" + . " WHERE `User` = '" . PMA_Util::sqlAddSlashes($username) . "'" + . " AND `Host` = '" . PMA_Util::sqlAddSlashes($hostname) . "';"; + if ($GLOBALS['dbi']->fetchValue($sql) == 1) { + $message = PMA_Message::error(__('The user %s already exists!')); + $message->addParam('[em]\'' . $username . '\'@\'' . $hostname . '\'[/em]'); + $_REQUEST['adduser'] = true; + $_add_user_error = true; + } else { + list($create_user_real, $create_user_show, $real_sql_query, $sql_query) + = PMA_getSqlQueriesForDisplayAndAddUser( + $username, $hostname, (isset ($password) ? $password : '') + ); + + if (empty($_REQUEST['change_copy'])) { + $_error = false; + + if (isset($create_user_real)) { + if (! $GLOBALS['dbi']->tryQuery($create_user_real)) { + $_error = true; + } + $sql_query = $create_user_show . $sql_query; + } + list($sql_query, $message) = PMA_addUserAndCreateDatabase( + $_error, $real_sql_query, $sql_query, $username, $hostname, + isset($dbname) ? $dbname : null + ); + if (! empty($_REQUEST['userGroup']) && $cfgRelation['menuswork']) { + PMA_setUserGroup($GLOBALS['username'], $_REQUEST['userGroup']); + } + + } else { + if (isset($create_user_real)) { + $queries[] = $create_user_real; + } + $queries[] = $real_sql_query; + // we put the query containing the hidden password in + // $queries_for_display, at the same position occupied + // by the real query in $queries + $tmp_count = count($queries); + if (isset($create_user_real)) { + $queries_for_display[$tmp_count - 2] = $create_user_show; + } + $queries_for_display[$tmp_count - 1] = $sql_query; + } + unset($res, $real_sql_query); + } + } +} + +/** + * Update DB information: DB, Table, isWildcard + * + * @param string $dbname database name + * @param string $tablename table name + * @param string $db_and_table db_and_table + * @param bool $dbname_is_wildcard isWildcard + * + * @return null + */ +function PMA_updateDataForDBInfo( + &$dbname, &$tablename, &$db_and_table, + &$dbname_is_wildcard +) { + /** + * Checks if a dropdown box has been used for selecting a database / table + */ + if (PMA_isValid($_REQUEST['pred_tablename'])) { + $tablename = $_REQUEST['pred_tablename']; + } elseif (PMA_isValid($_REQUEST['tablename'])) { + $tablename = $_REQUEST['tablename']; + } else { + unset($tablename); + } + + if (PMA_isValid($_REQUEST['pred_dbname'])) { + $dbname = $_REQUEST['pred_dbname']; + unset($pred_dbname); + } elseif (PMA_isValid($_REQUEST['dbname'])) { + $dbname = $_REQUEST['dbname']; + } else { + unset($dbname); + unset($tablename); + } + + if (isset($dbname)) { + $unescaped_db = PMA_Util::unescapeMysqlWildcards($dbname); + $db_and_table = PMA_Util::backquote($unescaped_db) . '.'; + if (isset($tablename)) { + $db_and_table .= PMA_Util::backquote($tablename); + } else { + $db_and_table .= '*'; + } + } else { + $db_and_table = '*.*'; + } + + // check if given $dbname is a wildcard or not + if (isset($dbname)) { + //if (preg_match('/\\\\(?:_|%)/i', $dbname)) { + if (preg_match('/(?'; @@ -3179,9 +3502,17 @@ function PMA_getHtmlForDisplayUserOverviewPage($pmaThemeImage, $text_dir) $html_output .= PMA_getAddUserHtmlFieldset(); } // end if (display overview) - if (! $GLOBALS['is_ajax_request'] || ! empty($_REQUEST['ajax_page_request'])) { + if (! $GLOBALS['is_ajax_request'] + || ! empty($_REQUEST['ajax_page_request']) + ) { $flushnote = new PMA_Message( - __('Note: phpMyAdmin gets the users\' privileges directly from MySQL\'s privilege tables. The content of these tables may differ from the privileges the server uses, if they have been changed manually. In this case, you should %sreload the privileges%s before you continue.'), + __( + 'Note: phpMyAdmin gets the users\' privileges directly ' + . 'from MySQL\'s privilege tables. The content of these tables ' + . 'may differ from the privileges the server uses, ' + . 'if they have been changed manually. In this case, ' + . 'you should %sreload the privileges%s before you continue.' + ), PMA_Message::NOTICE ); $flushLink = 'fetchSingleRow( - 'SELECT * FROM `mysql`.`user` ' . $user_host_condition - ); - if (! $row) { - PMA_Message::notice(__('No user found.'))->display(); - unset($_REQUEST['change_copy']); - } else { - extract($row, EXTR_OVERWRITE); - // Recent MySQL versions have the field "Password" in mysql.user, - // so the previous extract creates $Password but this script - // uses $password - if (! isset($password) && isset($Password)) { - $password = $Password; - } - $queries = array(); - } -} +list($row, $password, $queries) = PMA_getListForChangeOrCopyUser(); + /** * Adds a user * (Changes / copies a user, part II) */ -if (isset($_REQUEST['adduser_submit']) || isset($_REQUEST['change_copy'])) { - $sql_query = ''; - if ($_POST['pred_username'] == 'any') { - $username = ''; - } - switch ($_POST['pred_hostname']) { - case 'any': - $hostname = '%'; - break; - case 'localhost': - $hostname = 'localhost'; - break; - case 'hosttable': - $hostname = ''; - break; - case 'thishost': - $_user_name = $GLOBALS['dbi']->fetchValue('SELECT USER()'); - $hostname = substr($_user_name, (strrpos($_user_name, '@') + 1)); - unset($_user_name); - break; - } - $sql = "SELECT '1' FROM `mysql`.`user`" - . " WHERE `User` = '" . PMA_Util::sqlAddSlashes($username) . "'" - . " AND `Host` = '" . PMA_Util::sqlAddSlashes($hostname) . "';"; - if ($GLOBALS['dbi']->fetchValue($sql) == 1) { - $message = PMA_Message::error(__('The user %s already exists!')); - $message->addParam('[em]\'' . $username . '\'@\'' . $hostname . '\'[/em]'); - $_REQUEST['adduser'] = true; - $_add_user_error = true; - } else { - list($create_user_real, $create_user_show, $real_sql_query, $sql_query) - = PMA_getSqlQueriesForDisplayAndAddUser( - $username, $hostname, (isset ($password) ? $password : '') - ); - - if (empty($_REQUEST['change_copy'])) { - $_error = false; - - if (isset($create_user_real)) { - if (! $GLOBALS['dbi']->tryQuery($create_user_real)) { - $_error = true; - } - $sql_query = $create_user_show . $sql_query; - } - list($sql_query, $message) = PMA_addUserAndCreateDatabase( - $_error, $real_sql_query, $sql_query, $username, $hostname, - isset($dbname) ? $dbname : null - ); - if (! empty($_REQUEST['userGroup']) && $cfgRelation['menuswork']) { - PMA_setUserGroup($GLOBALS['username'], $_REQUEST['userGroup']); - } - - } else { - if (isset($create_user_real)) { - $queries[] = $create_user_real; - } - $queries[] = $real_sql_query; - // we put the query containing the hidden password in - // $queries_for_display, at the same position occupied - // by the real query in $queries - $tmp_count = count($queries); - if (isset($create_user_real)) { - $queries_for_display[$tmp_count - 2] = $create_user_show; - } - $queries_for_display[$tmp_count - 1] = $sql_query; - } - unset($res, $real_sql_query); - } -} +$queries_for_display = array(); +PMA_getDataForAddUser( + dbname, $username, $hostname, + $_add_user_error, $password, + $message, $queries, $queries_for_display +); /** * Changes / copies a user, part III @@ -313,32 +198,7 @@ if (isset($_REQUEST['change_pw'])) { if (isset($_REQUEST['delete']) || (isset($_REQUEST['change_copy']) && $_REQUEST['mode'] < 4) ) { - if (isset($_REQUEST['change_copy'])) { - $selected_usr = array( - $_REQUEST['old_username'] . '&#27;' . $_REQUEST['old_hostname'] - ); - } else { - $selected_usr = $_REQUEST['selected_usr']; - $queries = array(); - } - foreach ($selected_usr as $each_user) { - list($this_user, $this_host) = explode('&#27;', $each_user); - $queries[] = '# ' - . sprintf( - __('Deleting %s'), - '\'' . $this_user . '\'@\'' . $this_host . '\'' - ) - . ' ...'; - $queries[] = 'DROP USER \'' - . PMA_Util::sqlAddSlashes($this_user) - . '\'@\'' . PMA_Util::sqlAddSlashes($this_host) . '\';'; - - if (isset($_REQUEST['drop_users_db'])) { - $queries[] = 'DROP DATABASE IF EXISTS ' - . PMA_Util::backquote($this_user) . ';'; - $GLOBALS['reload'] = true; - } - } + PMA_getDataForAddUser($queries); if (empty($_REQUEST['change_copy'])) { list($sql_query, $message) = PMA_deleteUser($queries); } @@ -348,18 +208,7 @@ if (isset($_REQUEST['delete']) * Changes / copies a user, part V */ if (isset($_REQUEST['change_copy'])) { - $tmp_count = 0; - foreach ($queries as $sql_query) { - if ($sql_query{0} != '#') { - $GLOBALS['dbi']->query($sql_query); - } - // when there is a query containing a hidden password, take it - // instead of the real query sent - if (isset($queries_for_display[$tmp_count])) { - $queries[$tmp_count] = $queries_for_display[$tmp_count]; - } - $tmp_count++; - } + PMA_getDataForQueries($queries, $queries_for_display); $message = PMA_Message::success(); $sql_query = join("\n", $queries); } @@ -450,7 +299,7 @@ if (! empty($_REQUEST['edit_user_group_dialog']) && $cfgRelation['menuswork']) { if (isset($_REQUEST['export']) || (isset($_REQUEST['submit_mult']) && $_REQUEST['submit_mult'] == 'export') ) { - list($title, $export) = PMA_getHtmlForExportUserDefinition( + list($title, $export) = PMA_getListForExportUserDefinition( isset($username) ? $username : null, isset($hostname) ? $hostname : null ); From 0a6937076fddec499038a746a4812bfd8396ff2a Mon Sep 17 00:00:00 2001 From: xmujay Date: Fri, 9 Aug 2013 21:49:28 +0800 Subject: [PATCH 02/10] rename some functions --- libraries/server_common.lib.php | 41 ++++++++++++++++---------- libraries/server_privileges.lib.php | 44 +++++++++++++++++++--------- server_privileges.php | 45 +++++++++-------------------- 3 files changed, 70 insertions(+), 60 deletions(-) diff --git a/libraries/server_common.lib.php b/libraries/server_common.lib.php index 07f1bb2a1e..d5d174f0fe 100644 --- a/libraries/server_common.lib.php +++ b/libraries/server_common.lib.php @@ -12,44 +12,55 @@ if (! defined('PHPMYADMIN')) { /** * Returns the html for the sub-page heading * - * @param string $type Sub page type - * @param string $link Link to the official MySQL documentation + * @param string $type Sub page type + * @param string $link Link to the official MySQL documentation + * @param bool $is_image Display image or icon, true: image, false: icon * * @return string */ -function PMA_getHtmlForSubPageHeader($type, $link='') +function PMA_getHtmlForSubPageHeader($type, $link='', $is_image=true) { //array contains Sub page icon and text $header = array(); - $header['variables']['icon'] = 's_vars.png'; + $header['variables']['image'] = 's_vars.png'; $header['variables']['text'] = __('Server variables and settings'); - $header['engines']['icon'] = 'b_engine.png'; + $header['engines']['image'] = 'b_engine.png'; $header['engines']['text'] = __('Storage Engines'); - $header['plugins']['icon'] = 'b_engine.png'; + $header['plugins']['image'] = 'b_engine.png'; $header['plugins']['text'] = __('Plugins'); - $header['binlog']['icon'] = 's_tbl.png'; + $header['binlog']['image'] = 's_tbl.png'; $header['binlog']['text'] = __('Binary log'); - $header['collations']['icon'] = 's_asci.png'; + $header['collations']['image'] = 's_asci.png'; $header['collations']['text'] = __('Character Sets and Collations'); - $header['replication']['icon'] = 's_replication.png'; + $header['replication']['image'] = 's_replication.png'; $header['replication']['text'] = __('Replication'); - $header['database_statistics']['icon'] = 's_db.png'; + $header['database_statistics']['image'] = 's_db.png'; $header['database_statistics']['text'] = __('Databases statistics'); - $header['databases']['icon'] = 's_db.png'; + $header['databases']['image'] = 's_db.png'; $header['databases']['text'] = __('Databases'); - $html = '

' . "\n" - . PMA_Util::getImage($header[$type]['icon']) - . ' ' . $header[$type]['text'] . "\n" - . $link . '

' . "\n"; + $header['privileges']['image'] = 'b_usrlist.png'; + $header['privileges']['text'] = __('Privileges'); + + if ($is_image) { + $html = '

' . "\n" + . PMA_Util::getImage($header[$type]['image']) + . ' ' . $header[$type]['text'] . "\n" + . $link . '

' . "\n"; + } else { + $html = '

' . "\n" + . PMA_Util::getIcon($header[$type]['image']) + . ' ' . $header[$type]['text'] . "\n" + . $link . '

' . "\n"; + } return $html; } diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index da79bc2b09..841ba3b05f 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -3053,16 +3053,15 @@ function PMA_updatePrivileges($username, $hostname, $tablename, $dbname) /** * Get List of information: Changes / copies a user * - * @param null + * @param array $row query result rows + * @param array $queries queries + * @param string $password password + * @param string $Password Recent MySQL versions Password * - * @return array ($row, $password, $queries) + * @return null */ -function PMA_getListForChangeOrCopyUser() +function PMA_updateForChangeOrCopyUser(&$row, &$queries, &$password, $Password) { - $row = null; - $password = null; - $queries = null; - if (isset($_REQUEST['change_copy'])) { $user_host_condition = ' WHERE `User` = ' . "'". PMA_Util::sqlAddSlashes($_REQUEST['old_username']) . "'" @@ -3086,8 +3085,6 @@ function PMA_getListForChangeOrCopyUser() $queries = array(); } } - - return array($row, $password, $queries); } /** @@ -3128,14 +3125,34 @@ function PMA_getDataForDeleteusers(&$queries) } /** - * Get Data for information: Adds a user + * update Message For Reload + * + * @param array $message sql execute message + * + * @return null + */ +function PMA_updateMessageForReload(&$message) +{ + if (isset($_REQUEST['flush_privileges'])) { + $sql_query = 'FLUSH PRIVILEGES;'; + $GLOBALS['dbi']->query($sql_query); + $message = PMA_Message::success(__('The privileges were reloaded successfully.')); + } + + if (isset($_REQUEST['validate_username'])) { + $message = PMA_Message::success(); + } +} + +/** + * update Data For Queries from queries_for_display * * @param array $queries queries array * @param array $queries_for_display queries arry for display * * @return null */ -function PMA_getDataForQueries(&$queries, $queries_for_display) +function PMA_updateDataForQueries(&$queries, $queries_for_display) { $tmp_count = 0; foreach ($queries as $sql_query) { @@ -3162,10 +3179,11 @@ function PMA_getDataForQueries(&$queries, $queries_for_display) * @param array $message message to display * @param array $queries queries array * @param array $queries_for_display queries arry for display + * @param bool $is_menuwork is_menuwork set? * * @return null */ -function PMA_getDataForAddUser($dbname, &$username, &$hostname, &$_add_user_error, $password, &$message, $queries, $queries_for_display) +function PMA_getDataForAddUser($dbname, &$username, &$hostname, &$_add_user_error, $password, &$message, &$queries, &$queries_for_display, $is_menuwork) { if (isset($_REQUEST['adduser_submit']) || isset($_REQUEST['change_copy'])) { $sql_query = ''; @@ -3215,7 +3233,7 @@ function PMA_getDataForAddUser($dbname, &$username, &$hostname, &$_add_user_erro $_error, $real_sql_query, $sql_query, $username, $hostname, isset($dbname) ? $dbname : null ); - if (! empty($_REQUEST['userGroup']) && $cfgRelation['menuswork']) { + if (! empty($_REQUEST['userGroup']) && $is_menuwork) { PMA_setUserGroup($GLOBALS['username'], $_REQUEST['userGroup']); } diff --git a/server_privileges.php b/server_privileges.php index 0a391eda12..f6149cb8d2 100644 --- a/server_privileges.php +++ b/server_privileges.php @@ -114,12 +114,7 @@ PMA_updateDataForDBInfo($dbname, $tablename, $db_and_table, $dbname_is_wildcard) * Checks if the user is allowed to do what he tries to... */ if (! $is_superuser) { - $response->addHTML( - '

' . "\n" - . PMA_Util::getIcon('b_usrlist.png') - . __('Privileges') . "\n" - . '

' . "\n" - ); + $response->addHTML(PMA_getHtmlForSubPageHeader('privileges', '', false)); $response->addHTML(PMA_Message::error(__('No Privileges'))->getDisplay()); exit; } @@ -127,8 +122,12 @@ if (! $is_superuser) { /** * Changes / copies a user, part I */ +$row = isset($row)? $row : null; +$queries = isset($queries)? $queries : null; +$password = isset($password)? $password : null; +$Password = isset($Password)? $Password : null; -list($row, $password, $queries) = PMA_getListForChangeOrCopyUser(); +PMA_updateForChangeOrCopyUser($row, $queries, $password, $Password); /** * Adds a user @@ -136,9 +135,10 @@ list($row, $password, $queries) = PMA_getListForChangeOrCopyUser(); */ $queries_for_display = array(); PMA_getDataForAddUser( - dbname, $username, $hostname, + $dbname, $username, $hostname, $_add_user_error, $password, - $message, $queries, $queries_for_display + $message, $queries, $queries_for_display, + $cfgRelation['menuswork'] ); /** @@ -198,7 +198,7 @@ if (isset($_REQUEST['change_pw'])) { if (isset($_REQUEST['delete']) || (isset($_REQUEST['change_copy']) && $_REQUEST['mode'] < 4) ) { - PMA_getDataForAddUser($queries); + PMA_getDataForDeleteusers($queries); if (empty($_REQUEST['change_copy'])) { list($sql_query, $message) = PMA_deleteUser($queries); } @@ -208,7 +208,7 @@ if (isset($_REQUEST['delete']) * Changes / copies a user, part V */ if (isset($_REQUEST['change_copy'])) { - PMA_getDataForQueries($queries, $queries_for_display); + PMA_updateDataForQueries($queries, $queries_for_display); $message = PMA_Message::success(); $sql_query = join("\n", $queries); } @@ -216,15 +216,7 @@ if (isset($_REQUEST['change_copy'])) { /** * Reloads the privilege tables into memory */ -if (isset($_REQUEST['flush_privileges'])) { - $sql_query = 'FLUSH PRIVILEGES;'; - $GLOBALS['dbi']->query($sql_query); - $message = PMA_Message::success(__('The privileges were reloaded successfully.')); -} - -if (isset($_REQUEST['validate_username'])) { - $message = PMA_Message::success(); -} +PMA_updateMessageForReload($message); /** * If we are in an Ajax request for Create User/Edit User/Revoke User/ @@ -282,18 +274,7 @@ if (isset($_REQUEST['viewing_mode']) && $_REQUEST['viewing_mode'] == 'db') { /** * Displays the page */ - - -if (! empty($_REQUEST['edit_user_group_dialog']) && $cfgRelation['menuswork']) { - $dialog = PMA_getHtmlToChoseUserGroup($username); - $response = PMA_Response::getInstance(); - if ($GLOBALS['is_ajax_request']) { - $response->addJSON('message', $dialog); - exit; - } else { - $response->addHTML($dialog); - } -} +$response->addHTML(PMA_getHtmlForUserGroupDialog($username, $cfgRelation['menuswork'])); // export user definition if (isset($_REQUEST['export']) From 6199c105d2e345151d4adea16458c575fff8f7b3 Mon Sep 17 00:00:00 2001 From: xmujay Date: Sat, 10 Aug 2013 00:35:47 +0800 Subject: [PATCH 03/10] update function name --- libraries/server_privileges.lib.php | 17 +++++++++-------- server_privileges.php | 12 ++++++------ 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index 841ba3b05f..4c6afb2328 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -3060,7 +3060,7 @@ function PMA_updatePrivileges($username, $hostname, $tablename, $dbname) * * @return null */ -function PMA_updateForChangeOrCopyUser(&$row, &$queries, &$password, $Password) +function PMA_updateDataForChangeOrCopyUser(&$row, &$queries, &$password, $Password) { if (isset($_REQUEST['change_copy'])) { $user_host_condition = ' WHERE `User` = ' @@ -3088,13 +3088,13 @@ function PMA_updateForChangeOrCopyUser(&$row, &$queries, &$password, $Password) } /** - * Get Data for information: Deletes users + * Update Data for information: Deletes users * * @param array $queries queries array * * @return null */ -function PMA_getDataForDeleteusers(&$queries) +function PMA_updateDataForDeleteUsers(&$queries) { if (isset($_REQUEST['change_copy'])) { $selected_usr = array( @@ -3127,7 +3127,7 @@ function PMA_getDataForDeleteusers(&$queries) /** * update Message For Reload * - * @param array $message sql execute message + * @param array $message sql execute return message * * @return null */ @@ -3169,7 +3169,7 @@ function PMA_updateDataForQueries(&$queries, $queries_for_display) } /** - * Get Data for information: Adds a user + * update Data for information: Adds a user * * @param string $dbname db name * @param string $username user name @@ -3183,7 +3183,7 @@ function PMA_updateDataForQueries(&$queries, $queries_for_display) * * @return null */ -function PMA_getDataForAddUser($dbname, &$username, &$hostname, &$_add_user_error, $password, &$message, &$queries, &$queries_for_display, $is_menuwork) +function PMA_updateDataForAddUser(&$dbname, &$username, &$hostname, &$_add_user_error, $password, &$message, &$queries, &$queries_for_display, $is_menuwork) { if (isset($_REQUEST['adduser_submit']) || isset($_REQUEST['change_copy'])) { $sql_query = ''; @@ -3262,13 +3262,14 @@ function PMA_getDataForAddUser($dbname, &$username, &$hostname, &$_add_user_erro * @param string $dbname database name * @param string $tablename table name * @param string $db_and_table db_and_table - * @param bool $dbname_is_wildcard isWildcard + * @param bool $dbname_is_wildcard is Wild card + * @param string $pred_dbname Pre database name * * @return null */ function PMA_updateDataForDBInfo( &$dbname, &$tablename, &$db_and_table, - &$dbname_is_wildcard + &$dbname_is_wildcard, &$pred_dbname ) { /** * Checks if a dropdown box has been used for selecting a database / table diff --git a/server_privileges.php b/server_privileges.php index f6149cb8d2..997f47d439 100644 --- a/server_privileges.php +++ b/server_privileges.php @@ -107,8 +107,9 @@ $dbname = isset($dbname)? $dbname : null; $tablename = isset($tablename)? $tablename : null; $db_and_table = isset($db_and_table)? $db_and_table : null; $dbname_is_wildcard = isset($dbname_is_wildcard)? $dbname_is_wildcard : null; +$pred_dbname = isset($pred_dbname)? $pred_dbname : null; -PMA_updateDataForDBInfo($dbname, $tablename, $db_and_table, $dbname_is_wildcard); +PMA_updateDataForDBInfo($dbname, $tablename, $db_and_table, $dbname_is_wildcard, $pred_dbname); /** * Checks if the user is allowed to do what he tries to... @@ -127,14 +128,14 @@ $queries = isset($queries)? $queries : null; $password = isset($password)? $password : null; $Password = isset($Password)? $Password : null; -PMA_updateForChangeOrCopyUser($row, $queries, $password, $Password); +PMA_updateDataForChangeOrCopyUser($row, $queries, $password, $Password); /** * Adds a user * (Changes / copies a user, part II) */ -$queries_for_display = array(); -PMA_getDataForAddUser( +$queries_for_display = isset($queries_for_display)? $queries_for_display : null; +PMA_updateDataForAddUser( $dbname, $username, $hostname, $_add_user_error, $password, $message, $queries, $queries_for_display, @@ -198,7 +199,7 @@ if (isset($_REQUEST['change_pw'])) { if (isset($_REQUEST['delete']) || (isset($_REQUEST['change_copy']) && $_REQUEST['mode'] < 4) ) { - PMA_getDataForDeleteusers($queries); + PMA_updateDataForDeleteUsers($queries); if (empty($_REQUEST['change_copy'])) { list($sql_query, $message) = PMA_deleteUser($queries); } @@ -308,7 +309,6 @@ if (empty($_REQUEST['adduser']) ); } else { // A user was selected -> display the user's properties - // In an Ajax request, prevent cached values from showing if ($GLOBALS['is_ajax_request'] == true) { header('Cache-Control: no-cache'); From 990f4fb1267349a50ddf3b67782bcbc5671f6833 Mon Sep 17 00:00:00 2001 From: xmujay Date: Sat, 10 Aug 2013 01:25:12 +0800 Subject: [PATCH 04/10] fix code style --- libraries/server_privileges.lib.php | 64 +++++++++++++++++------------ server_privileges.php | 49 ++++++++++++++++------ 2 files changed, 74 insertions(+), 39 deletions(-) diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index 4c6afb2328..ee9c850a83 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -3053,10 +3053,10 @@ function PMA_updatePrivileges($username, $hostname, $tablename, $dbname) /** * Get List of information: Changes / copies a user * - * @param array $row query result rows - * @param array $queries queries - * @param string $password password - * @param string $Password Recent MySQL versions Password + * @param array &$row query result rows + * @param array &$queries queries + * @param string &$password password + * @param string $Password Recent MySQL versions Password * * @return null */ @@ -3072,7 +3072,9 @@ function PMA_updateDataForChangeOrCopyUser(&$row, &$queries, &$password, $Passwo ); if (! $row) { $response = PMA_Response::getInstance(); - $response->addHTML(PMA_Message::notice(__('No user found.'))->getDisplay()); + $response->addHTML( + PMA_Message::notice(__('No user found.'))->getDisplay() + ); unset($_REQUEST['change_copy']); } else { extract($row, EXTR_OVERWRITE); @@ -3090,7 +3092,7 @@ function PMA_updateDataForChangeOrCopyUser(&$row, &$queries, &$password, $Passwo /** * Update Data for information: Deletes users * - * @param array $queries queries array + * @param array &$queries queries array * * @return null */ @@ -3127,7 +3129,7 @@ function PMA_updateDataForDeleteUsers(&$queries) /** * update Message For Reload * - * @param array $message sql execute return message + * @param array &$message sql execute return message * * @return null */ @@ -3136,7 +3138,9 @@ function PMA_updateMessageForReload(&$message) if (isset($_REQUEST['flush_privileges'])) { $sql_query = 'FLUSH PRIVILEGES;'; $GLOBALS['dbi']->query($sql_query); - $message = PMA_Message::success(__('The privileges were reloaded successfully.')); + $message = PMA_Message::success( + __('The privileges were reloaded successfully.') + ); } if (isset($_REQUEST['validate_username'])) { @@ -3147,8 +3151,8 @@ function PMA_updateMessageForReload(&$message) /** * update Data For Queries from queries_for_display * - * @param array $queries queries array - * @param array $queries_for_display queries arry for display + * @param array &$queries queries array + * @param array $queries_for_display queries arry for display * * @return null */ @@ -3171,20 +3175,24 @@ function PMA_updateDataForQueries(&$queries, $queries_for_display) /** * update Data for information: Adds a user * - * @param string $dbname db name - * @param string $username user name - * @param string $hostname host name - * @param bool $_add_user_error store add_user_error - * @param string $password password - * @param array $message message to display - * @param array $queries queries array - * @param array $queries_for_display queries arry for display - * @param bool $is_menuwork is_menuwork set? + * @param string &$dbname db name + * @param string &$username user name + * @param string &$hostname host name + * @param bool &$_add_user_error store add_user_error + * @param string $password password + * @param array &$message message to display + * @param array &$queries queries array + * @param array &$queries_for_display queries arry for display + * @param bool $is_menuwork is_menuwork set? + * @param string &$sql_query sql_query to display * * @return null */ -function PMA_updateDataForAddUser(&$dbname, &$username, &$hostname, &$_add_user_error, $password, &$message, &$queries, &$queries_for_display, $is_menuwork) -{ +function PMA_updateDataForAddUser( + &$dbname, &$username, &$hostname, &$_add_user_error, + $password, &$message, &$queries, &$queries_for_display, + $is_menuwork, &$sql_query +) { if (isset($_REQUEST['adduser_submit']) || isset($_REQUEST['change_copy'])) { $sql_query = ''; if ($_POST['pred_username'] == 'any') { @@ -3211,7 +3219,9 @@ function PMA_updateDataForAddUser(&$dbname, &$username, &$hostname, &$_add_user_ . " AND `Host` = '" . PMA_Util::sqlAddSlashes($hostname) . "';"; if ($GLOBALS['dbi']->fetchValue($sql) == 1) { $message = PMA_Message::error(__('The user %s already exists!')); - $message->addParam('[em]\'' . $username . '\'@\'' . $hostname . '\'[/em]'); + $message->addParam( + '[em]\'' . $username . '\'@\'' . $hostname . '\'[/em]' + ); $_REQUEST['adduser'] = true; $_add_user_error = true; } else { @@ -3259,11 +3269,11 @@ function PMA_updateDataForAddUser(&$dbname, &$username, &$hostname, &$_add_user_ /** * Update DB information: DB, Table, isWildcard * - * @param string $dbname database name - * @param string $tablename table name - * @param string $db_and_table db_and_table - * @param bool $dbname_is_wildcard is Wild card - * @param string $pred_dbname Pre database name + * @param string &$dbname database name + * @param string &$tablename table name + * @param string &$db_and_table db_and_table + * @param bool &$dbname_is_wildcard is Wild card + * @param string &$pred_dbname Pre database name * * @return null */ diff --git a/server_privileges.php b/server_privileges.php index 997f47d439..19d9e87aac 100644 --- a/server_privileges.php +++ b/server_privileges.php @@ -77,24 +77,43 @@ $strPrivDescDropTbl = __('Allows dropping tables.'); $strPrivDescEvent = __('Allows to set up events for the event scheduler'); $strPrivDescExecute = __('Allows executing stored routines.'); $strPrivDescFile = __('Allows importing data from and exporting data into files.'); -$strPrivDescGrant = __('Allows adding users and privileges without reloading the privilege tables.'); +$strPrivDescGrant = __( + 'Allows adding users and privileges without reloading the privilege tables.' +); $strPrivDescIndex = __('Allows creating and dropping indexes.'); $strPrivDescInsert = __('Allows inserting and replacing data.'); $strPrivDescLockTables = __('Allows locking tables for the current thread.'); -$strPrivDescMaxConnections = __('Limits the number of new connections the user may open per hour.'); -$strPrivDescMaxQuestions = __('Limits the number of queries the user may send to the server per hour.'); -$strPrivDescMaxUpdates = __('Limits the number of commands that change any table or database the user may execute per hour.'); -$strPrivDescMaxUserConnections = __('Limits the number of simultaneous connections the user may have.'); +$strPrivDescMaxConnections = __( + 'Limits the number of new connections the user may open per hour.' +); +$strPrivDescMaxQuestions = __( + 'Limits the number of queries the user may send to the server per hour.' +); +$strPrivDescMaxUpdates = __( + 'Limits the number of commands that change any table or database ' + . 'the user may execute per hour.' +); +$strPrivDescMaxUserConnections = __( + 'Limits the number of simultaneous connections the user may have.' +); $strPrivDescProcess = __('Allows viewing processes of all users'); $strPrivDescReferences = __('Has no effect in this MySQL version.'); -$strPrivDescReload = __('Allows reloading server settings and flushing the server\'s caches.'); -$strPrivDescReplClient = __('Allows the user to ask where the slaves / masters are.'); +$strPrivDescReload = __( + 'Allows reloading server settings and flushing the server\'s caches.' +); +$strPrivDescReplClient = __( + 'Allows the user to ask where the slaves / masters are.' +); $strPrivDescReplSlave = __('Needed for the replication slaves.'); $strPrivDescSelect = __('Allows reading data.'); $strPrivDescShowDb = __('Gives access to the complete list of databases.'); $strPrivDescShowView = __('Allows performing SHOW CREATE VIEW queries.'); $strPrivDescShutdown = __('Allows shutting down the server.'); -$strPrivDescSuper = __('Allows connecting, even if maximum number of connections is reached; required for most administrative operations like setting global variables or killing threads of other users.'); +$strPrivDescSuper = __( + 'Allows connecting, even if maximum number of connections is reached; ' + . 'required for most administrative operations like setting global variables ' + . 'or killing threads of other users.' +); $strPrivDescTrigger = __('Allows creating and dropping triggers'); $strPrivDescUpdate = __('Allows changing data.'); $strPrivDescUsage = __('No privileges.'); @@ -109,7 +128,9 @@ $db_and_table = isset($db_and_table)? $db_and_table : null; $dbname_is_wildcard = isset($dbname_is_wildcard)? $dbname_is_wildcard : null; $pred_dbname = isset($pred_dbname)? $pred_dbname : null; -PMA_updateDataForDBInfo($dbname, $tablename, $db_and_table, $dbname_is_wildcard, $pred_dbname); +PMA_updateDataForDBInfo( + $dbname, $tablename, $db_and_table, $dbname_is_wildcard, $pred_dbname +); /** * Checks if the user is allowed to do what he tries to... @@ -134,12 +155,14 @@ PMA_updateDataForChangeOrCopyUser($row, $queries, $password, $Password); * Adds a user * (Changes / copies a user, part II) */ -$queries_for_display = isset($queries_for_display)? $queries_for_display : null; +$queries_for_display = isset($queries_for_display)? $queries_for_display : null; +$sql_query = isset($sql_query)? $sql_query : null; PMA_updateDataForAddUser( $dbname, $username, $hostname, $_add_user_error, $password, $message, $queries, $queries_for_display, - $cfgRelation['menuswork'] + $cfgRelation['menuswork'], + $sql_query ); /** @@ -275,7 +298,9 @@ if (isset($_REQUEST['viewing_mode']) && $_REQUEST['viewing_mode'] == 'db') { /** * Displays the page */ -$response->addHTML(PMA_getHtmlForUserGroupDialog($username, $cfgRelation['menuswork'])); +$response->addHTML( + PMA_getHtmlForUserGroupDialog($username, $cfgRelation['menuswork']) +); // export user definition if (isset($_REQUEST['export']) From e50d16eb20e4cc152c18acb62dab3a593daf8a92 Mon Sep 17 00:00:00 2001 From: xmujay Date: Sat, 10 Aug 2013 20:14:29 +0800 Subject: [PATCH 05/10] refactor PMA_updateDataForDBInfo, moving parameter into function --- libraries/server_privileges.lib.php | 25 +++++++++++++++++-------- server_privileges.php | 10 ++-------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index ee9c850a83..590c3b4b61 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -3269,18 +3269,20 @@ function PMA_updateDataForAddUser( /** * Update DB information: DB, Table, isWildcard * - * @param string &$dbname database name - * @param string &$tablename table name - * @param string &$db_and_table db_and_table - * @param bool &$dbname_is_wildcard is Wild card - * @param string &$pred_dbname Pre database name + * @param string $dbname database name + * @param string $tablename table name + * @param string $db_and_table db_and_table + * @param bool $dbname_is_wildcard is Wild card * - * @return null + * @return array */ function PMA_updateDataForDBInfo( - &$dbname, &$tablename, &$db_and_table, - &$dbname_is_wildcard, &$pred_dbname ) { + $dbname = null; + $tablename = null; + $db_and_table = null; + $dbname_is_wildcard = null; + /** * Checks if a dropdown box has been used for selecting a database / table */ @@ -3323,6 +3325,13 @@ function PMA_updateDataForDBInfo( $dbname_is_wildcard = false; } } + + return array( + isset($dbname)? $dbname : null, + isset($tablename)? $tablename : null, + isset($db_and_table)? $db_and_table : null, + isset($dbname_is_wildcard)? $dbname_is_wildcard : null, + ); } /** diff --git a/server_privileges.php b/server_privileges.php index 19d9e87aac..d4e54a1442 100644 --- a/server_privileges.php +++ b/server_privileges.php @@ -122,15 +122,9 @@ $strPrivDescUsage = __('No privileges.'); /** * Get DB information: dbname, tablename, db_and_table, dbname_is_wildcard */ -$dbname = isset($dbname)? $dbname : null; -$tablename = isset($tablename)? $tablename : null; -$db_and_table = isset($db_and_table)? $db_and_table : null; -$dbname_is_wildcard = isset($dbname_is_wildcard)? $dbname_is_wildcard : null; -$pred_dbname = isset($pred_dbname)? $pred_dbname : null; -PMA_updateDataForDBInfo( - $dbname, $tablename, $db_and_table, $dbname_is_wildcard, $pred_dbname -); +list($dbname, $tablename, $db_and_table, $dbname_is_wildcard) + = PMA_updateDataForDBInfo(); /** * Checks if the user is allowed to do what he tries to... From 6baf13407668faac8bac27556e67ce8a8f28722e Mon Sep 17 00:00:00 2001 From: xmujay Date: Sat, 10 Aug 2013 20:21:27 +0800 Subject: [PATCH 06/10] refactor function PMA_updateDataForChangeOrCopyUser --- libraries/server_privileges.lib.php | 13 ++++++++----- server_privileges.php | 10 ++++------ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index 590c3b4b61..9adeaf26ce 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -3053,15 +3053,16 @@ function PMA_updatePrivileges($username, $hostname, $tablename, $dbname) /** * Get List of information: Changes / copies a user * - * @param array &$row query result rows - * @param array &$queries queries - * @param string &$password password * @param string $Password Recent MySQL versions Password * - * @return null + * @return array() */ -function PMA_updateDataForChangeOrCopyUser(&$row, &$queries, &$password, $Password) +function PMA_updateDataForChangeOrCopyUser($Password) { + $row = null; + $queries = null; + $password = null; + if (isset($_REQUEST['change_copy'])) { $user_host_condition = ' WHERE `User` = ' . "'". PMA_Util::sqlAddSlashes($_REQUEST['old_username']) . "'" @@ -3087,6 +3088,8 @@ function PMA_updateDataForChangeOrCopyUser(&$row, &$queries, &$password, $Passwo $queries = array(); } } + + return array($row, $queries, $password); } /** diff --git a/server_privileges.php b/server_privileges.php index d4e54a1442..9e4c3fc2c3 100644 --- a/server_privileges.php +++ b/server_privileges.php @@ -138,12 +138,10 @@ if (! $is_superuser) { /** * Changes / copies a user, part I */ -$row = isset($row)? $row : null; -$queries = isset($queries)? $queries : null; -$password = isset($password)? $password : null; -$Password = isset($Password)? $Password : null; - -PMA_updateDataForChangeOrCopyUser($row, $queries, $password, $Password); +list($row, $queries, $password) + = PMA_updateDataForChangeOrCopyUser( + isset($Password)? $Password : null + ); /** * Adds a user From 199272ab875ae85078ebf867f4d9d468de46fc01 Mon Sep 17 00:00:00 2001 From: xmujay Date: Sat, 10 Aug 2013 21:20:26 +0800 Subject: [PATCH 07/10] refactor function PMA_updateDataForAddUser --- libraries/server_privileges.lib.php | 25 ++++++++++++----------- server_privileges.php | 31 ++++++++++++++++------------- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index 9adeaf26ce..2e6ff0648a 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -3178,24 +3178,23 @@ function PMA_updateDataForQueries(&$queries, $queries_for_display) /** * update Data for information: Adds a user * - * @param string &$dbname db name - * @param string &$username user name - * @param string &$hostname host name - * @param bool &$_add_user_error store add_user_error + * @param string $dbname db name + * @param string $username user name + * @param string $hostname host name * @param string $password password - * @param array &$message message to display - * @param array &$queries queries array - * @param array &$queries_for_display queries arry for display * @param bool $is_menuwork is_menuwork set? - * @param string &$sql_query sql_query to display * - * @return null + * @return array */ function PMA_updateDataForAddUser( - &$dbname, &$username, &$hostname, &$_add_user_error, - $password, &$message, &$queries, &$queries_for_display, - $is_menuwork, &$sql_query + $dbname, $username, $hostname, + $password, $is_menuwork ) { + $_add_user_error = false; + $message = null; + $queries = null; + $queries_for_display = null; + $sql_query = null; if (isset($_REQUEST['adduser_submit']) || isset($_REQUEST['change_copy'])) { $sql_query = ''; if ($_POST['pred_username'] == 'any') { @@ -3267,6 +3266,8 @@ function PMA_updateDataForAddUser( unset($res, $real_sql_query); } } + + return array($message, $queries, $queries_for_display, $sql_query, $_add_user_error); } /** diff --git a/server_privileges.php b/server_privileges.php index 9e4c3fc2c3..6070f9c0a2 100644 --- a/server_privileges.php +++ b/server_privileges.php @@ -122,7 +122,6 @@ $strPrivDescUsage = __('No privileges.'); /** * Get DB information: dbname, tablename, db_and_table, dbname_is_wildcard */ - list($dbname, $tablename, $db_and_table, $dbname_is_wildcard) = PMA_updateDataForDBInfo(); @@ -146,16 +145,18 @@ list($row, $queries, $password) /** * Adds a user * (Changes / copies a user, part II) - */ -$queries_for_display = isset($queries_for_display)? $queries_for_display : null; -$sql_query = isset($sql_query)? $sql_query : null; -PMA_updateDataForAddUser( - $dbname, $username, $hostname, - $_add_user_error, $password, - $message, $queries, $queries_for_display, - $cfgRelation['menuswork'], - $sql_query -); + */ +list($ret_message, $ret_queries, $queries_for_display, $sql_query, $_add_user_error) + = PMA_updateDataForAddUser( + isset($dbname)? $dbname : null, + isset($username)? $username : null, + isset($hostname)? $hostname : null, + isset($password)? $password : null, + $cfgRelation['menuswork'] + ); +//update the old variables +if(isset($ret_queries)) $queries = $ret_queries; +if(isset($ret_message)) $message = $ret_message; /** * Changes / copies a user, part III @@ -171,8 +172,8 @@ if (isset($_REQUEST['change_copy'])) { */ if (! empty($_POST['update_privs'])) { list($sql_query, $message) = PMA_updatePrivileges( - $username, - $hostname, + (isset($username) ? $username : ''), + (isset($hostname) ? $hostname : ''), (isset($tablename) ? $tablename : ''), (isset($dbname) ? $dbname : '') ); @@ -291,7 +292,9 @@ if (isset($_REQUEST['viewing_mode']) && $_REQUEST['viewing_mode'] == 'db') { * Displays the page */ $response->addHTML( - PMA_getHtmlForUserGroupDialog($username, $cfgRelation['menuswork']) + PMA_getHtmlForUserGroupDialog( + isset($username)? $username : null, + $cfgRelation['menuswork']) ); // export user definition From fc0d48dc310e81e7c70f83ee817b8b6c2e211ab6 Mon Sep 17 00:00:00 2001 From: xmujay Date: Sat, 10 Aug 2013 21:40:20 +0800 Subject: [PATCH 08/10] fix code styles --- libraries/server_privileges.lib.php | 47 +++++++++++++++-------------- server_privileges.php | 23 ++++++++++---- 2 files changed, 41 insertions(+), 29 deletions(-) diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index 2e6ff0648a..4c0b410d08 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -3053,7 +3053,7 @@ function PMA_updatePrivileges($username, $hostname, $tablename, $dbname) /** * Get List of information: Changes / copies a user * - * @param string $Password Recent MySQL versions Password + * @param string $Password Recent MySQL versions Password * * @return array() */ @@ -3095,11 +3095,11 @@ function PMA_updateDataForChangeOrCopyUser($Password) /** * Update Data for information: Deletes users * - * @param array &$queries queries array + * @param array $queries queries array * - * @return null + * @return array */ -function PMA_updateDataForDeleteUsers(&$queries) +function PMA_updateDataForDeleteUsers($queries) { if (isset($_REQUEST['change_copy'])) { $selected_usr = array( @@ -3127,17 +3127,17 @@ function PMA_updateDataForDeleteUsers(&$queries) $GLOBALS['reload'] = true; } } + return $queries; } /** * update Message For Reload * - * @param array &$message sql execute return message - * - * @return null + * @return array */ -function PMA_updateMessageForReload(&$message) +function PMA_updateMessageForReload() { + $message = null; if (isset($_REQUEST['flush_privileges'])) { $sql_query = 'FLUSH PRIVILEGES;'; $GLOBALS['dbi']->query($sql_query); @@ -3149,17 +3149,19 @@ function PMA_updateMessageForReload(&$message) if (isset($_REQUEST['validate_username'])) { $message = PMA_Message::success(); } + + return $message; } /** * update Data For Queries from queries_for_display * - * @param array &$queries queries array + * @param array $queries queries array * @param array $queries_for_display queries arry for display * * @return null */ -function PMA_updateDataForQueries(&$queries, $queries_for_display) +function PMA_updateDataForQueries($queries, $queries_for_display) { $tmp_count = 0; foreach ($queries as $sql_query) { @@ -3173,16 +3175,18 @@ function PMA_updateDataForQueries(&$queries, $queries_for_display) } $tmp_count++; } + + return $queries; } /** * update Data for information: Adds a user * - * @param string $dbname db name - * @param string $username user name - * @param string $hostname host name - * @param string $password password - * @param bool $is_menuwork is_menuwork set? + * @param string $dbname db name + * @param string $username user name + * @param string $hostname host name + * @param string $password password + * @param bool $is_menuwork is_menuwork set? * * @return array */ @@ -3267,21 +3271,18 @@ function PMA_updateDataForAddUser( } } - return array($message, $queries, $queries_for_display, $sql_query, $_add_user_error); + return array( + $message, $queries, $queries_for_display, $sql_query, $_add_user_error + ); } /** * Update DB information: DB, Table, isWildcard * - * @param string $dbname database name - * @param string $tablename table name - * @param string $db_and_table db_and_table - * @param bool $dbname_is_wildcard is Wild card - * * @return array */ -function PMA_updateDataForDBInfo( -) { +function PMA_updateDataForDBInfo() +{ $dbname = null; $tablename = null; $db_and_table = null; diff --git a/server_privileges.php b/server_privileges.php index 6070f9c0a2..e0b5a6dc49 100644 --- a/server_privileges.php +++ b/server_privileges.php @@ -155,8 +155,14 @@ list($ret_message, $ret_queries, $queries_for_display, $sql_query, $_add_user_er $cfgRelation['menuswork'] ); //update the old variables -if(isset($ret_queries)) $queries = $ret_queries; -if(isset($ret_message)) $message = $ret_message; +if (isset($ret_queries)) { + $queries = $ret_queries; + unset($ret_queries); +} +if (isset($ret_message)) { + $message = $ret_message; + unset($ret_message); +} /** * Changes / copies a user, part III @@ -215,7 +221,7 @@ if (isset($_REQUEST['change_pw'])) { if (isset($_REQUEST['delete']) || (isset($_REQUEST['change_copy']) && $_REQUEST['mode'] < 4) ) { - PMA_updateDataForDeleteUsers($queries); + $queries = PMA_updateDataForDeleteUsers($queries); if (empty($_REQUEST['change_copy'])) { list($sql_query, $message) = PMA_deleteUser($queries); } @@ -225,7 +231,7 @@ if (isset($_REQUEST['delete']) * Changes / copies a user, part V */ if (isset($_REQUEST['change_copy'])) { - PMA_updateDataForQueries($queries, $queries_for_display); + $queries = PMA_updateDataForQueries($queries, $queries_for_display); $message = PMA_Message::success(); $sql_query = join("\n", $queries); } @@ -233,7 +239,11 @@ if (isset($_REQUEST['change_copy'])) { /** * Reloads the privilege tables into memory */ -PMA_updateMessageForReload($message); +$message_ret = PMA_updateMessageForReload(); +if (isset($message_ret)) { + $message = $message_ret; + unset($message_ret); +} /** * If we are in an Ajax request for Create User/Edit User/Revoke User/ @@ -294,7 +304,8 @@ if (isset($_REQUEST['viewing_mode']) && $_REQUEST['viewing_mode'] == 'db') { $response->addHTML( PMA_getHtmlForUserGroupDialog( isset($username)? $username : null, - $cfgRelation['menuswork']) + $cfgRelation['menuswork'] + ) ); // export user definition From 80cee56e6bca795ea4018aa9f717eb348d27ebed Mon Sep 17 00:00:00 2001 From: xmujay Date: Sat, 10 Aug 2013 23:15:28 +0800 Subject: [PATCH 09/10] rename function for better readability --- libraries/server_privileges.lib.php | 10 +++++----- server_privileges.php | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index 4c0b410d08..0a0c1394f9 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -3057,7 +3057,7 @@ function PMA_updatePrivileges($username, $hostname, $tablename, $dbname) * * @return array() */ -function PMA_updateDataForChangeOrCopyUser($Password) +function PMA_getDataForChangeOrCopyUser($Password) { $row = null; $queries = null; @@ -3099,7 +3099,7 @@ function PMA_updateDataForChangeOrCopyUser($Password) * * @return array */ -function PMA_updateDataForDeleteUsers($queries) +function PMA_getDataForDeleteUsers($queries) { if (isset($_REQUEST['change_copy'])) { $selected_usr = array( @@ -3161,7 +3161,7 @@ function PMA_updateMessageForReload() * * @return null */ -function PMA_updateDataForQueries($queries, $queries_for_display) +function PMA_getDataForQueries($queries, $queries_for_display) { $tmp_count = 0; foreach ($queries as $sql_query) { @@ -3190,7 +3190,7 @@ function PMA_updateDataForQueries($queries, $queries_for_display) * * @return array */ -function PMA_updateDataForAddUser( +function PMA_getDataForAddUser( $dbname, $username, $hostname, $password, $is_menuwork ) { @@ -3281,7 +3281,7 @@ function PMA_updateDataForAddUser( * * @return array */ -function PMA_updateDataForDBInfo() +function PMA_getDataForDBInfo() { $dbname = null; $tablename = null; diff --git a/server_privileges.php b/server_privileges.php index e0b5a6dc49..185699dd97 100644 --- a/server_privileges.php +++ b/server_privileges.php @@ -123,7 +123,7 @@ $strPrivDescUsage = __('No privileges.'); * Get DB information: dbname, tablename, db_and_table, dbname_is_wildcard */ list($dbname, $tablename, $db_and_table, $dbname_is_wildcard) - = PMA_updateDataForDBInfo(); + = PMA_getDataForDBInfo(); /** * Checks if the user is allowed to do what he tries to... @@ -138,7 +138,7 @@ if (! $is_superuser) { * Changes / copies a user, part I */ list($row, $queries, $password) - = PMA_updateDataForChangeOrCopyUser( + = PMA_getDataForChangeOrCopyUser( isset($Password)? $Password : null ); @@ -147,7 +147,7 @@ list($row, $queries, $password) * (Changes / copies a user, part II) */ list($ret_message, $ret_queries, $queries_for_display, $sql_query, $_add_user_error) - = PMA_updateDataForAddUser( + = PMA_getDataForAddUser( isset($dbname)? $dbname : null, isset($username)? $username : null, isset($hostname)? $hostname : null, @@ -221,7 +221,7 @@ if (isset($_REQUEST['change_pw'])) { if (isset($_REQUEST['delete']) || (isset($_REQUEST['change_copy']) && $_REQUEST['mode'] < 4) ) { - $queries = PMA_updateDataForDeleteUsers($queries); + $queries = PMA_getDataForDeleteUsers($queries); if (empty($_REQUEST['change_copy'])) { list($sql_query, $message) = PMA_deleteUser($queries); } @@ -231,7 +231,7 @@ if (isset($_REQUEST['delete']) * Changes / copies a user, part V */ if (isset($_REQUEST['change_copy'])) { - $queries = PMA_updateDataForQueries($queries, $queries_for_display); + $queries = PMA_getDataForQueries($queries, $queries_for_display); $message = PMA_Message::success(); $sql_query = join("\n", $queries); } From c93b7dfdd52aab45a65d52070a86fd0fb0fd6067 Mon Sep 17 00:00:00 2001 From: xmujay Date: Sun, 11 Aug 2013 09:55:11 +0800 Subject: [PATCH 10/10] remove unneeded parameter and return values --- libraries/server_privileges.lib.php | 10 ++++------ server_privileges.php | 5 +---- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index 0a0c1394f9..0ef8679eca 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -3053,11 +3053,9 @@ function PMA_updatePrivileges($username, $hostname, $tablename, $dbname) /** * Get List of information: Changes / copies a user * - * @param string $Password Recent MySQL versions Password - * * @return array() */ -function PMA_getDataForChangeOrCopyUser($Password) +function PMA_getDataForChangeOrCopyUser() { $row = null; $queries = null; @@ -3089,7 +3087,7 @@ function PMA_getDataForChangeOrCopyUser($Password) } } - return array($row, $queries, $password); + return array($queries, $password); } /** @@ -3334,8 +3332,8 @@ function PMA_getDataForDBInfo() return array( isset($dbname)? $dbname : null, isset($tablename)? $tablename : null, - isset($db_and_table)? $db_and_table : null, - isset($dbname_is_wildcard)? $dbname_is_wildcard : null, + $db_and_table, + $dbname_is_wildcard, ); } diff --git a/server_privileges.php b/server_privileges.php index 185699dd97..675fe8cf31 100644 --- a/server_privileges.php +++ b/server_privileges.php @@ -137,10 +137,7 @@ if (! $is_superuser) { /** * Changes / copies a user, part I */ -list($row, $queries, $password) - = PMA_getDataForChangeOrCopyUser( - isset($Password)? $Password : null - ); +list($queries, $password) = PMA_getDataForChangeOrCopyUser(); /** * Adds a user