diff --git a/db_multi_table_query.php b/db_multi_table_query.php index a375bfab9c..d38c3112c4 100644 --- a/db_multi_table_query.php +++ b/db_multi_table_query.php @@ -53,6 +53,6 @@ $scripts = $header->getScripts(); $scripts->addFile('vendor/jquery/jquery.md5.js'); $scripts->addFile('db_multi_table_query.js'); -$QueryInstance = new MultiTableQuery($db); +$QueryInstance = new MultiTableQuery($GLOBALS['dbi'], $db); $response->addHTML($QueryInstance->getFormHTML()); diff --git a/libraries/classes/Database/MultiTableQuery.php b/libraries/classes/Database/MultiTableQuery.php index c64401fc0e..9a068eb6ed 100644 --- a/libraries/classes/Database/MultiTableQuery.php +++ b/libraries/classes/Database/MultiTableQuery.php @@ -7,6 +7,7 @@ */ namespace PhpMyAdmin\Database; +use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Template; /** @@ -16,43 +17,81 @@ use PhpMyAdmin\Template; */ class MultiTableQuery { + /** + * DatabaseInterface instance + * + * @access private + * @var DatabaseInterface + */ + private $dbi; + /** * Database name * * @access private * @var string */ - private $_db; + private $db; /** - * Default no. of columns + * Default number of columns * * @access private * @var integer */ - private $_default_no_of_columns; + private $defaultNoOfColumns; - public function __construct($db_name) - { - $this->_db = $db_name; - $this->_default_no_of_columns = 3; + /** + * Table names + * + * @access private + * @var array + */ + private $tables; + + /** + * Constructor + * + * @param DatabaseInterface $dbi DatabaseInterface instance + * @param string $dbName Database name + * @param integer $defaultNoOfColumns Default number of columns + */ + public function __construct( + DatabaseInterface $dbi, + $dbName, + $defaultNoOfColumns = 3 + ) { + $this->dbi = $dbi; + $this->db = $dbName; + $this->defaultNoOfColumns = $defaultNoOfColumns; + + $this->tables = $this->dbi->getTables($this->db); } + /** + * Get HTML for columns + * + * @return string HTML with columns + */ private function getColumnsHTML() { - $tables = $GLOBALS['dbi']->getTables($this->_db); return Template::get('database/multi_table_query/columns')->render([ - 'tables' => $tables, - 'dbi' => $GLOBALS['dbi'], - 'db' => $this->_db, - 'default_no_of_columns' => $this->_default_no_of_columns, + 'tables' => $this->tables, + 'dbi' => $this->dbi, + 'db' => $this->db, + 'default_no_of_columns' => $this->defaultNoOfColumns, ]); } + /** + * Get Multi Table Query page HTML + * + * @return string Multi Table Query page HTML + */ public function getFormHTML() { return Template::get('database/multi_table_query/form')->render([ - 'db' => $this->_db, + 'db' => $this->db, 'columns' => $this->getColumnsHTML(), ]); }