From 1666e7d3e733bf81b460497ac334232258c343fa Mon Sep 17 00:00:00 2001 From: Ludovic Arnaud Date: Tue, 1 Oct 2002 21:41:57 +0000 Subject: First implementation of subforums handling in index. git-svn-id: file:///svn/phpbb/trunk@2912 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/admin/admin_forums.php | 107 ++++---- phpBB/db/mysql.php | 2 +- phpBB/index.php | 422 +++++++++++++++-------------- phpBB/install/schemas/mysql_schema.sql | 5 +- phpBB/language/lang_english/lang_admin.php | 2 + phpBB/language/lang_english/lang_main.php | 2 + phpBB/templates/subSilver/index_body.html | 29 +- 7 files changed, 299 insertions(+), 270 deletions(-) diff --git a/phpBB/admin/admin_forums.php b/phpBB/admin/admin_forums.php index a501ae60da..1f74bb0bf9 100644 --- a/phpBB/admin/admin_forums.php +++ b/phpBB/admin/admin_forums.php @@ -51,9 +51,9 @@ if (!$acl->get_acl_admin('forum')) // // Mode setting // -if (isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode'])) +if (isset($_POST['mode']) || isset($_GET['mode'])) { - $mode = (!empty($HTTP_POST_VARS['mode'])) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode']; + $mode = (!empty($_POST['mode'])) ? $_POST['mode'] : $_GET['mode']; } else { @@ -65,7 +65,7 @@ switch ($mode) case 'move_up': case 'move_down': $show_index = TRUE; - $forum_id = intval($HTTP_GET_VARS['f']); + $forum_id = intval($_GET['f']); $result = $db->sql_query('SELECT parent_id, left_id, right_id FROM ' . FORUMS_TABLE . " WHERE forum_id = $forum_id"); if (!$row = $db->sql_fetchrow($result)) @@ -92,7 +92,7 @@ switch ($mode) WHERE parent_id = $parent_id AND left_id > $left_id ORDER BY left_id ASC"; } - $result = $db->sql_query_limit($sql, 1, 0); + $result = $db->sql_query_limit($sql, 1); if (!$row = $db->sql_fetchrow($result)) { @@ -156,22 +156,22 @@ switch ($mode) break; case 'create': - if (!trim($HTTP_POST_VARS['forum_name'])) + if (!trim($_POST['forum_name'])) { message_die(ERROR, 'Cannot create a forum without a name'); } - $parent_id = (!empty($HTTP_POST_VARS['parent_id'])) ? $HTTP_POST_VARS['parent_id'] : 0; - $forum_status = (!empty($HTTP_POST_VARS['is_category'])) ? ITEM_CATEGORY : $HTTP_POST_VARS['forum_status']; - $forum_name = str_replace("\'", "''", $HTTP_POST_VARS['forum_name']); - $forum_desc = str_replace("\'", "''", $HTTP_POST_VARS['forum_desc']); + $parent_id = (!empty($_POST['parent_id'])) ? $_POST['parent_id'] : 0; + $forum_status = (!empty($_POST['is_category'])) ? ITEM_CATEGORY : $_POST['forum_status']; + $forum_name = str_replace("\'", "''", $_POST['forum_name']); + $forum_desc = str_replace("\'", "''", $_POST['forum_desc']); - $forum_style = (!empty($HTTP_POST_VARS['forum_style'])) ? intval($HTTP_POST_VARS['forum_style']) : 'NULL'; - $post_count_inc = (!empty($HTTP_POST_VARS['disable_post_count'])) ? 0 : 1; + $forum_style = (!empty($_POST['forum_style'])) ? intval($_POST['forum_style']) : 'NULL'; + $post_count_inc = (!empty($_POST['disable_post_count'])) ? 0 : 1; - $prune_enable = (!empty($HTTP_POST_VARS['prune_enable'])) ? 1 : 0; - $prune_days = intval($HTTP_POST_VARS['prune_days']); - $prune_freq = intval($HTTP_POST_VARS['prune_freq']); + $prune_enable = (!empty($_POST['prune_enable'])) ? 1 : 0; + $prune_days = intval($_POST['prune_days']); + $prune_freq = intval($_POST['prune_freq']); $result = $db->sql_query('SELECT MAX(forum_id) AS max_id FROM ' . FORUMS_TABLE); $forum_id = $db->sql_fetchfield('max_id', 0, $result) + 1; @@ -208,14 +208,14 @@ switch ($mode) break; case 'modify': - if (!$forum_id = intval($HTTP_POST_VARS['forum_id'])) + if (!$forum_id = intval($_POST['forum_id'])) { message_die(ERROR, 'No forum specified'); } $row = get_forum_info($forum_id); - $parent_id = intval($HTTP_POST_VARS['parent_id']); - $action = (!empty($HTTP_POST_VARS['action'])) ? $HTTP_POST_VARS['action'] : ''; + $parent_id = intval($_POST['parent_id']); + $action = (!empty($_POST['action'])) ? $_POST['action'] : ''; if (($row['parent_id'] != $parent_id) && ($parent_id != -1)) { @@ -223,22 +223,23 @@ switch ($mode) } $sql = array( - 'forum_name' => (!empty($HTTP_POST_VARS['forum_name'])) ? stripslashes($HTTP_POST_VARS['forum_name']) : $row['forum_name'], - 'forum_desc' => (!empty($HTTP_POST_VARS['forum_desc'])) ? stripslashes($HTTP_POST_VARS['forum_desc']) : $row['forum_desc'], - 'forum_status' => (!empty($HTTP_POST_VARS['set_category']) && $action) ? ITEM_CATEGORY : intval($HTTP_POST_VARS['forum_status']), - 'forum_style' => (!empty($HTTP_POST_VARS['forum_style'])) ? $HTTP_POST_VARS['forum_style'] : NULL, + 'forum_name' => (!empty($_POST['forum_name'])) ? stripslashes($_POST['forum_name']) : $row['forum_name'], + 'forum_desc' => (!empty($_POST['forum_desc'])) ? stripslashes($_POST['forum_desc']) : $row['forum_desc'], + 'forum_status' => (!empty($_POST['set_category']) && $action) ? ITEM_CATEGORY : intval($_POST['forum_status']), + 'forum_style' => (!empty($_POST['forum_style'])) ? $_POST['forum_style'] : NULL, 'parent_id' => $parent_id, - 'prune_enable' => (!empty($HTTP_POST_VARS['prune_enable'])) ? 1 : 0, - 'prune_days' => intval($HTTP_POST_VARS['prune_days']), - 'prune_freq' => intval($HTTP_POST_VARS['prune_freq']), - 'post_count_inc' => (!empty($HTTP_POST_VARS['disable_post_count'])) ? 0 : 1 + 'prune_enable' => (!empty($_POST['prune_enable'])) ? 1 : 0, + 'prune_days' => intval($_POST['prune_days']), + 'prune_freq' => intval($_POST['prune_freq']), + 'display_on_index' => (!empty($_POST['display_on_index'])) ? 0 : 1, + 'post_count_inc' => (!empty($_POST['disable_post_count'])) ? 0 : 1 ); - if (!empty($HTTP_POST_VARS['set_category']) && $action) + if (!empty($_POST['set_category']) && $action) { - if ($action == 'move' && $HTTP_POST_VARS['to_forum_id']) + if ($action == 'move' && $_POST['to_forum_id']) { - move_forum_content($forum_id, $HTTP_POST_VARS['to_forum_id']); + move_forum_content($forum_id, $_POST['to_forum_id']); } elseif ($action == 'delete') { @@ -257,7 +258,7 @@ switch ($mode) break; case 'remove': - if (empty($HTTP_POST_VARS['submit'])) + if (empty($_POST['submit'])) { // // wasn't this form submitted? is anyone trying to remotely delete forums @@ -265,10 +266,10 @@ switch ($mode) message_die(ERROR, 'Did not submit'); } - $action_subforums = (!empty($HTTP_POST_VARS['action_subforums'])) ? $HTTP_POST_VARS['action_subforums'] : ''; - $action_posts = (!empty($HTTP_POST_VARS['action_posts'])) ? $HTTP_POST_VARS['action_posts'] : ''; + $action_subforums = (!empty($_POST['action_subforums'])) ? $_POST['action_subforums'] : ''; + $action_posts = (!empty($_POST['action_posts'])) ? $_POST['action_posts'] : ''; - $row = get_forum_info($HTTP_GET_VARS['f']); + $row = get_forum_info($_GET['f']); extract($row); if ($action_posts == 'delete') @@ -277,14 +278,14 @@ switch ($mode) } elseif ($action_posts == 'move') { - if (empty($HTTP_POST_VARS['posts_to_id'])) + if (empty($_POST['posts_to_id'])) { $message = $lang['No_destination_forum'] . '

' . sprintf($lang['Click_return_forumadmin'], '', ''); message_die(ERROR, $message); } - move_forum_content($forum_id, $HTTP_POST_VARS['posts_to_id']); + move_forum_content($forum_id, $_POST['posts_to_id']); } if ($action_subforums == 'delete') @@ -302,7 +303,7 @@ switch ($mode) } elseif ($action_subforums == 'move') { - if (empty($HTTP_POST_VARS['subforums_to_id'])) + if (empty($_POST['subforums_to_id'])) { $message = $lang['No_destination_forum'] . '

' . sprintf($lang['Click_return_forumadmin'], '', ''); @@ -312,9 +313,9 @@ switch ($mode) $result = $db->sql_query('SELECT forum_id FROM ' . FORUMS_TABLE . " WHERE parent_id = $forum_id"); while ($row = $db->sql_fetchrow($result)) { - move_forum($row['forum_id'], $HTTP_POST_VARS['subforums_to_id']); + move_forum($row['forum_id'], $_POST['subforums_to_id']); } - $db->sql_query('UPDATE ' . FORUMS_TABLE . ' SET parent_id = ' . $HTTP_POST_VARS['subforums_to_id'] . " WHERE parent_id = $forum_id"); + $db->sql_query('UPDATE ' . FORUMS_TABLE . ' SET parent_id = ' . $_POST['subforums_to_id'] . " WHERE parent_id = $forum_id"); $diff = 2; $db->sql_query('DELETE FROM ' . FORUMS_TABLE . " WHERE forum_id = $forum_id"); @@ -338,14 +339,14 @@ switch ($mode) WHERE left_id > $right_id"; $db->sql_query($sql); - $return_id = (!empty($HTTP_POST_VARS['subforums_to_id'])) ? $HTTP_POST_VARS['subforums_to_id'] : $parent_id; + $return_id = (!empty($_POST['subforums_to_id'])) ? $_POST['subforums_to_id'] : $parent_id; $message = $lang['Forum_deleted'] . '

' . sprintf($lang['Click_return_forumadmin'], '', ''); message_die(MESSAGE, $message); break; case 'forum_sync': - sync('forum', intval($HTTP_GET_VARS[POST_FORUM_URL])); + sync('forum', intval($_GET[POST_FORUM_URL])); $show_index = TRUE; break; @@ -356,7 +357,7 @@ switch ($mode) // if ($mode == 'edit') { - $forum_id = intval($HTTP_GET_VARS['f']); + $forum_id = intval($_GET['f']); $row = get_forum_info($forum_id); extract($row); @@ -383,9 +384,9 @@ switch ($mode) else { $parent_id = 0; - if (!empty($HTTP_POST_VARS['parent_id'])) + if (!empty($_POST['parent_id'])) { - list($parent_id) = each($HTTP_POST_VARS['parent_id']); + list($parent_id) = each($_POST['parent_id']); } $parents_list = make_forums_list('all', $parent_id); @@ -396,7 +397,7 @@ switch ($mode) $forum_desc = ''; $forum_style = ''; $forum_status = ITEM_UNLOCKED; - $forum_name = (!empty($HTTP_POST_VARS['forum_name'][$parent_id])) ? htmlspecialchars($HTTP_POST_VARS['forum_name'][$parent_id]) : ''; + $forum_name = (!empty($_POST['forum_name'][$parent_id])) ? htmlspecialchars($_POST['forum_name'][$parent_id]) : ''; $post_count_inc = TRUE; @@ -452,7 +453,7 @@ switch ($mode) @@ -473,8 +474,18 @@ switch ($mode) - /> - + + /> + +
+ /> + + query_result) ? $this->query_result : ( ( $transaction == END_TRANSACTION ) ? true : false ); } - function sql_query_limit($query = '', $total, $offset, $transaction = false) + function sql_query_limit($query = '', $total, $offset = 0, $transaction = false) { if ( $query != '' ) { diff --git a/phpBB/index.php b/phpBB/index.php index aa1311fe1a..f332bfb94c 100644 --- a/phpBB/index.php +++ b/phpBB/index.php @@ -24,12 +24,12 @@ $phpbb_root_path = './'; include($phpbb_root_path . 'extension.inc'); include($phpbb_root_path . 'common.'.$phpEx); -$viewcat = ( !empty($HTTP_GET_VARS['c']) ) ? intval($HTTP_GET_VARS['c']) : -1; -$forum_id = ( !empty($HTTP_GET_VARS['f']) ) ? intval($HTTP_GET_VARS['f']) : 0; +$viewcat = (!empty($HTTP_GET_VARS['c'])) ? intval($HTTP_GET_VARS['c']) : -1; +$forum_id = (!empty($HTTP_GET_VARS['f'])) ? intval($HTTP_GET_VARS['f']) : 0; -if ( isset($HTTP_GET_VARS['mark']) || isset($HTTP_POST_VARS['mark']) ) +if (isset($HTTP_GET_VARS['mark']) || isset($HTTP_POST_VARS['mark'])) { - $mark_read = ( isset($HTTP_POST_VARS['mark']) ) ? $HTTP_POST_VARS['mark'] : $HTTP_GET_VARS['mark']; + $mark_read = (isset($HTTP_POST_VARS['mark'])) ? $HTTP_POST_VARS['mark'] : $HTTP_GET_VARS['mark']; } else { @@ -53,9 +53,9 @@ $session->configure($userdata); // // Handle marking posts // -if ( $mark_read == 'forums' ) +if ($mark_read == 'forums') { - if ( $userdata['user_id'] ) + if ($userdata['user_id']) { setcookie($board_config['cookie_name'] . '_f_all', time(), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); } @@ -71,36 +71,22 @@ if ( $mark_read == 'forums' ) // End handle marking posts // -$mark_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t'])) : array(); -$mark_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f'])) : array(); +$mark_topics = (isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t'])) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t'])) : array(); +$mark_forums = (isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f'])) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f'])) : array(); // -// If you don't use these stats on your index you may want to consider -// removing them +// Set some stats, get posts count from forums data if we... hum... retrieve all forums data // -$total_posts = get_db_stat('postcount'); +$total_posts = 0; $total_users = $board_config['num_users']; $newest_user = $board_config['newest_username']; $newest_uid = $board_config['newest_user_id']; -if ( $total_posts == 0 ) -{ - $l_total_post_s = $lang['Posted_articles_zero_total']; -} -else if ( $total_posts == 1 ) -{ - $l_total_post_s = $lang['Posted_article_total']; -} -else -{ - $l_total_post_s = $lang['Posted_articles_total']; -} - -if ( $total_users == 0 ) +if ($total_users == 0) { $l_total_user_s = $lang['Registered_users_zero_total']; } -else if ( $total_users == 1 ) +else if ($total_users == 1) { $l_total_user_s = $lang['Registered_user_total']; } @@ -109,210 +95,228 @@ else $l_total_user_s = $lang['Registered_users_total']; } -// -// Start page proper -// -$sql = "SELECT c.cat_id, c.cat_title, c.cat_order - FROM " . CATEGORIES_TABLE . " c - ORDER BY c.cat_order"; -$result = $db->sql_query($sql); +$forum_moderators = array(); +get_moderators($forum_moderators); -while ( $category_rows[] = $db->sql_fetchrow($result) ); +$branch_root_id = 0; +$forum_rows = $subforums = array(); -if ( ( $total_categories = count($category_rows) ) ) +$result = $db->sql_query('SELECT * FROM ' . FORUMS_TABLE . ' ORDER BY left_id'); +while ($row = $db->sql_fetchrow($result)) { - // - // Define appropriate SQL - // - switch ( SQL_LAYER ) + if ($row['parent_id'] == 0) { - case 'oracle': - $sql = "SELECT f.*, u.username, u.user_id - FROM " . FORUMS_TABLE . " f, " . USERS_TABLE . " u - WHERE u.user_id = p.poster_id(+) - ORDER BY f.cat_id, f.forum_order"; - break; - - default: - $sql = "SELECT f.*, u.username, u.user_id - FROM ( " . FORUMS_TABLE . " f - LEFT JOIN " . USERS_TABLE . " u ON u.user_id = f.forum_last_poster_id ) - ORDER BY f.cat_id, f.forum_order"; - break; - } - $result = $db->sql_query($sql); + $forum_rows[] = $row; - $forum_data = array(); - while ( $row = $db->sql_fetchrow($result) ) + if ($row['forum_status'] == ITEM_CATEGORY) + { + $branch_root_id = $row['forum_id']; + } + else + { + $branch_root_id = 0; + } + } + elseif ($row['parent_id'] == $branch_root_id) + { + $forum_rows[] = $row; + $forum_root_id = $row['forum_id']; + } + elseif ($row['display_on_index'] && $row['forum_status'] != ITEM_CATEGORY) { - $forum_data[] = $row; + if ($acl->get_acl($row['forum_id'], 'forum', 'list')) + { + $subforums[$forum_root_id][] = $row; + } } +} - // - // Obtain list of moderators of each forum - // First users, then groups ... broken into two queries - // - $forum_moderators = array(); - get_moderators($forum_moderators); +function format_subforums_list($subforums) +{ + if (empty($subforums)) + { + return ''; + } - $template->assign_vars(array( - 'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts), - 'TOTAL_USERS' => sprintf($l_total_user_s, $total_users), - 'NEWEST_USER' => sprintf($lang['Newest_user'], '', $newest_user, ''), - - 'FORUM_IMG' => create_img($theme['forum'], $lang['No_new_posts']), - 'FORUM_NEW_IMG' => create_img($theme['forum_new'], $lang['New_posts']), - 'FORUM_LOCKED_IMG' => create_img($theme['forum_locked'], $lang['No_new_posts_locked']), - - 'L_FORUM' => $lang['Forum'], - 'L_TOPICS' => $lang['Topics'], - 'L_REPLIES' => $lang['Replies'], - 'L_VIEWS' => $lang['Views'], - 'L_POSTS' => $lang['Posts'], - 'L_LASTPOST' => $lang['Last_Post'], - 'L_NO_NEW_POSTS' => $lang['No_new_posts'], - 'L_NEW_POSTS' => $lang['New_posts'], - 'L_NO_NEW_POSTS_LOCKED' => $lang['No_new_posts_locked'], - 'L_NEW_POSTS_LOCKED' => $lang['New_posts_locked'], - 'L_ONLINE_EXPLAIN' => $lang['Online_explain'], - - 'L_VIEW_MODERATORS' => $lang['View_moderators'], - 'L_FORUM_LOCKED' => $lang['Forum_is_locked'], - 'L_MARK_FORUMS_READ' => $lang['Mark_all_forums'], - 'L_LEGEND' => $lang['Legend'], - 'L_NO_FORUMS' => $lang['No_forums'], - - 'U_MARK_READ' => "index.$phpEx$SID&mark=forums") - ); + global $phpEx, $SID; + foreach ($subforums as $row) + { + $alist[$row['forum_id']] = $row['forum_name']; + } + asort($alist); - // - // Okay, let's build the index - // - for($i = 0; $i < $total_categories; $i++) + $links = array(); + foreach ($alist as $forum_id => $forum_name) { - $cat_id = $category_rows[$i]['cat_id']; + $links[] = '' . htmlspecialchars($forum_name) . ''; + } - // - // Should we display this category/forum set? - // - $display_forums = false; - for($j = 0; $j < sizeof($forum_data); $j++) + return implode(', ', $links); +} + +foreach ($forum_rows as $row) +{ + extract($row); + if ($parent_id == 0) + { + if ($forum_status == ITEM_CATEGORY) { - if ( $acl->get_acl($forum_data[$j]['forum_id'], 'forum', 'list') && $forum_data[$j]['cat_id'] == $cat_id ) - { - $display_forums = true; - } + $branch_root_id = $forum_id; + $stored_cat = $row; + continue; } - - // - // Yes, we should, so first dump out the category - // title, then, if appropriate the forum list - // - if ( $display_forums ) + else { - $template->assign_block_vars('catrow', array( - 'CAT_ID' => $cat_id, - 'CAT_DESC' => $category_rows[$i]['cat_title'], - 'U_VIEWCAT' => "index.$phpEx$SID&c=$cat_id", - 'HAVE_FORUMS' => true) - ); - - if ( $viewcat == $cat_id || $viewcat == -1 ) + $branch_root_id = 0; + unset($stored_cat); + } + } + elseif (!empty($stored_cat)) + { + $template->assign_block_vars('forumrow', array( + 'S_IS_CAT' => TRUE, + 'CAT_ID' => $stored_cat['forum_id'], + 'CAT_NAME' => $stored_cat['forum_name'], + 'U_VIEWCAT' => 'index.' . $phpEx . $SID . '&c=' . $stored_cat['forum_id'] + )); + unset($stored_cat); + } + + if ($acl->get_acl($forum_id, 'forum', 'list')) + { + if ($forum_status == ITEM_LOCKED) + { + $folder_image = $theme['forum_locked']; + $folder_alt = $lang['Forum_locked']; + } + else + { + $unread_topics = false; + if ($userdata['user_id'] && $forum_last_post_time > $userdata['user_lastvisit']) { - for($j = 0; $j < sizeof($forum_data); $j++) + $unread_topics = true; + if (isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'])) + { + if ($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'] > $forum_last_post_time) + { + $unread_topics = false; + } + } + + if (isset($mark_topics[$forum_id]) || isset($mark_forums[$forum_id])) { - if ( $forum_data[$j]['cat_id'] == $cat_id ) + if ($mark_forums[$forum_id] > $userdata['user_lastvisit'] || !max($mark_topics[$forum_id])) { - $row_forum_id = $forum_data[$j]['forum_id']; - - if ( $acl->get_acl($row_forum_id, 'forum', 'list') ) - { - if ( $forum_data[$j]['forum_status'] == FORUM_LOCKED ) - { - $folder_image = $theme['forum_locked']; - $folder_alt = $lang['Forum_locked']; - } - else - { - $unread_topics = false; - if ( $userdata['user_id'] && $forum_data[$j]['forum_last_post_time'] > $userdata['user_lastvisit'] ) - { - $unread_topics = true; - if ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) ) - { - if ( $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'] > $forum_data[$j]['forum_last_post_time'] ) - { - $unread_topics = false; - } - } - - if ( isset($mark_topics[$row_forum_id]) || isset($mark_forums[$row_forum_id]) ) - { - if ( $mark_forums[$row_forum_id] > $userdata['user_lastvisit'] || !max($mark_topics[$row_forum_id]) ) - { - $unread_topics = false; - } - } - } - - $folder_image = ( $unread_topics ) ? $theme['forum_new'] : $theme['forum']; - $folder_alt = ( $unread_topics ) ? $lang['New_posts'] : $lang['No_new_posts']; - } - - $posts = $forum_data[$j]['forum_posts']; - $topics = $forum_data[$j]['forum_topics']; - - if ( $forum_data[$j]['forum_last_post_id'] ) - { - $last_post_time = create_date($board_config['default_dateformat'], $forum_data[$j]['forum_last_post_time'], $board_config['board_timezone']); - - $last_post = $last_post_time . '
'; - - $last_post .= ( $forum_data[$j]['user_id'] == ANONYMOUS ) ? ( ($forum_data[$j]['forum_last_poster_name'] != '' ) ? $forum_data[$j]['forum_last_poster_name'] . ' ' : $lang['Guest'] . ' ' ) : '' . $forum_data[$j]['username'] . ' '; - - $last_post .= '' . create_img($theme['goto_post_latest'], $lang['View_latest_post']) . ''; - } - else - { - $last_post = $lang['No_Posts']; - } - - if ( count($forum_moderators[$row_forum_id]) > 0 ) - { - $l_moderators = ( count($forum_moderators[$row_forum_id]) == 1 ) ? $lang['Moderator'] . ':' : $lang['Moderators'] . ':' ; - $moderator_list = implode(', ', $forum_moderators[$row_forum_id]); - } - else - { - $l_moderators = ' '; - $moderator_list = ' '; - } - - $template->assign_block_vars('catrow.forumrow', array( - 'ROW_COUNT' => $i, - 'FORUM_FOLDER_IMG' => create_img($folder_image, $folder_alt), - 'FORUM_NAME' => $forum_data[$j]['forum_name'], - 'FORUM_DESC' => $forum_data[$j]['forum_desc'], - 'POSTS' => $forum_data[$j]['forum_posts'], - 'TOPICS' => $forum_data[$j]['forum_topics'], - 'LAST_POST' => $last_post, - 'MODERATORS' => $moderator_list, - - 'FORUM_IMG' => $forum_data[$j]['forum_image'], - - 'L_MODERATOR' => $l_moderators, - 'L_FORUM_FOLDER_ALT' => $folder_alt, - - 'U_VIEWFORUM' => "viewforum.$phpEx$SID&f=$row_forum_id") - ); - } + $unread_topics = false; } } } + + $folder_image = ($unread_topics) ? $theme['forum_new'] : $theme['forum']; + $folder_alt = ($unread_topics) ? $lang['New_posts'] : $lang['No_new_posts']; } - } // for ... categories -}// if ... total_categories + if ($forum_last_post_id) + { + $last_post = create_date($board_config['default_dateformat'], $forum_last_post_time, $board_config['board_timezone']) . '
'; + + $last_post .= ($user_id == ANONYMOUS) ? (($forum_last_poster_name != '') ? $forum_last_poster_name . ' ' : $lang['Guest'] . ' ') : '' . $username . ' '; + + $last_post .= '' . create_img($theme['goto_post_latest'], $lang['View_latest_post']) . ''; + } + else + { + $last_post = $lang['No_Posts']; + } + + if (!empty($forum_moderators[$forum_id])) + { + $l_moderators = (count($forum_moderators[$forum_id]) == 1) ? $lang['Moderator'] . ':' : $lang['Moderators'] . ':' ; + $moderator_list = implode(', ', $forum_moderators[$forum_id]); + } + else + { + $l_moderators = ' '; + $moderator_list = ' '; + } + + if (isset($subforums[$forum_id])) + { + $subforums_list = format_subforums_list($subforums[$forum_id]); + $l_subforums = '
' . (count($subforums[$forum_id]) == 1) ? $lang['Subforum'] : $lang['Subforums']; + } + else + { + $subforums_list = ''; + $l_subforums = ''; + } + + $template->assign_block_vars('forumrow', array( + 'S_IS_ROOTFORUM' => TRUE, + + 'FORUM_FOLDER_IMG' => create_img($folder_image, $folder_alt), + 'FORUM_NAME' => $forum_name, + 'FORUM_DESC' => $forum_desc, + + 'POSTS' => $forum_posts, + 'TOPICS' => $forum_topics, + 'LAST_POST' => $last_post, + 'MODERATORS' => $moderator_list, + 'SUBFORUMS' => $subforums_list, + + 'FORUM_IMG' => $forum_image, + + 'L_SUBFORUM' => $l_subforums, + 'L_MODERATOR' => $l_moderators, + 'L_FORUM_FOLDER_ALT' => $folder_alt, + + 'U_VIEWFORUM' => 'viewforum.' . $phpEx . $SID . '&f=' . $forum_id + )); + } +} + +if ($total_posts == 0) +{ + $l_total_post_s = $lang['Posted_articles_zero_total']; +} +else if ($total_posts == 1) +{ + $l_total_post_s = $lang['Posted_article_total']; +} +else +{ + $l_total_post_s = $lang['Posted_articles_total']; +} + +$template->assign_vars(array( + 'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts), + 'TOTAL_USERS' => sprintf($l_total_user_s, $total_users), + 'NEWEST_USER' => sprintf($lang['Newest_user'], '', $newest_user, ''), + + 'FORUM_IMG' => create_img($theme['forum'], $lang['No_new_posts']), + 'FORUM_NEW_IMG' => create_img($theme['forum_new'], $lang['New_posts']), + 'FORUM_LOCKED_IMG' => create_img($theme['forum_locked'], $lang['No_new_posts_locked']), + + 'L_FORUM' => $lang['Forum'], + 'L_TOPICS' => $lang['Topics'], + 'L_REPLIES' => $lang['Replies'], + 'L_VIEWS' => $lang['Views'], + 'L_POSTS' => $lang['Posts'], + 'L_LASTPOST' => $lang['Last_Post'], + 'L_NO_NEW_POSTS' => $lang['No_new_posts'], + 'L_NEW_POSTS' => $lang['New_posts'], + 'L_NO_NEW_POSTS_LOCKED' => $lang['No_new_posts_locked'], + 'L_NEW_POSTS_LOCKED' => $lang['New_posts_locked'], + 'L_ONLINE_EXPLAIN' => $lang['Online_explain'], + + 'L_VIEW_MODERATORS' => $lang['View_moderators'], + 'L_FORUM_LOCKED' => $lang['Forum_is_locked'], + 'L_MARK_FORUMS_READ' => $lang['Mark_all_forums'], + 'L_LEGEND' => $lang['Legend'], + 'L_NO_FORUMS' => $lang['No_forums'], + + 'U_MARK_READ' => "index.$phpEx$SID&mark=forums") +); // // Start output of page @@ -321,8 +325,8 @@ $page_title = $lang['Index']; include($phpbb_root_path . 'includes/page_header.'.$phpEx); $template->set_filenames(array( - 'body' => 'index_body.html') -); + 'body' => 'index_body.html' +)); include($phpbb_root_path . 'includes/page_tail.'.$phpEx); diff --git a/phpBB/install/schemas/mysql_schema.sql b/phpBB/install/schemas/mysql_schema.sql index c250a650a4..8f482385a5 100644 --- a/phpBB/install/schemas/mysql_schema.sql +++ b/phpBB/install/schemas/mysql_schema.sql @@ -135,7 +135,6 @@ CREATE TABLE phpbb_forums ( forum_id smallint(5) UNSIGNED NOT NULL, cat_id smallint(5) UNSIGNED NOT NULL, parent_id smallint(5) UNSIGNED NOT NULL, - forum_order smallint(5) UNSIGNED DEFAULT '1' NOT NULL, left_id smallint(5) UNSIGNED NOT NULL, right_id smallint(5) UNSIGNED NOT NULL, forum_name varchar(150) NOT NULL, @@ -149,12 +148,13 @@ CREATE TABLE phpbb_forums ( forum_last_poster_id mediumint(8) DEFAULT '0' NOT NULL, forum_last_post_time int(11) DEFAULT '0' NOT NULL, forum_last_poster_name varchar(30), + display_on_index tinyint(1) DEFAULT '1' NOT NULL, post_count_inc tinyint(1) DEFAULT '1' NOT NULL, prune_next int(11) UNSIGNED, prune_days tinyint(4) UNSIGNED NOT NULL, prune_freq tinyint(4) UNSIGNED DEFAULT '0' NOT NULL, PRIMARY KEY (forum_id), - KEY forums_order (forum_order), + KEY left_id (left_id), KEY forum_last_post_id (forum_last_post_id) ); @@ -576,6 +576,7 @@ CREATE TABLE phpbb_topics ( PRIMARY KEY (topic_id), KEY forum_id (forum_id), KEY topic_moved_id (topic_moved_id), + KEY topic_last_post_time (topic_last_post_time), KEY topic_type (topic_type) ); diff --git a/phpBB/language/lang_english/lang_admin.php b/phpBB/language/lang_english/lang_admin.php index 19094cf5b9..d1fc83e562 100644 --- a/phpBB/language/lang_english/lang_admin.php +++ b/phpBB/language/lang_english/lang_admin.php @@ -537,12 +537,14 @@ $lang['Category_name'] = 'Category name'; $lang['Forum_type'] = 'Forum type'; $lang['Parent'] = 'Parent'; +$lang['No_parent'] = 'No parent'; $lang['Locked'] = 'Locked'; $lang['Unlocked'] = 'Unlocked'; $lang['General_settings'] = 'General settings'; $lang['Forum_settings'] = 'Forum settings'; $lang['Disable_post_count'] = 'Disable post count'; +$lang['Display_on_index'] = 'Display a link to this forum on index'; $lang['Forum_edit_delete_explain'] = 'The form below will allow you to customize all the general board options. For User and Forum configurations use the related links on the left hand side'; diff --git a/phpBB/language/lang_english/lang_main.php b/phpBB/language/lang_english/lang_main.php index 3e8fed672b..d842ed8432 100644 --- a/phpBB/language/lang_english/lang_main.php +++ b/phpBB/language/lang_english/lang_main.php @@ -37,6 +37,8 @@ $lang['DATE_FORMAT'] = 'd M Y'; // This should be changed to the default date f // Common, these terms are used extensively on several pages // $lang['Forum'] = 'Forum'; +$lang['Subforum'] = 'Subforum: '; +$lang['Subforums'] = 'Subforums: '; $lang['Category'] = 'Category'; $lang['Topic'] = 'Topic'; $lang['Topics'] = 'Topics'; diff --git a/phpBB/templates/subSilver/index_body.html b/phpBB/templates/subSilver/index_body.html index 56fe107749..818c50a58c 100644 --- a/phpBB/templates/subSilver/index_body.html +++ b/phpBB/templates/subSilver/index_body.html @@ -18,25 +18,34 @@  {L_POSTS}   {L_LASTPOST}  - + + - {catrow.CAT_DESC} + {forumrow.CAT_NAME}   - + + - {catrow.forumrow.FORUM_FOLDER_IMG} - {catrow.forumrow.FORUM_NAME}
{catrow.forumrow.FORUM_DESC}
{catrow.forumrow.L_MODERATOR} {catrow.forumrow.MODERATORS} - {catrow.forumrow.TOPICS} - {catrow.forumrow.POSTS} - {catrow.forumrow.LAST_POST} + {forumrow.FORUM_FOLDER_IMG} + {forumrow.FORUM_NAME}
{forumrow.FORUM_DESC}
+ + {forumrow.L_MODERATOR} {forumrow.MODERATORS}
+ + + {forumrow.L_SUBFORUM} {forumrow.SUBFORUMS} + + + {forumrow.TOPICS} + {forumrow.POSTS} + {forumrow.LAST_POST} - + {L_NO_FORUMS} - + -- cgit v1.2.1