aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/functions_display.php
diff options
context:
space:
mode:
authorLudovic Arnaud <ludovic_arnaud@users.sourceforge.net>2002-11-07 03:39:50 +0000
committerLudovic Arnaud <ludovic_arnaud@users.sourceforge.net>2002-11-07 03:39:50 +0000
commitcfd055f9796e8b81013e00b89eb7c93a82963fc1 (patch)
tree907c6786f5a46c9594c39baa5c54c0da05517e13 /phpBB/includes/functions_display.php
parent7cda8ec23965f238fa1a377386b4cb894615712b (diff)
downloadforums-cfd055f9796e8b81013e00b89eb7c93a82963fc1.tar
forums-cfd055f9796e8b81013e00b89eb7c93a82963fc1.tar.gz
forums-cfd055f9796e8b81013e00b89eb7c93a82963fc1.tar.bz2
forums-cfd055f9796e8b81013e00b89eb7c93a82963fc1.tar.xz
forums-cfd055f9796e8b81013e00b89eb7c93a82963fc1.zip
Subforums update take #1
git-svn-id: file:///svn/phpbb/trunk@3011 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/functions_display.php')
-rw-r--r--phpBB/includes/functions_display.php258
1 files changed, 258 insertions, 0 deletions
diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php
new file mode 100644
index 0000000000..9a797c0e1d
--- /dev/null
+++ b/phpBB/includes/functions_display.php
@@ -0,0 +1,258 @@
+<?php
+/***************************************************************************
+ * functions_display.php
+ * ------------------
+ * begin : Saturday, Feb 13, 2001
+ * copyright : (C) 2001 The phpBB Group
+ * email : support@phpbb.com
+ *
+ * $Id$
+ *
+ ***************************************************************************/
+
+/***************************************************************************
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ ***************************************************************************/
+
+function display_forums($root_data, $display_moderators=TRUE)
+{
+ global $db, $template, $auth, $user, $phpEx, $SID;
+ global $total_posts;
+
+ $where_sql = ($root_data['left_id'] && $root_data['right_id']) ? ' WHERE left_id > ' . $root_data['left_id'] . ' AND left_id < ' . $root_data['right_id'] : '';
+
+ $sql = 'SELECT * FROM ' . FORUMS_TABLE . $where_sql . ' ORDER BY left_id ASC';
+ $result = $db->sql_query($sql);
+
+ $branch_root_id = $total_posts = 0;
+ $forum_rows = $subforums = $alist = $forum_ids = $forum_moderators = array();
+
+ while ($row = $db->sql_fetchrow($result))
+ {
+ if ($row['post_count_inc'])
+ {
+ $total_posts += $row['forum_posts'];
+ }
+ if (isset($right_id))
+ {
+ if ($row['left_id'] < $right_id)
+ {
+ continue;
+ }
+ unset($right_id);
+ }
+ if (!$row['forum_postable'] && ($row['left_id'] + 1 == $row['right_id']))
+ {
+ // Non-postable forum with no subforums: don't display
+ continue;
+ }
+
+ if (!$auth->acl_get('f_list', $row['forum_id']))
+ {
+ // if the user does not have permissions to list this forum, skip everything until next branch
+
+ $right_id = $row['right_id'];
+ continue;
+ }
+
+ if ($row['parent_id'] == $root_data['forum_id'])
+ {
+ // Direct child
+ $forum_rows[] = $row;
+ $parent_id = $row['forum_id'];
+
+ if (!$row['forum_postable'])
+ {
+ $branch_root_id = $row['forum_id'];
+ }
+ else
+ {
+ $forum_ids[] = $row['forum_id'];
+ }
+ }
+ elseif ($row['parent_id'] == $branch_root_id)
+ {
+ // Forum directly under a category
+ $forum_rows[] = $row;
+ $parent_id = $row['forum_id'];
+
+ if ($row['forum_postable'])
+ {
+ $forum_ids[] = $row['forum_id'];
+ }
+ }
+ elseif ($row['forum_postable'])
+ {
+ if ($row['display_on_index'])
+ {
+ // Subforum
+ $subforums[$parent_id][] = $row;
+ }
+ }
+ else
+ {
+ // what the heck is happening here??
+
+// echo '<pre>';print_r($row);echo'</pre>';
+ }
+ }
+ $db->sql_freeresult();
+
+ if ($display_moderators)
+ {
+ $forum_moderators = get_moderators($forum_moderators, $forum_ids);
+ }
+
+ $root_id = $root_data['forum_id'];
+ foreach ($forum_rows as $row)
+ {
+ if ($row['parent_id'] == $root_id)
+ {
+ if (!$row['forum_postable'])
+ {
+ $hold = $row;
+ continue;
+ }
+ else
+ {
+ unset($hold);
+ }
+ }
+ elseif (!empty($hold))
+ {
+ $template->assign_block_vars('forumrow', array(
+ 'S_IS_CAT' => TRUE,
+ 'FORUM_ID' => $hold['forum_id'],
+ 'FORUM_NAME' => $hold['forum_name'],
+ 'FORUM_DESC' => $hold['forum_desc'],
+ 'U_VIEWFORUM' => 'viewforum.' . $phpEx . $SID . '&amp;f=' . $hold['forum_id']
+ ));
+ unset($hold);
+ }
+
+ $forum_id = $row['forum_id'];
+ $unread_topics = ($user->data['user_id'] && $row['forum_last_post_time'] > $user->data['user_lastvisit']) ? TRUE : FALSE;
+
+ $folder_image = ($unread_topics) ? 'forum_new' : 'forum';
+ $folder_alt = ($unread_topics) ? 'New_posts' : 'No_new_posts';
+
+ if ($row['left_id'] + 1 < $row['right_id'])
+ {
+ $folder_image = ($unread_topics) ? 'sub_forum_new' : 'sub_forum';
+ $folder_alt = ($unread_topics) ? 'New_posts' : 'No_new_posts';
+ }
+ elseif ($row['forum_status'] == ITEM_LOCKED)
+ {
+ $folder_image = 'forum_locked';
+ $folder_alt = 'Forum_locked';
+ }
+ else
+ {
+ $folder_image = ($unread_topics) ? 'forum_new' : 'forum';
+ $folder_alt = ($unread_topics) ? 'New_posts' : 'No_new_posts';
+ }
+
+ if ($row['forum_last_post_id'])
+ {
+ $last_post = $user->format_date($row['forum_last_post_time']) . '<br />';
+
+ $last_post .= ($row['forum_last_poster_id'] == ANONYMOUS) ? (($row['forum_last_poster_name'] != '') ? $row['forum_last_poster_name'] . ' ' : $user->lang['Guest'] . ' ') : '<a href="profile.' . $phpEx . $SID . '&amp;mode=viewprofile&amp;u=' . $row['forum_last_poster_id'] . '">' . $row['forum_last_poster_name'] . '</a> ';
+
+ $last_post .= '<a href="viewtopic.' . $phpEx . $SID . '&amp;f=' . $row['forum_id'] . '&amp;p=' . $row['forum_last_post_id'] . '#' . $row['forum_last_post_id'] . '">' . $user->img('goto_post_latest', 'View_latest_post') . '</a>';
+ }
+ else
+ {
+ $last_post = $user->lang['No_Posts'];
+ }
+
+ if (!empty($forum_moderators[$forum_id]))
+ {
+ $l_moderator = (count($forum_moderators[$forum_id]) == 1) ? $user->lang['Moderator'] . ': ' : $user->lang['Moderators'] . ': ' ;
+ $moderators_list = implode(', ', $forum_moderators[$forum_id]);
+ }
+ else
+ {
+ $l_moderator = '&nbsp;';
+ $moderators_list = '&nbsp;';
+ }
+
+ if (isset($subforums[$forum_id]))
+ {
+ foreach ($subforums[$forum_id] as $subrow)
+ {
+ $alist[$subrow['forum_id']] = $subrow['forum_name'];
+ }
+ asort($alist);
+
+ $links = array();
+ foreach ($alist as $subforum_id => $subforum_name)
+ {
+ $links[] = '<a href="viewforum.' . $phpEx . $SID . '&f=' . $subforum_id . '">' . htmlspecialchars($subforum_name) . '</a>';
+ }
+ $subforums_list = implode(', ', $links);
+
+ $l_subforums = (count($subforums[$forum_id]) == 1) ? $user->lang['Subforum'] . ': ' : $user->lang['Subforums'] . ': ';
+ }
+ else
+ {
+ $subforums_list = '';
+ $l_subforums = '';
+ }
+
+ if ($display_moderators)
+ {
+ $l_moderator = $moderators_list = '';
+ if (!empty($forum_moderators[$forum_id]))
+ {
+ $l_moderator = (count($forum_moderators[$forum_id]) == 1) ? $user->lang['Moderator'] : $user->lang['Moderators'];
+ $moderators_list = implode(', ', $forum_moderators);
+ }
+ }
+ else
+ {
+ $moderators_list = '<a href="memberslist.' . $phpEx . $SID . '&amp;mode=moderators&amp;f=' . $forum_id . '">' . $user->lang['View_moderators'] . '</a>';
+ }
+
+ $template->assign_block_vars('forumrow', array(
+ 'S_IS_CAT' => FALSE,
+
+ 'FORUM_FOLDER_IMG' => $user->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' => $moderators_list,
+ 'SUBFORUMS' => $subforums_list,
+
+ 'FORUM_IMG' => $forum_image,
+
+ 'L_SUBFORUM' => $l_subforums,
+ 'L_MODERATOR' => $l_moderator,
+ 'L_FORUM_FOLDER_ALT'=> $folder_alt,
+
+ 'U_VIEWFORUM' => 'viewforum.' . $phpEx . $SID . '&amp;f=' . $row['forum_id']
+ ));
+ }
+
+ $template->assign_vars(array(
+ 'L_FORUM' => $user->lang['Forum'],
+ 'L_TOPICS' => $user->lang['Topics'],
+ 'L_REPLIES' => $user->lang['Replies'],
+ 'L_VIEWS' => $user->lang['Views'],
+ 'L_POSTS' => $user->lang['Posts'],
+ 'L_LASTPOST' => $user->lang['Last_Post'],
+ 'L_MODERATORS' => $user->lang['Moderators'],
+ 'L_NO_NEW_POSTS' => $user->lang['No_new_posts'],
+ 'L_NEW_POSTS' => $user->lang['New_posts'],
+ 'L_NO_NEW_POSTS_LOCKED' => $user->lang['No_new_posts_locked'],
+ 'L_NEW_POSTS_LOCKED' => $user->lang['New_posts_locked']
+ ));
+}
+?> \ No newline at end of file