Use WP connection db port if missing in config

[MAILPOET-3580]
This commit is contained in:
Pavel Dohnal
2021-05-19 10:40:37 +02:00
committed by Veljko V
parent 13734f3e4e
commit ea1a946a7b
4 changed files with 8 additions and 4 deletions

View File

@@ -80,7 +80,7 @@ class Env {
self::$dbPrefix = $wpdb->prefix . self::$pluginPrefix;
self::$dbHost = $host;
self::$dbIsIpv6 = $isIpv6;
self::$dbPort = $port ?: 3306;
self::$dbPort = $port;
self::$dbSocket = $socket;
self::$dbName = $dbName;
self::$dbUsername = $dbUser;

View File

@@ -29,6 +29,7 @@ class ConnectionFactory {
];
public function createConnection() {
global $wpdb;
$platformClass = self::PLATFORM_CLASS;
$connectionParams = [
'wrapperClass' => SerializableConnection::class,
@@ -49,7 +50,11 @@ class ConnectionFactory {
$connectionParams['unix_socket'] = Env::$dbSocket;
} else {
$connectionParams['host'] = Env::$dbIsIpv6 ? ('[' . Env::$dbHost . ']') : Env::$dbHost;
$connectionParams['port'] = Env::$dbPort;
if (!empty(Env::$dbPort)) {
$connectionParams['port'] = Env::$dbPort;
} else {
$connectionParams['port'] = $wpdb->get_var('SELECT @@port');
}
}
$this->setupTypes();

View File

@@ -30,7 +30,7 @@ class EnvTest extends \MailPoetTest {
public function testItProcessDBHost() {
Env::init('file', '1.0.0', 'localhost', 'db_user', 'pass123', 'db_name');
expect(Env::$dbHost)->equals('localhost');
expect(Env::$dbPort)->equals('3306');
expect(Env::$dbPort)->null();
Env::init('file', '1.0.0', 'localhost:3307', 'db_user', 'pass123', 'db_name');
expect(Env::$dbHost)->equals('localhost');

View File

@@ -33,7 +33,6 @@ class ConnectionFactoryTest extends \MailPoetTest {
expect($connection->getDriver())->isInstanceOf(PDOMySql\Driver::class);
expect($connection->getDatabasePlatform())->isInstanceOf(MySqlPlatform::class);
expect($connection->getHost())->equals(Env::$dbHost);
expect($connection->getPort())->equals(Env::$dbPort);
expect($connection->getParams())->notContains('unix_socket');
expect($connection->getUsername())->equals(Env::$dbUsername);
expect($connection->getPassword())->equals(Env::$dbPassword);