diff options
author | Nils Adermann <naderman@naderman.de> | 2011-07-16 22:05:03 -0400 |
---|---|---|
committer | Nils Adermann <naderman@naderman.de> | 2011-07-16 22:05:03 -0400 |
commit | 0f86034f03c8b81883aed2345d88d197f72c7491 (patch) | |
tree | 0529f9d57b59752d98a303321876d5ccc42e99e0 | |
parent | b3cdd1d16981c5992d1bffb97786084f9f02cad1 (diff) | |
parent | 0e85704d75c2edefdbdfb9d5542ab366744e65fb (diff) | |
download | forums-0f86034f03c8b81883aed2345d88d197f72c7491.tar forums-0f86034f03c8b81883aed2345d88d197f72c7491.tar.gz forums-0f86034f03c8b81883aed2345d88d197f72c7491.tar.bz2 forums-0f86034f03c8b81883aed2345d88d197f72c7491.tar.xz forums-0f86034f03c8b81883aed2345d88d197f72c7491.zip |
Merge remote-tracking branch 'github-bantu/ticket/10243' into develop-olympus
* github-bantu/ticket/10243:
[ticket/10243] Adding a few unit tests for phpbb_gmgetdate().
[ticket/10243] Call phpbb_gmgetdate() from various places.
[ticket/10243] Adding wrapper function for getdate() for UTC timestamps.
-rw-r--r-- | phpBB/includes/functions.php | 21 | ||||
-rw-r--r-- | phpBB/index.php | 2 | ||||
-rw-r--r-- | phpBB/memberlist.php | 2 | ||||
-rw-r--r-- | phpBB/viewtopic.php | 2 | ||||
-rw-r--r-- | tests/wrapper/gmgetdate_test.php | 49 |
5 files changed, 73 insertions, 3 deletions
diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index b1c1c14d0c..86eab4666f 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -266,6 +266,27 @@ function phpbb_mt_rand($min, $max) } /** +* Wrapper for getdate() which returns the equivalent array for UTC timestamps. +* +* @param int $time Unix timestamp (optional) +* +* @return array Returns an associative array of information related to the timestamp. +* See http://www.php.net/manual/en/function.getdate.php +*/ +function phpbb_gmgetdate($time = false) +{ + if ($time === false) + { + $time = time(); + } + + // getdate() interprets timestamps in local time. + // What follows uses the fact that getdate() and + // date('Z') balance each other out. + return getdate($time - date('Z')); +} + +/** * Return formatted string for filesizes * * @param int $value filesize in bytes diff --git a/phpBB/index.php b/phpBB/index.php index cc83641acd..3b58646af0 100644 --- a/phpBB/index.php +++ b/phpBB/index.php @@ -83,7 +83,7 @@ $legend = implode(', ', $legend); $birthday_list = ''; if ($config['load_birthdays'] && $config['allow_birthdays']) { - $now = getdate(time() + $user->timezone + $user->dst - date('Z')); + $now = phpbb_gmgetdate(time() + $user->timezone + $user->dst); $sql = 'SELECT u.user_id, u.username, u.user_colour, u.user_birthday FROM ' . USERS_TABLE . ' u LEFT JOIN ' . BANLIST_TABLE . " b ON (u.user_id = b.ban_userid) diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php index ec1ceba8e4..351759fcbd 100644 --- a/phpBB/memberlist.php +++ b/phpBB/memberlist.php @@ -1685,7 +1685,7 @@ function show_profile($data, $user_notes_enabled = false, $warn_user_enabled = f if ($bday_year) { - $now = getdate(time() + $user->timezone + $user->dst - date('Z')); + $now = phpbb_gmgetdate(time() + $user->timezone + $user->dst); $diff = $now['mon'] - $bday_month; if ($diff == 0) diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 8b081b4aec..2f3a4cf2e4 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -995,7 +995,7 @@ $sql = $db->sql_build_query('SELECT', array( $result = $db->sql_query($sql); -$now = getdate(time() + $user->timezone + $user->dst - date('Z')); +$now = phpbb_gmgetdate(time() + $user->timezone + $user->dst); // Posts are stored in the $rowset array while $attach_list, $user_cache // and the global bbcode_bitfield are built diff --git a/tests/wrapper/gmgetdate_test.php b/tests/wrapper/gmgetdate_test.php new file mode 100644 index 0000000000..0b4c3378a9 --- /dev/null +++ b/tests/wrapper/gmgetdate_test.php @@ -0,0 +1,49 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2011 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php'; + +class phpbb_wrapper_gmgetdate_test extends phpbb_test_case +{ + public function test_gmgetdate() + { + $this->run_gmgetdate_assertion(); + $this->run_test_with_timezone('UTC'); + $this->run_test_with_timezone('Europe/Berlin'); + $this->run_test_with_timezone('America/Los_Angeles'); + $this->run_test_with_timezone('Antarctica/South_Pole'); + } + + protected function run_test_with_timezone($timezone_identifier) + { + $current_timezone = date_default_timezone_get(); + + date_default_timezone_set($timezone_identifier); + $this->run_gmgetdate_assertion(); + date_default_timezone_set($current_timezone); + } + + protected function run_gmgetdate_assertion() + { + $expected = time(); + + $date_array = phpbb_gmgetdate($expected); + + $actual = gmmktime( + $date_array['hours'], + $date_array['minutes'], + $date_array['seconds'], + $date_array['mon'], + $date_array['mday'], + $date_array['year'] + ); + + $this->assertEquals($expected, $actual); + } +} |