summaryrefslogtreecommitdiff
path: root/includes/database
diff options
context:
space:
mode:
Diffstat (limited to 'includes/database')
-rw-r--r--includes/database/database.inc15
-rw-r--r--includes/database/mysql/install.inc2
-rw-r--r--includes/database/pgsql/install.inc33
-rw-r--r--includes/database/sqlite/install.inc2
4 files changed, 49 insertions, 3 deletions
diff --git a/includes/database/database.inc b/includes/database/database.inc
index 9da091231..ce470789a 100644
--- a/includes/database/database.inc
+++ b/includes/database/database.inc
@@ -2694,5 +2694,20 @@ function db_rewrite_sql($query, $primary_table = 'n', $primary_field = 'nid', $
}
/**
+ * Ensures the environment for a Drupal database on a predefined connection.
+ *
+ * This will run tasks that check that Drupal can perform all of the functions
+ * on a database, that Drupal needs. Tasks include simple checks like CREATE
+ * TABLE to database specfic functions like stored procedures and client
+ * encoding.
+ */
+function db_run_tasks($driver) {
+ $task_class = 'DatabaseTasks_' . $driver;
+ $DatabaseTasks = new $task_class();
+ $DatabaseTasks->runTasks();
+ return true;
+}
+
+/**
* @} End of "ingroup database-legacy".
*/
diff --git a/includes/database/mysql/install.inc b/includes/database/mysql/install.inc
index cee986225..f443944d8 100644
--- a/includes/database/mysql/install.inc
+++ b/includes/database/mysql/install.inc
@@ -9,7 +9,7 @@
// MySQL specific install functions
-class DatabaseInstaller_mysql extends DatabaseInstaller {
+class DatabaseTasks_mysql extends DatabaseTasks {
protected $pdoDriver = 'mysql';
public function name() {
return 'MySQL';
diff --git a/includes/database/pgsql/install.inc b/includes/database/pgsql/install.inc
index b301cb672..222d7e734 100644
--- a/includes/database/pgsql/install.inc
+++ b/includes/database/pgsql/install.inc
@@ -9,10 +9,41 @@
// PostgreSQL specific install functions
-class DatabaseInstaller_pgsql extends DatabaseInstaller {
+class DatabaseTasks_pgsql extends DatabaseTasks {
protected $pdoDriver = 'pgsql';
+
+ public function __construct() {
+ $this->tasks[] = array(
+ 'function' => 'checkEncoding',
+ 'arguments' => array(),
+ );
+ }
+
public function name() {
return 'PostgreSQL';
}
+
+ /**
+ * Check encoding is UTF8.
+ */
+ protected function checkEncoding() {
+ try {
+ if (db_query('SHOW server_encoding')->fetchField() == 'UTF8') {
+ $this->pass(st('Database is encoded in UTF-8'));
+ }
+ else {
+ $replacements = array(
+ '%encoding' => 'UTF8',
+ '%driver' => $this->name(),
+ '!link' => '<a href="INSTALL.pgsql.txt">INSTALL.pgsql.txt</a>'
+ );
+ $text = 'The %driver database must use %encoding encoding to work with Drupal.';
+ $text .= 'Please recreate the database with %encoding encoding. See !link for more details.';
+ $this->fail(st($text, $replacements));
+ }
+ } catch (Exception $e) {
+ $this->fail(st('Drupal could not determine the encoding of the database was set to UTF-8'));
+ }
+ }
}
diff --git a/includes/database/sqlite/install.inc b/includes/database/sqlite/install.inc
index 096c20901..334e09dfd 100644
--- a/includes/database/sqlite/install.inc
+++ b/includes/database/sqlite/install.inc
@@ -6,7 +6,7 @@
* SQLite specific install functions
*/
-class DatabaseInstaller_sqlite extends DatabaseInstaller {
+class DatabaseTasks_sqlite extends DatabaseTasks {
protected $pdoDriver = 'sqlite';
public function name() {
return 'SQLite';