From 1f0a5aa6b243e2b8bba66fc62bd029e2fa801e4b Mon Sep 17 00:00:00 2001 From: Silvio Date: Thu, 8 Apr 2010 11:55:02 -0300 Subject: Sorting out folder schene --- classes/CinisisDb.php | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) (limited to 'classes/CinisisDb.php') diff --git a/classes/CinisisDb.php b/classes/CinisisDb.php index 3dead27..eb09f9e 100644 --- a/classes/CinisisDb.php +++ b/classes/CinisisDb.php @@ -23,16 +23,16 @@ class CinisisDb { * Optional parameter to set alternative config file or array * with configuration. */ - function __construct($config = 'config/config.yaml') { + function __construct($config = NULL) { try { // Check main configuration. - $config = $this->parse($config); + $config = $this->parse($this->file($config)); // Set database implementation. $this->implementation = $config['implementation'] .'Db'; // Check database schema. - $schema = $this->parse('schemas/'. $config['database'] .'.yaml', $this->implementation); + $schema = $this->parse($this->file($config['database'] .'.yaml', 'schemas'), $this->implementation); } catch (Exception $e) { echo __CLASS__ .' caught exception: ', $e->getMessage(), "\n"; return FALSE; @@ -106,4 +106,39 @@ class CinisisDb { return $config; } + + /** + * Get library base folder. + * + * @return + * Return base folder. + */ + public function base() { + global $cinisis_basedir; + return $cinisis_basedir; + } + + /** + * Get a file path. + * + * @param $config + * Config file name (either relative to the library or absolute). + * + * @param $section + * Config file section (ignored for absolute files). + * + * @return + * Return the assembled file path. + */ + public function file($config = NULL, $section = 'config') { + // Check for NULL or relative config path. + if ($config == NULL) { + $config = "$section/config.yaml"; + } + elseif (substr($config, 0, 1) != '/') { + $config = "$section/$config"; + } + + return call_user_func(array(__CLASS__, 'base')) .'/'. $config; + } } -- cgit v1.2.3