aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/index.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/index.php')
-rw-r--r--phpBB/index.php235
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>&nbsp;";
- $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