/** * Creates a new db layer * * @abstract * @access public * * @param String $layerType 'ADODB', 'METABASE', 'MYSQL', 'PEAR', PHPLIB' * @param String $libraryPath path to the abstraction layer * @param String $dbType for the abstraction layers (e.g. 'ODBC') * @param Integer $preferredResType the preferred result type * * @returns AbstractDB */ public static function getLayer($layerType, $libraryPath, $dbType, $preferredResType = ANYDB_RES_ASSOC) { $path = dirname(__FILE__) . '/dbs/'; $layer = strtoupper(trim($layerType)); // checks if php extension is loaded if ($dbType != '') { anyDB::checkForDB($dbType); } else { anyDB::checkForDB($layer); } // gets the layer $res = null; switch ($layer) { case 'DBX': require_once $path . 'DbxDB.php'; $res = new DbxDB($libraryPath, $dbType, $preferredResType); break; case 'METABASE': require_once $path . 'MetabaseDB.php'; $res = new MetabaseDB($libraryPath, $dbType, $preferredResType); break; case 'MYSQL': require_once $path . 'MysqlDB.php'; $res = new MysqlDB('', 'mysql', $preferredResType); break; case 'PGSQL': case 'POSTGRES': require_once $path . 'PostgresDB.php'; $res = new PostgresDB('', 'pgsql', $preferredResType); break; case 'PEAR': require_once $path . 'PearDB.php'; $res = new PearDB($libraryPath, $dbType, $preferredResType); break; case 'PHPLIB': require_once $path . 'PhplibDB.php'; $res = new PhplibDB($libraryPath, $dbType, $preferredResType); break; case 'ADODB': require_once $path . 'ADOdbDB.php'; $res = new ADOdbDB($libraryPath, $dbType, $preferredResType); break; case 'SQLITE': require_once $path . 'SQLiteDB.php'; $res = new SQLiteDB('', 'sqlite', $preferredResType); break; default: die('Unknown database layer!'); } return $res; }