Mercurial > hg > vamp-website
diff forum/Sources/BoardIndex.php @ 76:e3e11437ecea website
Add forum code
author | Chris Cannam |
---|---|
date | Sun, 07 Jul 2013 11:25:48 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/forum/Sources/BoardIndex.php Sun Jul 07 11:25:48 2013 +0200 @@ -0,0 +1,143 @@ +<?php + +/** + * Simple Machines Forum (SMF) + * + * @package SMF + * @author Simple Machines http://www.simplemachines.org + * @copyright 2011 Simple Machines + * @license http://www.simplemachines.org/about/smf/license.php BSD + * + * @version 2.0 + */ + +if (!defined('SMF')) + die('Hacking attempt...'); + +/* The single function this file contains is used to display the main + board index. It uses just the following functions: + + void BoardIndex() + - shows the board index. + - uses the BoardIndex template, and main sub template. + - may use the boardindex subtemplate for wireless support. + - updates the most online statistics. + - is accessed by ?action=boardindex. + + void CollapseCategory() + - collapse or expand a category +*/ + +// Show the board index! +function BoardIndex() +{ + global $txt, $user_info, $sourcedir, $modSettings, $context, $settings, $scripturl; + + // For wireless, we use the Wireless template... + if (WIRELESS) + $context['sub_template'] = WIRELESS_PROTOCOL . '_boardindex'; + else + loadTemplate('BoardIndex'); + + // Set a canonical URL for this page. + $context['canonical_url'] = $scripturl; + + // Do not let search engines index anything if there is a random thing in $_GET. + if (!empty($_GET)) + $context['robot_no_index'] = true; + + // Retrieve the categories and boards. + require_once($sourcedir . '/Subs-BoardIndex.php'); + $boardIndexOptions = array( + 'include_categories' => true, + 'base_level' => 0, + 'parent_id' => 0, + 'set_latest_post' => true, + 'countChildPosts' => !empty($modSettings['countChildPosts']), + ); + $context['categories'] = getBoardIndex($boardIndexOptions); + + // Get the user online list. + require_once($sourcedir . '/Subs-MembersOnline.php'); + $membersOnlineOptions = array( + 'show_hidden' => allowedTo('moderate_forum'), + 'sort' => 'log_time', + 'reverse_sort' => true, + ); + $context += getMembersOnlineStats($membersOnlineOptions); + + $context['show_buddies'] = !empty($user_info['buddies']); + + // Are we showing all membergroups on the board index? + if (!empty($settings['show_group_key'])) + $context['membergroups'] = cache_quick_get('membergroup_list', 'Subs-Membergroups.php', 'cache_getMembergroupList', array()); + + // Track most online statistics? (Subs-MembersOnline.php) + if (!empty($modSettings['trackStats'])) + trackStatsUsersOnline($context['num_guests'] + $context['num_spiders'] + $context['num_users_online']); + + // Retrieve the latest posts if the theme settings require it. + if (isset($settings['number_recent_posts']) && $settings['number_recent_posts'] > 1) + { + $latestPostOptions = array( + 'number_posts' => $settings['number_recent_posts'], + ); + $context['latest_posts'] = cache_quick_get('boardindex-latest_posts:' . md5($user_info['query_wanna_see_board'] . $user_info['language']), 'Subs-Recent.php', 'cache_getLastPosts', array($latestPostOptions)); + } + + $settings['display_recent_bar'] = !empty($settings['number_recent_posts']) ? $settings['number_recent_posts'] : 0; + $settings['show_member_bar'] &= allowedTo('view_mlist'); + $context['show_stats'] = allowedTo('view_stats') && !empty($modSettings['trackStats']); + $context['show_member_list'] = allowedTo('view_mlist'); + $context['show_who'] = allowedTo('who_view') && !empty($modSettings['who_enabled']); + + // Load the calendar? + if (!empty($modSettings['cal_enabled']) && allowedTo('calendar_view')) + { + // Retrieve the calendar data (events, birthdays, holidays). + $eventOptions = array( + 'include_holidays' => $modSettings['cal_showholidays'] > 1, + 'include_birthdays' => $modSettings['cal_showbdays'] > 1, + 'include_events' => $modSettings['cal_showevents'] > 1, + 'num_days_shown' => empty($modSettings['cal_days_for_index']) || $modSettings['cal_days_for_index'] < 1 ? 1 : $modSettings['cal_days_for_index'], + ); + $context += cache_quick_get('calendar_index_offset_' . ($user_info['time_offset'] + $modSettings['time_offset']), 'Subs-Calendar.php', 'cache_getRecentEvents', array($eventOptions)); + + // Whether one or multiple days are shown on the board index. + $context['calendar_only_today'] = $modSettings['cal_days_for_index'] == 1; + + // This is used to show the "how-do-I-edit" help. + $context['calendar_can_edit'] = allowedTo('calendar_edit_any'); + } + else + $context['show_calendar'] = false; + + $context['page_title'] = sprintf($txt['forum_index'], $context['forum_name']); +} + +// Collapse or expand a category +function CollapseCategory() +{ + global $user_info, $sourcedir, $context; + + // Just in case, no need, no need. + $context['robot_no_index'] = true; + + checkSession('request'); + + if (!isset($_GET['sa'])) + fatal_lang_error('no_access', false); + + // Check if the input values are correct. + if (in_array($_REQUEST['sa'], array('expand', 'collapse', 'toggle')) && isset($_REQUEST['c'])) + { + // And collapse/expand/toggle the category. + require_once($sourcedir . '/Subs-Categories.php'); + collapseCategories(array((int) $_REQUEST['c']), $_REQUEST['sa'], array($user_info['id'])); + } + + // And go back to the board index. + BoardIndex(); +} + +?> \ No newline at end of file