/** * Gets the name of the correct database driver to use. As a side effect, * sets the platform. * @param (return-by-ref) $description A description of the database and version * @return The class name of the driver eg. Postgres84 * @return null if version is < 7.4 * @return -3 Database-specific failure */ function getDriver(&$description) { // If we're on a recent enough PHP 5, and against PostgreSQL 7.4 or // higher, we don't need to query for the version. This gives a great // speed up. if (function_exists('pg_version')) { $v = pg_version($this->conn->_connectionID); if (isset($v['server'])) { $version = $v['server']; } } // If we didn't manage to get the version without a query, query... if (!isset($version)) { $adodb = new ADODB_base($this->conn); $sql = "SELECT VERSION() AS version"; $field = $adodb->selectField($sql, 'version'); // Check the platform, if it's mingw, set it if (preg_match('/ mingw /i', $field)) { $this->platform = 'MINGW'; } $params = explode(' ', $field); if (!isset($params[1])) { return -3; } $version = $params[1]; // eg. 8.4.4 } $description = "PostgreSQL {$version}"; // Detect version and choose appropriate database driver switch (substr($version, 0, 3)) { case '8.4': return 'Postgres'; break; case '8.3': return 'Postgres83'; break; case '8.2': return 'Postgres82'; break; case '8.1': return 'Postgres81'; break; case '8.0': case '7.5': return 'Postgres80'; break; case '7.4': return 'Postgres74'; break; } /* All <7.4 versions are not supported */ // if major version is 7 or less and wasn't catch in the // switch/case block, we have an unsupported version. if ((int) substr($version, 0, 1) < 8) { return null; } // If unknown version, then default to latest driver return 'Postgres'; }
/** * Constructor * @param $conn The database connection */ function __construct($conn) { parent::__construct($conn); }