Commit | Line | Data |
---|---|---|
4bcd4c62 TO |
1 | <?php |
2 | /** | |
3 | * @file | |
4 | * | |
5 | * Verify that the database parameters are well-formed. | |
6 | */ | |
7 | ||
8 | if (!defined('CIVI_SETUP')) { | |
9 | exit("Installation plugins must only be loaded by the installer.\n"); | |
10 | } | |
11 | ||
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')); | |
15 | ||
16 | $dbFields = array('db', 'cmsDb'); | |
17 | foreach ($dbFields as $dbField) { | |
18 | $errors = 0; | |
19 | $db = $e->getModel()->{$dbField}; | |
20 | ||
21 | $keys = array_keys($db); | |
22 | sort($keys); | |
23 | $expectedKeys = array('server', 'username', 'password', 'database'); | |
24 | sort($expectedKeys); | |
25 | if ($keys !== $expectedKeys) { | |
26 | $e->addError('database', $dbField, sprintf("The database credentials for \"%s\" should be specified as (%s) not (%s)", | |
27 | $dbField, | |
28 | implode(',', $expectedKeys), | |
29 | implode(',', $keys) | |
30 | )); | |
31 | $errors++; | |
32 | } | |
33 | ||
34 | foreach ($db as $k => $v) { | |
35 | if ($k === 'password' && empty($v)) { | |
36 | $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."); | |
37 | } | |
38 | elseif (!is_scalar($v)) { | |
39 | $e->addError('database', "$dbField.$k", "The property \"$dbField.$k\" is not well-formed."); | |
40 | $errors++; | |
41 | } | |
42 | } | |
43 | ||
44 | if (0 == $errors) { | |
45 | $e->addInfo('database', $dbField, "The database credentials for \"$dbField\" are well-formed."); | |
46 | } | |
47 | } | |
48 | }); |