Codechange: Gruppierung der Ausgabe der Benutzerliste, Tabellen mit <thead> und ...
[wmmkf.git] / forum.php
blob1fde1773ff1737db5a22418862fc8030358a8c2d
1 <?php
2 ###############################################################################
3 # my little forum #
4 # Copyright (C) 2005 Alex #
5 # http://www.mylittlehomepage.net/ #
6 # #
7 # This program is free software; you can redistribute it and/or #
8 # modify it under the terms of the GNU General Public License #
9 # as published by the Free Software Foundation; either version 2 #
10 # of the License, or (at your option) any later version. #
11 # #
12 # This program is distributed in the hope that it will be useful, #
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15 # GNU General Public License for more details. #
16 # #
17 # You should have received a copy of the GNU General Public License #
18 # along with this program; if not, write to the Free Software #
19 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #
20 ###############################################################################
22 include("inc.php");
23 include_once("functions/include.prepare.php");
26 # log in automatically if cookie is set
27 if (!isset($_SESSION[$settings['session_prefix'].'user_id'])
28 && isset($_COOKIE['auto_login'])
29 && isset($settings['autologin'])
30 && $settings['autologin'] == 1)
32 header("location: ".$settings['forum_address']."login.php?referer=forum.php");
33 die("<a href=\"login.php?referer=forum.php\">further...</a>");
36 // go on if user has access:
37 if ($settings['access_for_users_only'] == 1
38 && isset($_SESSION[$settings['session_prefix'].'user_name'])
39 || $settings['access_for_users_only'] != 1)
41 if ($settings['remember_userstandard'] == 1
42 && !isset($_SESSION[$settings['session_prefix'].'newtime']))
44 setcookie("user_view","thread",time()+(3600*24*30));
47 if (($_SESSION[$settings['session_prefix'].'order'] != "time"
48 && $_SESSION[$settings['session_prefix'].'order'] !="last_answer")
49 or ($settings['user_control_sort_thread_threads']==1
50 and (isset($MyOwnSettings['sort_threadview_threads'])
51 and $MyOwnSettings['sort_threadview_threads'] == 'true')))
53 $threadOrder = "time";
55 else
57 $threadOrder = $_SESSION[$settings['session_prefix'].'order'];
59 $ul = $_SESSION[$settings['session_prefix'].'page'] * $settings['topics_per_page'];
60 unset($parent_array);
61 unset($child_array);
63 # database request
64 # no categories defined
65 if ($categories === false)
67 $threadsQueryWhere = '';
69 # there are categories and all categories should be shown
70 else if (is_array($categories)
71 && $_SESSION[$settings['session_prefix'].'category'] == 0)
73 $threadsQueryWhere = " AND category IN (". $category_ids_query .")";
75 # there are categories and only one category should be shown
76 else if (is_array($categories)
77 && $_SESSION[$settings['session_prefix'].'category'] != 0
78 && in_array($_SESSION[$settings['session_prefix'].'category'], $category_ids))
80 $threadsQueryWhere = " AND category = '". intval($_SESSION[$settings['session_prefix'].'category']) ."'";
81 # how many entries?
82 $pid_result = mysql_query("SELECT COUNT(*) FROM ". $db_settings['forum_table'] ." WHERE pid = 0 AND category = '". mysql_real_escape_string($_SESSION[$settings['session_prefix'].'category']) ."'", $connid);
83 list($thread_count) = mysql_fetch_row($pid_result);
84 mysql_free_result($pid_result);
86 $getAllThreadsQuery = "SELECT
87 id,
88 pid,
89 tid
90 FROM ". $db_settings['forum_table'] ."
91 WHERE pid = 0 ". $threadsQueryWhere ."
92 ORDER BY fixed DESC, ". $threadOrder ." DESC
93 LIMIT ". $ul .", ". $settings['topics_per_page'];
94 $result = mysql_query($getAllThreadsQuery, $connid);
95 if (!$result) die($lang['db_error']);
97 $subnav_1 = outputPostingLink($_SESSION[$settings['session_prefix'].'category']);
98 $subnav_2 = '';
99 if (isset($_SESSION[$settings['session_prefix'].'user_id']))
101 $url = 'index.php?update=1';
102 $class = 'update-postings';
103 $title = outputLangDebugInAttributes($lang['update_time_linktitle']);
104 $linktext = $lang['update_time_linkname'];
105 $subnav_2 .= outputSingleLink($url, $linktext, $title, $class);
107 if ($threadOrder == "time")
109 $url = 'forum.php?order=last_answer';
110 $title = outputLangDebugInAttributes($lang['order_linktitle_1']);
112 else
114 $url = 'forum.php?order=time';
115 $title = outputLangDebugInAttributes($lang['order_linktitle_2']);
117 $class = 'order-postings';
118 $linktext = $lang['order_linkname'];
119 $subnav_2 .= outputSingleLink($url, $linktext, $title, $class);
120 if ($settings['board_view'] == 1)
122 $url = 'board.php?view=board';
123 $class = 'board-view';
124 $title = outputLangDebugInAttributes($lang['board_view_linktitle']);
125 $linktext = $lang['board_view_linkname'];
126 $subnav_2 .= outputSingleLink($url, $linktext, $title, $class);
128 if ($settings['mix_view']==1)
130 $url = 'mix.php?view=mix';
131 $class = 'mix-view';
132 $title = outputLangDebugInAttributes($lang['mix_view_linktitle']);
133 $linktext = $lang['mix_view_linkname'];
134 $subnav_2 .= outputSingleLink($url, $linktext, $title, $class);
136 $subnav_2 .= nav($_SESSION[$settings['session_prefix'].'page'], (int)$settings['topics_per_page'], $thread_count, $_SESSION[$settings['session_prefix'].'order'], $_SESSION[$settings['session_prefix'].'descasc'], $_SESSION[$settings['session_prefix'].'category']);
137 $subnav_2 .= outputCategoriesList($categories, $_SESSION[$settings['session_prefix'].'category']);
139 parse_template();
140 echo $header;
141 echo outputDebugSession();
143 if ($thread_count > 0 && isset($result))
145 while ($zeile = mysql_fetch_assoc($result))
147 $threadQuery = "SELECT
149 pid,
150 tid,
151 t1.user_id AS posters_id,
152 DATE_FORMAT(time + INTERVAL ". $time_difference ." HOUR, '". $lang['time_format_sql'] ."') AS Uhrzeit,
153 UNIX_TIMESTAMP(time + INTERVAL ". $time_difference ." HOUR) AS time,
154 UNIX_TIMESTAMP(last_answer + INTERVAL ". $time_difference ." HOUR) AS last_answer,
155 name,
156 subject,
157 category,
158 marked,
159 fixed,
160 (SELECT
161 user_type
162 FROM ". $db_settings['userdata_table'] ."
163 WHERE ". $db_settings['userdata_table'] .".user_id = posters_id) AS user_type
164 FROM ". $db_settings['forum_table'] ." AS t1
165 WHERE tid = ". intval($zeile["tid"]) ."
166 ORDER BY time ". $settings['thread_view_sorter'];
167 $thread_result = @mysql_query($threadQuery, $connid);
169 # put result into arrays:
170 while ($tmp = mysql_fetch_assoc($thread_result))
172 $postArray[$tmp["id"]] = $tmp; // Ergebnis im Array ablegen
173 $childArray[$tmp["pid"]][] = $tmp["id"]; // Vorwärtsbezüge konstruieren
175 # generate output of thread lists
176 echo outputThreads($postArray, $childArray, 'forum', 1);
177 unset($postArray, $childArray);
178 mysql_free_result($thread_result);
180 echo outputManipulateMarked();
182 else
184 # import posting template
185 $output = file_get_contents('data/templates/locked.gen.html');
186 $output = str_replace('{locked_hl}', $lang['caution'], $output);
187 $langTemp = ($_SESSION[$settings['session_prefix'].'category']!=0) ? $lang['no_messages_in_category'] : $lang['no_messages'];
188 $output = str_replace('{locked_txt}', $langTemp, $output);
189 echo $output;
191 if (isset($result)) mysql_free_result($result);
193 echo $footer;
195 else // no access
197 header("location: ".$settings['forum_address']."login.php?msg=noaccess");
198 die("<a href=\"login.php?msg=noaccess\">further...</a>");