mirror of
https://github.com/phpbb/phpbb.git
synced 2025-02-23 03:19:01 +01:00
Submitting the current time() allows us to mark only the topics and forums read up until a certain time (when the user loaded the page). This means that any new posts or topics posted between when the user opened the page and clicked the link are still shown as unread. PHPBB3-8796
194 lines
6.5 KiB
PHP
194 lines
6.5 KiB
PHP
<?php
|
|
/**
|
|
*
|
|
* @package phpBB3
|
|
* @copyright (c) 2005 phpBB Group
|
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
|
*
|
|
*/
|
|
|
|
/**
|
|
*/
|
|
|
|
/**
|
|
* @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);
|
|
|
|
// Start session management
|
|
$user->session_begin();
|
|
$auth->acl($user->data);
|
|
$user->setup();
|
|
|
|
// Handle the display of extension front pages
|
|
if ($ext = $request->variable('ext', ''))
|
|
{
|
|
$class = 'phpbb_ext_' . str_replace('/', '_', $ext) . '_controller';
|
|
|
|
if (!$phpbb_extension_manager->available($ext))
|
|
{
|
|
send_status_line(404, 'Not Found');
|
|
trigger_error($user->lang('EXTENSION_DOES_NOT_EXIST', $ext));
|
|
}
|
|
else if (!$phpbb_extension_manager->enabled($ext))
|
|
{
|
|
send_status_line(404, 'Not Found');
|
|
trigger_error($user->lang('EXTENSION_DISABLED', $ext));
|
|
}
|
|
else if (!class_exists($class))
|
|
{
|
|
send_status_line(404, 'Not Found');
|
|
trigger_error($user->lang('EXTENSION_CONTROLLER_MISSING', $ext));
|
|
}
|
|
|
|
$controller = new $class;
|
|
|
|
if (!($controller instanceof phpbb_extension_controller_interface))
|
|
{
|
|
send_status_line(500, 'Internal Server Error');
|
|
trigger_error($user->lang('EXTENSION_CLASS_WRONG_TYPE', $class));
|
|
}
|
|
|
|
$controller->handle();
|
|
exit_handler();
|
|
}
|
|
|
|
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
|
|
|
|
$user->add_lang('viewforum');
|
|
|
|
display_forums('', $config['load_moderators']);
|
|
|
|
$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($user->lang['COMMA_SEPARATOR'], $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 u.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' => $user->lang('TOTAL_POSTS_COUNT', (int) $config['num_posts']),
|
|
'TOTAL_TOPICS' => $user->lang('TOTAL_TOPICS', (int) $config['num_topics']),
|
|
'TOTAL_USERS' => $user->lang('TOTAL_USERS', (int) $config['num_users']),
|
|
'NEWEST_USER' => $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($user->lang['COMMA_SEPARATOR'], $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&mark_time=' . time()) : '',
|
|
'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) : '')
|
|
);
|
|
|
|
$page_title = $user->lang['INDEX'];
|
|
|
|
/**
|
|
* You can use this event to modify the page title and load data for the index
|
|
*
|
|
* @event core.index_modify_page_title
|
|
* @var string page_title Title of the index page
|
|
* @since 3.1-A1
|
|
*/
|
|
$vars = array('page_title');
|
|
extract($phpbb_dispatcher->trigger_event('core.index_modify_page_title', compact($vars)));
|
|
|
|
// Output page
|
|
page_header($page_title);
|
|
|
|
$template->set_filenames(array(
|
|
'body' => 'index_body.html')
|
|
);
|
|
|
|
page_footer();
|