Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 44 |
Tasks | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
72 | |
0.00% |
0 / 44 |
name | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
minimumVersion | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getFormOptions | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
|||
connect | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 32 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\Database\Driver\sqlite\Install\Tasks. | |
*/ | |
namespace Drupal\Core\Database\Driver\sqlite\Install; | |
use Drupal\Core\Database\Database; | |
use Drupal\Core\Database\Driver\sqlite\Connection; | |
use Drupal\Core\Database\DatabaseNotFoundException; | |
use Drupal\Core\Database\Install\Tasks as InstallTasks; | |
/** | |
* Specifies installation tasks for SQLite databases. | |
*/ | |
class Tasks extends InstallTasks { | |
/** | |
* {@inheritdoc} | |
*/ | |
protected $pdoDriver = 'sqlite'; | |
/** | |
* {@inheritdoc} | |
*/ | |
public function name() { | |
return t('SQLite'); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function minimumVersion() { | |
return '3.6.8'; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getFormOptions(array $database) { | |
$form = parent::getFormOptions($database); | |
// Remove the options that only apply to client/server style databases. | |
unset($form['username'], $form['password'], $form['advanced_options']['host'], $form['advanced_options']['port']); | |
// Make the text more accurate for SQLite. | |
$form['database']['#title'] = t('Database file'); | |
$form['database']['#description'] = t('The absolute path to the file where @drupal data will be stored. This must be writable by the web server and should exist outside of the web root.', array('@drupal' => drupal_install_profile_distribution_name())); | |
$default_database = \Drupal::service('site.path') . '/files/.ht.sqlite'; | |
$form['database']['#default_value'] = empty($database['database']) ? $default_database : $database['database']; | |
return $form; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
protected function connect() { | |
try { | |
// This doesn't actually test the connection. | |
db_set_active(); | |
// Now actually do a check. | |
Database::getConnection(); | |
$this->pass('Drupal can CONNECT to the database ok.'); | |
} | |
catch (\Exception $e) { | |
// Attempt to create the database if it is not found. | |
if ($e->getCode() == Connection::DATABASE_NOT_FOUND) { | |
// Remove the database string from connection info. | |
$connection_info = Database::getConnectionInfo(); | |
$database = $connection_info['default']['database']; | |
// We cannot use file_directory_temp() here because we haven't yet | |
// successfully connected to the database. | |
$connection_info['default']['database'] = drupal_tempnam(sys_get_temp_dir(), 'sqlite'); | |
// In order to change the Database::$databaseInfo array, need to remove | |
// the active connection, then re-add it with the new info. | |
Database::removeConnection('default'); | |
Database::addConnectionInfo('default', 'default', $connection_info['default']); | |
try { | |
Database::getConnection()->createDatabase($database); | |
Database::closeConnection(); | |
// Now, restore the database config. | |
Database::removeConnection('default'); | |
$connection_info['default']['database'] = $database; | |
Database::addConnectionInfo('default', 'default', $connection_info['default']); | |
// Check the database connection. | |
Database::getConnection(); | |
$this->pass('Drupal can CONNECT to the database ok.'); | |
} | |
catch (DatabaseNotFoundException $e) { | |
// Still no dice; probably a permission issue. Raise the error to the | |
// installer. | |
$this->fail(t('Database %database not found. The server reports the following message when attempting to create the database: %error.', array('%database' => $database, '%error' => $e->getMessage()))); | |
} | |
} | |
else { | |
// Database connection failed for some other reason than the database | |
// not existing. | |
$this->fail(t('Failed to connect to your database server. The server reports the following message: %error.<ul><li>Is the database server running?</li><li>Does the database exist, and have you entered the correct database name?</li><li>Have you entered the correct username and password?</li><li>Have you entered the correct database hostname?</li></ul>', array('%error' => $e->getMessage()))); | |
return FALSE; | |
} | |
} | |
return TRUE; | |
} | |
} |