5 * Verify that the database parameters are well-formed.
8 if (!defined('CIVI_SETUP')) {
9 exit("Installation plugins must only be loaded by the installer.\n");
12 \Civi\Setup
::dispatcher()
13 ->addListener('civi.setup.checkRequirements', function (\Civi\Setup\Event\CheckRequirementsEvent
$e) {
14 \Civi\Setup
::log()->info(sprintf('[%s] Handle %s', basename(__FILE__
), 'checkRequirements'));
16 $dbFields = array('db', 'cmsDb');
17 foreach ($dbFields as $dbField) {
19 $db = $e->getModel()->{$dbField};
21 $keys = array_keys($db);
23 $expectedKeys = array('server', 'username', 'password', 'database');
25 if ($keys !== $expectedKeys) {
26 // if it failed it might be because of the optional ssl parameters
27 $expectedKeys[] = 'ssl_params';
29 if ($keys !== $expectedKeys) {
30 $e->addError('database', $dbField, sprintf("The database credentials for \"%s\" should be specified as (%s) not (%s)",
32 implode(',', $expectedKeys),
39 foreach ($db as $k => $v) {
40 if ($k === 'password' && empty($v)) {
41 $e->addWarning('database', "$dbField.$k", "The property \"$dbField.$k\" is blank. This may be correct in some controlled environments; it could also be a mistake or a symptom of an insecure configuration.");
43 elseif ($k !== 'ssl_params' && !is_scalar($v)) {
44 $e->addError('database', "$dbField.$k", "The property \"$dbField.$k\" is not well-formed.");
50 $e->addInfo('database', $dbField, "The database credentials for \"$dbField\" are well-formed.");