aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2011-07-16 22:06:49 -0400
committerNils Adermann <naderman@naderman.de>2011-07-16 22:06:49 -0400
commita33b67fd1a80463602c3603f72ad0f96dd3d9b09 (patch)
treec5304bb4d38ddb3ee224cb0ddac32bd463d169d2
parent19925ad059a31282467c061a76fb387d2206b357 (diff)
parent0f86034f03c8b81883aed2345d88d197f72c7491 (diff)
downloadforums-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.php21
-rw-r--r--phpBB/index.php2
-rw-r--r--phpBB/memberlist.php2
-rw-r--r--phpBB/viewtopic.php2
-rw-r--r--tests/wrapper/gmgetdate_test.php49
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);
+ }
+}