<?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 */ // -------------------------------------------------------------------------- /** * Class for manipulating datbase connections, and program settings * * Use JSON for compatibility */ class Settings { private $current; private static $instance; public static function &get_instance() { if( ! isset(self::$instance)) { $name = __CLASS__; self::$instance = new $name(); } return self::$instance; } /** * Load the settings file - private so it can't be loaded * directly - the settings should be safe! */ private function __construct() { if ( ! defined('SETTINGS_DIR')) { define('SETTINGS_DIR', '.'); } $path = SETTINGS_DIR.'/settings.json'; if( ! is_file($path)) { //Create the file! touch($path); $this->current = new stdClass(); } else { $this->current = json_decode(file_get_contents($path)); } // Add the DB object under the settings if it doesn't already exist if( ! isset($this->current->dbs)) { $this->current->dbs = new stdClass(); } } // -------------------------------------------------------------------------- /** * Output the settings on destruct */ public function __destruct() { file_put_contents(SETTINGS_DIR . '/settings.json', json_encode($this->current)); } // -------------------------------------------------------------------------- /** * Magic method to simplify isset checking for config options * * @param string $key * @return mixed */ public function __get($key) { return (isset($this->current->{$key}) && $key != "dbs") ? $this->current->{$key} : NULL; } // -------------------------------------------------------------------------- /** * Magic method to simplify setting config options * * @param string $key * @param mixed */ public function __set($key, $val) { //Don't allow direct db config changes if($key == "dbs") { return FALSE; } return $this->current->{$key} = $val; } // -------------------------------------------------------------------------- /** * Add a database connection * * @param string $name * @param array $params */ public function add_db($name, $params) { if( ! isset($this->current->dbs->{$name})) { $this->current->dbs->{$name} = array(); $this->current->dbs->{$name} = $params; } else { return FALSE; } // Save the json $this->__destruct(); } // -------------------------------------------------------------------------- /** * Edit a database connection * * @param string $name * @param array $params */ public function edit_db($name, $params) { if(isset($this->current->dbs->{$name})) { $this->current->dbs->{$name} = $params; } else { return FALSE; } // Save the json $this->__destruct(); } // -------------------------------------------------------------------------- /** * Remove a database connection * * @param string $name */ public function remove_db($name) { if( ! isset($this->current->dbs->{$name})) { return FALSE; } // Remove the db name from the object unset($this->current->dbs->{$name}); // Save the json $this->__destruct(); } // -------------------------------------------------------------------------- /** * Retreive all db connections * * @return array */ public function get_dbs() { return $this->current->dbs; } // -------------------------------------------------------------------------- /** * Retreive a specific database connection * * @param string $name * @return object */ public function get_db($name) { return (isset($this->current->dbs->{$name})) ? $this->current->dbs->{$name} : FALSE; } } // End of settings.php