From dfc6f7bf8eef9001f34d1950411bdb9a3cf9244f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Mon, 23 Oct 2017 11:42:38 +0200 Subject: [PATCH 01/14] Remember MySQL links internally in the database interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This should replace $GLOBALS['userlink']/$GLOBALS['controllink']. Signed-off-by: Michal Čihař --- libraries/classes/DatabaseInterface.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libraries/classes/DatabaseInterface.php b/libraries/classes/DatabaseInterface.php index 51c83d1713..5e303b9388 100644 --- a/libraries/classes/DatabaseInterface.php +++ b/libraries/classes/DatabaseInterface.php @@ -67,6 +67,13 @@ class DatabaseInterface */ private $_extension; + /** + * Opened database links + * + * @var array + */ + private $_links; + /** * @var array Table data cache */ @@ -116,6 +123,7 @@ class DatabaseInterface public function __construct($ext) { $this->_extension = $ext; + $this->_links = array(); $this->_table_cache = array(); $this->_current_user = array(); $this->types = new Types($this); @@ -2437,6 +2445,7 @@ class DatabaseInterface $GLOBALS['error_handler']->setHideLocation(false); if ($result) { + $this->_links[$mode] = $result; /* Run post connect for user connections */ if ($mode == DatabaseInterface::CONNECT_USER) { $this->postConnect($result); @@ -2817,7 +2826,9 @@ class DatabaseInterface return $link; } - if (isset($GLOBALS['userlink']) && !is_null($GLOBALS['userlink'])) { + if (isset($this->_links[DatabaseInterface::CONNECT_USER])) { + return $this->_links[DatabaseInterface::CONNECT_USER]; + } elseif (isset($GLOBALS['userlink']) && !is_null($GLOBALS['userlink'])) { return $GLOBALS['userlink']; } else { return false; From 60c1b32472646ddf0851155ae0002c3e49f93f6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Mon, 23 Oct 2017 12:05:46 +0200 Subject: [PATCH 02/14] Remove usage of $GLOBALS['userlink'] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The links are internal to DatabaseInterface and user link is default. Signed-off-by: Michal Čihař --- libraries/classes/CentralColumns.php | 34 +++++++-------- libraries/classes/Database/DatabaseList.php | 46 +-------------------- libraries/classes/DatabaseInterface.php | 17 +++++--- libraries/classes/Header.php | 2 +- libraries/classes/ListDatabase.php | 23 ++--------- libraries/classes/Normalization.php | 40 +++++++++--------- libraries/classes/Server/Privileges.php | 6 +-- libraries/common.inc.php | 2 - libraries/dbi/dbi_dummy.inc.php | 1 - libraries/server_common.inc.php | 2 +- test/classes/Dbi/DbiMysqlTest.php | 1 - test/classes/Dbi/DbiMysqliTest.php | 1 - 12 files changed, 58 insertions(+), 117 deletions(-) diff --git a/libraries/classes/CentralColumns.php b/libraries/classes/CentralColumns.php index 7abdaf4788..1ba23cfcf3 100644 --- a/libraries/classes/CentralColumns.php +++ b/libraries/classes/CentralColumns.php @@ -233,7 +233,7 @@ class CentralColumns $db = $_REQUEST['db']; $pmadb = $cfgCentralColumns['db']; $central_list_table = $cfgCentralColumns['table']; - $GLOBALS['dbi']->selectDb($db, $GLOBALS['userlink']); + $GLOBALS['dbi']->selectDb($db); $existingCols = array(); $cols = ""; $insQuery = array(); @@ -242,7 +242,7 @@ class CentralColumns if ($isTable) { foreach ($field_select as $table) { $fields[$table] = (array) $GLOBALS['dbi']->getColumns( - $db, $table, null, true, $GLOBALS['userlink'] + $db, $table, null, true ); foreach ($fields[$table] as $field => $def) { $cols .= "'" . $GLOBALS['dbi']->escapeString($field) . "',"; @@ -275,7 +275,7 @@ class CentralColumns $has_list[] = $column; $field = (array) $GLOBALS['dbi']->getColumns( $db, $table, $column, - true, $GLOBALS['userlink'] + true ); $insQuery[] = self::getInsertQuery( $column, $field, $db, $central_list_table @@ -338,7 +338,7 @@ class CentralColumns $db = $_REQUEST['db']; $pmadb = $cfgCentralColumns['db']; $central_list_table = $cfgCentralColumns['table']; - $GLOBALS['dbi']->selectDb($db, $GLOBALS['userlink']); + $GLOBALS['dbi']->selectDb($db); $message = true; $colNotExist = array(); $fields = array(); @@ -346,7 +346,7 @@ class CentralColumns $cols = ''; foreach ($field_select as $table) { $fields[$table] = (array) $GLOBALS['dbi']->getColumnNames( - $db, $table, $GLOBALS['userlink'] + $db, $table ); foreach ($fields[$table] as $col_select) { $cols .= '\'' . $GLOBALS['dbi']->escapeString($col_select) . '\','; @@ -418,7 +418,7 @@ class CentralColumns foreach ($selected_tables as $table) { $query = 'ALTER TABLE ' . Util::backquote($table); $has_list = self::getFromTable($db, $table, true); - $GLOBALS['dbi']->selectDb($db, $GLOBALS['userlink']); + $GLOBALS['dbi']->selectDb($db); foreach ($has_list as $column) { $column_status = Relation::checkChildForeignReferences( $db, $table, $column['col_name'] @@ -455,14 +455,14 @@ class CentralColumns } } $query = trim($query, " ,") . ";"; - if (!$GLOBALS['dbi']->tryQuery($query, $GLOBALS['userlink'])) { + if (!$GLOBALS['dbi']->tryQuery($query)) { if ($message === true) { $message = Message::error( - $GLOBALS['dbi']->getError($GLOBALS['userlink']) + $GLOBALS['dbi']->getError() ); } else { $message->addText( - $GLOBALS['dbi']->getError($GLOBALS['userlink']), + $GLOBALS['dbi']->getError(), '
' ); } @@ -488,9 +488,9 @@ class CentralColumns if (empty($cfgCentralColumns)) { return array(); } - $GLOBALS['dbi']->selectDb($db, $GLOBALS['userlink']); + $GLOBALS['dbi']->selectDb($db); $fields = (array) $GLOBALS['dbi']->getColumnNames( - $db, $table, $GLOBALS['userlink'] + $db, $table ); $cols = ''; foreach ($fields as $col_select) { @@ -753,8 +753,8 @@ class CentralColumns */ public static function getHtmlForTableDropdown($db) { - $GLOBALS['dbi']->selectDb($db, $GLOBALS['userlink']); - $tables = $GLOBALS['dbi']->getTables($db, $GLOBALS['userlink']); + $GLOBALS['dbi']->selectDb($db); + $tables = $GLOBALS['dbi']->getTables($db); $selectHtml = '