OpenSQLManager/src/windows/add_db.php

145 lines
2.8 KiB
PHP
Raw Normal View History

2012-01-30 07:57:17 -05:00
<?php
/**
* OpenSQLManager
*
* Free Database manager for Open Source Databases
*
* @author Timothy J. Warren
* @copyright Copyright (c) 2012
* @link https://github.com/aviat4ion/OpenSQLManager
* @license http://philsturgeon.co.uk/code/dbad-license
*/
// --------------------------------------------------------------------------
/**
* Window controlling addtion of database connections
*/
class Add_DB extends GtkWindow {
var $dbtype, $host, $user, $password, $database;
2012-01-30 07:57:17 -05:00
function __construct()
{
parent::__construct();
$this->set_title("OpenSQLManager - Add Database Connection");
// Add the Vbox, and show the window
$this->add($this->_layout());
$this->show_all();
}
/**
* Window layout
*
* @return GtkVBox
*/
private function _layout()
{
$table = new GtkTable();
$db_types = $this->get_available_dbs();
//Table attach
//$tbl->attach(left_start, right_stop, top_start, bottom_stop)
// Placeholder vars for y values, so that rows can be
// easily moved
$y1 = -1;
$y2 = 0;
// Database type
{
$dbtypelbl = new GtkLabel("Database Type");
$this->dbtype = GtkComboBox::new_text();
$typealign = new GtkAlignment(0, 0.5, 0, 0);
$typealign->add($dbtypelbl);
foreach($db_types as $t)
{
$this->dbtype->append_text($t);
}
$table->attach($typealign, 0, 1, ++$y1, ++$y2);
$table->attach($this->dbtype, 1, 2, $y1, $y2);
}
// Host
{
$hostlbl = new GtkLabel("DB Host");
$this->host = new GtkEntry();
$hostalign = new GtkAlignment(0, 0.5, 0, 0);
$hostalign->add($hostlbl);
$table->attach($hostalign, 0, 1, ++$y1, ++$y2);
$table->attach($this->host, 1, 2, $y1, $y2);
}
// Username
{
$userlbl = new GtkLabel("DB User");
$this->user = new GtkEntry();
$useralign = new GtkAlignment(0, 0.5, 0, 0);
$useralign->add($userlbl);
$table->attach($useralign, 0, 1, ++$y1, ++$y2);
$table->attach($this->user, 1, 2, $y1, $y2);
}
// Password
{
$passlbl = new GtkLabel("DB Password");
$this->pass = new GtkEntry();
$passalign = new GtkAlignment(0, 0.5, 0, 0);
$passalign->add($passlbl);
$table->attach($passalign, 0, 1, ++$y1, ++$y2);
$table->attach($this->pass, 1, 2, $y1, $y2);
}
return $table;
2012-01-30 07:57:17 -05:00
}
/**
* Checks what database drivers are available
*
* @return array
*/
function get_available_dbs()
{
$drivers = array();
// Check if there is pdo support
if( ! function_exists('pdo_drivers'))
{
return FALSE;
}
2012-01-31 17:52:46 -05:00
// Add PDO drivers
foreach(pdo_drivers() as $d)
{
// Skip sqlite2
if($d === 'sqlite2')
{
continue;
}
$drivers[] = $d;
}
2012-01-31 17:52:46 -05:00
// Add firebird support, if exists
if(function_exists('ibase_connect'))
{
$drivers[] = "Firebird";
}
sort($drivers);
return $drivers;
}
2012-01-30 07:57:17 -05:00
}
// End of add_db.php