diff options
Diffstat (limited to 'phpBB/index.php')
-rw-r--r-- | phpBB/index.php | 235 |
1 files changed, 121 insertions, 114 deletions
diff --git a/phpBB/index.php b/phpBB/index.php index 8e2ecbfeda..4b12d213f7 100644 --- a/phpBB/index.php +++ b/phpBB/index.php @@ -21,8 +21,9 @@ * * ***************************************************************************/ -include('extension.inc'); -include('common.'.$phpEx); +$phpbb_root_path = "./"; +include($phpbb_root_path . 'extension.inc'); +include($phpbb_root_path . 'common.'.$phpEx); $pagetype = "index"; $page_title = "Forum Index"; @@ -36,86 +37,26 @@ init_userprefs($userdata); // End session management // -$total_posts = get_db_stat('postcount'); -$total_users = get_db_stat('usercount'); -$total_topics = get_db_stat('topiccount'); -$newest_userdata = get_db_stat('newestuser'); -$newest_user = $newest_userdata["username"]; -$newest_uid = $newest_userdata["user_id"]; - $viewcat = (!empty($HTTP_GET_VARS['viewcat'])) ? $HTTP_GET_VARS['viewcat'] : -1; -/* -// -// This code allows for individual topic read tracking, on small, low volume sites -// it'll probably work very well. However, for busy sites the use of a text field in -// the DB combined with the additional UPDATE's required in viewtopic may be -// unacceptable. So, by default this code is off, however you may want to play -// ... remember that the users table needs a 'user_topics_unvisited' field of type -// TEXT ( or equiv) and you need to remove the commented out code above the folder_img -// code in the loop below (this applies to viewforum too). // -// psoTFX +// If you don't use these stats on your index +// you may want to consider removing them since +// it will reduce the number of queries speeding +// up page generation a little // -if($userdata['user_id'] != ANONYMOUS) -{ - $unread_topic_list = unserialize($userdata['user_topics_unvisited']); - - $last_update_time = (isset($unread_topic_list['lastupdate'])) ? $unread_topic_list['lastupdate'] : $userdata['session_last_visit']; - - $sql = "SELECT forum_id, topic_id - FROM " . TOPICS_TABLE . " - WHERE topic_time > $last_update_time"; - if(!$s_topic_times = $db->sql_query($sql)) - { - message_die(SQL_QUERY, "Could not query topic times.", __LINE__, __FILE__); - } - - if($db->sql_numrows($s_topic_times)) - { - while($new_topics_ary = $db->sql_fetchrow($s_topic_times)) - { - $unread_topic_list[$new_topics_ary['forum_id']][$new_topics_ary['topic_id']] = 1; - } - - $unread_topic_list['lastupdate'] = time(); - - $sql = "UPDATE " . USERS_TABLE . " - SET user_topics_unvisited = '" . serialize($unread_topic_list) . "' - WHERE user_id = " . $userdata['user_id']; - if(!$s_topic_times = $db->sql_query($sql)) - { - message_die(SQL_QUERY, "Could not update user topics list.", __LINE__, __FILE__); - } - } -} -*/ - -// -// Output page header and -// open the index body template -// -include('includes/page_header.'.$phpEx); - -$template->set_filenames(array( - "body" => "index_body.tpl")); - -$template->assign_vars(array( - "TOTAL_POSTS" => $total_posts, - "TOTAL_USERS" => $total_users, - "TOTAL_TOPICS" => $total_topics, - "NEWEST_USER" => $newest_user, - "NEWEST_UID" => $newest_uid, - "USERS_BROWSING" => $users_browsing, - - "U_NEWEST_USER_PROFILE" => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$newest_uid")) -); +$total_posts = get_db_stat('postcount'); +$total_users = get_db_stat('usercount'); +$total_topics = get_db_stat('topiccount'); +$newest_userdata = get_db_stat('newestuser'); +$newest_user = $newest_userdata['username']; +$newest_uid = $newest_userdata['user_id']; // -// Start main +// Start page proper // $sql = "SELECT c.cat_id, c.cat_title, c.cat_order - FROM ".CATEGORIES_TABLE." c, ".FORUMS_TABLE." f + FROM " . CATEGORIES_TABLE . " c, " . FORUMS_TABLE . " f WHERE f.cat_id = c.cat_id GROUP BY c.cat_id, c.cat_title, c.cat_order ORDER BY c.cat_order"; @@ -124,13 +65,12 @@ if(!$q_categories = $db->sql_query($sql)) message_die(GENERAL_ERROR, "Could not query categories list", "", __LINE__, __FILE__, $sql); } -$total_categories = $db->sql_numrows(); - -if($total_categories) +if($total_categories = $db->sql_numrows($q_categories)) { $category_rows = $db->sql_fetchrowset($q_categories); $limit_forums = ""; + // // Define appropriate SQL // @@ -138,6 +78,7 @@ if($total_categories) { case 'postgresql': $limit_forums = ($viewcat != -1) ? "AND f.cat_id = $viewcat " : ""; + $sql = "SELECT f.*, t.topic_id, t.topic_replies, t.topic_last_post_id, u.username, u.user_id, p.post_time, p.post_username FROM " . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p, " . USERS_TABLE . " u WHERE f.forum_last_post_id = p.post_id @@ -153,12 +94,12 @@ if($total_categories) WHERE f.forum_last_post_id = p.post_id ) $limit_forums - ) - ORDER BY f.cat_id, f.forum_order"; + )"; break; case 'oracle': $limit_forums = ($viewcat != -1) ? "AND f.cat_id = $viewcat " : ""; + $sql = "SELECT f.*, t.topic_id, t.topic_replies, t.topic_last_post_id, u.username, u.user_id, p.post_time, p.post_username FROM " . FORUMS_TABLE . " f, " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t, " . USERS_TABLE . " u WHERE f.forum_last_post_id = p.post_id(+) @@ -169,14 +110,13 @@ if($total_categories) break; default: - // This works on: MySQL, MSSQL and ODBC (Access) $limit_forums = ($viewcat != -1) ? "WHERE f.cat_id = $viewcat " : ""; $sql = "SELECT f.*, t.topic_id, t.topic_replies, t.topic_last_post_id, u.username, u.user_id, p.post_time - FROM ((( ".FORUMS_TABLE." f - LEFT JOIN ".POSTS_TABLE." p ON f.forum_last_post_id = p.post_id ) - LEFT JOIN ".TOPICS_TABLE." t ON p.post_id = t.topic_last_post_id ) - LEFT JOIN ".USERS_TABLE." u ON p.poster_id = u.user_id ) + FROM ((( " . FORUMS_TABLE . " f + LEFT JOIN " . POSTS_TABLE . " p ON f.forum_last_post_id = p.post_id ) + LEFT JOIN " . TOPICS_TABLE . " t ON p.post_id = t.topic_last_post_id ) + LEFT JOIN " . USERS_TABLE . " u ON p.poster_id = u.user_id ) $limit_forums ORDER BY f.cat_id, f.forum_order"; break; @@ -186,15 +126,17 @@ if($total_categories) { message_die(GENERAL_ERROR, "Could not query forums information", "", __LINE__, __FILE__, $sql); } - $total_forums = $db->sql_numrows($q_forums); + if( !$total_forums = $db->sql_numrows($q_forums) ) + { + message_die(GENERAL_MESSAGE, $lang['No_forums']); + } $forum_rows = $db->sql_fetchrowset($q_forums); // - // Obtain list of moderators of each - // forum + // Obtain list of moderators of each forum // $sql = "SELECT f.forum_id, u.username, u.user_id - FROM ".FORUMS_TABLE." f, ".USERS_TABLE." u, ".USER_GROUP_TABLE." ug, ".AUTH_ACCESS_TABLE." aa + FROM " . FORUMS_TABLE . " f, " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug, " . AUTH_ACCESS_TABLE . " aa WHERE aa.forum_id = f.forum_id AND aa.auth_mod = " . TRUE . " AND ug.group_id = aa.group_id @@ -210,15 +152,65 @@ if($total_categories) { $forum_mods_name[$forum_mods_list[$i]['forum_id']][] = $forum_mods_list[$i]['username']; $forum_mods_id[$forum_mods_list[$i]['forum_id']][] = $forum_mods_list[$i]['user_id']; + + $forum_mods_single_user[$forum_mods_list[$i]['forum_id']][] = 1; + } + +/* + $sql = "SELECT f.forum_id, g.group_name, g.group_id, g.group_single_user, ug.user_id + FROM " . FORUMS_TABLE . " f, " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug, " . AUTH_ACCESS_TABLE . " aa + WHERE aa.forum_id = f.forum_id + AND aa.auth_mod = " . TRUE . " + AND g.group_id = aa.group_id + AND ug.group_id = g.group_id + ORDER BY f.forum_id, g.group_id"; + if(!$q_forum_mods = $db->sql_query($sql)) + { + message_die(GENERAL_ERROR, "Could not query forum moderator information", "", __LINE__, __FILE__, $sql); } + $forum_mods_list = $db->sql_fetchrowset($q_forum_mods); + + for($i = 0; $i < count($forum_mods_list); $i++) + { + $forum_mods_name[$forum_mods_list[$i]['forum_id']][] = $forum_mods_list[$i]['group_name']; + $forum_mods_single_user[$forum_mods_list[$i]['forum_id']][] = $forum_mods_list[$i]['group_single_user']; + + if($forum_mods_list[$i]['group_single_user']) + { + $forum_mods_id[$forum_mods_list[$i]['forum_id']][] = $forum_mods_list[$i]['user_id']; + } + else + { + $forum_mods_id[$forum_mods_list[$i]['forum_id']][] = $forum_mods_list[$i]['group_id']; + } + }*/ // - // Find which forums are visible for - // this user + // Find which forums are visible for this user // $is_auth_ary = auth(AUTH_VIEW, AUTH_LIST_ALL, $userdata, $forum_rows); // + // Output page header and open the index body template + // + include($phpbb_root_path . 'includes/page_header.'.$phpEx); + + $template->set_filenames(array( + "body" => "index_body.tpl") + ); + + $template->assign_vars(array( + "TOTAL_POSTS" => $total_posts, + "TOTAL_USERS" => $total_users, + "TOTAL_TOPICS" => $total_topics, + "NEWEST_USER" => $newest_user, + "NEWEST_UID" => $newest_uid, + "USERS_BROWSING" => $users_browsing, + + "U_NEWEST_USER_PROFILE" => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$newest_uid")) + ); + + // // Okay, let's build the index // $gen_cat = array(); @@ -243,21 +235,14 @@ if($total_categories) $gen_cat[$cat_id] = 1; } -// if($userdata['user_id'] != ANONYMOUS) -// { -// $folder_image = (count($unread_topic_list[$forum_rows[$j]['forum_id']])) ? "<img src=\"".$images['new_folder']."\">" : "<img src=\"".$images['folder']."\">"; -// } -// else -// { - if($userdata['session_start'] == $userdata['session_time']) - { - $folder_image = ($forum_rows[$j]['post_time'] > $userdata['session_last_visit']) ? "<img src=\"" . $images['new_folder'] . "\">" : "<img src=\"" . $images['folder'] . "\">"; - } - else - { - $folder_image = ($forum_rows[$j]['post_time'] > $userdata['session_time'] - 300) ? "<img src=\"" . $images['new_folder'] . "\">" : "<img src=\"" . $images['folder'] . "\">"; - } -// } + if($userdata['session_start'] >= $userdata['session_time'] - 300) + { + $folder_image = ($forum_rows[$j]['post_time'] > $userdata['session_last_visit']) ? "<img src=\"" . $images['new_folder'] . "\">" : "<img src=\"" . $images['folder'] . "\">"; + } + else + { + $folder_image = ($forum_rows[$j]['post_time'] >= $userdata['session_time'] - 300) ? "<img src=\"" . $images['new_folder'] . "\">" : "<img src=\"" . $images['folder'] . "\">"; + } $posts = $forum_rows[$j]['forum_posts']; $topics = $forum_rows[$j]['forum_topics']; @@ -277,7 +262,7 @@ if($total_categories) $last_post = $last_post_time . "<br />by "; $last_post .= "<a href=\"" . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $forum_rows[$j]['user_id']) . "\">" . $last_poster . "</a> "; - $last_post .= "<a href=\"" . append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $forum_rows[$j]['topic_last_post_id']) . "#" . $forum_rows[$j]['topic_last_post_id'] . "\"><img src=\"" . $images['latest_reply'] . "\" width=\"20\" height=\"11\" border=\"0\" alt=\"View Latest Post\"></a>"; + $last_post .= "<a href=\"" . append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $forum_rows[$j]['topic_last_post_id']) . "#" . $forum_rows[$j]['topic_last_post_id'] . "\"><img src=\"" . $images['latest_reply'] . "\" width=\"20\" height=\"11\" border=\"0\" alt=\"" . $lang['View_latest_post'] . "\"></a>"; } else { @@ -285,20 +270,38 @@ if($total_categories) $forum_rows[$j]['forum_name'] = stripslashes($forum_rows[$j]['forum_name']); } + $mod_count = 0; unset($moderators_links); for($mods = 0; $mods < count($forum_mods_name[$forum_id]); $mods++) { - if(isset($moderators_links)) + if( !strstr($moderators_links, $forum_mods_name[$forum_id][$mods]) ) { - $moderators_links .= ", "; + if(isset($moderators_links)) + { + $moderators_links .= ", "; + } + + if(!($mod_count % 2) && $mod_count != 0) + { + $moderators_links .= "<br />"; + } + + if( $forum_mods_single_user[$forum_id][$mods]) + { + $moderators_links .= "<a href=\"" . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $forum_mods_id[$forum_id][$mods]) . "\">" . $forum_mods_name[$forum_id][$mods] . "</a>"; + } + else + { + $moderators_links .= "<a href=\"" . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $forum_mods_id[$forum_id][$mods]) . "\">" . $forum_mods_name[$forum_id][$mods] . "</a>"; + } + + $mod_count++; } - if(!($mods % 2) && $mods != 0) - { - $moderators_links .= "<br />"; - } - $moderators_links .= "<a href=\"" . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $forum_mods_id[$forum_id][$mods]) . "\">" . $forum_mods_name[$forum_id][$mods] . "</a>"; } + // + // This should end up in the template using IF...ELSE...ENDIF + // if($row_color == "#DDDDDD") { $row_color = "#CCCCCC"; @@ -341,8 +344,12 @@ else { message_die(GENERAL_MESSAGE, "There are no Categories or Forums on this board", "", __LINE__, __FILE__, $sql); } + +// +// Generate the page +// $template->pparse("body"); -include('includes/page_tail.'.$phpEx); +include($phpbb_root_path . 'includes/page_tail.'.$phpEx); ?>
\ No newline at end of file |