mirror of
https://github.com/phpbb/phpbb.git
synced 2025-02-26 04:52:36 +01:00
Code accessing the legacy user::$timezone and user::$dst properties has been removed and replaced with code utilising user::create_datetime(). Changed by Oleg: in viewtopic, memberlist and index use getTimestamp() + getOffset(). We show members that have birthdays on the specified date. getTimestamp() returns the current date in UTC. We add getOffset() to obtain the current local time in the viewing user's timezone. Then we find members having birthday on this date. Changed by Oleg again: Take leap year status out of the datetime object we have, this seems like it should work as one would expect. PHPBB3-9558
156 lines
5.7 KiB
PHP
156 lines
5.7 KiB
PHP
<?php
|
|
/**
|
|
*
|
|
* @package phpBB3
|
|
* @version $Id$
|
|
* @copyright (c) 2005 phpBB Group
|
|
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
|
*
|
|
*/
|
|
|
|
/**
|
|
*/
|
|
|
|
/**
|
|
* @ignore
|
|
*/
|
|
define('IN_PHPBB', true);
|
|
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
|
|
$phpEx = substr(strrchr(__FILE__, '.'), 1);
|
|
include($phpbb_root_path . 'common.' . $phpEx);
|
|
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
|
|
|
|
// Start session management
|
|
$user->session_begin();
|
|
$auth->acl($user->data);
|
|
$user->setup('viewforum');
|
|
|
|
display_forums('', $config['load_moderators']);
|
|
|
|
// Set some stats, get posts count from forums data if we... hum... retrieve all forums data
|
|
$total_posts = $config['num_posts'];
|
|
$total_topics = $config['num_topics'];
|
|
$total_users = $config['num_users'];
|
|
|
|
$l_total_user_s = ($total_users == 0) ? 'TOTAL_USERS_ZERO' : 'TOTAL_USERS_OTHER';
|
|
$l_total_post_s = ($total_posts == 0) ? 'TOTAL_POSTS_ZERO' : 'TOTAL_POSTS_OTHER';
|
|
$l_total_topic_s = ($total_topics == 0) ? 'TOTAL_TOPICS_ZERO' : 'TOTAL_TOPICS_OTHER';
|
|
|
|
$order_legend = ($config['legend_sort_groupname']) ? 'group_name' : 'group_legend';
|
|
// Grab group details for legend display
|
|
if ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel'))
|
|
{
|
|
$sql = 'SELECT group_id, group_name, group_colour, group_type, group_legend
|
|
FROM ' . GROUPS_TABLE . '
|
|
WHERE group_legend > 0
|
|
ORDER BY ' . $order_legend . ' ASC';
|
|
}
|
|
else
|
|
{
|
|
$sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type, g.group_legend
|
|
FROM ' . GROUPS_TABLE . ' g
|
|
LEFT JOIN ' . USER_GROUP_TABLE . ' ug
|
|
ON (
|
|
g.group_id = ug.group_id
|
|
AND ug.user_id = ' . $user->data['user_id'] . '
|
|
AND ug.user_pending = 0
|
|
)
|
|
WHERE g.group_legend > 0
|
|
AND (g.group_type <> ' . GROUP_HIDDEN . ' OR ug.user_id = ' . $user->data['user_id'] . ')
|
|
ORDER BY g.' . $order_legend . ' ASC';
|
|
}
|
|
$result = $db->sql_query($sql);
|
|
|
|
$legend = array();
|
|
while ($row = $db->sql_fetchrow($result))
|
|
{
|
|
$colour_text = ($row['group_colour']) ? ' style="color:#' . $row['group_colour'] . '"' : '';
|
|
$group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'];
|
|
|
|
if ($row['group_name'] == 'BOTS' || ($user->data['user_id'] != ANONYMOUS && !$auth->acl_get('u_viewprofile')))
|
|
{
|
|
$legend[] = '<span' . $colour_text . '>' . $group_name . '</span>';
|
|
}
|
|
else
|
|
{
|
|
$legend[] = '<a' . $colour_text . ' href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&g=' . $row['group_id']) . '">' . $group_name . '</a>';
|
|
}
|
|
}
|
|
$db->sql_freeresult($result);
|
|
|
|
$legend = implode(', ', $legend);
|
|
|
|
// Generate birthday list if required ...
|
|
$birthday_list = array();
|
|
if ($config['load_birthdays'] && $config['allow_birthdays'] && $auth->acl_gets('u_viewprofile', 'a_user', 'a_useradd', 'a_userdel'))
|
|
{
|
|
$time = $user->create_datetime();
|
|
$now = phpbb_gmgetdate($time->getTimestamp() + $time->getOffset());
|
|
|
|
// Display birthdays of 29th february on 28th february in non-leap-years
|
|
$leap_year_birthdays = '';
|
|
if ($now['mday'] == 28 && $now['mon'] == 2 && !$time->format('L'))
|
|
{
|
|
$leap_year_birthdays = " OR user_birthday LIKE '" . $db->sql_escape(sprintf('%2d-%2d-', 29, 2)) . "%'";
|
|
}
|
|
|
|
$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)
|
|
WHERE (b.ban_id IS NULL
|
|
OR b.ban_exclude = 1)
|
|
AND (u.user_birthday LIKE '" . $db->sql_escape(sprintf('%2d-%2d-', $now['mday'], $now['mon'])) . "%' $leap_year_birthdays)
|
|
AND u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')';
|
|
$result = $db->sql_query($sql);
|
|
|
|
while ($row = $db->sql_fetchrow($result))
|
|
{
|
|
$birthday_username = get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']);
|
|
$birthday_year = (int) substr($row['user_birthday'], -4);
|
|
$birthday_age = ($birthday_year) ? max(0, $now['year'] - $birthday_year) : '';
|
|
|
|
$template->assign_block_vars('birthdays', array(
|
|
'USERNAME' => $birthday_username,
|
|
'AGE' => $birthday_age,
|
|
));
|
|
|
|
// For 3.0 compatibility
|
|
if ($age = (int) substr($row['user_birthday'], -4))
|
|
{
|
|
$birthday_list[] = $birthday_username . (($birthday_year) ? ' (' . $birthday_age . ')' : '');
|
|
}
|
|
}
|
|
$db->sql_freeresult($result);
|
|
}
|
|
|
|
// Assign index specific vars
|
|
$template->assign_vars(array(
|
|
'TOTAL_POSTS' => sprintf($user->lang[$l_total_post_s], $total_posts),
|
|
'TOTAL_TOPICS' => sprintf($user->lang[$l_total_topic_s], $total_topics),
|
|
'TOTAL_USERS' => sprintf($user->lang[$l_total_user_s], $total_users),
|
|
'NEWEST_USER' => sprintf($user->lang['NEWEST_USER'], get_username_string('full', $config['newest_user_id'], $config['newest_username'], $config['newest_user_colour'])),
|
|
|
|
'LEGEND' => $legend,
|
|
'BIRTHDAY_LIST' => (empty($birthday_list)) ? '' : implode(', ', $birthday_list),
|
|
|
|
'FORUM_IMG' => $user->img('forum_read', 'NO_UNREAD_POSTS'),
|
|
'FORUM_UNREAD_IMG' => $user->img('forum_unread', 'UNREAD_POSTS'),
|
|
'FORUM_LOCKED_IMG' => $user->img('forum_read_locked', 'NO_UNREAD_POSTS_LOCKED'),
|
|
'FORUM_UNREAD_LOCKED_IMG' => $user->img('forum_unread_locked', 'UNREAD_POSTS_LOCKED'),
|
|
|
|
'S_LOGIN_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login'),
|
|
'S_DISPLAY_BIRTHDAY_LIST' => ($config['load_birthdays']) ? true : false,
|
|
|
|
'U_MARK_FORUMS' => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}index.$phpEx", 'hash=' . generate_link_hash('global') . '&mark=forums') : '',
|
|
'U_MCP' => ($auth->acl_get('m_') || $auth->acl_getf_global('m_')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=front', true, $user->session_id) : '')
|
|
);
|
|
|
|
// Output page
|
|
page_header($user->lang['INDEX']);
|
|
|
|
$template->set_filenames(array(
|
|
'body' => 'index_body.html')
|
|
);
|
|
|
|
page_footer();
|