diff options
Diffstat (limited to 'phpBB/index.php')
| -rw-r--r-- | phpBB/index.php | 94 | 
1 files changed, 64 insertions, 30 deletions
diff --git a/phpBB/index.php b/phpBB/index.php index 46694a6ec2..a477a876ad 100644 --- a/phpBB/index.php +++ b/phpBB/index.php @@ -2,9 +2,8 @@  /**  *  * @package phpBB3 -* @version $Id$  * @copyright (c) 2005 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -18,35 +17,63 @@ 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'); +$user->setup(); -display_forums('', $config['load_moderators']); +// Handle the display of extension front pages +if ($ext = $request->variable('ext', '')) +{ +	$class = 'phpbb_ext_' . str_replace('/', '_', $ext) . '_controller'; -// 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']; +	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)); +	} -$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'; +	$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 +	$sql = 'SELECT group_id, group_name, group_colour, group_type, group_legend  		FROM ' . GROUPS_TABLE . ' -		WHERE group_legend = 1 -		ORDER BY group_name ASC'; +		WHERE group_legend > 0 +		ORDER BY ' . $order_legend . ' ASC';  }  else  { -	$sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type +	$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 ( @@ -54,9 +81,9 @@ else  				AND ug.user_id = ' . $user->data['user_id'] . '  				AND ug.user_pending = 0  			) -		WHERE g.group_legend = 1 +		WHERE g.group_legend > 0  			AND (g.group_type <> ' . GROUP_HIDDEN . ' OR ug.user_id = ' . $user->data['user_id'] . ') -		ORDER BY g.group_name ASC'; +		ORDER BY g.' . $order_legend . ' ASC';  }  $result = $db->sql_query($sql); @@ -80,14 +107,15 @@ $db->sql_freeresult($result);  $legend = implode(', ', $legend);  // Generate birthday list if required ... -$birthday_list = ''; +$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); +	$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 && !$user->format_date(time(), 'L')) +	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)) . "%'";  	} @@ -103,11 +131,19 @@ if ($config['load_birthdays'] && $config['allow_birthdays'] && $auth->acl_gets('  	while ($row = $db->sql_fetchrow($result))  	{ -		$birthday_list .= (($birthday_list != '') ? ', ' : '') . get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']); +		$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 .= ' (' . max(0, $now['year'] - $age) . ')'; +			$birthday_list[] = $birthday_username . (($birthday_year) ? ' (' . $birthday_age . ')' : '');  		}  	}  	$db->sql_freeresult($result); @@ -115,13 +151,13 @@ if ($config['load_birthdays'] && $config['allow_birthdays'] && $auth->acl_gets('  // 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'])), +	'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'	=> $birthday_list, +	'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'), @@ -143,5 +179,3 @@ $template->set_filenames(array(  );  page_footer(); - -?>
\ No newline at end of file  | 
