Ejemplo n.º 1
0
 /**
  * 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';
 }
Ejemplo n.º 2
0
 /**
  * Constructor
  * @param $conn The database connection
  */
 function __construct($conn)
 {
     parent::__construct($conn);
 }