PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / trunk
WP STAGING – WordPress Backups, Restore, Migration & Clone vtrunk
4.11.1 4.11.0 4.10.0 4.9.5 4.9.4 4.9.3 4.9.2 4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Framework / Database / DbInfo.php
wp-staging / Framework / Database Last commit date
Exporter 3 days ago QueryBuilder 3 days ago CustomTable.php 3 days ago DbInfo.php 3 days ago ExcludedTables.php 3 days ago ExternalDatabaseConfiguration.php 3 days ago OptionPreservationHandler.php 3 days ago SearchReplace.php 3 days ago SelectedTables.php 3 days ago TableDto.php 3 days ago TableService.php 2 hours ago TablesRenamer.php 2 hours ago WpDbInfo.php 3 days ago WpOptionsInfo.php 3 days ago iDbInfo.php 2 years ago
DbInfo.php
114 lines
1 <?php
2
3 namespace WPStaging\Framework\Database;
4
5 use wpdb;
6 use WPStaging\Framework\Adapter\Database\DatabaseException;
7
8
9
10
11 class DbInfo extends WpDbInfo
12 {
13
14
15
16 protected $server;
17
18
19
20
21 protected $user;
22
23
24
25
26 protected $password;
27
28
29
30
31 protected $database;
32
33
34
35
36 protected $useSsl;
37
38
39
40
41
42
43
44
45
46 public function __construct(string $hostServer, string $user, string $password, string $database, bool $useSsl = false)
47 {
48 $this->server = $hostServer;
49 $this->user = $user;
50 $this->password = $password;
51 $this->database = $database;
52 $this->useSsl = $useSsl;
53
54 parent::__construct($this->connect());
55 }
56
57
58
59
60
61 public function connect()
62 {
63 (new ExternalDatabaseConfiguration())->validateConnectionTarget([
64 'databaseServer' => $this->server,
65 'databaseUser' => $this->user,
66 'databaseDatabase' => $this->database,
67 ]);
68
69 $db = mysqli_init();
70 if ($db === false) {
71 throw new DatabaseException('Unable to initialize MySQL connection.');
72 }
73
74 $connected = false;
75 $connectionFailure = null;
76
77 set_error_handler(function () {
78 return true;
79 });
80
81 try {
82 if ($this->useSsl) {
83
84 if (!defined('MYSQL_CLIENT_FLAGS')) {
85 // phpcs:disable PHPCompatibility.Constants.NewConstants.mysqli_client_ssl_dont_verify_server_certFound
86 define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL | MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);
87 }
88
89 // @phpstan-ignore-next-line - null is valid for port and socket parameters
90 $connected = $db->real_connect($this->server, $this->user, $this->password, $this->database, null, null, MYSQL_CLIENT_FLAGS);
91 } else {
92 $connected = $db->real_connect($this->server, $this->user, $this->password, $this->database);
93 }
94 } catch (\Throwable $e) {
95 $connectionFailure = $e;
96 } finally {
97 restore_error_handler();
98 }
99
100 if ($connectionFailure !== null) {
101 throw new DatabaseException('Connect Error (' . $connectionFailure->getCode() . ') ' . $connectionFailure->getMessage());
102 }
103
104 if (!$connected || $db->connect_error) {
105 throw new DatabaseException('Connect Error (' . $db->connect_errno . ') ' . $db->connect_error);
106 }
107
108 $db->close();
109
110 $wpdb = new wpdb($this->user, $this->password, $this->database, $this->server);
111 return $wpdb;
112 }
113 }
114