Databases tab
This commit is contained in:
parent
9dd0a3c17f
commit
9b49d655d2
@ -205,6 +205,13 @@ abstract class DB_PDO extends PDO {
|
|||||||
*/
|
*/
|
||||||
abstract public function get_tables();
|
abstract public function get_tables();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return list of dbs for the current connection, if possible
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
abstract public function get_dbs();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Empty the passed table
|
* Empty the passed table
|
||||||
*
|
*
|
||||||
|
@ -151,6 +151,18 @@ SQL;
|
|||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Not applicable to firebird
|
||||||
|
*
|
||||||
|
* @return FALSE
|
||||||
|
*/
|
||||||
|
public function get_dbs()
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List system tables for the current database
|
* List system tables for the current database
|
||||||
*
|
*
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* @author Timothy J. Warren
|
* @author Timothy J. Warren
|
||||||
* @copyright Copyright (c) 2012
|
* @copyright Copyright (c) 2012
|
||||||
* @link https://github.com/aviat4ion/OpenSQLManager
|
* @link https://github.com/aviat4ion/OpenSQLManager
|
||||||
* @license http://philsturgeon.co.uk/code/dbad-license
|
* @license http://philsturgeon.co.uk/code/dbad-license
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
@ -21,7 +21,7 @@ class MySQL extends DB_PDO {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Connect to MySQL Database
|
* Connect to MySQL Database
|
||||||
*
|
*
|
||||||
* @param string $dsn
|
* @param string $dsn
|
||||||
* @param string $username=null
|
* @param string $username=null
|
||||||
* @param string $password=null
|
* @param string $password=null
|
||||||
@ -34,7 +34,7 @@ class MySQL extends DB_PDO {
|
|||||||
$class = __CLASS__.'_sql';
|
$class = __CLASS__.'_sql';
|
||||||
$this->sql = new $class;
|
$this->sql = new $class;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -51,42 +51,51 @@ class MySQL extends DB_PDO {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get databases for the current connection
|
* Get databases for the current connection
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function get_dbs()
|
public function get_dbs()
|
||||||
{
|
{
|
||||||
$res = $this->query("SHOW DATABASES");
|
$res = $this->query("SHOW DATABASES");
|
||||||
return array_values($this->fetchAll(PDO::FETCH_ASSOC));
|
$vals = array_values($res->fetchAll(PDO::FETCH_ASSOC));
|
||||||
|
|
||||||
|
$return = array();
|
||||||
|
|
||||||
|
foreach($vals as $v)
|
||||||
|
{
|
||||||
|
$return[] = $v['Database'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the tables available in the current database
|
* Returns the tables available in the current database
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function get_tables()
|
public function get_tables()
|
||||||
{
|
{
|
||||||
$res = $this->query("SHOW TABLES");
|
$res = $this->query("SHOW TABLES");
|
||||||
|
|
||||||
$tables = array();
|
$tables = array();
|
||||||
$rows = $res->fetchAll(PDO::FETCH_NUM);
|
$rows = $res->fetchAll(PDO::FETCH_NUM);
|
||||||
|
|
||||||
foreach($rows as $r)
|
foreach($rows as $r)
|
||||||
{
|
{
|
||||||
$tables[] = $r[0];
|
$tables[] = $r[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
return $tables;
|
return $tables;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns system tables for the current database
|
* Returns system tables for the current database
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function get_system_tables()
|
public function get_system_tables()
|
||||||
@ -94,21 +103,21 @@ class MySQL extends DB_PDO {
|
|||||||
//MySQL doesn't have system tables
|
//MySQL doesn't have system tables
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the number of rows returned for a SELECT query
|
* Return the number of rows returned for a SELECT query
|
||||||
*
|
*
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
public function num_rows()
|
public function num_rows()
|
||||||
{
|
{
|
||||||
return isset($this->statement) ? $this->statement->rowCount() : FALSE;
|
return isset($this->statement) ? $this->statement->rowCount() : FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an SQL backup file for the current database's structure
|
* Create an SQL backup file for the current database's structure
|
||||||
*
|
*
|
||||||
@ -117,11 +126,11 @@ class MySQL extends DB_PDO {
|
|||||||
public function backup_structure()
|
public function backup_structure()
|
||||||
{
|
{
|
||||||
// @todo Implement Backup function
|
// @todo Implement Backup function
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an SQL backup file for the current database's data
|
* Create an SQL backup file for the current database's data
|
||||||
*
|
*
|
||||||
@ -147,7 +156,7 @@ class MySQL extends DB_PDO {
|
|||||||
{
|
{
|
||||||
return array_map(array($this, 'quote_ident'), $ident);
|
return array_map(array($this, 'quote_ident'), $ident);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Split each identifier by the period
|
// Split each identifier by the period
|
||||||
$hiers = explode('.', $ident);
|
$hiers = explode('.', $ident);
|
||||||
|
|
||||||
|
@ -44,6 +44,18 @@ class ODBC extends DB_PDO {
|
|||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Not applicable to firebird
|
||||||
|
*
|
||||||
|
* @return FALSE
|
||||||
|
*/
|
||||||
|
public function get_dbs()
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List system tables for the current database/connection
|
* List system tables for the current database/connection
|
||||||
*
|
*
|
||||||
|
@ -82,6 +82,18 @@ SQL;
|
|||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Not applicable to firebird
|
||||||
|
*
|
||||||
|
* @return FALSE
|
||||||
|
*/
|
||||||
|
public function get_dbs()
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List system tables for the current database
|
* List system tables for the current database
|
||||||
*
|
*
|
||||||
|
@ -376,6 +376,7 @@ class Connection_Sidebar extends GtkVBox {
|
|||||||
$data = $this->treeview->get(0);
|
$data = $this->treeview->get(0);
|
||||||
|
|
||||||
DB_Reg::remove_db($data->name);
|
DB_Reg::remove_db($data->name);
|
||||||
|
DB_Tabs::reset();
|
||||||
|
|
||||||
$this->refresh();
|
$this->refresh();
|
||||||
}
|
}
|
||||||
|
@ -72,20 +72,6 @@ class DB_tabs extends GTKNotebook {
|
|||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new instance of this class, and destroys the existing
|
|
||||||
* instance
|
|
||||||
*
|
|
||||||
* @return DB_tabs
|
|
||||||
*/
|
|
||||||
public static function reset()
|
|
||||||
{
|
|
||||||
self::$instance = new DB_tabs();
|
|
||||||
return self::get_instance();
|
|
||||||
}
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create tabs for database aspects
|
* Create tabs for database aspects
|
||||||
*
|
*
|
||||||
@ -94,20 +80,51 @@ class DB_tabs extends GTKNotebook {
|
|||||||
*/
|
*/
|
||||||
public static function get_db_tabs(&$conn)
|
public static function get_db_tabs(&$conn)
|
||||||
{
|
{
|
||||||
$tables = new Data_Grid();
|
// Empty the tabs
|
||||||
$table_model = $tables->get_model();
|
self::reset();
|
||||||
$table_data = $conn->get_tables();
|
|
||||||
|
|
||||||
foreach($table_data as $t)
|
// 'Tables' Tab
|
||||||
{
|
{
|
||||||
$table_model->append(null, array($t));
|
$tables = new Data_Grid();
|
||||||
//$table_model->set($iter, 0, $t);
|
$table_model = $tables->get_model();
|
||||||
|
$table_data = $conn->get_tables();
|
||||||
|
|
||||||
|
foreach($table_data as $t)
|
||||||
|
{
|
||||||
|
$table_model->append(null, array($t));
|
||||||
|
//$table_model->set($iter, 0, $t);
|
||||||
|
}
|
||||||
|
|
||||||
|
$cell_renderer = new GtkCellRendererText();
|
||||||
|
$tables->insert_column_with_data_func(0, 'Table Name', $cell_renderer, array(self::$instance, 'add_data_col'));
|
||||||
|
|
||||||
|
|
||||||
|
self::$instance->add_tab('Tables', $tables);
|
||||||
}
|
}
|
||||||
|
|
||||||
$cell_renderer = new GtkCellRendererText();
|
// 'Databases' Tab
|
||||||
$tables->insert_column_with_data_func(0, 'Table Name', $cell_renderer, array(self::$instance, 'add_data_col'));
|
{
|
||||||
|
$dbs = new Data_Grid();
|
||||||
|
$db_model = $dbs->get_model();
|
||||||
|
$db_data = $conn->get_dbs();
|
||||||
|
|
||||||
|
if($db_data)
|
||||||
|
{
|
||||||
|
foreach($db_data as $d)
|
||||||
|
{
|
||||||
|
$db_model->append(null, array($d));
|
||||||
|
}
|
||||||
|
|
||||||
|
$cell_renderer = new GtkCellRendererText();
|
||||||
|
$dbs->insert_column_with_data_func(0, 'DB Name', $cell_renderer, array(self::$instance, 'add_data_col'));
|
||||||
|
|
||||||
|
self::$instance->add_tab('Databases', $dbs);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
self::$instance->add_tab('Tables', $tables);
|
|
||||||
|
|
||||||
self::$instance->show_all();
|
self::$instance->show_all();
|
||||||
|
|
||||||
@ -131,5 +148,18 @@ class DB_tabs extends GTKNotebook {
|
|||||||
$data = $model->get_value($iter, $i);
|
$data = $model->get_value($iter, $i);
|
||||||
$cell->set_property('text', $data);
|
$cell->set_property('text', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove current tabs
|
||||||
|
*/
|
||||||
|
public static function reset()
|
||||||
|
{
|
||||||
|
for($i=0, $max=self::$instance->get_n_pages(); $i <= $max; $i++)
|
||||||
|
{
|
||||||
|
self::$instance->remove_page($i);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// End of db_tabs.php
|
// End of db_tabs.php
|
||||||
|
Reference in New Issue
Block a user