mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-02 12:34:59 +02:00
How do we do this? If an item is unread, the URL to view that item will be the URL to mark it as read (index.php?mark_notification=$id). When the URL is visited it marks the item as read and redirects them to the correct URL for the item. If the item is read, the URL is directly to the item. Prettify the html output PHPBB-11103
211 lines
6.9 KiB
PHP
211 lines
6.9 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();
|
|
|
|
// Mark notifications read
|
|
if (($mark_notification = request_var('mark_notification', 0)))
|
|
{
|
|
$notification = $phpbb_notifications->load_notifications(array(
|
|
'notification_id' => $mark_notification
|
|
));
|
|
|
|
if (isset($notification['notifications'][$mark_notification]))
|
|
{
|
|
$notification = $notification['notifications'][$mark_notification];
|
|
|
|
$notification->mark_read();
|
|
|
|
redirect($notification->get_url());
|
|
}
|
|
}
|
|
|
|
// 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') : '',
|
|
'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();
|