Miscellaneous fixes and updates

Change php requirement to 5.4
This commit is contained in:
Timothy Warren 2012-11-27 09:34:38 -05:00
parent 761c6fef9f
commit 235f810dd3
8 changed files with 89 additions and 42 deletions

View File

@ -48,7 +48,7 @@ function log_fatal()
$error = error_get_last(); $error = error_get_last();
// types of errors that are fatal // types of errors that are fatal
$fatal = array(E_ERROR, E_PARSE, E_RECOVERABLE_ERROR); $fatal = [E_ERROR, E_PARSE, E_RECOVERABLE_ERROR];
// Log error. // Log error.
if(in_array($error['type'], $fatal)) if(in_array($error['type'], $fatal))
@ -61,11 +61,20 @@ register_shutdown_function('OpenSQLManager\log_fatal');
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// Make sure php-gtk works // Make sure wxphp works
if ( ! class_exists('wxApp')) if ( ! class_exists('wxApp'))
{ {
trigger_error("wxPHP not found. Please load the wxPHP extension in your php.ini", E_USER_ERROR); // Try to load wxphp if possible
die(); if (function_exists('dl') && in_array(php_sapi_name(), ['cli', 'embed']))
{
$name = 'wxwidgets.'.PHP_SHLIB_SUFFIX;
dl($name);
}
else
{
trigger_error("wxPHP not found. Please load the wxPHP extension in your php.ini", E_USER_ERROR);
die();
}
} }
// Make sure pdo exists // Make sure pdo exists
@ -93,7 +102,7 @@ function exception_error_handler($errno, $errstr, $errfile, $errline)
// Do this after the two compatibility checks for cleaner output // Do this after the two compatibility checks for cleaner output
// Note that this will throw exceptions on notices // Note that this will throw exceptions on notices
set_error_handler("OpenSQLManager\exception_error_handler", -1); set_error_handler('OpenSQLManager\exception_error_handler', -1);
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
@ -138,7 +147,7 @@ function osm_autoload($class)
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// Load everything so that we don't have to do requires later // Load all the common classes, and register the autoloader
array_map('OpenSQLManager\do_include', glob(BASE_DIR.'/common/*.php')); array_map('OpenSQLManager\do_include', glob(BASE_DIR.'/common/*.php'));
spl_autoload_register('OpenSQLManager\osm_autoload'); spl_autoload_register('OpenSQLManager\osm_autoload');

View File

@ -18,10 +18,11 @@ I've put together this package from the latest wxPHP windows package. It's avail
* php5-postgresql * php5-postgresql
* php5-sqlite * php5-sqlite
* php5-ssh2 * php5-ssh2
* Compile wxPHP extension
* Run via terminal in the OpenSQLManager folder using `php OpenSQLManager.php` * Run via terminal in the OpenSQLManager folder using `php OpenSQLManager.php`
## PHP Requirements ## PHP Requirements
* Version 5.3.* * Version 5.4+
* [wxPHP](http://wxphp.org/) PHP Extension * [wxPHP](http://wxphp.org/) PHP Extension
* OpenSSL * OpenSSL
* JSON * JSON

View File

@ -1,6 +1,6 @@
DON'T BE A DICK PUBLIC LICENSE DON'T BE A JERK PUBLIC LICENSE
Version 1, December 2009 Version 2, November 2012
Copyright (C) 2012 Timothy J Warren <tim@timshomepage.net> Copyright (C) 2012 Timothy J Warren <tim@timshomepage.net>
@ -8,20 +8,20 @@ DON'T BE A DICK PUBLIC LICENSE
copies of this license document, and changing it is allowed as long copies of this license document, and changing it is allowed as long
as the name is changed. as the name is changed.
DON'T BE A DICK PUBLIC LICENSE DON'T BE A JERK PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
1. Do whatever you like with the original work, just don't be a dick. 1. Do whatever you like with the original work, just don't be a JERK.
Being a dick includes - but is not limited to - the following instances: Being a JERK includes - but is not limited to - the following instances:
1a. Outright copyright infringement - Don't just copy this and change the name. 1a. Outright copyright infringement - Don't just copy this and change the name.
1b. Selling the unmodified original with no work done what-so-ever, that's REALLY being a dick. 1b. Selling the unmodified original with no work done what-so-ever, that's REALLY being a JERK.
1c. Modifying the original work to contain hidden harmful content. That would make you a PROPER dick. 1c. Modifying the original work to contain hidden harmful content. That would make you a PROPER JERK.
2. If you become rich through modifications, related works/services, or supporting the original work, 2. If you become rich through modifications, related works/services, or supporting the original work,
share the love. Only a dick would make loads off this work and not buy the original works share the love. Only a JERK would make loads off this work and not buy the original works
creator(s) a pint. creator(s) a pint.
3. Code is provided with no warranty. Using somebody else's code and bitching when it goes wrong makes 3. Code is provided with no warranty. Using somebody else's code and bitching when it goes wrong makes
you a DONKEY dick. Fix the problem yourself. A non-dick would submit the fix back. you a DONKEY JERK. Fix the problem yourself. A non-JERK would submit the fix back.

View File

@ -37,7 +37,7 @@ function array_to_object($array)
$obj = new \StdClass(); $obj = new \StdClass();
foreach($array as $k => &$v) foreach($array as $k => $v)
{ {
$obj->$k = $v; $obj->$k = $v;
} }

View File

@ -68,12 +68,19 @@ class Settings {
if( ! is_file($path)) if( ! is_file($path))
{ {
//Create the file! //Create the file!
touch($path); file_put_contents($path, '{}');
$this->current = new \stdClass(); $this->current = new \stdClass();
} }
else else
{ {
$this->current = json_decode(file_get_contents($path)); $this->current = json_decode(file_get_contents($path));
if (empty($this->current))
{
$this->current = new \stdClass();
file_put_contents($path, '{}');
}
} }
// Add the DB object under the settings if it doesn't already exist // Add the DB object under the settings if it doesn't already exist
@ -179,7 +186,7 @@ class Settings {
{ {
return FALSE; return FALSE;
} }
if (is_object($params)) if (is_object($params))
{ {
$params = (array) $params; $params = (array) $params;

View File

@ -63,6 +63,13 @@ class Connection_Sidebar extends \wxPanel {
* @var wxListCtrl * @var wxListCtrl
*/ */
private $list; private $list;
/**
* Reference to the parent of the current object
*
* @var object
*/
public $parent;
/** /**
* Return the current instance of the class * Return the current instance of the class
@ -90,28 +97,13 @@ class Connection_Sidebar extends \wxPanel {
*/ */
public function __construct($parent) public function __construct($parent)
{ {
$this->parent =& $parent;
// Create the frame // Create the frame
parent::__construct($parent, 1); parent::__construct($parent, 1);
$this->list = new \wxListCtrl($parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_LIST|wxLC_SINGLE_SEL);
$this->settings =& Settings::get_instance();
$this->list->Connect(wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, array($this, 'menu'));
// Create a button for adding new connections
$new_conn = new \wxButton($this, self::BTN_ADD, 'New Connection');
$new_conn->Connect(wxEVT_COMMAND_BUTTON_CLICKED, array($this, 'add_conn'));
// Layout the connection list // Layout the connection list
$this->_layout(); $this->_layout();
// Add a sizer
$sizer = new \wxBoxSizer(wxVERTICAL);
$sizer->add($this->list, 1, wxALL|wxEXPAND);
$sizer->add($new_conn, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_BOTTOM|wxEXPAND, 5);
$this->SetSizer($sizer);
$this->Layout();
$this->Fit();
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
@ -187,8 +179,16 @@ class Connection_Sidebar extends \wxPanel {
* *
* @return void * @return void
*/ */
private function _layout() public function _layout()
{ {
$this->list = new \wxListCtrl($this->parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_LIST|wxLC_SINGLE_SEL);
$this->settings =& Settings::get_instance();
$this->list->Connect(wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, array($this, 'menu'));
// Create a button for adding new connections
$new_conn = new \wxButton($this, self::BTN_ADD, 'New Connection');
$new_conn->Connect(wxEVT_COMMAND_BUTTON_CLICKED, array($this, 'add_conn'));
// Add the actual connections // Add the actual connections
$conns = $this->settings->get_dbs(); $conns = $this->settings->get_dbs();
@ -196,6 +196,15 @@ class Connection_Sidebar extends \wxPanel {
{ {
$this->list->InsertItem(0, $c->name); $this->list->InsertItem(0, $c->name);
} }
// Add a sizer
$sizer = new \wxBoxSizer(wxVERTICAL);
$sizer->add($this->list, 1, wxALL|wxEXPAND);
$sizer->add($new_conn, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_BOTTOM|wxEXPAND, 5);
$this->SetSizer($sizer);
$this->Layout();
$this->Fit();
} }
} }

View File

@ -47,6 +47,13 @@ class Connection_Manager extends \wxFrame {
* @var array * @var array
*/ */
protected $labels = array(); protected $labels = array();
/**
* Reference to the parent Control
*
* @var object
*/
protected $parent;
/** /**
* Create the window * Create the window
@ -56,6 +63,7 @@ class Connection_Manager extends \wxFrame {
*/ */
public function __construct($parent, $params = array()) public function __construct($parent, $params = array())
{ {
$this->parent =& $parent;
parent::__construct($parent, 32, "Connection Manager", wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX | wxSTAY_ON_TOP | wxRESIZE_BORDER); parent::__construct($parent, 32, "Connection Manager", wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX | wxSTAY_ON_TOP | wxRESIZE_BORDER);
// Save a reference to the settings class // Save a reference to the settings class
@ -213,6 +221,10 @@ class Connection_Manager extends \wxFrame {
} }
$this->settings->add_db($params->name, $params); $this->settings->add_db($params->name, $params);
$this->parent->Update();
$this->Destroy();
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
@ -314,7 +326,7 @@ class Connection_Manager extends \wxFrame {
{ {
\Query($params); \Query($params);
} }
catch (\PDOException $e) catch (\Exception $e)
{ {
error("Error connecting to database: \n\n" . $e->getMessage()); error("Error connecting to database: \n\n" . $e->getMessage());
return; return;

View File

@ -85,7 +85,7 @@ class Main extends \wxFrame {
*/ */
public function quit() public function quit()
{ {
$this->Destroy(); $this->__destruct();
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
@ -95,7 +95,7 @@ class Main extends \wxFrame {
* *
* @return void * @return void
*/ */
function about() public function about()
{ {
$dlg = new \wxAboutDialogInfo(); $dlg = new \wxAboutDialogInfo();
@ -115,6 +115,16 @@ class Main extends \wxFrame {
\wxAboutBox($dlg); \wxAboutBox($dlg);
} }
// --------------------------------------------------------------------------
/**
* Layout tabs for databases, tables, &c;
*/
public function load_tabs()
{
}
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
/** /**
@ -181,7 +191,6 @@ class Main extends \wxFrame {
} }
$this->SetMenuBar($menu_bar); $this->SetMenuBar($menu_bar);
} }
} }