diff options
author | Nils Adermann <naderman@naderman.de> | 2011-07-16 22:06:49 -0400 |
---|---|---|
committer | Nils Adermann <naderman@naderman.de> | 2011-07-16 22:06:49 -0400 |
commit | a33b67fd1a80463602c3603f72ad0f96dd3d9b09 (patch) | |
tree | c5304bb4d38ddb3ee224cb0ddac32bd463d169d2 | |
parent | 19925ad059a31282467c061a76fb387d2206b357 (diff) | |
parent | 0f86034f03c8b81883aed2345d88d197f72c7491 (diff) | |
download | forums-a33b67fd1a80463602c3603f72ad0f96dd3d9b09.tar forums-a33b67fd1a80463602c3603f72ad0f96dd3d9b09.tar.gz forums-a33b67fd1a80463602c3603f72ad0f96dd3d9b09.tar.bz2 forums-a33b67fd1a80463602c3603f72ad0f96dd3d9b09.tar.xz forums-a33b67fd1a80463602c3603f72ad0f96dd3d9b09.zip |
Merge branch 'develop-olympus' into develop
* develop-olympus:
[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 ed183b3e76..6bc5c6e0f4 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -207,6 +207,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 427377a2cd..419b66cfdb 100644 --- a/phpBB/index.php +++ b/phpBB/index.php @@ -84,7 +84,7 @@ $legend = implode(', ', $legend); $birthday_list = array(); 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 70d3ed9f37..418c1a4417 100644 --- a/phpBB/memberlist.php +++ b/phpBB/memberlist.php @@ -1687,7 +1687,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 c5189a04df..abfba42379 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -956,7 +956,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); + } +} |