diff options
author | Paul S. Owen <psotfx@users.sourceforge.net> | 2002-08-13 16:34:17 +0000 |
---|---|---|
committer | Paul S. Owen <psotfx@users.sourceforge.net> | 2002-08-13 16:34:17 +0000 |
commit | 38b8e4b801a13574af8efa961f3a453ae1e00d89 (patch) | |
tree | 77392e315766d125c5e144d0fd48a334f0dc45be /phpBB/index.php | |
parent | a7cda845fa4337d7fe19d166fa1ce93acc941254 (diff) | |
download | forums-38b8e4b801a13574af8efa961f3a453ae1e00d89.tar forums-38b8e4b801a13574af8efa961f3a453ae1e00d89.tar.gz forums-38b8e4b801a13574af8efa961f3a453ae1e00d89.tar.bz2 forums-38b8e4b801a13574af8efa961f3a453ae1e00d89.tar.xz forums-38b8e4b801a13574af8efa961f3a453ae1e00d89.zip |
More changes ... switched away from prefetch for now ...
git-svn-id: file:///svn/phpbb/trunk@2849 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/index.php')
-rw-r--r-- | phpBB/index.php | 494 |
1 files changed, 87 insertions, 407 deletions
diff --git a/phpBB/index.php b/phpBB/index.php index d63a1970cb..732bbe0922 100644 --- a/phpBB/index.php +++ b/phpBB/index.php @@ -28,32 +28,17 @@ include($phpbb_root_path . 'common.'.$phpEx); // Start session management // $userdata = $session->start(); -$acl = new auth('list', $userdata); -// -// End session management -// +$acl = new acl('list', $userdata); +$session->configure($userdata); // -// Configure style, language, etc. +// End session management // -$session->configure($userdata); - -$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']) ) -{ - $mark_read = ( isset($HTTP_POST_VARS['mark']) ) ? $HTTP_POST_VARS['mark'] : $HTTP_GET_VARS['mark']; -} -else -{ - $mark_read = ''; -} // // Handle marking posts // -if ( $mark_read == 'forums' ) +if ( isset($HTTP_GET_VARS['mark']) || isset($HTTP_POST_VARS['mark']) ) { if ( $userdata['user_id'] != ANONYMOUS ) { @@ -75,6 +60,11 @@ $tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t' $tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array(); // +// +// +$forum_id = ( !empty($HTTP_GET_VARS['f']) ) ? "WHERE f2.forum_id = " . intval($HTTP_GET_VARS['f']) : ''; + +// // If you don't use these stats on your index you may want to consider // removing them // @@ -83,46 +73,27 @@ $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 ) -{ - $l_total_user_s = $lang['Registered_users_zero_total']; -} -else if ( $total_users == 1 ) -{ - $l_total_user_s = $lang['Registered_user_total']; -} -else -{ - $l_total_user_s = $lang['Registered_users_total']; -} +$l_total_post_s = ( $total_posts > 1 ) ? $lang['Posted_articles_total'] : ( ( $total_posts == 0 ) ? $lang['Posted_articles_zero_total'] : $lang['Posted_article_total'] ); +$l_total_user_s = ( $total_users > 1 ) ? $lang['Registered_users_total'] : ( ( $total_users == 1 ) ? $lang['Registered_user_total'] : $lang['Registered_users_zero_total'] ); -/* switch ( SQL_LAYER ) { case 'oracle': break; default: - $sql = "SELECT f1.*, p.post_time, p.post_username, u.username, u.user_id - FROM ((( " . FORUMS_TABLE . " f1 - LEFT JOIN " . FORUMS_TABLE . " f2 - LEFT JOIN " . POSTS_TABLE . " p ON p.post_id = f2.forum_last_post_id ) - LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id ) - WHERE f1.forum_left_id BETWEEN f2.forum_left_id AND f2.forum_right_id +/* $sql = "SELECT f1.*, u.username, u.user_id + FROM ( " . FORUMS_TABLE . " f1 + LEFT JOIN " . USERS_TABLE . " u ON u.user_id = f1.forum_last_poster_id ) + $forum_id + ORDER BY f1.forum_id";*/ + + $sql = "SELECT f1.*, u.username, u.user_id + FROM (( " . FORUMS_TABLE . " f1 + LEFT JOIN " . FORUMS_TABLE . " f2 ON f1.left_id > f2.left_id AND f1.left_id < f2.right_id ) + LEFT JOIN " . USERS_TABLE . " u ON u.user_id = f1.forum_last_poster_id ) + $forum_id ORDER BY f2.forum_id"; break; } @@ -131,404 +102,113 @@ $result = $db->sql_query($sql); $forum_data = array(); if ( $row = $db->sql_fetchrow($result) ) { - do - { - $forum_data[] = $row; - } - while ( $row = $db->sql_fetchrow($result) ); - - $total_forums = sizeof($forum_data); -} - -if ( $total_forums > 1 ) -{ $last_forum_right_id = 0; - for( $i = 0; $i < $total_forums; $i++) + do { - $row_forum_id = $forum_data[$i]['forum_id']; + $row_forum_id = $row['forum_id']; // // A non-postable forum on the index is treated as a category // - if ( $forum_data[$i]['forum_status'] == 2 || $row_forum_id == $forum_id ) + if ( ( $row['forum_status'] == 2 || $row_forum_id == $forum_id ) && $row['right_id'] - $row['left_id'] > 1 ) { $template->assign_block_vars('catrow', array( 'CAT_ID' => $forum_id, - 'CAT_DESC' => $forum_data[$i]['forum_name'], - 'U_VIEWCAT' => "index.$phpEx?$SID&" . POST_FORUM_URL . "=$forum_id") - ); + 'CAT_DESC' => $row['forum_name'], - $current_parent = $row_forum_id; + 'U_VIEWCAT' => "index.$phpEx?$SID&f=$row_forum_id") + ); } else { - if ( $forum_data[$i]['parent_id'] == $current_parent ) + if ( $acl->get_acl($row_forum_id, 'forum', 'list') ) { - if ( $acl->get_acl($row_forum_id, 'forum', 'list') ) + if ( $row['forum_status'] == FORUM_LOCKED ) { - if ( $forum_data[$i]['forum_status'] == FORUM_LOCKED ) - { - $folder_image = $theme['forum_locked']; - $folder_alt = $lang['Forum_locked']; - } - else + $folder_image = $theme['forum_locked']; + $folder_alt = $lang['Forum_locked']; + } + else + { + $unread_topics = false; + if ( $userdata['user_id'] != ANONYMOUS ) { - $unread_topics = false; - if ( $userdata['user_id'] != ANONYMOUS ) + if ( $row['post_time'] > $last_visit ) { - if ( !empty($new_topic_data[$row_forum_id]) ) - { - $forum_last_post_time = 0; + $unread_topics = true; - while( list($check_topic_id, $check_post_time) = @each($new_topic_data[$row_forum_id]) ) - { - if ( empty($tracking_topics[$check_topic_id]) ) - { - $unread_topics = true; - $forum_last_post_time = max($check_post_time, $forum_last_post_time); - - } - else - { - if ( $tracking_topics[$check_topic_id] < $check_post_time ) - { - $unread_topics = true; - $forum_last_post_time = max($check_post_time, $forum_last_post_time); - } - } - } - - if ( !empty($tracking_forums[$row_forum_id]) ) + if ( !empty($tracking_forums[$row_forum_id]) ) + { + if ( $tracking_forums[$row_forum_id] > $last_visit ) { - if ( $tracking_forums[$row_forum_id] > $forum_last_post_time ) - { - $unread_topics = false; - } + $unread_topics = false; } + } - if ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) ) + if ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) ) + { + if ( $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'] > $last_visit ) { - if ( $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'] > $forum_last_post_time ) - { - $unread_topics = false; - } + $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[$i]['forum_posts']; - $topics = $forum_data[$i]['forum_topics']; - - if ( $forum_data[$i]['forum_last_post_id'] ) - { - $last_post_time = create_date($board_config['default_dateformat'], $forum_data[$i]['post_time'], $board_config['board_timezone']); - - $last_post = $last_post_time . '<br />'; - - $last_post .= ( $forum_data[$i]['user_id'] == ANONYMOUS ) ? ( ($forum_data[$i]['post_username'] != '' ) ? $forum_data[$i]['post_username'] . ' ' : $lang['Guest'] . ' ' ) : '<a href="' . "profile.$phpEx$SID&mode=viewprofile&" . POST_USERS_URL . '=' . $forum_data[$i]['user_id'] . '">' . $forum_data[$i]['username'] . '</a> '; - - $last_post .= '<a href="' . "viewtopic.$phpEx$SID&" . POST_POST_URL . '=' . $forum_data[$i]['forum_last_post_id'] . '#' . $forum_data[$i]['forum_last_post_id'] . '"><img src="' . $theme['icon_latest_reply'] . '" border="0" alt="' . $lang['View_latest_post'] . '" title="' . $lang['View_latest_post'] . '" /></a>'; - } - 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 = ' '; - } - - $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; - $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; - - $template->assign_block_vars('catrow.forumrow', array( - 'ROW_COLOR' => '#' . $row_color, - 'ROW_CLASS' => $row_class, - 'FORUM_FOLDER_IMG' => $folder_image, - 'FORUM_NAME' => $forum_data[$i]['forum_name'], - 'FORUM_DESC' => $forum_data[$i]['forum_desc'], - 'POSTS' => $forum_data[$i]['forum_posts'], - 'TOPICS' => $forum_data[$i]['forum_topics'], - 'LAST_POST' => $last_post, - 'MODERATORS' => $moderator_list, - - 'L_MODERATOR' => $l_moderators, - 'L_FORUM_FOLDER_ALT' => $folder_alt, - - 'U_VIEWFORUM' => "viewforum.$phpEx$SID&" . POST_FORUM_URL . "=$row_forum_id") - ); + $folder_image = ( $unread_topics ) ? $theme['forum_new'] : $theme['forum']; + $folder_alt = ( $unread_topics ) ? $lang['New_posts'] : $lang['No_new_posts']; } - } - } - } - - $template->assign_var_from_handle('SUB_FORUM', 'forum'); -} -*/ - -// -// 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); - -while ( $category_rows[] = $db->sql_fetchrow($result) ); - -if ( ( $total_categories = count($category_rows) ) ) -{ - // - // Define appropriate SQL - // - switch ( SQL_LAYER ) - { - case 'oracle': - $sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id - FROM " . FORUMS_TABLE . " f, " . POSTS_TABLE . " p, " . USERS_TABLE . " u - WHERE p.post_id = f.forum_last_post_id(+) - AND u.user_id = p.poster_id(+) - ORDER BY f.cat_id, f.forum_order"; - break; - - default: - $sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id - FROM (( " . FORUMS_TABLE . " f - LEFT JOIN " . POSTS_TABLE . " p ON p.post_id = f.forum_last_post_id ) - LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id ) - ORDER BY f.cat_id, f.forum_order"; - break; - } - $result = $db->sql_query($sql); - - $forum_data = array(); - while ( $row = $db->sql_fetchrow($result) ) - { - $forum_data[] = $row; - } - // - // Obtain a list of topic ids which contain - // posts made since user last visited - // -/* if ( $userdata['user_id'] != ANONYMOUS ) - { - $sql = "SELECT t.forum_id, t.topic_id, p.post_time - FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p - WHERE p.post_id = t.topic_last_post_id - AND p.post_time > " . $userdata['user_lastvisit'] . " - AND t.topic_moved_id = 0"; - $result = $db->sql_query($sql); - - $new_topic_data = array(); - while( $topic_data = $db->sql_fetchrow($result) ) - { - $new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = $topic_data['post_time']; - } - } -*/ - // - // Obtain list of moderators of each forum - // First users, then groups ... broken into two queries - // - $forum_moderators = array(); - get_moderators($forum_moderators); + $posts = $row['forum_posts']; + $topics = $row['forum_topics']; - $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'], '<a href="' . "profile.$phpEx$SID&mode=viewprofile&u=$newest_uid" . '">', $newest_user, '</a>'), - - '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'], - - 'S_LEGEND' => $legend, - - 'U_MARK_READ' => "index.$phpEx$SID&mark=forums") - ); - - // - // Okay, let's build the index - // - for($i = 0; $i < $total_categories; $i++) - { - $cat_id = $category_rows[$i]['cat_id']; - - // - // Should we display this category/forum set? - // - $display_forums = false; - for($j = 0; $j < sizeof($forum_data); $j++) - { - if ( $acl->get_acl($forum_data[$j]['forum_id'], 'forum', 'list') && $forum_data[$j]['cat_id'] == $cat_id ) - { - $display_forums = true; - } - } - - // - // Yes, we should, so first dump out the category - // title, then, if appropriate the forum list - // - if ( $display_forums ) - { - $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 ) - { - for($j = 0; $j < sizeof($forum_data); $j++) + if ( $row['forum_last_post_id'] ) { - if ( $forum_data[$j]['cat_id'] == $cat_id ) - { - $row_forum_id = $forum_data[$j]['forum_id']; + $last_post_time = create_date($board_config['default_dateformat'], $row['post_time'], $board_config['board_timezone']); - 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'] != ANONYMOUS ) - { - if ( !empty($new_topic_data[$row_forum_id]) ) - { - $forum_last_post_time = 0; - - foreach ( $new_topic_data[$row_forum_id] as $check_topic_id => $check_post_time ) - { - if ( empty($tracking_topics[$check_topic_id]) ) - { - $unread_topics = true; - $forum_last_post_time = max($check_post_time, $forum_last_post_time); - - } - else - { - if ( $tracking_topics[$check_topic_id] < $check_post_time ) - { - $unread_topics = true; - $forum_last_post_time = max($check_post_time, $forum_last_post_time); - } - } - } - - if ( !empty($tracking_forums[$row_forum_id]) ) - { - if ( $tracking_forums[$row_forum_id] > $forum_last_post_time ) - { - $unread_topics = false; - } - } - - 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; - } - } - - } - } + $last_post = $last_post_time . '<br />'; - $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]['post_time'], $board_config['board_timezone']); + $last_post .= ( $row['user_id'] == ANONYMOUS ) ? ( ($row['post_username'] != '' ) ? $row['post_username'] . ' ' : $lang['Guest'] . ' ' ) : '<a href="' . "profile.$phpEx$SID&mode=viewprofile&u=" . $row['user_id'] . '">' . $row['username'] . '</a> '; - $last_post = $last_post_time . '<br />'; - - $last_post .= ( $forum_data[$j]['user_id'] == ANONYMOUS ) ? ( ($forum_data[$j]['post_username'] != '' ) ? $forum_data[$j]['post_username'] . ' ' : $lang['Guest'] . ' ' ) : '<a href="' . "profile.$phpEx$SID&mode=viewprofile&u=" . $forum_data[$j]['user_id'] . '">' . $forum_data[$j]['username'] . '</a> '; - - $last_post .= '<a href="' . "viewtopic.$phpEx$SID&f=$row_forum_id&p=" . $forum_data[$j]['forum_last_post_id'] . '#' . $forum_data[$j]['forum_last_post_id'] . '">' . create_img($theme['goto_post_latest'], $lang['View_latest_post']) . '</a>'; - } - else - { - $last_post = $lang['No_Posts']; - } + $last_post .= '<a href="' . "viewtopic.$phpEx$SID&f=$row_forum_id&p=" . $forum_data[$j]['forum_last_post_id'] . '#' . $forum_data[$j]['forum_last_post_id'] . '">' . create_img($theme['goto_post_latest'], $lang['View_latest_post']) . '</a>'; - 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 = ' '; - } + } + else + { + $last_post = $lang['No_Posts']; + } - $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, + 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 = ' '; + } - 'FORUM_IMG' => $forum_data[$j]['forum_image'], + $template->assign_block_vars('catrow.forumrow', array( + 'FORUM_FOLDER_IMG' => create_img($folder_image, $folder_alt), + 'FORUM_NAME' => $row['forum_name'], + 'FORUM_DESC' => $row['forum_desc'], + 'POSTS' => $row['forum_posts'], + 'TOPICS' => $row['forum_topics'], + 'LAST_POST' => $last_post, + 'MODERATORS' => $moderator_list, - 'L_MODERATOR' => $l_moderators, - 'L_FORUM_FOLDER_ALT' => $folder_alt, + 'L_MODERATOR' => $l_moderators, + 'L_FORUM_FOLDER_ALT' => $folder_alt, - 'U_VIEWFORUM' => "viewforum.$phpEx$SID&f=$row_forum_id") - ); - } - } - } + 'U_VIEWFORUM' => "viewforum.$phpEx$SID&f=$row_forum_id") + ); } } - } // for ... categories + } + while ( $row = $db->sql_fetchrow($result) ); -}// if ... total_categories +} // // Start output of page |