config = $config; } /** * Build DSN connection string for DB driver instantiate process * * @param string Group name * @return string DSN Connection string */ public function set_dsn($group = 'default') { if ( ! isset($this->config[$group])) { throw new InvalidArgumentException('Group '.$group.' not exists'); } $params = array( 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => FALSE, 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'autoinit' => TRUE, 'stricton' => FALSE, ); $config = array_merge($this->config[$group], $params); if ( ! empty($config['dsn'])) { $dsn = $config['dsn']; } else { $dsn = $config['dbdriver'].'://'.$config['username'].':'.$config['password'] .'@'.$config['hostname'].'/'.$config['database']; } $other_params = array_slice($config, 6); return $dsn.'?'.http_build_query($other_params); } /** * Return a database config array * * @see ./config * @param string Driver based configuration * @return array */ public static function config($driver) { $dir = realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR; return include($dir.'config'.DIRECTORY_SEPARATOR.$driver.'.php'); } /** * Main DB method wrapper * * @param string Group or DSN string * @param bool * @return object */ public static function DB($group, $query_builder = FALSE) { include_once(BASEPATH.'database/DB.php'); try { $db = DB($group, $query_builder); } catch (Exception $e) { throw new InvalidArgumentException($e->getMessage()); } return $db; } }