Refactor Database/MultiTableQuery to use DI

Signed-off-by: Maurício Meneghini Fauth <mauriciofauth@gmail.com>
This commit is contained in:
Maurício Meneghini Fauth 2017-11-13 17:20:27 -02:00
parent 8ec6d433a0
commit a76fb00ce6
2 changed files with 53 additions and 14 deletions

View File

@ -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());

View File

@ -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(),
]);
}