diff options
Diffstat (limited to 'includes/database')
-rw-r--r-- | includes/database/database.inc | 15 | ||||
-rw-r--r-- | includes/database/mysql/install.inc | 2 | ||||
-rw-r--r-- | includes/database/pgsql/install.inc | 33 | ||||
-rw-r--r-- | includes/database/sqlite/install.inc | 2 |
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'; |