- Updates the format of db timezone offset to two-digit hours and minutes

This commit is contained in:
Vlad
2016-12-20 10:13:11 -05:00
parent edcce542c3
commit cad6391fc6
4 changed files with 76 additions and 9 deletions

View File

@ -80,12 +80,13 @@ class Env {
return implode('', $source_name); return implode('', $source_name);
} }
private static function getDbTimezoneOffset() { static function getDbTimezoneOffset($offset = false) {
$mins = get_option('gmt_offset') * 60; $offset = ($offset) ? $offset : get_option('gmt_offset');
$mins = $offset * 60;
$sgn = ($mins < 0 ? -1 : 1); $sgn = ($mins < 0 ? -1 : 1);
$mins = abs($mins); $mins = abs($mins);
$hrs = floor($mins / 60); $hrs = floor($mins / 60);
$mins -= $hrs * 60; $mins -= $hrs * 60;
return sprintf('%+d:%02d', $hrs * $sgn, $mins); return sprintf('%+03d:%02d', $hrs * $sgn, $mins);
} }
} }

View File

@ -53,11 +53,9 @@ class Initializer {
\ORM::configure('logging', WP_DEBUG); \ORM::configure('logging', WP_DEBUG);
\ORM::configure('driver_options', array( \ORM::configure('driver_options', array(
\PDO::MYSQL_ATTR_INIT_COMMAND => \PDO::MYSQL_ATTR_INIT_COMMAND =>
'SET NAMES utf8', 'SET NAMES utf8,
\PDO::MYSQL_ATTR_INIT_COMMAND => TIME_ZONE = "' . Env::$db_timezone_offset. '",
'SET TIME_ZONE = "' . Env::$db_timezone_offset. '"', sql_mode=(SELECT REPLACE(@@sql_mode,"ONLY_FULL_GROUP_BY",""))'
\PDO::MYSQL_ATTR_INIT_COMMAND =>
'SET sql_mode=(SELECT REPLACE(@@sql_mode,"ONLY_FULL_GROUP_BY",""))'
)); ));
$settings = Env::$db_prefix . 'settings'; $settings = Env::$db_prefix . 'settings';

View File

@ -59,4 +59,10 @@ class EnvTest extends MailPoetTest {
ENV::$db_host . ';port=' . ENV::$db_port . ';dbname=' . DB_NAME; ENV::$db_host . ';port=' . ENV::$db_port . ';dbname=' . DB_NAME;
expect(Env::$db_source_name)->equals($source_name); expect(Env::$db_source_name)->equals($source_name);
} }
function testItCanGetDbTimezoneOffset() {
expect(Env::getDbTimezoneOffset('+1.5'))->equals("+01:30");
expect(Env::getDbTimezoneOffset('+11'))->equals("+11:00");
expect(Env::getDbTimezoneOffset('-5.5'))->equals("-05:30");
}
} }

View File

@ -0,0 +1,62 @@
<?php
use MailPoet\Config\Env;
class EnvTest extends MailPoetTest {
function _before() {
Env::init('file', '1.0.0');
}
function testItCanReturnPluginPrefix() {
expect(Env::$plugin_prefix)->equals('mailpoet_');
}
function testItCanReturnDbPrefix() {
global $wpdb;
$db_prefix = $wpdb->prefix . 'mailpoet_';
expect(Env::$db_prefix)->equals($db_prefix);
}
function testItCanReturnDbHost() {
if(preg_match('/(?=:\d+$)/', DB_HOST)) {
expect(Env::$db_host)->equals(explode(':', DB_HOST)[0]);
} else expect(Env::$db_host)->equals(DB_HOST);
}
function testItCanReturnDbPort() {
if(preg_match('/(?=:\d+$)/', DB_HOST)) {
expect(Env::$db_port)->equals(explode(':', DB_HOST)[1]);
} else expect(Env::$db_port)->equals(3306);
}
function testItCanReturnSocket() {
if(!preg_match('/(?=:\d+$)/', DB_HOST)
&& preg_match('/:/', DB_HOST)
) {
expect(Env::$db_socket)->true();
} else expect(Env::$db_socket)->false();
}
function testItCanReturnDbName() {
expect(Env::$db_name)->equals(DB_NAME);
}
function testItCanReturnDbUser() {
expect(Env::$db_username)->equals(DB_USER);
}
function testItCanReturnDbPassword() {
expect(Env::$db_password)->equals(DB_PASSWORD);
}
function testItCanReturnDbCharset() {
global $wpdb;
$charset = $wpdb->get_charset_collate();
expect(Env::$db_charset)->equals($charset);
}
function testItCanGenerateDbSourceName() {
$source_name = ((!ENV::$db_socket) ? 'mysql:host=' : 'mysql:unix_socket=') .
ENV::$db_host . ';port=' . ENV::$db_port . ';dbname=' . DB_NAME;
expect(Env::$db_source_name)->equals($source_name);
}
}