Passed
Push — dbal ( be5115...7a7bb0 )
by Greg
10:42
created

MySQLDriver::initialize()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 0
dl 0
loc 10
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * webtrees: online genealogy
5
 * Copyright (C) 2023 webtrees development team
6
 * This program is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation, either version 3 of the License, or
9
 * (at your option) any later version.
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
 * GNU General Public License for more details.
14
 * You should have received a copy of the GNU General Public License
15
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16
 */
17
18
declare(strict_types=1);
19
20
namespace Fisharebest\Webtrees\DB\Drivers;
21
22
use Doctrine\DBAL\Driver\AbstractMySQLDriver;
23
use Doctrine\DBAL\Driver\PDO\Connection;
24
use Fisharebest\Webtrees\DB;
25
use PDO;
26
use SensitiveParameter;
1 ignored issue
show
Bug introduced by
The type SensitiveParameter was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
27
28
use function implode;
29
use function version_compare;
30
31
/**
32
 * Driver for MySQL
33
 */
34
class MySQLDriver extends AbstractMySQLDriver implements DriverInterface
35
{
36
    use DriverTrait;
37
38
    public function __construct(private readonly PDO $pdo)
39
    {
40
    }
41
42
    public function connect(
43
        #[SensitiveParameter]
44
        array $params,
45
    ): Connection {
46
        return new Connection($this->pdo);
47
    }
48
49
    public function initialize(): void
50
    {
51
        $sql = [
52
            'SET NAMES utf8mb4',
53
            "SET SESSION SQL_MODE := 'ANSI,STRICT_ALL_TABLES'",
54
            'SET SESSION SQL_BIG_SELECTS := 1',
55
            'SET SESSION GROUP_CONCAT_MAX_LEN := 1048576', // Default is 1024
56
        ];
57
58
        $this->pdo->exec(implode(';', $sql));
59
    }
60
61
    public function collationASCII(): string
62
    {
63
        return 'ascii_bin';
64
    }
65
66
    public function collationUTF8(): string
67
    {
68
        return 'utf8mb4_unicode_ci';
69
    }
70
}
71