aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2011-07-16 22:05:03 -0400
committerNils Adermann <naderman@naderman.de>2011-07-16 22:05:03 -0400
commit0f86034f03c8b81883aed2345d88d197f72c7491 (patch)
tree0529f9d57b59752d98a303321876d5ccc42e99e0
parentb3cdd1d16981c5992d1bffb97786084f9f02cad1 (diff)
parent0e85704d75c2edefdbdfb9d5542ab366744e65fb (diff)
downloadforums-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.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 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);
+ }
+}