source: trunk/test_server/forum.php@ 656

Last change on this file since 656 was 649, checked in by barny, 16 years ago

*Přidán minimanager pro test server

File size: 54.1 KB
Line 
1<?php
2
3
4require_once("header.php");
5require_once("scripts/forum.conf.php");
6require_once("scripts/forum_lib.php");
7valid_login($action_permission['read']);
8
9if (isset($_COOKIE["lang"])){
10 $forumlang = $_COOKIE["lang"];
11 if (!file_exists("lang/$forumlang.php")) $forumlang = $language;
12 } else $forumlang = $language;
13require_once("lang/$forumlang.php");
14
15foreach($forum_skeleton as $cid => $category){
16 if(!isset($category["level_read"])) $forum_skeleton[$cid]["level_read"] = 0;
17 if(!isset($category["level_post"])) $forum_skeleton[$cid]["level_post"] = 0;
18 if(!isset($category["level_post_topic"])) $forum_skeleton[$cid]["level_post_topic"] = 0;
19 if(!isset($category["side_access"])) $forum_skeleton[$cid]["side_access"] = "ALL";
20 foreach($category["forums"] as $id => $forum){
21 if(!isset($forum["level_read"])) $forum_skeleton[$cid]["forums"][$id]["level_read"] = 0;
22 if(!isset($forum["level_post"])) $forum_skeleton[$cid]["forums"][$id]["level_post"] = 0;
23 if(!isset($forum["level_post_topic"])) $forum_skeleton[$cid]["forums"][$id]["level_post_topic"] = 0;
24 if(!isset($forum["side_access"])) $forum_skeleton[$cid]["forums"][$id]["side_access"] = "ALL";
25 }
26}
27
28// #######################################################################################################
29// Forum_Index : Display the forums in categories
30// #######################################################################################################
31function forum_index(){
32 global $enablesidecheck, $forum_skeleton, $forum_lang, $user_lvl, $output, $realm_db, $mmfpm_db;
33 if($enablesidecheck)
34 $side = get_side();
35 $mysql = new SQL;
36 $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
37 $result = $mysql->query("SELECT `authorname`,`id`,`name`,`time`,`forum` FROM `forum_posts` WHERE `id` IN (SELECT MAX(`id`) FROM `forum_posts` GROUP BY `forum`) ORDER BY `forum`;");
38 $lasts = array();
39 if($mysql->num_rows($result) > 0){
40 while($row = $mysql->fetch_row($result))
41 $lasts[$row[4]] = $row;
42 }
43 $output .= "<div class=\"top\"><h1>{$forum_lang["forums"]}</h1>{$forum_lang["you_are_here"]} : <a href=\"forum.php\">{$forum_lang["forum_index"]}</a></div><center><table class=\"lined\">";
44 foreach($forum_skeleton as $category){ if(($category["level_read"] > $user_lvl))
45 continue;
46 if($user_lvl == 0 && $enablesidecheck){
47 if($category["side_access"] != "ALL"){ // Not an all side forum
48 if($side == "NO") // No char
49 continue;
50 else if($category["side_access"] != $side) // Forumside different of the user side
51 continue;
52 }
53 }
54 $output .= "<tr><td class=\"head\" align=\"left\">".$category["name"]."</td>
55 <td class=\"head\">{$forum_lang["topics"]}</td>
56 <td class=\"head\">{$forum_lang["replies"]}</td>
57 <td class=\"head\" align=\"right\">".$forum_lang["last_post"]."</td></tr>";
58 foreach($category["forums"] as $id => $forum){
59 if($forum["level_read"] > $user_lvl)
60 continue; if($user_lvl == 0 && $enablesidecheck){
61 if($forum["side_access"] != "ALL"){ // Not an all side forum
62 if($side == "NO") // No char
63 continue;
64 else if($forum["side_access"] != $side) // Forumside different of the user side
65 continue;
66 }
67 }
68 $totaltopics = $mysql->query("SELECT id FROM forum_posts WHERE forum = '$id' AND id = `topic`;");
69 $numtopics = $mysql->num_rows($totaltopics);
70 $totalreplies = $mysql->query("SELECT id FROM forum_posts WHERE forum = '$id';");
71 $numreplies = $mysql->num_rows($totalreplies);
72 $output .= "<tr><td align=\"left\"><a href=\"forum.php?action=view_forum&amp;id=$id\">{$forum["name"]}</a><br />{$forum["desc"]}</td>
73 <td>{$numtopics}</td>
74 <td>{$numreplies}</td>";
75 if(isset($lasts[$id])){
76 $lasts[$id][2] = htmlspecialchars($lasts[$id][2]);
77 $output .= "<td align=\"right\"><a href=\"forum.php?action=view_topic&amp;postid={$lasts[$id][1]}\">{$lasts[$id][2]}</a><br />by {$lasts[$id][0]} <br /> {$lasts[$id][3]} </td></tr>";
78 }
79 else{
80 $output .= "<td align=\"right\">{$forum_lang["no_topics"]}</td></tr>";
81 }
82 }
83 }
84 $output .= "<tr><td align=\"right\" class=\"hidden\"></td></tr></table></center><br/>";
85 $mysql->close();
86 // Queries : 1
87}
88
89// #######################################################################################################
90//
91// #######################################################################################################
92function forum_view_forum(){
93 global $enablesidecheck, $forum_skeleton, $forum_lang, $maxqueries, $user_lvl, $output, $mmfpm_db;
94 if($enablesidecheck) $side = get_side();
95 $mysql = new SQL;
96 $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
97 if(!isset($_GET["id"])) error($forum_lang["no_such_forum"]);
98 else $id = $mysql->quote_smart($_GET["id"]);
99 if(!isset($_GET["page"])) $page = 0;
100 else $page = $mysql->quote_smart($_GET["page"]);
101 $cat = 0;
102 foreach($forum_skeleton as $cid => $category){
103 foreach($category["forums"] as $fid => $forum){
104 if($fid == $id) $cat = $cid;
105 }
106 }
107 if(empty($forum_skeleton[$cat]["forums"][$id])) error($forum_lang["no_such_forum"]);
108 $forum = $forum_skeleton[$cat]["forums"][$id];
109 if(($forum_skeleton[$cat]["level_read"] > $user_lvl) || ($forum["level_read"] > $user_lvl))
110 error($forum_lang["no_access"]);
111
112 if($user_lvl == 0 && $enablesidecheck){
113 if($forum_skeleton[$cat]["side_access"] != "ALL"){ // Not an all side forum
114 if($side == "NO") // No char
115 continue;
116 else if($forum_skeleton[$cat]["side_access"] != $side) // Forumside different of the user side
117 continue;
118 }
119 if($forum["side_access"] != "ALL"){ // Not an all side forum
120 if($side == "NO") // No char
121 continue;
122 else if($forum["side_access"] != $side) // Forumside different of the user side
123 continue;
124 }
125 }
126
127 $start = ($maxqueries * $page);
128 $output .= "<div class=\"top\"><h1>{$forum_lang["forums"]}</h1>{$forum_lang["you_are_here"]} : <a href=\"forum.php\">{$forum_lang["forum_index"]}</a> -> <a href=\"forum.php?action=view_forum&amp;id={$id}\">{$forum["name"]}</a></div>
129 <center><table class=\"lined\">";
130 $topics = $mysql->query("SELECT id, authorid, authorname, name, annouced, sticked, closed FROM forum_posts WHERE (forum = '$id' AND id = `topic`) OR annouced = 1 AND id = `topic` ORDER BY annouced DESC, sticked DESC, lastpost DESC LIMIT $start, $maxqueries;");
131 $result = $mysql->query("SELECT `topic` as curtopic,(SELECT count(`id`)-1 FROM forum_posts WHERE `topic` = `curtopic`) AS replies,lastpost as curlastpost,(SELECT authorname FROM forum_posts WHERE id = curlastpost) as authorname,(SELECT time FROM forum_posts WHERE id = curlastpost) as time FROM `forum_posts` WHERE (`forum` = $id AND `topic` = `id` ) OR annouced = 1;");
132 $lasts = array();
133 if($mysql->num_rows($result) > 0){
134 while($row = $mysql->fetch_row($result))
135 $lasts[$row[0]] = $row;
136 }
137 if($forum_skeleton[$cat]["level_post_topic"] <= $user_lvl && $forum["level_post_topic"] <= $user_lvl)
138 $output .= "<tr><td colspan=\"4\" style=\"text-align:right;\"><a href=\"forum.php?action=add_topic&amp;id={$id}\">{$forum_lang["new_topic"]}</a></td></tr>";
139 if($mysql->num_rows($topics)!=0){
140 $output .= "<tr>
141 <td style=\"width:35%;text-align:left;\">{$forum_lang["title"]}</td>
142 <td style=\"width:15%;\">{$forum_lang["author"]}</td>
143 <td>{$forum_lang["replies"]}</td>
144 <td>{$forum_lang["last_post"]}</td>
145 </tr>";
146 while($topic = $mysql->fetch_row($topics)){
147 $output .= "<tr>
148 <td style=\"text-align:left;\">";
149 if($topic[4]=="1")
150 $output .= "{$forum_lang["annoucement"]} : ";
151 else{
152 if($topic[5]=="1")
153 $output .= "{$forum_lang["sticky"]} : ";
154 else{
155 if($topic[6]=="1")
156 $output .= "[{$forum_lang["closed"]}] ";
157 }
158 }
159 $topic[3] = htmlspecialchars($topic[3]);
160 $output .= "<a href=\"forum.php?action=view_topic&amp;id={$topic[0]}\">{$topic[3]}</a></td><td>{$topic[2]}</td>
161 <td>{$lasts[$topic[0]][1]}</td>
162 <td>{$forum_lang["last_post_by"]} {$lasts[$topic[0]][3]}, {$lasts[$topic[0]][4]}</td>
163 </tr>";
164 }
165 $totaltopics = $mysql->query("SELECT id FROM forum_posts WHERE forum = '$id' AND id = `topic`;"); //My page system is so roxing, i can' t break this query xD
166 $pages = ceil($mysql->num_rows($totaltopics)/$maxqueries);
167 $output .= "<tr><td align=\"right\" colspan=\"4\">{$forum_lang["pages"]} : ";
168 for($x = 1; $x <= $pages; $x++){
169 $y = $x-1;
170 $output .= "<a href=\"forum.php?action=view_forum&amp;id=$id&amp;page=$y\">$x</a> ";
171 }
172 $output .= "</td></tr>";
173 }
174 else
175 $output .= "<tr><td>{$forum_lang["no_topics"]}</td></tr>";
176 $mysql->close();
177 $output .= "<tr><td align=\"right\" class=\"hidden\"></td></tr></table></center><br/>";
178 // Queries : 3
179}
180// #######################################################################################################
181//
182// #######################################################################################################
183function forum_view_topic(){
184
185 global $enablesidecheck, $forum_skeleton, $forum_lang, $maxqueries, $user_lvl, $user_id, $output, $realm_db, $characters_db, $realm_id, $mmfpm_db;
186
187 if($enablesidecheck) $side = get_side(); // Better to use it here instead of call it many time in the loop :)
188
189 $mysql = new SQL;
190 $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
191
192 if(isset($_GET["id"])){
193 $id = $mysql->quote_smart($_GET["id"]);
194 $post = false;
195 }
196 else{
197 if(isset($_GET["postid"])){
198 $id = $mysql->quote_smart($_GET["postid"]);
199 $post = true;
200 }
201 else
202 error($forum_lang["no_such_topic"]);
203 }
204
205
206 if(!isset($_GET["page"])) $page = 0;
207 else $page = $mysql->quote_smart($_GET["page"]); // Fok you mathafoker haxorz
208 $start = ($maxqueries * $page);
209
210 if(!$post){
211 $posts = $mysql->query("SELECT id,authorid,authorname,forum,name,text,time,annouced,sticked,closed FROM forum_posts WHERE topic = '$id' ORDER BY id ASC LIMIT $start, $maxqueries;");
212
213// Thx qsa for the query structure
214
215 $link = $mysql->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']);
216
217$query = "SELECT account,name,gender,race,class,
218 level,(SELECT gmlevel FROM `{$realm_db['name']}`.account WHERE `{$realm_db['name']}`.account.id = `{$characters_db[$realm_id]['name']}`.characters.account) as gmlevel
219FROM `{$characters_db[$realm_id]['name']}`.characters WHERE totaltime IN ( SELECT MAX(totaltime) FROM `{$characters_db[$realm_id]['name']}`.characters WHERE account IN (";
220while($post = $mysql->fetch_row($posts)){
221 $query .= "$post[1],";
222}
223mysql_data_seek($posts,0);
224$query .= "0) GROUP BY account);";
225 $link = $mysql->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']);
226 $results = $mysql->query($query);
227
228 while($avatar = $mysql->fetch_row($results)){
229 $char_gender = str_pad(dechex($avatar[2]),8, 0, STR_PAD_LEFT);
230 $avatars[$avatar[0]]["name"] = $avatar[1];
231 $avatars[$avatar[0]]["sex"] = $char_gender[3];
232 $avatars[$avatar[0]]["race"] = $avatar[3];
233 $avatars[$avatar[0]]["class"] = $avatar[4];
234 $avatars[$avatar[0]]["level"] = $avatar[5];
235 $avatars[$avatar[0]]["gm"] = $avatar[6];
236 }
237
238// $link = $mysql->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']);
239 $replies = $mysql->num_rows($posts);
240 if($replies==0)
241 error($forum_lang["no_such_topic"]);
242 $post = $mysql->fetch_row($posts);
243 $fid = $post[3];
244 $cat = 0;
245 foreach($forum_skeleton as $cid => $category){
246 foreach($category["forums"] as $fid_ => $forum){
247 if($fid_ == $fid) $cat = $cid;
248 }
249 }
250 if(empty($forum_skeleton[$cat]["forums"][$fid]))
251 error($forum_lang["no_such_forum"]);
252 $forum = $forum_skeleton[$cat]["forums"][$fid];
253 if($forum_skeleton[$cat]["level_read"] > $user_lvl || $forum["level_read"] > $user_lvl) error($forum_lang["no_access"]);
254
255 if($user_lvl == 0 && $enablesidecheck){
256 if($forum_skeleton[$cat]["side_access"] != "ALL"){ // Not an all side forum
257 if($side == "NO") // No char
258 continue;
259 else if($forum_skeleton[$cat]["side_access"] != $side) // Forumside different of the user side
260 continue;
261 }
262 if($forum["side_access"] != "ALL"){ // Not an all side forum
263 if($side == "NO") // No char
264 continue;
265 else if($forum["side_access"] != $side) // Forumside different of the user side
266 continue;
267 }
268 }
269
270 $post[4] = htmlspecialchars($post[4]);
271 $post[5] = htmlspecialchars($post[5]);
272 $post[5] = bbcode_parse($post[5]);
273
274 $output .= "<div class=\"top\"><h1>{$forum_lang["forums"]}</h1>{$forum_lang["you_are_here"]} : <a href=\"forum.php\">{$forum_lang["forum_index"]}</a> -> <a href=\"forum.php?action=view_forum&amp;id={$fid}\">{$forum["name"]}</a> -> <a href=\"forum.php?action=view_topic&amp;id={$id}\">{$post[4]}</a></div>
275 <center><table class=\"lined\">
276 <tr>
277 <td style=\"width:15%;\">{$forum_lang["info"]}</td>
278 <td style=\"text-align:left;\">{$forum_lang["text"]}</td>
279 <td style=\"width:50%;text-align:right;\">";
280 if($user_lvl > 0)
281 {
282 if($post[8]=="1"){
283 if($post[7]=="1"){
284 // Annoucement
285 $output .= "{$forum_lang["annoucement"]}
286 <a href=\"forum.php?action=edit_announce&amp;id={$post[0]}&amp;state=0\"><img src=\"img/forums/down.gif\" border=\"0\" alt=\"{$forum_lang["down"]}\" /></a>";
287 }
288 else{
289 // Sticky
290 $output .= "{$forum_lang["sticky"]}
291 <a href=\"forum.php?action=edit_stick&amp;id={$post[0]}&amp;state=0\"><img src=\"img/forums/down.gif\" border=\"0\" alt=\"{$forum_lang["down"]}\" /></a>
292 <a href=\"forum.php?action=edit_announce&amp;id={$post[0]}&amp;state=1\"><img src=\"img/forums/up.gif\" border=\"0\" alt=\"{$forum_lang["up"]}\" /></a>";
293 }
294 }
295 else{
296 if($post[7]=="1"){
297 // Annoucement
298 $output .= "{$forum_lang["annoucement"]}
299 <a href=\"forum.php?action=edit_announce&amp;id={$post[0]}&amp;state=0\"><img src=\"img/forums/down.gif\" border=\"0\" alt=\"{$forum_lang["down"]}\" /></a>";
300 }
301 else{
302 // Normal Topic
303 $output .= "{$forum_lang["normal"]}
304 <a href=\"forum.php?action=edit_stick&amp;id={$post[0]}&amp;state=1\"><img src=\"img/forums/up.gif\" border=\"0\" alt=\"{$forum_lang["up"]}\" /></a>";
305
306 }
307 }
308
309 if($post[9]=="1")
310 $output .= " <a href=\"forum.php?action=edit_close&amp;id={$post[0]}&amp;state=0\"><img src=\"img/forums/lock.gif\" border=\"0\" alt=\"{$forum_lang["open"]}\" /></a>";
311 else
312 $output .= " <a href=\"forum.php?action=edit_close&amp;id={$post[0]}&amp;state=1\"><img src=\"img/forums/unlock.gif\" border=\"0\" alt=\"{$forum_lang["close"]}\" /></a>";
313 $output .= " <a href=\"forum.php?action=move_topic&amp;id={$post[0]}\"><img src=\"img/forums/move.gif\" border=\"0\" alt=\"{$forum_lang["move"]}\" /></a>";
314 }
315 if(isset($avatars[$post[1]]))
316 $avatar = gen_avatar_panel(
317 $avatars[$post[1]]["level"],
318 $avatars[$post[1]]["sex"],
319 $avatars[$post[1]]["race"],
320 $avatars[$post[1]]["class"],1,
321 $avatars[$post[1]]["gm"]);
322 else
323 $avatar = "";
324 $output .= "<tr><td style=\"width:15%;text-align:center;\"><center>$avatar</center>{$forum_lang["author"]} : ";
325 if($user_lvl > 0)
326 $output .= "<a href=\"user.php?action=edit_user&error=11&id={$post[1]}\">";
327 if(isset($avatars[$post[1]]))
328 $output .= $avatars[$post[1]]["name"];
329 else
330 $output .= $post[2];
331 if($user_lvl > 0)
332 $output .= "</a>";
333 $output .= "<br /> {$forum_lang["at"]} : {$post[6]}</td>
334 <td colspan=\"2\" style=\"text-align:left\">{$post[5]}<br /><div style=\"text-align:right;\">";
335 if($user_lvl > 0 || $user_id == $post[1])
336 $output .= "<a href=\"forum.php?action=edit_post&amp;id={$post[0]}\"><img src=\"img/forums/edit.gif\" border=\"0\" alt=\"{$forum_lang["edit"]}\" /></a>
337 <a href=\"forum.php?action=delete_post&amp;id={$post[0]}\"><img src=\"img/forums/delete.gif\" border=\"0\" alt=\"{$forum_lang["delete"]}\" /></a>";
338 $output .= "</div></td></tr>";
339 $closed = $post[9];
340
341 while($post = $mysql->fetch_row($posts)){
342 $post[5] = htmlspecialchars($post[5]);
343 $post[5] = bbcode_parse($post[5]);
344
345 if(isset($avatars[$post[1]]))
346 $avatar = gen_avatar_panel(
347 $avatars[$post[1]]["level"],
348 $avatars[$post[1]]["sex"],
349 $avatars[$post[1]]["race"],
350 $avatars[$post[1]]["class"],1,
351 $avatars[$post[1]]["gm"]);
352 else
353 $avatar = "";
354 $output .= "<tr><td style=\"width:15%;text-align:center;\"><center>$avatar</center>{$forum_lang["author"]} : ";
355 if($user_lvl > 0)
356 $output .= "<a href=\"user.php?action=edit_user&error=11&id={$post[1]}\">";
357 if(isset($avatars[$post[1]]))
358 $output .= $avatars[$post[1]]["name"];
359 else
360 $output .= $post[2];
361 if($user_lvl > 0)
362 $output .= "</a>";
363 $output .= "<br /> {$forum_lang["at"]} : {$post[6]}</td>
364 <td colspan=\"2\" style=\"text-align:left;\">{$post[5]}<br />";
365 if($user_lvl > 0 || $user_id == $post[1])
366 $output .= "<div style=\"text-align:right;\"><a href=\"forum.php?action=edit_post&amp;id={$post[0]}\"><img src=\"img/forums/edit.gif\" border=\"0\" alt=\"{$forum_lang["edit"]}\" /></a>
367 <a href=\"forum.php?action=delete_post&amp;id={$post[0]}\"><img src=\"img/forums/delete.gif\" border=\"0\" alt=\"{$forum_lang["delete"]}\" /></a></div>";
368 $output .= "</td></tr>";
369 }
370
371 $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
372
373 $totalposts = $mysql->query("SELECT id FROM forum_posts WHERE topic = '$id';");
374 $totalposts = $mysql->num_rows($totalposts);
375
376 $pages = ceil($totalposts/$maxqueries);
377 $output .= "<tr><td align=\"right\" colspan=\"3\">{$forum_lang["pages"]} : ";
378 for($x = 1; $x <= $pages; $x++){
379 $y = $x-1;
380 $output .= "<a href=\"forum.php?action=view_topic&amp;id=$id&amp;page=$y\">$x</a> ";
381 }
382 $output .= "</td></tr><tr><td align=\"right\" class=\"hidden\"></td></tr></table>";
383
384 // Quick reply form
385 if((($user_lvl > 0)||!$closed)&&($forum_skeleton[$cat]["level_post"] <= $user_lvl && $forum["level_post"] <= $user_lvl)
386 ){
387 $output .= "<form action=\"forum.php?action=do_add_post\" method=\"POST\" name=\"form\">
388 <table class=\"top_hidden\">
389 <tr>
390 <td align=\"left\">";
391 makebutton($forum_lang["post"], "javascript:do_submit()",100);
392 $output .= "</td><td align=\"right\">{$forum_lang["quick_reply"]}</td></tr>
393 <tr><td colspan=\"2\">".bbcode_editor_js()."
394 <a href=\"javascript:ajtBBCode('[b]','[/b]')\">{$forum_lang["bold"]}</a>,
395 <a href=\"javascript:ajtBBCode('[i]','[/i]')\">{$forum_lang["italic"]}</a>,
396 <a href=\"javascript:ajtBBCode('[u]','[/u]')\">{$forum_lang["underline"]}</a>,
397 <a href=\"javascript:ajtBBCode('[img]','[/img]')\">{$forum_lang["image"]}</a>,
398 <a href=\"javascript:ajtBBCode('[url]','[/url]')\">{$forum_lang["url"]}</a>,
399 <a href=\"javascript:ajtBBCode('[url=Click here]','[/url]')\">{$forum_lang["url2"]}</a>,
400 <a href=\"javascript:ajtBBCode('[code]','[/code]')\">{$forum_lang["code"]}</a>,
401 <a href=\"javascript:ajtBBCode('[quote]','[/quote]')\">{$forum_lang["quote"]}</a>,
402 <a href=\"javascript:ajtBBCode('[quote=Someone]','[/quote]')\">{$forum_lang["quote2"]}</a>,
403 <a href=\"javascript:ajtBBCode('[media]','[/media]')\">{$forum_lang["media"]}</a>
404 <a href=\"javascript:ajtBBCode('[youtube]','[/youtube]')\">{$forum_lang["YouTube"]}</a>
405 {$forum_lang["color"]} : <select name=\"fontcolor\" onChange=\"ajtBBCode('[color=' + this.form.fontcolor.options[this.form.fontcolor.selectedIndex].value + ']', '[/color]'); this.selectedIndex=0;\" onMouseOver=\"helpline('fontcolor')\" style=\"background-color:#D7D7D7\">
406 <option value=\"black\" style=\"color:black\">Black</option>
407 <option value=\"silver\" style=\"color:silver\">Silver</option>
408 <option value=\"gray\" style=\"color:gray\">Gray</option>
409 <option value=\"maroon\" style=\"color:maroon\">Maroon</option>
410 <option value=\"red\" style=\"color:red\">Red</option>
411 <option value=\"purple\" style=\"color:purple\">Purple</option>
412 <option value=\"fuchsia\" style=\"color:fuchsia\">Fuchsia</option>
413 <option value=\"navy\" style=\"color:navy\">Navy</option>
414 <option value=\"blue\" style=\"color:blue\">Blue</option>
415 <option value=\"aqua\" style=\"color:aqua\">Aqua</option>
416 <option value=\"teal\" style=\"color:teal\">Teal</option>
417 <option value=\"lime\" style=\"color:lime\">Lime</option>
418 <option value=\"green\" style=\"color:green\">Green</option>
419 <option value=\"olive\" style=\"color:olive\">Olive</option>
420 <option value=\"yellow\" style=\"color:yellow\">Yellow</option>
421 <option value=\"white\" style=\"color:white\">White</option>
422 </select>
423 </td></tr><tr><td colspan=\"2\">
424 <a href=\"javascript:ajtTexte(':)')\"><img style=\"border:0px;\" src=\"img/emoticons/smile.gif\"></a><a href=\"javascript:ajtTexte(':|')\"><img style=\"border:0px;\" src=\"img/emoticons/neutral.gif\"></a><a href=\"javascript:ajtTexte(':(')\"><img style=\"border:0px;\" src=\"img/emoticons/sad.gif\"></a><a href=\"javascript:ajtTexte(':D')\"><img style=\"border:0px;\" src=\"img/emoticons/razz.gif\"></a><a href=\"javascript:ajtTexte(':o')\"><img style=\"border:0px;\" src=\"img/emoticons/yikes.gif\"></a><a href=\"javascript:ajtTexte(';)')\"><img style=\"border:0px;\" src=\"img/emoticons/wink.gif\"></a><a href=\"javascript:ajtTexte(':/')\"><img style=\"border:0px;\" src=\"img/emoticons/hmm.gif\" /></a><a href=\"javascript:ajtTexte(':p')\"><img style=\"border:0px;\" src=\"img/emoticons/tongue.gif\"></a><a href=\"javascript:ajtTexte(':lol:')\"><img style=\"border:0px;\" src=\"img/emoticons/lol.gif\"></a><a href=\"javascript:ajtTexte(':mad:')\"><img style=\"border:0px;\" src=\"img/emoticons/angry.gif\"></a><a href=\"javascript:ajtTexte(':rolleyes:')\"><img style=\"border:0px;\" src=\"img/emoticons/roll.gif\"></a><a href=\"javascript:ajtTexte(':cool:')\"><img style=\"border:0px;\" src=\"img/emoticons/cool.gif\"></a>
425 </td></tr></table><TEXTAREA NAME=\"msg\" ROWS=8 COLS=93></TEXTAREA><br/>
426 <input type=\"hidden\" name=\"forum\" value=\"$fid\" />
427 <input type=\"hidden\" name=\"topic\" value=\"$id\" />
428 </form>";
429 }
430
431 $output .= "</center>";
432 $mysql->close();
433 }
434 else{
435 $output .= "<div class=\"top\"><h1>Stand by...</h1></div>";
436
437 $post = $mysql->query("SELECT topic, id FROM forum_posts WHERE id = '$id'"); // Get our post id
438 if($mysql->num_rows($post)==0)
439 error($forum_lang["no_such_topic"]);
440 $post = $mysql->fetch_row($post);
441 if($post[0]==$post[1])
442 redirect("forum.php?action=view_topic&id=$id");
443 $topic = $post[0];
444 $posts = $mysql->query("SELECT id FROM forum_posts WHERE topic = '$topic';"); // Get posts in our topic
445 $replies = $mysql->num_rows($posts);
446 if($replies==0)
447 error($forum_lang["no_such_topic"]);
448 $row = 0;
449 while($post = $mysql->fetch_row($posts)){ // Find the row of our post, so we could have his ratio (topic x/total topics) and knew the page to show
450 $row++;
451 if($topic==$id) break;
452 }
453 $page = 0;
454 while(($page * $maxqueries) < $row){
455 $page++;
456 };
457 $page--;
458 $mysql->close();
459 redirect("forum.php?action=view_topic&id=$topic&page=$page");
460 }
461 // Queries : 2 with id || 2 (+2) with postid
462}
463function forum_do_edit_close(){
464 global $forum_lang, $user_lvl, $mmfpm_db;
465 $mysql = new SQL;
466 $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
467
468 if($user_lvl == 0)
469 error($forum_lang["no_access"]);
470
471 if(!isset($_GET["id"])) error($forum_lang["no_such_topic"]);
472 else $id = $mysql->quote_smart($_GET["id"]);
473
474 if(!isset($_GET["state"])) error("Bad request, please mail admin and describe what you did to get this error.");
475 else $state = $mysql->quote_smart($_GET["state"]);
476
477 $mysql->query("UPDATE forum_posts SET closed = '$state' WHERE id = '$id'");
478 $mysql->close();
479 redirect("forum.php?action=view_topic&id=$id");
480 // Queries : 1
481}
482function forum_do_edit_announce(){
483 global $forum_lang, $user_lvl, $mmfpm_db;
484 $mysql = new SQL;
485 $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
486
487 if($user_lvl == 0)
488 error($forum_lang["no_access"]);
489
490 if(!isset($_GET["id"])) error($forum_lang["no_such_topic"]);
491 else $id = $mysql->quote_smart($_GET["id"]);
492
493 if(!isset($_GET["state"])) error("Bad request, please mail admin and describe what you did to get this error.");
494 else $state = $mysql->quote_smart($_GET["state"]);
495
496 $mysql->query("UPDATE forum_posts SET annouced = '$state' WHERE id = '$id'");
497 $mysql->close();
498 redirect("forum.php?action=view_topic&id=$id");
499 // Queries : 1
500}
501function forum_do_edit_stick(){
502 global $forum_lang, $user_lvl, $mmfpm_db;
503 $mysql = new SQL;
504 $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
505
506 if($user_lvl == 0)
507 error($forum_lang["no_access"]);
508
509 if(!isset($_GET["id"])) error($forum_lang["no_such_topic"]);
510 else $id = $mysql->quote_smart($_GET["id"]);
511
512 if(!isset($_GET["state"])) error("Bad request, please mail admin and describe what you did to get this error.");
513 else $state = $mysql->quote_smart($_GET["state"]);
514
515 $mysql->query("UPDATE forum_posts SET sticked = '$state' WHERE id = '$id'");
516 $mysql->close();
517 redirect("forum.php?action=view_topic&id=$id");
518 // Queries : 1
519}
520function forum_delete_post(){
521 global $enablesidecheck, $forum_skeleton, $forum_lang, $maxqueries, $user_lvl, $user_id, $output, $mmfpm_db;
522 $mysql = new SQL;
523
524 $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
525 if(!isset($_GET["id"])) error($forum_lang["no_such_post"]);
526 else $id = $mysql->quote_smart($_GET["id"]);
527
528 $topic = $mysql->query("SELECT id,topic,authorid,forum FROM forum_posts WHERE id = '$id';");
529 if($mysql->num_rows($topic)==0) error($forum_lang["no_such_post"]);
530 $topic = $mysql->fetch_row($topic);
531 if($user_lvl == 0 && $topic[2] != $user_id) error($forum_lang["no_access"]);
532 $fid = $topic[3];
533
534 $topic2 = $mysql->query("SELECT name FROM forum_posts WHERE id = '{$topic[1]}';");
535 $name = $mysql->fetch_row($topic2);
536
537 $cat = 0;
538 foreach($forum_skeleton as $cid => $category){
539 foreach($category["forums"] as $fid_ => $forum){
540 if($fid_ == $fid) $cat = $cid;
541 }
542 }
543
544 if(empty($forum_skeleton[$cat]["forums"][$fid])) // No such forum..
545 error($forum_lang["no_such_forum"]);
546 $forum = $forum_skeleton[$cat]["forums"][$fid];
547 $output .= "<div class=\"top\"><h1>{$forum_lang["forums"]}</h1>{$forum_lang["you_are_here"]} : <a href=\"forum.php\">{$forum_lang["forum_index"]}</a> -> <a href=\"forum.php?action=view_forum&amp;id={$fid}\">{$forum["name"]}</a> -> <a href=\"forum.php?action=view_topic&amp;id={$topic[1]}\">{$name[0]}</a> -> {$forum_lang["delete"]}!</div><center><table class=\"lined\">";
548 if($topic[0]==$topic[1])
549 $output .= "<tr><td>{$forum_lang["delete_topic"]}</td></tr></table><table class=\"hidden\"><tr><td>";
550 else
551 $output .= "<tr><td>{$forum_lang["delete_post"]}</td></tr></table><table class=\"hidden\"><tr><td>";
552 makebutton($forum_lang["back"], "javascript:window.history.back()", 120);
553 makebutton($forum_lang["confirm"], "forum.php?action=do_delete_post&amp;id={$topic[0]}", 120);
554 $output .= "</td></tr></table></center>";
555 $mysql->close();
556 // Queries : 1
557}
558function forum_do_delete_post(){
559 global $forum_lang, $forum_skeleton, $maxqueries, $user_lvl, $user_id, $output, $mmfpm_db;
560
561 $mysql = new SQL;
562 $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
563
564 if(!isset($_GET["id"])) error($forum_lang["no_such_post"]);
565 else $id = $mysql->quote_smart($_GET["id"]);
566
567 $topic = $mysql->query("SELECT id,topic,name,authorid,forum FROM forum_posts WHERE id = '$id';");
568 if($mysql->num_rows($topic)==0) error($forum_lang["no_such_post"]);
569 $topic = $mysql->fetch_row($topic);
570 if($user_lvl == 0 && $topic[3] != $user_id) error($forum_lang["no_access"]);
571 $fid = $topic[4];
572
573 if($id==$topic[1]){
574 $mysql->query("DELETE FROM forum_posts WHERE topic = '$id'");
575 redirect("forum.php?action=view_forum&id=$fid");
576 }
577 else
578 {
579 $mysql->query("DELETE FROM forum_posts WHERE id = '$id'");
580 $result = $mysql->query("SELECT id FROM forum_posts WHERE topic = '{$topic[1]}' ORDER BY id DESC LIMIT 1;"); // get last post id
581 $lastpostid = $mysql->fetch_row($result);
582 $lastpostid = $lastpostid[0];
583 $mysql->query("UPDATE forum_posts SET lastpost = '$lastpostid' WHERE id = '{$topic[1]}'"); // update topic' s last post id
584 redirect("forum.php?action=view_topic&id={$topic[1]}");
585 }
586 // Queries : 1 (if delete topic) || 4 if delete post
587}
588
589function forum_add_topic(){
590 global $enablesidecheck, $forum_lang, $forum_skeleton, $maxqueries, $minfloodtime, $user_lvl, $user_id, $output, $mmfpm_db;
591
592 if($enablesidecheck) $side = get_side(); // Better to use it here instead of call it many time in the loop :)
593 $mysql = new SQL;
594 $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
595
596 if($minfloodtime > 0)
597 {
598 $userposts = $mysql->query("SELECT time FROM forum_posts WHERE authorid = '$user_id' ORDER BY id DESC LIMIT 1;");
599 if($mysql->num_rows($userposts) != 0)
600 {
601 $mintimeb4post = $mysql->fetch_row($userposts);
602 $mintimeb4post = time() - strtotime($mintimeb4post[0]);
603
604 if($mintimeb4post < $minfloodtime)
605 error($forum_lang["please_wait"]);
606 }
607 }
608
609 if(!isset($_GET["id"])) error($forum_lang["no_such_forum"]);
610 else $id = $mysql->quote_smart($_GET["id"]);
611
612 $cat = 0;
613 foreach($forum_skeleton as $cid => $category){
614 foreach($category["forums"] as $fid => $forum){
615 if($fid == $id) $cat = $cid;
616 }
617 }
618
619 if(empty($forum_skeleton[$cat]["forums"][$id])) error($forum_lang["no_such_forum"]);
620 $forum = $forum_skeleton[$cat]["forums"][$id];
621 if($forum_skeleton[$cat]["level_post_topic"] > $user_lvl || $forum["level_post_topic"] > $user_lvl) error($forum_lang["no_access"]);
622
623 if($user_lvl == 0 && $enablesidecheck){
624 if($forum_skeleton[$cat]["side_access"] != "ALL"){ // Not an all side forum
625 if($side == "NO") // No char
626 continue;
627 else if($forum_skeleton[$cat]["side_access"] != $side) // Forumside different of the user side
628 continue;
629 }
630 if($forum["side_access"] != "ALL"){ // Not an all side forum
631 if($side == "NO") // No char
632 continue;
633 else if($forum["side_access"] != $side) // Forumside different of the user side
634 continue;
635 }
636 }
637
638
639 $output .= "<div class=\"top\"><h1>{$forum_lang["forums"]}</h1>{$forum_lang["you_are_here"]} : <a href=\"forum.php\">{$forum_lang["forum_index"]}</a> -> <a href=\"forum.php?action=view_forum&amp;id={$id}\">{$forum["name"]}</a> -> {$forum_lang["new_topic"]}</div><center><table class=\"lined\">";
640
641 $output .= "<form action=\"forum.php?action=do_add_topic\" method=\"POST\" name=\"form\"><table class=\"top_hidden\"><tr><td align=\"left\">";
642 makebutton("Post", "javascript:do_submit()",100);
643 $output .= "</td><td align=\"right\">{$forum_lang["topic_name"]}: <input name=\"name\" SIZE=\"40\"></td></tr>
644 <tr><td colspan=\"2\">".bbcode_editor_js()."
645 <a href=\"javascript:ajtBBCode('[b]','[/b]')\">{$forum_lang["bold"]}</a>,
646 <a href=\"javascript:ajtBBCode('[i]','[/i]')\">{$forum_lang["italic"]}</a>,
647 <a href=\"javascript:ajtBBCode('[u]','[/u]')\">{$forum_lang["underline"]}</a>,
648 <a href=\"javascript:ajtBBCode('[img]','[/img]')\">{$forum_lang["image"]}</a>,
649 <a href=\"javascript:ajtBBCode('[url]','[/url]')\">{$forum_lang["url"]}</a>,
650 <a href=\"javascript:ajtBBCode('[url=Click here]','[/url]')\">{$forum_lang["url2"]}</a>,
651 <a href=\"javascript:ajtBBCode('[code]','[/code]')\">{$forum_lang["code"]}</a>,
652 <a href=\"javascript:ajtBBCode('[quote]','[/quote]')\">{$forum_lang["quote"]}</a>,
653 <a href=\"javascript:ajtBBCode('[quote=Someone]','[/quote]')\">{$forum_lang["quote2"]}</a>,
654 <a href=\"javascript:ajtBBCode('[media]','[/media]')\">{$forum_lang["media"]}</a>
655 <a href=\"javascript:ajtBBCode('[youtube]','[/youtube]')\">{$forum_lang["YouTube"]}</a>
656 {$forum_lang["color"]} : <select name=\"fontcolor\" onChange=\"ajtBBCode('[color=' + this.form.fontcolor.options[this.form.fontcolor.selectedIndex].value + ']', '[/color]'); this.selectedIndex=0;\" onMouseOver=\"helpline('fontcolor')\" style=\"background-color:#D7D7D7\">
657 <option value=\"black\" style=\"color:black\">Black</option>
658 <option value=\"silver\" style=\"color:silver\">Silver</option>
659 <option value=\"gray\" style=\"color:gray\">Gray</option>
660 <option value=\"maroon\" style=\"color:maroon\">Maroon</option>
661 <option value=\"red\" style=\"color:red\">Red</option>
662 <option value=\"purple\" style=\"color:purple\">Purple</option>
663 <option value=\"fuchsia\" style=\"color:fuchsia\">Fuchsia</option>
664 <option value=\"navy\" style=\"color:navy\">Navy</option>
665 <option value=\"blue\" style=\"color:blue\">Blue</option>
666 <option value=\"aqua\" style=\"color:aqua\">Aqua</option>
667 <option value=\"teal\" style=\"color:teal\">Teal</option>
668 <option value=\"lime\" style=\"color:lime\">Lime</option>
669 <option value=\"green\" style=\"color:green\">Green</option>
670 <option value=\"olive\" style=\"color:olive\">Olive</option>
671 <option value=\"yellow\" style=\"color:yellow\">Yellow</option>
672 <option value=\"white\" style=\"color:white\">White</option>
673 </select>
674 </td></tr><tr><td colspan=\"2\">
675 <a href=\"javascript:ajtTexte(':)')\"><img style=\"border:0px;\" src=\"img/emoticons/smile.gif\"></a><a href=\"javascript:ajtTexte(':|')\"><img style=\"border:0px;\" src=\"img/emoticons/neutral.gif\"></a><a href=\"javascript:ajtTexte(':(')\"><img style=\"border:0px;\" src=\"img/emoticons/sad.gif\"></a><a href=\"javascript:ajtTexte(':D')\"><img style=\"border:0px;\" src=\"img/emoticons/razz.gif\"></a><a href=\"javascript:ajtTexte(':o')\"><img style=\"border:0px;\" src=\"img/emoticons/yikes.gif\"></a><a href=\"javascript:ajtTexte(';)')\"><img style=\"border:0px;\" src=\"img/emoticons/wink.gif\"></a><a href=\"javascript:ajtTexte(':/')\"><img style=\"border:0px;\" src=\"img/emoticons/hmm.gif\" /></a><a href=\"javascript:ajtTexte(':p')\"><img style=\"border:0px;\" src=\"img/emoticons/tongue.gif\"></a><a href=\"javascript:ajtTexte(':lol:')\"><img style=\"border:0px;\" src=\"img/emoticons/lol.gif\"></a><a href=\"javascript:ajtTexte(':mad:')\"><img style=\"border:0px;\" src=\"img/emoticons/angry.gif\"></a><a href=\"javascript:ajtTexte(':rolleyes:')\"><img style=\"border:0px;\" src=\"img/emoticons/roll.gif\"></a><a href=\"javascript:ajtTexte(':cool:')\"><img style=\"border:0px;\" src=\"img/emoticons/cool.gif\"></a>
676 </td></tr></table><TEXTAREA NAME=\"msg\" ROWS=8 COLS=93></TEXTAREA>
677 <input type=\"hidden\" name=\"forum\" value=\"$id\" /></form>";
678 $output .= "</center><br/>";
679 $mysql->close();
680 // Queries : 1
681}
682function forum_do_add_topic(){
683 global $enablesidecheck, $forum_skeleton, $forum_lang, $user_lvl, $user_name, $user_id, $mmfpm_db, $minfloodtime;
684
685 if($enablesidecheck) $side = get_side(); // Better to use it here instead of call it many time in the loop :)
686
687 $mysql = new SQL;
688 $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
689
690
691 {
692 $userposts = $mysql->query("SELECT time FROM forum_posts WHERE authorid = '$user_id' ORDER BY id DESC LIMIT 1;");
693 if($mysql->num_rows($userposts) != 0)
694 {
695 $mintimeb4post = $mysql->fetch_row($userposts);
696 $mintimeb4post = time() - strtotime($mintimeb4post[0]);
697
698 if($mintimeb4post < $minfloodtime)
699 error($forum_lang["please_wait"]);
700 }
701 }
702
703 if(!isset($_POST['forum'])) error($forum_lang["no_such_forum"]);
704 else $forum = $mysql->quote_smart($_POST['forum']);
705
706 $cat = 0;
707 foreach($forum_skeleton as $cid => $category){
708 foreach($category["forums"] as $fid => $forum_){
709 if($fid == $forum) $cat = $cid;
710 }
711 }
712 if(empty($forum_skeleton[$cat]["forums"][$forum])) error($forum_lang["no_such_forum"]);
713 $forum_ = $forum_skeleton[$cat]["forums"][$forum];
714 if($forum_skeleton[$cat]["level_post_topic"] > $user_lvl || $forum_["level_post_topic"] > $user_lvl) error($forum_lang["no_access"]);
715
716 if($user_lvl == 0 && $enablesidecheck){
717 if($forum_skeleton[$cat]["side_access"] != "ALL"){ // Not an all side forum
718 if($side == "NO") // No char
719 continue;
720 else if($forum_skeleton[$cat]["side_access"] != $side) // Forumside different of the user side
721 continue;
722 }
723 if($forum_["side_access"] != "ALL"){ // Not an all side forum
724 if($side == "NO") // No char
725 continue;
726 else if($forum_["side_access"] != $side) // Forumside different of the user side
727 continue;
728 }
729 }
730
731// $_POST['msg'] = htmlspecialchars($_POST['msg']);
732 $msg = trim($mysql->quote_smart($_POST['msg']), " ");
733// $_POST['name'] = htmlspecialchars($_POST['name']);
734 $name = trim($mysql->quote_smart($_POST['name']), " ");
735
736 if (strlen($name) > 49){
737 $mysql->close();
738 error($forum_lang["name_too_long"]);
739 }
740
741 if (strlen($name) < 5){
742 $mysql->close();
743 error($forum_lang["name_too_short"]);
744 }
745
746 if (strlen($msg) < 5){
747 $mysql->close();
748 error($forum_lang["msg_too_short"]);
749 }
750
751 $msg = str_replace('\n', '<br />', $msg);
752// $msg = str_replace('\r', '<br />', $msg);
753
754 $time = date("m/d/y H:i:s");
755
756 $mysql->query("INSERT INTO forum_posts (authorid, authorname, forum, name, text, time) VALUES ('$user_id', '$user_name', '$forum', '$name', '$msg', '$time');");
757 $id = $mysql->insert_id();
758 $mysql->query("UPDATE forum_posts SET topic = '$id', lastpost = '$id' WHERE id = '$id';");
759
760 $mysql->close();
761
762 redirect("forum.php?action=view_topic&id=$id");
763 // Queries : 3
764}
765function forum_do_add_post(){
766 global $enablesidecheck, $forum_skeleton, $forum_lang, $minfloodtime, $user_lvl, $user_name, $user_id, $mmfpm_db;
767
768 if($enablesidecheck) $side = get_side(); // Better to use it here instead of call it many time in the loop :)
769
770 $mysql = new SQL;
771 $link = $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
772
773 if($minfloodtime > 0)
774 {
775 $userposts = $mysql->query("SELECT time FROM forum_posts WHERE authorid = '$user_id' ORDER BY id DESC LIMIT 1;");
776 if($mysql->num_rows($userposts) != 0)
777 {
778 $mintimeb4post = $mysql->fetch_row($userposts);
779 $mintimeb4post = time() - strtotime($mintimeb4post[0]);
780
781 if($mintimeb4post < $minfloodtime)
782 error($forum_lang["please_wait"]);
783 }
784 }
785
786 if(!isset($_POST['forum'])) error($forum_lang["no_such_forum"]);
787 else $forum = $mysql->quote_smart($_POST['forum']);
788
789 $cat = 0;
790 foreach($forum_skeleton as $cid => $category){
791 foreach($category["forums"] as $fid => $forum_){
792 if($fid == $forum) $cat = $cid;
793 }
794 }
795
796 if(empty($forum_skeleton[$cat]["forums"][$forum])) error($forum_lang["no_such_forum"]);
797 $forum_ = $forum_skeleton[$cat]["forums"][$forum];
798 if((($user_lvl > 0)||!$closed)&&($forum_skeleton[$cat]["level_post"] > $user_lvl || $forum_["level_post"] > $user_lvl)) error($forum_lang["no_access"]);
799
800 if($user_lvl == 0 && $enablesidecheck){
801 if($forum_skeleton[$cat]["side_access"] != "ALL"){ // Not an all side forum
802 if($side == "NO") // No char
803 continue;
804 else if($forum_skeleton[$cat]["side_access"] != $side) // Forumside different of the user side
805 continue;
806 }
807 if($forum_["side_access"] != "ALL"){ // Not an all side forum
808 if($side == "NO") // No char
809 continue;
810 else if($forum_["side_access"] != $side) // Forumside different of the user side
811 continue;
812 }
813 }
814
815 if(!isset($_POST['topic'])) error($forum_lang["no_such_topic"]);
816 else $topic = $mysql->quote_smart($_POST['topic']);
817
818// $_POST['msg'] = htmlspecialchars($_POST['msg']);
819 $msg = trim($mysql->quote_smart($_POST['msg']), " ");
820
821 $msg = str_replace('\n', '<br />', $msg);
822// $msg = str_replace('\r', '<br />', $msg);
823
824 if (strlen($msg) < 5){
825 $mysql->close();
826 error($forum_lang["msg_too_short"]);
827 }
828
829 $name = $mysql->query("SELECT name FROM forum_posts WHERE id = '$topic';");
830 $name = $mysql->fetch_row($name);
831 $name = $mysql->quote_smart($name[0]);
832
833 $time = date("m/d/y H:i:s");
834
835 $mysql->query("INSERT INTO forum_posts (authorid, authorname, forum, topic, name, text, time) VALUES ('$user_id', '$user_name', '$forum', $topic, '$name', '$msg', '$time');");
836 $id = @mysql_insert_id($link);
837 $mysql->query("UPDATE forum_posts SET lastpost = $id WHERE id = $topic;");
838
839 $mysql->close();
840
841 redirect("forum.php?action=view_topic&id=$topic");
842 // Queries : 4
843}
844
845function forum_edit_post(){
846 global $forum_skeleton, $forum_lang, $maxqueries, $minfloodtime, $user_lvl, $user_id, $output, $mmfpm_db;
847
848 $mysql = new SQL;
849 $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
850
851 if(!isset($_GET["id"])) error($forum_lang["no_such_post"]);
852 else $id = $mysql->quote_smart($_GET["id"]);
853
854 $post = $mysql->query("SELECT id,topic,authorid,forum,name,text FROM forum_posts WHERE id = '$id';");
855 if($mysql->num_rows($post)==0) error($forum_lang["no_such_post"]);
856 $post = $mysql->fetch_row($post);
857
858 if($user_lvl == 0 && $user_id != $post[2])
859 error($forum_lang["no_access"]);
860
861 $cat = 0;
862 foreach($forum_skeleton as $cid => $category){
863 foreach($category["forums"] as $fid_ => $forum){
864 if($fid_ == $post[3]) $cat = $cid;
865 }
866 }
867 if(empty($forum_skeleton[$cat]["forums"][$post[3]])) // No such forum..
868 error($forum_lang["no_such_forum"]);
869 $forum = $forum_skeleton[$cat]["forums"][$post[3]];
870
871 $output .= "<div class=\"top\"><h1>{$forum_lang["forums"]}</h1>{$forum_lang["you_are_here"]} : <a href=\"forum.php\">{$forum_lang["forum_index"]}</a> -> <a href=\"forum.php?action=view_forum&amp;id={$post[3]}\">{$forum["name"]}</a> -> <a href=\"forum.php?action=view_topic&amp;id={$post[1]}\">{$post[4]}</a> -> {$forum_lang["edit"]}</div><form action=\"forum.php?action=do_edit_post\" method=\"POST\" name=\"form\"><center><table class=\"lined\">";
872
873 $output .= "<table class=\"top_hidden\"><tr><td align=\"left\">";
874 makebutton("Post", "javascript:do_submit()",220);
875 if($post[0] = $post[0])
876 $output .= "</td><td align=\"right\"><input type=\"hidden\" name=\"topic\" value=\"1\" /><input name=\"name\" SIZE=\"50\" value=\"$post[4]\"></td></tr>";
877 else
878 $output .= "</td><td align=\"right\">$post[4]</td></tr>";
879
880 $post[5] = str_replace('<br />', chr(10), $post[5]);
881
882 $output .= "<tr><td colspan=\"2\">".bbcode_editor_js()."
883 <a href=\"javascript:ajtBBCode('[b]','[/b]')\">{$forum_lang["bold"]}</a>,
884 <a href=\"javascript:ajtBBCode('[i]','[/i]')\">{$forum_lang["italic"]}</a>,
885 <a href=\"javascript:ajtBBCode('[u]','[/u]')\">{$forum_lang["underline"]}</a>,
886 <a href=\"javascript:ajtBBCode('[img]','[/img]')\">{$forum_lang["image"]}</a>,
887 <a href=\"javascript:ajtBBCode('[url]','[/url]')\">{$forum_lang["url"]}</a>,
888 <a href=\"javascript:ajtBBCode('[url=Click here]','[/url]')\">{$forum_lang["url2"]}</a>,
889 <a href=\"javascript:ajtBBCode('[code]','[/code]')\">{$forum_lang["code"]}</a>,
890 <a href=\"javascript:ajtBBCode('[quote]','[/quote]')\">{$forum_lang["quote"]}</a>,
891 <a href=\"javascript:ajtBBCode('[quote=Someone]','[/quote]')\">{$forum_lang["quote2"]}</a>,
892 <a href=\"javascript:ajtBBCode('[media]','[/media]')\">{$forum_lang["media"]}</a>
893 <a href=\"javascript:ajtBBCode('[youtube]','[/youtube]')\">{$forum_lang["YouTube"]}</a>
894 {$forum_lang["color"]} : <select name=\"fontcolor\" onChange=\"ajtBBCode('[color=' + this.form.fontcolor.options[this.form.fontcolor.selectedIndex].value + ']', '[/color]'); this.selectedIndex=0;\" onMouseOver=\"helpline('fontcolor')\" style=\"background-color:#D7D7D7\">
895 <option value=\"black\" style=\"color:black\">Black</option>
896 <option value=\"silver\" style=\"color:silver\">Silver</option>
897 <option value=\"gray\" style=\"color:gray\">Gray</option>
898 <option value=\"maroon\" style=\"color:maroon\">Maroon</option>
899 <option value=\"red\" style=\"color:red\">Red</option>
900 <option value=\"purple\" style=\"color:purple\">Purple</option>
901 <option value=\"fuchsia\" style=\"color:fuchsia\">Fuchsia</option>
902 <option value=\"navy\" style=\"color:navy\">Navy</option>
903 <option value=\"blue\" style=\"color:blue\">Blue</option>
904 <option value=\"aqua\" style=\"color:aqua\">Aqua</option>
905 <option value=\"teal\" style=\"color:teal\">Teal</option>
906 <option value=\"lime\" style=\"color:lime\">Lime</option>
907 <option value=\"green\" style=\"color:green\">Green</option>
908 <option value=\"olive\" style=\"color:olive\">Olive</option>
909 <option value=\"yellow\" style=\"color:yellow\">Yellow</option>
910 <option value=\"white\" style=\"color:white\">White</option>
911 </select>
912 </td></tr><tr><td colspan=\"2\">
913 <a href=\"javascript:ajtTexte(':)')\"><img style=\"border:0px;\" src=\"img/emoticons/smile.gif\"></a><a href=\"javascript:ajtTexte(':|')\"><img style=\"border:0px;\" src=\"img/emoticons/neutral.gif\"></a><a href=\"javascript:ajtTexte(':(')\"><img style=\"border:0px;\" src=\"img/emoticons/sad.gif\"></a><a href=\"javascript:ajtTexte(':D')\"><img style=\"border:0px;\" src=\"img/emoticons/razz.gif\"></a><a href=\"javascript:ajtTexte(':o')\"><img style=\"border:0px;\" src=\"img/emoticons/yikes.gif\"></a><a href=\"javascript:ajtTexte(';)')\"><img style=\"border:0px;\" src=\"img/emoticons/wink.gif\"></a><a href=\"javascript:ajtTexte(':/')\"><img style=\"border:0px;\" src=\"img/emoticons/hmm.gif\" /></a><a href=\"javascript:ajtTexte(':p')\"><img style=\"border:0px;\" src=\"img/emoticons/tongue.gif\"></a><a href=\"javascript:ajtTexte(':lol:')\"><img style=\"border:0px;\" src=\"img/emoticons/lol.gif\"></a><a href=\"javascript:ajtTexte(':mad:')\"><img style=\"border:0px;\" src=\"img/emoticons/angry.gif\"></a><a href=\"javascript:ajtTexte(':rolleyes:')\"><img style=\"border:0px;\" src=\"img/emoticons/roll.gif\"></a><a href=\"javascript:ajtTexte(':cool:')\"><img style=\"border:0px;\" src=\"img/emoticons/cool.gif\"></a>
914 </td></tr></table>";
915
916 $output .= "<TEXTAREA NAME=\"msg\" ROWS=8 COLS=93>$post[5]</TEXTAREA>
917 <input type=\"hidden\" name=\"forum\" value=\"{$post[3]}\" />
918 <input type=\"hidden\" name=\"post\" value=\"{$post[0]}\" />";
919
920 $output .= "</center></form><br/>";
921 $mysql->close();
922 // Queries : 1
923}
924function forum_do_edit_post(){
925 global $forum_lang, $user_lvl, $user_name, $user_id, $mmfpm_db;
926
927 $mysql = new SQL;
928 $link = $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
929
930 if(!isset($_POST['forum'])) error($forum_lang["no_such_forum"]);
931 else $forum = $mysql->quote_smart($_POST['forum']);
932 if(!isset($_POST['post'])) error($forum_lang["no_such_post"]);
933 else $post = $mysql->quote_smart($_POST['post']);
934
935 if(!isset($_POST['name']))
936 $topic = 0;
937 else{
938 $topic = 1;
939// htmlspecialchars($_POST['name']);
940 $name = $mysql->quote_smart($_POST['name']);
941 if (strlen($name) > 49){
942 $mysql->close();
943 error($forum_lang["name_too_long"]);
944 }
945 if (strlen($name) < 5){
946 $mysql->close();
947 error($forum_lang["name_too_short"]);
948 }
949 }
950
951// $_POST['msg'] = htmlspecialchars($_POST['msg']);
952 $msg = trim($mysql->quote_smart($_POST['msg']), " ");
953
954 if (strlen($msg) < 5){
955 $mysql->close();
956 error($forum_lang["msg_too_short"]);
957 }
958
959 $msg = str_replace('\n', '<br />', $msg);
960// $msg = str_replace('\r', '<br />', $msg);
961
962 $result = $mysql->query("SELECT topic FROM forum_posts WHERE id = $post;");
963 $topicid = $mysql->fetch_row($result);
964
965 $mysql->query("UPDATE forum_posts SET text = '$msg' WHERE id = $post;");
966
967 if($topic == 1){
968 $mysql->query("UPDATE forum_posts SET name = '$name' WHERE topic = {$topicid[0]};");
969 }
970
971 $result = $mysql->query("SELECT topic FROM forum_posts WHERE id = $post;");
972 $topicid = $mysql->fetch_row($result);
973
974 $mysql->close();
975 redirect("forum.php?action=view_topic&id={$topicid[0]}");
976 // Queries : 3 (+1 if topic)
977}
978
979function forum_move_topic(){
980 global $forum_skeleton, $forum_lang, $maxqueries, $user_lvl, $user_id, $output, $mmfpm_db;
981 $mysql = new SQL;
982
983 $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
984 if(!isset($_GET["id"])) error($forum_lang["no_such_topic"]);
985 else $id = $mysql->quote_smart($_GET["id"]);
986
987 $topic = $mysql->query("SELECT id,topic,authorid,forum, name FROM forum_posts WHERE id = '$id';");
988 // 0 1 2 3 4
989 if($mysql->num_rows($topic)==0) error($forum_lang["no_such_topic"]);
990 $topic = $mysql->fetch_row($topic);
991 if($user_lvl == 0) error($forum_lang["no_access"]);
992 $fid = $topic[3];
993
994 $cat = 0;
995 foreach($forum_skeleton as $cid => $category){
996 foreach($category["forums"] as $fid_ => $forum){
997 if($fid_ == $fid) $cat = $cid;
998 }
999 }
1000
1001 if(empty($forum_skeleton[$cat]["forums"][$fid])) // No such forum..
1002 error($forum_lang["no_such_forum"]);
1003 $forum = $forum_skeleton[$cat]["forums"][$fid];
1004
1005 $output .= "<div class=\"top\"><h1>{$forum_lang["forums"]}</h1>{$forum_lang["you_are_here"]} : <a href=\"forum.php\">{$forum_lang["forum_index"]}</a> -> <a href=\"forum.php?action=view_forum&amp;id={$fid}\">{$forum["name"]}</a> -> <a href=\"forum.php?action=view_topic&amp;id={$topic[1]}\">{$topic[4]}</a> -> {$forum_lang["move"]}!</div><center><table class=\"lined\">
1006 <tr><td>{$forum_lang["where"]} : <form action=\"forum.php?action=do_move_topic\" method=\"POST\" name=\"form\"><select name=\"forum\">";
1007
1008 foreach($forum_skeleton as $category){
1009 foreach($category["forums"] as $fid_ => $forum){
1010 if($fid_ != $fid)
1011 $output .= "<option value='$fid_'>{$forum["name"]}</option>";
1012 else
1013 $output .= "<option value='$fid_' selected>{$forum["name"]}</option>";
1014 }
1015 }
1016
1017 $output .= "</select><input type=\"hidden\" name=\"id\" value=\"$id\" /></form></td></tr></table><table class=\"hidden\"><tr><td>";
1018 makebutton($forum_lang["back"], "javascript:window.history.back()", 120);
1019 makebutton($forum_lang["confirm"], "javascript:do_submit()", 120);
1020 $output .= "</td></tr></table></center>";
1021 $mysql->close();
1022 // Queries : 1
1023}
1024function forum_do_move_topic(){
1025 global $forum_lang, $forum_skeleton, $maxqueries, $user_lvl, $user_id, $output, $mmfpm_db;
1026
1027 $mysql = new SQL;
1028 $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']);
1029
1030 if(!isset($_POST['forum'])) error($forum_lang["no_such_forum"]);
1031 else $forum = $mysql->quote_smart($_POST['forum']);
1032 if(!isset($_POST['id'])) error($forum_lang["no_such_topic"]);
1033 else $id = $mysql->quote_smart($_POST['id']);
1034
1035 $mysql->query("UPDATE forum_posts SET forum = '$forum' WHERE topic = '$id'"); // update topic' s last post id
1036 redirect("forum.php?action=view_topic&id=$id");
1037 // Queries : 1
1038}
1039
1040
1041
1042if(isset($_GET['action']))
1043 $action = addslashes($_GET['action']);
1044else $action = NULL;
1045
1046$forum_lang = lang_forum();
1047
1048switch ($action){
1049 case "index": forum_index(); break;
1050 case "view_forum": forum_view_forum(); break;
1051 case "view_topic": forum_view_topic(); break;
1052 case "add_topic": forum_add_topic(); break;
1053 case "do_add_topic": forum_do_add_topic(); break;
1054 case "edit_post": forum_edit_post(); break;
1055 case "do_edit_post": forum_do_edit_post(); break;
1056 case "delete_post": forum_delete_post(); break;
1057 case "do_delete_post": forum_do_delete_post(); break;
1058 case "do_add_post": forum_do_add_post(); break;
1059 case "edit_stick": forum_do_edit_stick(); break;
1060 case "edit_announce": forum_do_edit_announce(); break;
1061 case "edit_close": forum_do_edit_close(); break;
1062 case "move_topic": forum_move_topic(); break;
1063 case "do_move_topic": forum_do_move_topic(); break;
1064 default: forum_index();
1065}
1066
1067unset($action);
1068unset($forum_lang);
1069
1070require_once("footer.php");
1071
1072?>
Note: See TracBrowser for help on using the repository browser.