diff options
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/Server')
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/Server/Plugin.php | 274 | ||||
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/Server/Plugins.php | 74 | ||||
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/Server/Privileges.php | 5649 | ||||
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/Server/Select.php | 128 | ||||
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/Server/Status/Data.php | 430 | ||||
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/Server/Status/Monitor.php | 546 | ||||
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/Server/UserGroups.php | 390 | ||||
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/Server/Users.php | 64 |
8 files changed, 0 insertions, 7555 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/Server/Plugin.php b/srcs/phpmyadmin/libraries/classes/Server/Plugin.php deleted file mode 100644 index 9b45297..0000000 --- a/srcs/phpmyadmin/libraries/classes/Server/Plugin.php +++ /dev/null @@ -1,274 +0,0 @@ -<?php -/** - * Server Plugin value object - * @package PhpMyAdmin\Server - */ -declare(strict_types=1); - -namespace PhpMyAdmin\Server; - -/** - * Server Plugin value object - * @package PhpMyAdmin\Server - */ -final class Plugin -{ - /** - * @var string - */ - private $name; - - /** - * @var string|null - */ - private $version; - - /** - * @var string - */ - private $status; - - /** - * @var string - */ - private $type; - - /** - * @var string|null - */ - private $typeVersion; - - /** - * @var string|null - */ - private $library; - - /** - * @var string|null - */ - private $libraryVersion; - - /** - * @var string|null - */ - private $author; - - /** - * @var string|null - */ - private $description; - - /** - * @var string - */ - private $license; - - /** - * @var string|null - */ - private $loadOption; - - /** - * @var string|null - */ - private $maturity; - - /** - * @var string|null - */ - private $authVersion; - - /** - * @param string $name Name of the plugin - * @param string|null $version Version from the plugin's general type descriptor - * @param string $status Plugin status - * @param string $type Type of plugin - * @param string|null $typeVersion Version from the plugin's type-specific descriptor - * @param string|null $library Plugin's shared object file name - * @param string|null $libraryVersion Version from the plugin's API interface - * @param string|null $author Author of the plugin - * @param string|null $description Description - * @param string $license Plugin's licence - * @param string|null $loadOption How the plugin was loaded - * @param string|null $maturity Plugin's maturity level - * @param string|null $authVersion Plugin's version as determined by the plugin author - */ - private function __construct( - string $name, - ?string $version, - string $status, - string $type, - ?string $typeVersion, - ?string $library, - ?string $libraryVersion, - ?string $author, - ?string $description, - string $license, - ?string $loadOption, - ?string $maturity, - ?string $authVersion - ) { - $this->name = $name; - $this->version = $version; - $this->status = $status; - $this->type = $type; - $this->typeVersion = $typeVersion; - $this->library = $library; - $this->libraryVersion = $libraryVersion; - $this->author = $author; - $this->description = $description; - $this->license = $license; - $this->loadOption = $loadOption; - $this->maturity = $maturity; - $this->authVersion = $authVersion; - } - - /** - * @param array $state array with the properties - * @return self - */ - public static function fromState(array $state): self - { - return new self( - $state['name'] ?? '', - $state['version'] ?? null, - $state['status'] ?? '', - $state['type'] ?? '', - $state['typeVersion'] ?? null, - $state['library'] ?? null, - $state['libraryVersion'] ?? null, - $state['author'] ?? null, - $state['description'] ?? null, - $state['license'] ?? '', - $state['loadOption'] ?? null, - $state['maturity'] ?? null, - $state['authVersion'] ?? null - ); - } - - /** - * @return array - */ - public function toArray(): array - { - return [ - 'name' => $this->getName(), - 'version' => $this->getVersion(), - 'status' => $this->getStatus(), - 'type' => $this->getType(), - 'type_version' => $this->getTypeVersion(), - 'library' => $this->getLibrary(), - 'library_version' => $this->getLibraryVersion(), - 'author' => $this->getAuthor(), - 'description' => $this->getDescription(), - 'license' => $this->getLicense(), - 'load_option' => $this->getLoadOption(), - 'maturity' => $this->getMaturity(), - 'auth_version' => $this->getAuthVersion(), - ]; - } - - /** - * @return string - */ - public function getName(): string - { - return $this->name; - } - - /** - * @return string|null - */ - public function getVersion(): ?string - { - return $this->version; - } - - /** - * @return string - */ - public function getStatus(): string - { - return $this->status; - } - - /** - * @return string - */ - public function getType(): string - { - return $this->type; - } - - /** - * @return string|null - */ - public function getTypeVersion(): ?string - { - return $this->typeVersion; - } - - /** - * @return string|null - */ - public function getLibrary(): ?string - { - return $this->library; - } - - /** - * @return string|null - */ - public function getLibraryVersion(): ?string - { - return $this->libraryVersion; - } - - /** - * @return string|null - */ - public function getAuthor(): ?string - { - return $this->author; - } - - /** - * @return string|null - */ - public function getDescription(): ?string - { - return $this->description; - } - - /** - * @return string - */ - public function getLicense(): string - { - return $this->license; - } - - /** - * @return string|null - */ - public function getLoadOption(): ?string - { - return $this->loadOption; - } - - /** - * @return string|null - */ - public function getMaturity(): ?string - { - return $this->maturity; - } - - /** - * @return string|null - */ - public function getAuthVersion(): ?string - { - return $this->authVersion; - } -} diff --git a/srcs/phpmyadmin/libraries/classes/Server/Plugins.php b/srcs/phpmyadmin/libraries/classes/Server/Plugins.php deleted file mode 100644 index eb8e85a..0000000 --- a/srcs/phpmyadmin/libraries/classes/Server/Plugins.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php -/** - * Class Plugins - * @package PhpMyAdmin\Server - */ -declare(strict_types=1); - -namespace PhpMyAdmin\Server; - -use PhpMyAdmin\DatabaseInterface; - -/** - * Class Plugins - * @package PhpMyAdmin\Server - */ -class Plugins -{ - /** - * @var DatabaseInterface - */ - private $dbi; - - /** - * @param DatabaseInterface $dbi DatabaseInterface instance - */ - public function __construct(DatabaseInterface $dbi) - { - $this->dbi = $dbi; - } - - /** - * @return Plugin[] - */ - public function getAll(): array - { - global $cfg; - - $sql = 'SHOW PLUGINS'; - if (! $cfg['Server']['DisableIS']) { - $sql = 'SELECT * FROM information_schema.PLUGINS ORDER BY PLUGIN_TYPE, PLUGIN_NAME'; - } - $result = $this->dbi->query($sql); - $plugins = []; - while ($row = $this->dbi->fetchAssoc($result)) { - $plugins[] = $this->mapRowToPlugin($row); - } - $this->dbi->freeResult($result); - - return $plugins; - } - - /** - * @param array $row Row fetched from database - * @return Plugin - */ - private function mapRowToPlugin(array $row): Plugin - { - return Plugin::fromState([ - 'name' => $row['PLUGIN_NAME'] ?? $row['Name'], - 'version' => $row['PLUGIN_VERSION'] ?? null, - 'status' => $row['PLUGIN_STATUS'] ?? $row['Status'], - 'type' => $row['PLUGIN_TYPE'] ?? $row['Type'], - 'typeVersion' => $row['PLUGIN_TYPE_VERSION'] ?? null, - 'library' => $row['PLUGIN_LIBRARY'] ?? $row['Library'] ?? null, - 'libraryVersion' => $row['PLUGIN_LIBRARY_VERSION'] ?? null, - 'author' => $row['PLUGIN_AUTHOR'] ?? null, - 'description' => $row['PLUGIN_DESCRIPTION'] ?? null, - 'license' => $row['PLUGIN_LICENSE'] ?? $row['License'], - 'loadOption' => $row['LOAD_OPTION'] ?? null, - 'maturity' => $row['PLUGIN_MATURITY'] ?? null, - 'authVersion' => $row['PLUGIN_AUTH_VERSION'] ?? null, - ]); - } -} diff --git a/srcs/phpmyadmin/libraries/classes/Server/Privileges.php b/srcs/phpmyadmin/libraries/classes/Server/Privileges.php deleted file mode 100644 index 1e50fbb..0000000 --- a/srcs/phpmyadmin/libraries/classes/Server/Privileges.php +++ /dev/null @@ -1,5649 +0,0 @@ -<?php -/* vim: set expandtab sw=4 ts=4 sts=4: */ -/** - * set of functions with the Privileges section in pma - * - * @package PhpMyAdmin - */ -declare(strict_types=1); - -namespace PhpMyAdmin\Server; - -use PhpMyAdmin\Core; -use PhpMyAdmin\DatabaseInterface; -use PhpMyAdmin\Display\ChangePassword; -use PhpMyAdmin\Message; -use PhpMyAdmin\Relation; -use PhpMyAdmin\RelationCleanup; -use PhpMyAdmin\Response; -use PhpMyAdmin\Template; -use PhpMyAdmin\Url; -use PhpMyAdmin\Util; - -/** - * Privileges class - * - * @package PhpMyAdmin - */ -class Privileges -{ - /** - * @var Template - */ - public $template; - - /** - * @var RelationCleanup - */ - private $relationCleanup; - - /** - * @var DatabaseInterface - */ - public $dbi; - - /** - * @var Relation - */ - public $relation; - - /** - * Privileges constructor. - * - * @param Template $template Template object - * @param DatabaseInterface $dbi DatabaseInterface object - * @param Relation $relation Relation object - * @param RelationCleanup $relationCleanup RelationCleanup object - */ - public function __construct( - Template $template, - $dbi, - Relation $relation, - RelationCleanup $relationCleanup - ) { - $this->template = $template; - $this->dbi = $dbi; - $this->relation = $relation; - $this->relationCleanup = $relationCleanup; - } - - /** - * Get Html for User Group Dialog - * - * @param string $username username - * @param bool $is_menuswork Is menuswork set in configuration - * - * @return string html - */ - public function getHtmlForUserGroupDialog($username, $is_menuswork) - { - $html = ''; - if (! empty($_GET['edit_user_group_dialog']) && $is_menuswork) { - $dialog = $this->getHtmlToChooseUserGroup($username); - $response = Response::getInstance(); - if ($response->isAjax()) { - $response->addJSON('message', $dialog); - exit; - } else { - $html .= $dialog; - } - } - - return $html; - } - - /** - * Escapes wildcard in a database+table specification - * before using it in a GRANT statement. - * - * Escaping a wildcard character in a GRANT is only accepted at the global - * or database level, not at table level; this is why I remove - * the escaping character. Internally, in mysql.tables_priv.Db there are - * no escaping (for example test_db) but in mysql.db you'll see test\_db - * for a db-specific privilege. - * - * @param string $dbname Database name - * @param string $tablename Table name - * - * @return string the escaped (if necessary) database.table - */ - public function wildcardEscapeForGrant($dbname, $tablename) - { - if (strlen($dbname) === 0) { - $db_and_table = '*.*'; - } else { - if (strlen($tablename) > 0) { - $db_and_table = Util::backquote( - Util::unescapeMysqlWildcards($dbname) - ) - . '.' . Util::backquote($tablename); - } else { - $db_and_table = Util::backquote($dbname) . '.*'; - } - } - return $db_and_table; - } - - /** - * Generates a condition on the user name - * - * @param string $initial the user's initial - * - * @return string the generated condition - */ - public function rangeOfUsers($initial = '') - { - // strtolower() is used because the User field - // might be BINARY, so LIKE would be case sensitive - if ($initial === null || $initial === '') { - return ''; - } - - $ret = " WHERE `User` LIKE '" - . $this->dbi->escapeString($initial) . "%'" - . " OR `User` LIKE '" - . $this->dbi->escapeString(mb_strtolower($initial)) - . "%'"; - return $ret; - } // end function - - /** - * Formats privilege name for a display - * - * @param array $privilege Privilege information - * @param boolean $html Whether to use HTML - * - * @return string - */ - public function formatPrivilege(array $privilege, $html) - { - if ($html) { - return '<dfn title="' . $privilege[2] . '">' - . $privilege[1] . '</dfn>'; - } - - return $privilege[1]; - } - - /** - * Parses privileges into an array, it modifies the array - * - * @param array $row Results row from - * - * @return void - */ - public function fillInTablePrivileges(array &$row) - { - $row1 = $this->dbi->fetchSingleRow( - 'SHOW COLUMNS FROM `mysql`.`tables_priv` LIKE \'Table_priv\';', - 'ASSOC' - ); - // note: in MySQL 5.0.3 we get "Create View', 'Show view'; - // the View for Create is spelled with uppercase V - // the view for Show is spelled with lowercase v - // and there is a space between the words - - $av_grants = explode( - '\',\'', - mb_substr( - $row1['Type'], - mb_strpos($row1['Type'], '(') + 2, - mb_strpos($row1['Type'], ')') - - mb_strpos($row1['Type'], '(') - 3 - ) - ); - - $users_grants = explode(',', $row['Table_priv']); - - foreach ($av_grants as $current_grant) { - $row[$current_grant . '_priv'] - = in_array($current_grant, $users_grants) ? 'Y' : 'N'; - } - unset($row['Table_priv']); - } - - - /** - * Extracts the privilege information of a priv table row - * - * @param array|null $row the row - * @param boolean $enableHTML add <dfn> tag with tooltips - * @param boolean $tablePrivs whether row contains table privileges - * - * @global resource $user_link the database connection - * - * @return array - */ - public function extractPrivInfo($row = null, $enableHTML = false, $tablePrivs = false) - { - if ($tablePrivs) { - $grants = $this->getTableGrantsArray(); - } else { - $grants = $this->getGrantsArray(); - } - - if ($row !== null && isset($row['Table_priv'])) { - $this->fillInTablePrivileges($row); - } - - $privs = []; - $allPrivileges = true; - foreach ($grants as $current_grant) { - if (($row !== null && isset($row[$current_grant[0]])) - || ($row === null && isset($GLOBALS[$current_grant[0]])) - ) { - if (($row !== null && $row[$current_grant[0]] == 'Y') - || ($row === null - && ($GLOBALS[$current_grant[0]] == 'Y' - || (is_array($GLOBALS[$current_grant[0]]) - && count($GLOBALS[$current_grant[0]]) == $_REQUEST['column_count'] - && empty($GLOBALS[$current_grant[0] . '_none'])))) - ) { - $privs[] = $this->formatPrivilege($current_grant, $enableHTML); - } elseif (! empty($GLOBALS[$current_grant[0]]) - && is_array($GLOBALS[$current_grant[0]]) - && empty($GLOBALS[$current_grant[0] . '_none']) - ) { - // Required for proper escaping of ` (backtick) in a column name - $grant_cols = array_map( - function ($val) { - return Util::backquote($val); - }, - $GLOBALS[$current_grant[0]] - ); - - $privs[] = $this->formatPrivilege($current_grant, $enableHTML) - . ' (' . implode(', ', $grant_cols) . ')'; - } else { - $allPrivileges = false; - } - } - } - if (empty($privs)) { - if ($enableHTML) { - $privs[] = '<dfn title="' . __('No privileges.') . '">USAGE</dfn>'; - } else { - $privs[] = 'USAGE'; - } - } elseif ($allPrivileges - && (! isset($_POST['grant_count']) || count($privs) == $_POST['grant_count']) - ) { - if ($enableHTML) { - $privs = ['<dfn title="' - . __('Includes all privileges except GRANT.') - . '">ALL PRIVILEGES</dfn>', - ]; - } else { - $privs = ['ALL PRIVILEGES']; - } - } - return $privs; - } - - /** - * Returns an array of table grants and their descriptions - * - * @return array array of table grants - */ - public function getTableGrantsArray() - { - return [ - [ - 'Delete', - 'DELETE', - $GLOBALS['strPrivDescDelete'], - ], - [ - 'Create', - 'CREATE', - $GLOBALS['strPrivDescCreateTbl'], - ], - [ - 'Drop', - 'DROP', - $GLOBALS['strPrivDescDropTbl'], - ], - [ - 'Index', - 'INDEX', - $GLOBALS['strPrivDescIndex'], - ], - [ - 'Alter', - 'ALTER', - $GLOBALS['strPrivDescAlter'], - ], - [ - 'Create View', - 'CREATE_VIEW', - $GLOBALS['strPrivDescCreateView'], - ], - [ - 'Show view', - 'SHOW_VIEW', - $GLOBALS['strPrivDescShowView'], - ], - [ - 'Trigger', - 'TRIGGER', - $GLOBALS['strPrivDescTrigger'], - ], - ]; - } - - /** - * Get the grants array which contains all the privilege types - * and relevant grant messages - * - * @return array - */ - public function getGrantsArray() - { - return [ - [ - 'Select_priv', - 'SELECT', - __('Allows reading data.'), - ], - [ - 'Insert_priv', - 'INSERT', - __('Allows inserting and replacing data.'), - ], - [ - 'Update_priv', - 'UPDATE', - __('Allows changing data.'), - ], - [ - 'Delete_priv', - 'DELETE', - __('Allows deleting data.'), - ], - [ - 'Create_priv', - 'CREATE', - __('Allows creating new databases and tables.'), - ], - [ - 'Drop_priv', - 'DROP', - __('Allows dropping databases and tables.'), - ], - [ - 'Reload_priv', - 'RELOAD', - __('Allows reloading server settings and flushing the server\'s caches.'), - ], - [ - 'Shutdown_priv', - 'SHUTDOWN', - __('Allows shutting down the server.'), - ], - [ - 'Process_priv', - 'PROCESS', - __('Allows viewing processes of all users.'), - ], - [ - 'File_priv', - 'FILE', - __('Allows importing data from and exporting data into files.'), - ], - [ - 'References_priv', - 'REFERENCES', - __('Has no effect in this MySQL version.'), - ], - [ - 'Index_priv', - 'INDEX', - __('Allows creating and dropping indexes.'), - ], - [ - 'Alter_priv', - 'ALTER', - __('Allows altering the structure of existing tables.'), - ], - [ - 'Show_db_priv', - 'SHOW DATABASES', - __('Gives access to the complete list of databases.'), - ], - [ - '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.' - ), - ], - [ - 'Create_tmp_table_priv', - 'CREATE TEMPORARY TABLES', - __('Allows creating temporary tables.'), - ], - [ - 'Lock_tables_priv', - 'LOCK TABLES', - __('Allows locking tables for the current thread.'), - ], - [ - 'Repl_slave_priv', - 'REPLICATION SLAVE', - __('Needed for the replication slaves.'), - ], - [ - 'Repl_client_priv', - 'REPLICATION CLIENT', - __('Allows the user to ask where the slaves / masters are.'), - ], - [ - 'Create_view_priv', - 'CREATE VIEW', - __('Allows creating new views.'), - ], - [ - 'Event_priv', - 'EVENT', - __('Allows to set up events for the event scheduler.'), - ], - [ - 'Trigger_priv', - 'TRIGGER', - __('Allows creating and dropping triggers.'), - ], - // for table privs: - [ - 'Create View_priv', - 'CREATE VIEW', - __('Allows creating new views.'), - ], - [ - 'Show_view_priv', - 'SHOW VIEW', - __('Allows performing SHOW CREATE VIEW queries.'), - ], - // for table privs: - [ - 'Show view_priv', - 'SHOW VIEW', - __('Allows performing SHOW CREATE VIEW queries.'), - ], - [ - 'Delete_history_priv', - 'DELETE HISTORY', - $GLOBALS['strPrivDescDeleteHistoricalRows'], - ], - [ - 'Delete versioning rows_priv', - 'DELETE HISTORY', - $GLOBALS['strPrivDescDeleteHistoricalRows'], - ], - [ - 'Create_routine_priv', - 'CREATE ROUTINE', - __('Allows creating stored routines.'), - ], - [ - 'Alter_routine_priv', - 'ALTER ROUTINE', - __('Allows altering and dropping stored routines.'), - ], - [ - 'Create_user_priv', - 'CREATE USER', - __('Allows creating, dropping and renaming user accounts.'), - ], - [ - 'Execute_priv', - 'EXECUTE', - __('Allows executing stored routines.'), - ], - ]; - } - - /** - * Displays on which column(s) a table-specific privilege is granted - * - * @param array $columns columns array - * @param array $row first row from result or boolean false - * @param string $name_for_select privilege types - Select_priv, Insert_priv - * Update_priv, References_priv - * @param string $priv_for_header privilege for header - * @param string $name privilege name: insert, select, update, references - * @param string $name_for_dfn name for dfn - * @param string $name_for_current name for current - * - * @return string html snippet - */ - public function getHtmlForColumnPrivileges( - array $columns, - array $row, - $name_for_select, - $priv_for_header, - $name, - $name_for_dfn, - $name_for_current - ) { - return $this->template->render('server/privileges/column_privileges', [ - 'columns' => $columns, - 'row' => $row, - 'name_for_select' => $name_for_select, - 'priv_for_header' => $priv_for_header, - 'name' => $name, - 'name_for_dfn' => $name_for_dfn, - 'name_for_current' => $name_for_current, - ]); - } - - /** - * Get sql query for display privileges table - * - * @param string $db the database - * @param string $table the table - * @param string $username username for database connection - * @param string $hostname hostname for database connection - * - * @return string sql query - */ - public function getSqlQueryForDisplayPrivTable($db, $table, $username, $hostname) - { - if ($db == '*') { - return "SELECT * FROM `mysql`.`user`" - . " WHERE `User` = '" . $this->dbi->escapeString($username) . "'" - . " AND `Host` = '" . $this->dbi->escapeString($hostname) . "';"; - } elseif ($table == '*') { - return "SELECT * FROM `mysql`.`db`" - . " WHERE `User` = '" . $this->dbi->escapeString($username) . "'" - . " AND `Host` = '" . $this->dbi->escapeString($hostname) . "'" - . " AND '" . $this->dbi->escapeString(Util::unescapeMysqlWildcards($db)) . "'" - . " LIKE `Db`;"; - } - return "SELECT `Table_priv`" - . " FROM `mysql`.`tables_priv`" - . " WHERE `User` = '" . $this->dbi->escapeString($username) . "'" - . " AND `Host` = '" . $this->dbi->escapeString($hostname) . "'" - . " AND `Db` = '" . $this->dbi->escapeString(Util::unescapeMysqlWildcards($db)) . "'" - . " AND `Table_name` = '" . $this->dbi->escapeString($table) . "';"; - } - - /** - * Displays a dropdown to select the user group - * with menu items configured to each of them. - * - * @param string $username username - * - * @return string html to select the user group - */ - public function getHtmlToChooseUserGroup($username) - { - $cfgRelation = $this->relation->getRelationsParam(); - $groupTable = Util::backquote($cfgRelation['db']) - . "." . Util::backquote($cfgRelation['usergroups']); - $userTable = Util::backquote($cfgRelation['db']) - . "." . Util::backquote($cfgRelation['users']); - - $userGroup = ''; - if (isset($GLOBALS['username'])) { - $sql_query = "SELECT `usergroup` FROM " . $userTable - . " WHERE `username` = '" . $this->dbi->escapeString($username) . "'"; - $userGroup = $this->dbi->fetchValue( - $sql_query, - 0, - 0, - DatabaseInterface::CONNECT_CONTROL - ); - } - - $allUserGroups = ['' => '']; - $sql_query = "SELECT DISTINCT `usergroup` FROM " . $groupTable; - $result = $this->relation->queryAsControlUser($sql_query, false); - if ($result) { - while ($row = $this->dbi->fetchRow($result)) { - $allUserGroups[$row[0]] = $row[0]; - } - } - $this->dbi->freeResult($result); - - return $this->template->render('server/privileges/choose_user_group', [ - 'all_user_groups' => $allUserGroups, - 'user_group' => $userGroup, - 'params' => ['username' => $username], - ]); - } - - /** - * Sets the user group from request values - * - * @param string $username username - * @param string $userGroup user group to set - * - * @return void - */ - public function setUserGroup($username, $userGroup) - { - $userGroup = $userGroup === null ? '' : $userGroup; - $cfgRelation = $this->relation->getRelationsParam(); - if (empty($cfgRelation['db']) || empty($cfgRelation['users']) || empty($cfgRelation['usergroups'])) { - return; - } - - $userTable = Util::backquote($cfgRelation['db']) - . "." . Util::backquote($cfgRelation['users']); - - $sql_query = "SELECT `usergroup` FROM " . $userTable - . " WHERE `username` = '" . $this->dbi->escapeString($username) . "'"; - $oldUserGroup = $this->dbi->fetchValue( - $sql_query, - 0, - 0, - DatabaseInterface::CONNECT_CONTROL - ); - - if ($oldUserGroup === false) { - $upd_query = "INSERT INTO " . $userTable . "(`username`, `usergroup`)" - . " VALUES ('" . $this->dbi->escapeString($username) . "', " - . "'" . $this->dbi->escapeString($userGroup) . "')"; - } else { - if (empty($userGroup)) { - $upd_query = "DELETE FROM " . $userTable - . " WHERE `username`='" . $this->dbi->escapeString($username) . "'"; - } elseif ($oldUserGroup != $userGroup) { - $upd_query = "UPDATE " . $userTable - . " SET `usergroup`='" . $this->dbi->escapeString($userGroup) . "'" - . " WHERE `username`='" . $this->dbi->escapeString($username) . "'"; - } - } - if (isset($upd_query)) { - $this->relation->queryAsControlUser($upd_query); - } - } - - /** - * Displays the privileges form table - * - * @param string $db the database - * @param string $table the table - * @param boolean $submit whether to display the submit button or not - * - * @global array $cfg the phpMyAdmin configuration - * @global resource $user_link the database connection - * - * @return string html snippet - */ - public function getHtmlToDisplayPrivilegesTable( - $db = '*', - $table = '*', - $submit = true - ) { - $html_output = ''; - $sql_query = ''; - - |
