mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
This allows the common phpBB objects to be automatically accessible to extensions without the author having to globalize and assign each one himself. This is better because it also gives purpose to the phpbb_extension_controller class; instead of just being the way to ensure a handle() method is present, it also does this work for us. PHPBB3-10586
177 lines
6.1 KiB
PHP
177 lines
6.1 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);
|
|
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
|
|
|
|
// Start session management
|
|
$user->session_begin();
|
|
$auth->acl($user->data);
|
|
$user->setup('viewforum');
|
|
|
|
// 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))
|
|
{
|
|
send_status_line(500, 'Internal Server Error');
|
|
trigger_error($user->lang('EXTENSION_CLASS_WRONG_TYPE', $class));
|
|
}
|
|
|
|
$controller->handle();
|
|
exit_handler();
|
|
}
|
|
|
|
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(', ', $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'))
|
|
{
|
|
$now = phpbb_gmgetdate(time() + $user->timezone + $user->dst);
|
|
|
|
// Display birthdays of 29th february on 28th february in non-leap-years
|
|
$leap_year_birthdays = '';
|
|
if ($now['mday'] == 28 && $now['mon'] == 2 && !$user->format_date(time(), '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(', ', $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();
|