Index: dbtng.install
===================================================================
RCS file: dbtng.install
diff -N dbtng.install
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ dbtng.install	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Implements hook_requirements().
+ */
+function dbtng_requirements($phase) {
+  $requirements = array();
+
+  if ($phase == 'runtime') {
+    $requirements['dbtng']['title'] = t('DB:TNG');
+    if ($error = _dbtng_check_missing_pdo()) {
+      $requirements['dbtng']['severity'] = REQUIREMENT_WARNING;
+      $requirements['dbtng']['value'] = t('PHP PDO Drivers');
+      $requirements['dbtng']['description'] = $error;
+    }
+    else {
+      $requirements['dbtng']['severity'] = REQUIREMENT_OK;
+      $requirements['dbtng']['value'] = t('Enabled');
+    }
+  }
+
+  return $requirements;
+}
+
+/**
+ * Check if PDO drivers are available for all installed databases.
+ */
+function _dbtng_check_missing_pdo() {
+  global $db_url;
+
+  if (!method_exists('PDO', 'getAvailableDrivers')) {
+    return t('PDO not installed.');
+  }
+  $drivers = PDO::getAvailableDrivers();
+  $pdo_map = array(
+    'mysql'   => 'mysql',
+    'mysqli'  => 'mysql',
+    'pgsql'   => 'pgsql',
+    'sqlite'  => 'sqlite2',
+    'oracle'  => 'oci',
+  );
+
+  $databases = is_array($db_url) ? $db_url : array($db_url);
+  foreach($databases as $conn_string) {
+    $url = parse_url($conn_string);
+    if (!in_array($pdo_map[$url['scheme']], $drivers)) {
+      return t('%db PDO driver not installed.', array('%db' => drupal_ucfirst($url['scheme'])));
+    }
+  }
+}
