Codechange: Gruppierung der Ausgabe der Benutzerliste, Tabellen mit <thead> und ...
[wmmkf.git] / admin.php
blob9ca8acb63dff89f6d665c2c74a189b4433694998
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");
24 include("lang/english_add.php");
25 $lang_add = outputLangDebugOrNot($lang_add, "english_add.php");
26 include("lang/".strip_tags($lang['additional_language_file']));
27 $lang_add = outputLangDebugOrNot($lang_add, strip_tags($lang['additional_language_file']));
32 if (isset($_SESSION[$settings['session_prefix'].'user_id'])
33 && isset($_SESSION[$settings['session_prefix'].'user_type'])
34 && $_SESSION[$settings['session_prefix'].'user_type'] == "admin")
37 // remove not activated user accounts:
38 $delInactiveUserQuery = "DELETE FROM ".$db_settings['userdata_table']."
39 WHERE registered < (NOW() - INTERVAL 48 HOUR)
40 AND activate_code != ''
41 AND logins=0";
42 @mysql_query($delInactiveUserQuery, $connid);
44 unset($errors);
45 if (isset($_GET['action'])) $action = $_GET['action'];
46 if (isset($_POST['action'])) $action = $_POST['action'];
48 // SQL-Dump:
49 if (isset($_GET['backup']))
51 ?><html>
52 <head>
53 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
54 <title><?php echo $settings['forum_name']; ?> - SQL</title>
55 </head>
56 <body>
57 <?php
58 switch ($_GET['backup'])
60 case 1:
61 sql_forum();
62 sql_categories();
63 sql_userdata();
64 sql_settings();
65 sql_smilies();
66 sql_banlists();
67 break;
68 case 2:
69 sql_forum();
70 break;
71 case 3:
72 sql_forum_marked();
73 break;
74 case 4:
75 sql_userdata();
76 break;
77 case 5:
78 sql_categories();
79 break;
80 case 6:
81 sql_settings();
82 break;
83 case 7:
84 sql_smilies();
85 break;
86 case 8:
87 sql_banlists();
88 break;
90 ?></body>
91 </html><?php
92 exit;
95 if(isset($_POST['sql_submit']))
97 $sql = $_POST['sql'];
98 $passUserQuery = "SELECT
99 user_pw
100 FROM ". $db_settings['userdata_table'] ."
101 WHERE user_id = '". intval($_SESSION[$settings['session_prefix'].'user_id']) ."'
102 LIMIT 1";
104 $pw_result = mysql_query($passUserQuery, $connid);
105 if (!$pw_result) die($lang['db_error']);
106 $field = mysql_fetch_assoc($pw_result);
107 mysql_free_result($pw_result);
109 if ($_POST['sql_pw']=='')
111 $errors[] = $lang['error_form_uncompl'];
113 else
115 if ($field['user_pw'] != md5(trim($_POST['sql_pw'])))
117 $errors[] = $lang['pw_wrong'];
121 if (empty($errors))
123 $sql_querys = split_sql($sql);
124 foreach ($sql_querys as $sql_query)
126 #echo $sql_query.'<br />';
127 mysql_query($sql_query, $connid) or $errors[] = $lang_add['mysql_error'] . mysql_error($connid);
128 if (isset($errors)) break;
130 if (empty($errors))
132 $action = 'import_sql_ok';
134 else
136 $action='import_sql';
139 else
141 $action='import_sql';
145 if (isset($_GET['mark']))
147 $getMarkedQuery = "SELECT
148 marked
149 FROM ". $db_settings['forum_table'] ."
150 WHERE id='". intval($_GET['mark']) ."'
151 LIMIT 1";
152 $mark_result = mysql_query($getMarkedQuery, $connid);
153 if (!$mark_result) die($lang['db_error']);
154 $field = mysql_fetch_assoc($mark_result);
155 mysql_free_result($mark_result);
156 if ($field['marked']==0) $marked = 1; else $marked = 0;
157 $setMarkedQuery = "UPDATE ". $db_settings['forum_table'] ." SET
158 time = time,
159 last_answer = last_answer,
160 edited = edited,
161 marked = '". $marked ."'
162 WHERE tid = '". intval($_GET['mark']) ."'";
164 mysql_query($setMarkedQuery, $connid);
165 $url = $_GET['refer']."?id=".$_GET['mark']."&category=".$_GET['category']."&page=".$_GET['page']."&order=".$_GET['order'];
166 header('Location: '. $url);
167 die('<a href="'. $url .'">further...</a>');
170 if (isset($_POST['new_category']))
172 $new_category = trim($_POST['new_category']);
173 $new_category = str_replace('"','\'',$new_category);
174 $accession = intval($_POST['accession']);
175 if($new_category!='')
177 #if(preg_match("/\"/i",$new_category) || preg_match("/</i",$new_category) || preg_match("/>/i",$new_category)) $errors[] = $lang_add['category_invalid_chars'];
179 # does this category already exist?
180 $searchForCategoryQuery = "SELECT
181 category
182 FROM ". $db_settings['category_table'] ."
183 WHERE category = '". mysql_real_escape_string($new_category) ."'
184 LIMIT 1";
185 $category_result = mysql_query($searchForCategoryQuery, $connid);
186 if (!$category_result) die($lang['db_error']);
187 $field = mysql_fetch_assoc($category_result);
188 mysql_free_result($category_result);
190 if (mb_strtolower($field["category"]) == mb_strtolower($new_category)) $errors[] = $lang_add['category_already_exists'];
192 if(empty($errors))
194 $countCategoriesQuery = "SELECT
195 COUNT(*)
196 FROM ". $db_settings['category_table'];
197 $count_result = mysql_query($countCategoriesQuery, $connid);
198 list($category_count) = mysql_fetch_row($count_result);
199 mysql_free_result($count_result);
200 $saveNewCategoryQuery = "INSERT INTO ". $db_settings['category_table'] ." SET
201 category_order = ". $category_count ."+1,
202 category = '". mysql_real_escape_string($new_category) ."',
203 accession = ". $accession;
204 mysql_query($saveNewCategoryQuery, $connid);
205 header("location: ". $settings['forum_address'] ."admin.php?action=categories");
206 exit();
209 $action='categories';
212 if (isset($_GET['edit_user']))
214 $edit_user_id = intval($_GET['edit_user']);
215 $getOneUserQuery = "SELECT
216 user_type,
217 user_name,
218 user_real_name,
219 user_email,
220 hide_email,
221 user_hp,
222 user_place,
223 signature,
224 profile,
225 user_view,
226 new_posting_notify,
227 new_user_notify,
228 personal_messages,
229 time_difference
230 FROM ". $db_settings['userdata_table'] ."
231 WHERE user_id = '". $edit_user_id ."'";
232 $result = mysql_query($getOneUserQuery, $connid) or die($lang['db_error']);
233 $field = mysql_fetch_assoc($result);
234 mysql_free_result($result);
235 $edit_user_type = $field["user_type"];
236 $user_email = $field["user_email"];
237 $hide_email = $field["hide_email"];
238 $edit_user_name = $field["user_name"];
239 $user_real_name = $field["user_real_name"];
240 $user_hp = $field["user_hp"];
241 $user_place = $field["user_place"];
242 $profile = $field["profile"];
243 $signature = $field["signature"];
244 $user_view = $field["user_view"];
245 $user_time_difference = $field["time_difference"];
246 $new_posting_notify = $field["new_posting_notify"];
247 $new_user_notify = $field["new_user_notify"];
248 $personal_messages = $field["personal_messages"];
249 $action = 'edit_user';
252 if (isset($_POST['edit_user_submit']))
254 # import posted data:
255 $edit_user_id = intval($_POST['edit_user_id']);
256 $edit_user_name = trim($_POST['edit_user_name']);
257 $edit_user_type = trim($_POST['edit_user_type']);
258 $user_email = trim($_POST['user_email']);
259 $hide_email = trim($_POST["hide_email"]);
260 $user_real_name = trim($_POST['user_real_name']);
261 $user_hp = trim($_POST['user_hp']);
262 $user_place = trim($_POST['user_place']);
263 $profile = trim($_POST['profile']);
264 $signature = trim($_POST['signature']);
265 $user_view = trim($_POST['user_view']);
266 $personal_messages = trim($_POST['personal_messages']);
267 $user_time_difference = trim($_POST['user_time_difference']);
268 if (isset($_POST['new_posting_notify']))
270 $new_posting_notify = trim($_POST['new_posting_notify']);
272 else
274 $new_posting_notify = 0;
276 if (isset($_POST['new_user_notify']))
278 $new_user_notify = trim($_POST['new_user_notify']);
280 else
282 $new_user_notify = 0;
285 # check data:
286 if (empty($user_view) or $user_view == '')
288 $user_view = $standard;
290 # does the name already exist?
291 $doesNameExistsQuery = "SELECT
292 user_id,
293 user_name
294 FROM ". $db_settings['userdata_table'] ."
295 WHERE user_name = '". mysql_real_escape_string($edit_user_name) ."'";
296 $name_result = mysql_query($doesNameExistsQuery, $connid) or die($lang['db_error']);
297 $field = mysql_fetch_assoc($name_result);
298 mysql_free_result($name_result);
299 if ($edit_user_id != $field['user_id']
300 && mb_strtolower($field["user_name"]) == mb_strtolower($edit_user_name))
302 $errors[] = str_replace("[name]", htmlspecialchars($edit_user_name), $lang['error_name_reserved']);
304 if (mb_strlen($user_real_name) > $settings['name_maxlength'])
306 $errors[] = $lang['user_real_name']." ".$lang['error_input_too_long'];
308 if (mb_strlen($user_hp) > $settings['hp_maxlength'])
310 $errors[] = $lang['user_hp']." ".$lang['error_input_too_long'];
312 if (mb_strlen($user_place) > $settings['place_maxlength'])
314 $errors[] = $lang['user_place']." ".$lang['error_input_too_long'];
316 if (mb_strlen($profile) > $settings['profile_maxlength'])
318 $lang['err_prof_too_long'] = str_replace("[length]", mb_strlen($profile), $lang['err_prof_too_long']);
319 $lang['err_prof_too_long'] = str_replace("[maxlength]", $settings['profile_maxlength'], $lang['err_prof_too_long']);
320 $errors[] = $lang['err_prof_too_long'];
322 if (mb_strlen($signature) > $settings['signature_maxlength'])
324 $lang['err_sig_too_long'] = str_replace("[length]", mb_strlen($signature), $lang['err_sig_too_long']);
325 $lang['err_sig_too_long'] = str_replace("[maxlength]", $settings['signature_maxlength'], $lang['err_sig_too_long']);
326 $errors[] = $lang['err_sig_too_long'];
329 $text_arr = explode(" ",$user_real_name);
330 for ($i=0; $i<count($text_arr); $i++)
332 trim($text_arr[$i]);
333 $laenge = mb_strlen($text_arr[$i]);
334 if ($laenge > $settings['name_word_maxlength'])
336 $error_nwtl = str_replace("[word]", htmlspecialchars(mb_substr($text_arr[$i],0,$settings['name_word_maxlength']))."...", $lang['error_name_word_too_long']);
337 $errors[] = $error_nwtl;
340 $text_arr = explode(" ",$user_place);
341 for ($i=0; $i<count($text_arr); $i++)
343 trim($text_arr[$i]);
344 $laenge = mb_strlen($text_arr[$i]);
345 if ($laenge > $settings['place_word_maxlength'])
347 $error_pwtl = str_replace("[word]", htmlspecialchars(mb_substr($text_arr[$i],0,$settings['place_word_maxlength']))."...", $lang['error_place_word_too_long']);
348 $errors[] = $error_pwtl;
351 $text_arr = str_replace("\n", " ", $profile);
352 if ($settings['bbcode'] == 1)
354 $text_arr = preg_replace("#\[b\](.+?)\[/b\]#is", "\\1", $text_arr);
355 $text_arr = preg_replace("#\[i\](.+?)\[/i\]#is", "\\1", $text_arr);
356 $text_arr = preg_replace("#\[u\](.+?)\[/u\]#is", "\\1", $text_arr);
357 $text_arr = preg_replace("#\[link\](.+?)\[/link\]#is", "\\1", $text_arr);
358 $text_arr = preg_replace("#\[link=(.+?)\](.+?)\[/link\]#is", "\\2", $text_arr);
360 if ($settings['bbcode'] == 1 && $settings['bbcode_img'] == 1)
362 $text_arr = preg_replace("#\[img\](.+?)\[/img\]#is", "[img]", $text_arr);
363 $text_arr = preg_replace("#\[img-l\](.+?)\[/img\]#is", "[img] ", $text_arr);
364 $text_arr = preg_replace("#\[img-r\](.+?)\[/img\]#is", "[img]", $text_arr);
366 $text_arr = explode(" ",$text_arr);
367 for ($i=0; $i<count($text_arr); $i++)
369 trim($text_arr[$i]);
370 $laenge = mb_strlen($text_arr[$i]);
371 if ($laenge > $settings['text_word_maxlength'])
373 $error_twtl = str_replace("[word]", htmlspecialchars(mb_substr($text_arr[$i],0,$settings['text_word_maxlength']))."...", $lang['err_prof_word_too_long']);
374 $errors[] = $error_twtl;
377 $text_arr = str_replace("\n", " ", $signature);
378 if ($settings['bbcode'] == 1)
380 $text_arr = preg_replace("#\[b\](.+?)\[/b\]#is", "\\1", $text_arr);
381 $text_arr = preg_replace("#\[i\](.+?)\[/i\]#is", "\\1", $text_arr);
382 $text_arr = preg_replace("#\[u\](.+?)\[/u\]#is", "\\1", $text_arr);
383 $text_arr = preg_replace("#\[link\](.+?)\[/link\]#is", "\\1", $text_arr);
384 $text_arr = preg_replace("#\[link=(.+?)\](.+?)\[/link\]#is", "\\2", $text_arr);
386 if ($settings['bbcode'] == 1 && $settings['bbcode_img'] == 1)
388 $text_arr = preg_replace("#\[img\](.+?)\[/img\]#is", "[img]", $text_arr);
389 $text_arr = preg_replace("#\[img-l\](.+?)\[/img\]#is", "[img] ", $text_arr);
390 $text_arr = preg_replace("#\[img-r\](.+?)\[/img\]#is", "[img]", $text_arr);
392 $text_arr = explode(" ",$text_arr);
393 for ($i=0;$i<count($text_arr);$i++)
395 trim($text_arr[$i]);
396 $laenge = strlen($text_arr[$i]);
397 if ($laenge > $settings['text_word_maxlength'])
399 $error_twtl = str_replace("[word]", htmlspecialchars(mb_substr($text_arr[$i],0,$settings['text_word_maxlength']))."...", $lang['err_sig_word_too_long']);
400 $errors[] = $error_twtl;
403 # end of checking
405 # save if no errors:
406 if (empty($errors))
408 $updateUserDataQuery = "UPDATE ".$db_settings['userdata_table']." SET
409 user_name = '". mysql_real_escape_string($edit_user_name) ."',
410 user_type = '". mysql_real_escape_string($edit_user_type) ."',
411 user_email = '". mysql_real_escape_string($user_email) ."',
412 user_real_name = '". mysql_real_escape_string($user_real_name) ."',
413 hide_email = '". intval($hide_email) ."',
414 user_hp = '". mysql_real_escape_string($user_hp) ."',
415 user_place = '". mysql_real_escape_string($user_place) ."',
416 profile = '". mysql_real_escape_string($profile) ."',
417 signature = '". mysql_real_escape_string($signature) ."',
418 last_login = last_login,
419 registered = registered,
420 user_view = '". mysql_real_escape_string($user_view) ."',
421 new_posting_notify = '". intval($new_posting_notify) ."',
422 new_user_notify = '". intval($new_user_notify) ."',
423 personal_messages = '". intval($personal_messages) ."',
424 time_difference = '". intval($user_time_difference) ."'
425 WHERE user_id = ". intval($edit_user_id);
426 @mysql_query($updateUserDataQuery, $connid) or die($lang['db_error']);
427 $updateUserNameInPostings = "UPDATE ". $db_settings['forum_table'] ." SET
428 time = time,
429 last_answer = last_answer,
430 edited = edited,
431 name = '". mysql_real_escape_string($edit_user_name) ."'
432 WHERE user_id = ". intval($edit_user_id);
433 @mysql_query($updateUserNameInPostings, $connid);
434 header('location: '. $settings['forum_address'] .'admin.php?action=user');
435 die('<a href="admin.php?action=user">further...</a>');
437 $action = 'edit_user';
440 if (isset($_GET['edit_category']))
442 $selectCategoryData = "SELECT
444 category_order,
445 category,
446 accession FROM ". $db_settings['category_table'] ."
447 WHERE id = ". intval($_GET['edit_category']) ."
448 LIMIT 1";
449 $category_result = mysql_query($selectCategoryData, $connid);
450 if (!$category_result) die($lang['db_error']);
451 $field = mysql_fetch_assoc($category_result);
452 mysql_free_result($category_result);
454 $id = $field['id'];
455 $category = $field['category'];
456 $accession = $field['accession'];
457 $action = "edit_category";
460 if (isset($_GET['delete_category']))
462 $categoryDeleteQuery = "SELECT
464 category
465 FROM ". $db_settings['category_table'] ."
466 WHERE id = ". intval($_GET['delete_category']) ."
467 LIMIT 1";
468 $category_result = mysql_query($categoryDeleteQuery, $connid);
469 if (!$category_result) die($lang['db_error']);
470 $field = mysql_fetch_assoc($category_result);
471 mysql_free_result($category_result);
473 $category_id = $field['id'];
474 $category_name = $field['category'];
475 $action = "delete_category";
478 if (isset($_POST['edit_category_submit']))
480 $id = intval($_POST['id']);
481 $category = trim($_POST['category']);
482 $category = str_replace('"','\'',$category);
483 $accession = intval($_POST['accession']);
484 # does this category already exist?
485 $categoryExistsQuery = "SELECT
486 COUNT(*)
487 FROM ". $db_settings['category_table'] ."
488 WHERE category LIKE '". mysql_real_escape_string($category) ."'
489 AND id != ". intval($id);
490 $count_result = mysql_query($categoryExistsQuery, $connid);
491 if (!$count_result) die($lang['db_error']);
492 list($category_count) = mysql_fetch_row($count_result);
493 mysql_free_result($count_result);
495 if ($category_count > 0) $errors[] = $lang_add['category_already_exists'];
496 if (empty($errors))
498 $editCategoryQuery = "UPDATE ". $db_settings['category_table'] ." SET
499 category = '". mysql_real_escape_string($category) ."',
500 accession = ". $accession ."
501 WHERE id = ". intval($id);
502 mysql_query($editCategoryQuery, $connid);
503 header("location: ". $settings['forum_address'] ."admin.php?action=categories");
504 die();
506 $action = 'edit_category';
507 } # End: if (isset($_POST['edit_category_submit']))
509 if (isset($_POST['not_displayed_entries_submit']))
511 if ($_POST['mode'] == "delete")
513 $delEntriesinInvalidCatQuery = "DELETE FROM ". $db_settings['forum_table'] ."
514 WHERE category";
515 if (isset($category_ids_query))
517 $delEntriesinInvalidCatQuery .= " NOT IN (". $category_ids_query .")";
519 else
521 $delEntriesinInvalidCatQuery .= " != 0";
523 @mysql_query($delEntriesinInvalidCatQuery, $connid);
525 else
527 $moveEntriesToCatQuery = "UPDATE ".$db_settings['forum_table']." SET
528 time = time,
529 last_answer = last_answer,
530 category = ". intval($_POST['move_category']) ."
531 WHERE category";
532 if(isset($category_ids_query))
534 $moveEntriesToCatQuery .= " NOT IN (".$category_ids_query.")";
536 else
538 $moveEntriesToCatQuery .= " != 0";
540 @mysql_query($moveEntriesToCatQuery, $connid);
542 header("location: ". $settings['forum_address'] ."admin.php?action=categories");
543 die();
546 if (isset($_GET['move_up_category']))
548 $getCatPositionQuery = "SELECT
549 category_order
550 FROM ". $db_settings['category_table'] ."
551 WHERE id = ". intval($_GET['move_up_category']) ."
552 LIMIT 1";
553 $category_result = mysql_query($getCatPositionQuery, $connid);
554 if (!$category_result) die($lang['db_error']);
555 $field = mysql_fetch_assoc($category_result);
556 mysql_free_result($category_result);
557 if ($field['category_order'] > 1)
559 mysql_query("UPDATE ". $db_settings['category_table'] ." SET
560 category_order = 0
561 WHERE category_order = ". $field['category_order'] ."-1", $connid);
562 mysql_query("UPDATE ". $db_settings['category_table'] ." SET
563 category_order = category_order-1
564 WHERE category_order = ".$field['category_order'], $connid);
565 mysql_query("UPDATE ". $db_settings['category_table'] ." SET
566 category_order = ". $field['category_order'] ."
567 WHERE category_order = 0", $connid);
569 header("location: ". $settings['forum_address'] ."admin.php?action=categories");
570 die();
573 if (isset($_GET['move_down_category']))
575 $count_result = mysql_query("SELECT COUNT(*) FROM ".$db_settings['category_table'], $connid);
576 list($category_count) = mysql_fetch_row($count_result);
577 mysql_free_result($count_result);
578 $getCatPositionQuery = "SELECT
579 category_order
580 FROM ". $db_settings['category_table'] ."
581 WHERE id = ". intval($_GET['move_down_category']) ."
582 LIMIT 1";
583 $category_result = mysql_query($getCatPositionQuery, $connid);
584 if (!$category_result) die($lang['db_error']);
585 $field = mysql_fetch_array($category_result);
586 mysql_free_result($category_result);
587 if ($field['category_order'] < $category_count)
589 mysql_query("UPDATE ". $db_settings['category_table'] ." SET
590 category_order = 0
591 WHERE category_order = ". $field['category_order'] ."+1", $connid);
592 mysql_query("UPDATE ". $db_settings['category_table'] ." SET
593 category_order = category_order+1
594 WHERE category_order = ". $field['category_order'], $connid);
595 mysql_query("UPDATE ". $db_settings['category_table'] ." SET
596 category_order = ". $field['category_order'] ."
597 WHERE category_order = 0", $connid);
599 header("location: ". $settings['forum_address'] ."admin.php?action=categories");
600 die();
603 if (isset($_POST['delete_category_submit']))
605 $category_id = intval($_POST['category_id']);
606 if($category_id > 0)
608 # delete category from category table:
609 $delCatQuery = "DELETE FROM ". $db_settings['category_table'] ."
610 WHERE id = ". intval($category_id);
611 mysql_query($delCatQuery, $connid);
612 # reset order:
613 $getCatIDsOerderedByOrderQuery = "SELECT
615 FROM ". $db_settings['category_table'] ."
616 ORDER BY category_order ASC";
617 $result = mysql_query($getCatIDsOerderedByOrderQuery, $connid);
618 $i=1;
619 while ($data = mysql_fetch_assoc($result))
621 mysql_query("UPDATE ". $db_settings['category_table'] ." SET
622 category_order = ". $i ."
623 WHERE id = ". intval($data['id']), $connid);
624 $i++;
626 mysql_free_result($result);
628 # what to to with the entries of deleted category:
629 if ($_POST['delete_mode'] == "complete")
631 $delPostingsOfDeletedCatQuery = "DELETE FROM ". $db_settings['forum_table'] ."
632 WHERE category = ". intval($category_id);
633 mysql_query($delpostingsofDeletedCatQuery, $connid);
635 else
637 $movePostingsOfDeletedCatQuery = "UPDATE ". $db_settings['forum_table'] ." SET
638 time = time,
639 last_answer = last_answer,
640 category = ". intval($_POST['move_category']) ."
641 WHERE category = ". intval($category_id);
642 mysql_query($movePostingsOfDeletedCatQuery, $connid);
644 header("location: ". $settings['forum_address'] ."admin.php?action=categories");
645 die();
647 $action = 'categories';
652 * sets debug type (standard: no)
654 if (isset($_POST['debug_submitted'])) {
655 $_SESSION[$settings['session_prefix'].'debug'] = $_POST['debug_type'];
656 $action = 'debug';
660 if (isset($_GET['delete_user']))
662 $user_id = intval($_GET['delete_user']);
663 $getUserToDeleteQuery = "SELECT
664 user_name
665 FROM ". $db_settings['userdata_table'] ."
666 WHERE user_id = '". intval($user_id) ."'
667 LIMIT 1";
668 $user_result = mysql_query($getUserToDeleteQuery, $connid);
669 if (!$user_result) die($lang['db_error']);
670 $user = mysql_fetch_assoc($user_result);
671 mysql_free_result($user_result);
672 $selected[] = $user_id;
673 $selected_usernames[] = $user["user_name"];
674 $action="delete_users_sure";
678 if (isset($_POST['delete_user']))
680 if (isset($_POST['selected']))
682 $selected = $_POST['selected'];
683 for ($x=0; $x<count($selected); $x++)
685 $getUsersToDeleteQuery = "SELECT
686 user_name
687 FROM ". $db_settings['userdata_table'] ."
688 WHERE user_id = '". intval($selected[$x]) ."'
689 LIMIT 1";
690 $user_result = mysql_query($getUsersToDeleteQuery, $connid);
691 if (!$user_result) die($lang['db_error']);
692 $user = mysql_fetch_assoc($user_result);
693 mysql_free_result($user_result);
694 $selected_usernames[] = $user["user_name"];
696 $action="delete_users_sure";
698 else
700 $action="user";
704 if (isset($_POST['clear_userdata']))
706 switch ($_POST['clear_userdata'])
708 case 1:
709 $clearUserDataQuery = "SELECT
710 user_id,
711 user_name
712 FROM ". $db_settings['userdata_table'] ."
713 WHERE user_type != 'admin'
714 AND user_type != 'mod'
715 AND logins = 0
716 AND registered < (NOW()-INTERVAL 2 DAY)
717 ORDER BY user_name";
718 break;
719 case 2:
720 $clearUserDataQuery = "SELECT
721 user_id,
722 user_name
723 FROM ". $db_settings['userdata_table'] ."
724 WHERE user_type != 'admin'
725 AND user_type != 'mod'
726 AND ((logins=0 AND registered<(NOW()-INTERVAL 2 DAY))
727 OR (logins<=1 AND last_login<(NOW()-INTERVAL 30 DAY)))
728 ORDER BY user_name";
729 break;
730 case 3:
731 $clearUserDataQuery = "SELECT
732 user_id,
733 user_name
734 FROM ". $db_settings['userdata_table'] ."
735 WHERE user_type != 'admin'
736 AND user_type != 'mod'
737 AND ((logins=0 AND registered<(NOW()-INTERVAL 2 DAY))
738 OR (logins<=3 AND last_login<(NOW()-INTERVAL 30 DAY)))
739 ORDER BY user_name";
740 break;
741 case 4:
742 $clearUserDataQuery = "SELECT
743 user_id,
744 user_name
745 FROM ". $db_settings['userdata_table'] ."
746 WHERE user_type != 'admin'
747 AND user_type != 'mod'
748 AND ((logins=0 AND registered<(NOW()-INTERVAL 2 DAY))
749 OR (last_login<(NOW()-INTERVAL 60 DAY)))
750 ORDER BY user_name";
751 break;
752 case 5:
753 $clearUserDataQuery = "SELECT
754 user_id,
755 user_name
756 FROM ". $db_settings['userdata_table'] ."
757 WHERE user_type != 'admin'
758 AND user_type != 'mod'
759 AND ((logins=0 AND registered<(NOW()-INTERVAL 2 DAY))
760 OR (last_login<(NOW()-INTERVAL 30 DAY)))
761 ORDER BY user_name";
762 break;
764 if (!empty($clearUserDataQuery))
766 $clear_result = mysql_query($clearUserDataQuery, $connid);
767 if (!$clear_result) die($lang['db_error']);
768 while ($line = mysql_fetch_assoc($clear_result))
770 $selected_usernames[] = $line['user_name'];
771 $selected[] = $line['user_id'];
773 mysql_free_result($clear_result);
775 if (isset($selected))
777 $action="delete_users_sure";
779 else
781 $no_users_in_selection = true;
782 $action="user";
786 if (isset($_POST['email_list'])) $action="email_list";
788 if (isset($_POST['delete_confirmed']))
790 if (isset($_POST['selected_confirmed']))
792 $selected_confirmed = $_POST['selected_confirmed'];
793 for ($x = 0; $x < count($selected_confirmed); $x++)
795 $deleteUserQuery = "DELETE FROM ". $db_settings['userdata_table'] ."
796 WHERE user_id = ". intval($selected_confirmed[$x]);
797 $delete_result = mysql_query($deleteUserQuery, $connid);
798 if ($delete_result === true)
800 $deleteUserIDQuery = "UPDATE ". $db_settings['forum_table'] ." SET
801 time = time,
802 last_answer = last_answer,
803 user_id = 0,
804 email_notify = 0
805 WHERE user_id = '". intval($selected_confirmed[$x]) ."'";
806 $update_result = mysql_query($deleteUserIDQuery, $connid);
810 $action="user";
813 if (isset($_GET['user_lock']))
815 $lock_result = mysql_query("SELECT user_lock FROM ". $db_settings['userdata_table'] ." WHERE user_id = '". intval($_GET['user_lock']) ."' LIMIT 1", $connid);
816 if (!$lock_result) die($lang['db_error']);
817 $field = mysql_fetch_assoc($lock_result);
818 mysql_free_result($lock_result);
819 $new_lock = ($field['user_lock'] == 0) ? 1 : 0;
820 $updateUserLockQuery = "UPDATE ". $db_settings['userdata_table'] ." SET
821 user_lock = ". $new_lock .",
822 last_login = last_login,
823 registered = registered
824 WHERE user_id = ". intval($_GET['user_lock']) ."
825 LIMIT 1";
826 $update_result = mysql_query($updateUserLockQuery, $connid);
827 $action="user";
830 if (isset($_POST['delete_all_postings_confirmed']))
832 $pw_result = mysql_query("SELECT user_pw FROM ". $db_settings['userdata_table'] ." WHERE user_id = '". intval($_SESSION[$settings['session_prefix'].'user_id']) ."' LIMIT 1", $connid);
833 if (!$pw_result) die($lang['db_error']);
834 $field = mysql_fetch_assoc($pw_result);
835 mysql_free_result($pw_result);
836 if ($_POST['delete_all_postings_confirm_pw']=="")
838 $errors[] = $lang['error_form_uncompl'];
840 else
842 if ($field['user_pw'] != md5(trim($_POST['delete_all_postings_confirm_pw'])))
844 $errors[] = $lang['pw_wrong'];
847 if (empty($errors))
849 $empty_forum_result = mysql_query("DELETE FROM ". $db_settings['forum_table'], $connid);
850 if (!$empty_forum_result) die($lang['db_error']);
851 $action="main";
853 else
855 $action="empty";
859 if (isset($_POST['delete_db_confirmed']))
861 $pw_result = mysql_query("SELECT user_pw FROM ". $db_settings['userdata_table'] ." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id']) ." LIMIT 1", $connid);
862 if (!$pw_result) die($lang['db_error']);
863 $field = mysql_fetch_assoc($pw_result);
864 mysql_free_result($pw_result);
865 if ($_POST['delete_db_confirm_pw']=="" || empty($_POST['delete_modus']))
867 $errors[] = $lang['error_form_uncompl'];
869 else
871 if ($field['user_pw'] != md5(trim($_POST['delete_db_confirm_pw'])))
873 $errors[] = $lang['pw_wrong'];
876 if (empty($errors))
878 echo '<pre>'."\n";
879 echo 'Deleting table <b>'.$db_settings['forum_table'].'</b>... ';
880 if (mysql_query("DROP TABLE ". $db_settings['forum_table'], $connid))
882 echo '<b style="color:green;">OK</b><br />';
884 else
886 $errors[] = mysql_error($connid);
887 echo '<b style="color:red;">FAILED</b> (MySQL: '. mysql_errno($connid);
888 echo '<br />'. mysql_error($connid).')<br /><br />'."\n";
890 echo 'Deleting table <b>'.$db_settings['userdata_table'].'</b>... ';
891 if (mysql_query("DROP TABLE ". $db_settings['userdata_table'], $connid))
893 echo '<b style="color:green;">OK</b><br />';
895 else
897 $errors[] = mysql_error($connid);
898 echo '<b style="color:red;">FAILED</b> (MySQL: '. mysql_errno($connid);
899 echo '<br />'. mysql_error($connid).')<br /><br />'."\n";
901 echo 'Deleting table <b>'.$db_settings['useronline_table'].'</b>... ';
902 if (mysql_query("DROP TABLE ". $db_settings['useronline_table'], $connid))
904 echo '<b style="color:green;">OK</b><br />';
906 else
908 $errors[] = mysql_error($connid);
909 echo '<b style="color:red;">FAILED</b> (MySQL: '. mysql_errno($connid);
910 echo '<br />'. mysql_error($connid).')<br /><br />'."\n";
912 echo 'Deleting table <b>'.$db_settings['settings_table'].'</b>... ';
913 if (mysql_query("DROP TABLE ". $db_settings['settings_table'], $connid))
915 echo '<b style="color:green;">OK</b><br />';
917 else
919 $errors[] = mysql_error($connid);
920 echo '<b style="color:red;">FAILED</b> (MySQL: '. mysql_errno($connid);
921 echo '<br />'. mysql_error($connid).')<br /><br />'."\n";
923 echo 'Deleting table <b>'.$db_settings['category_table'].'</b>... ';
924 if (mysql_query("DROP TABLE ". $db_settings['category_table'], $connid))
926 echo '<b style="color:green;">OK</b><br />';
928 else
930 $errors[] = mysql_error($connid);
931 echo '<b style="color:red;">FAILED</b> (MySQL: '. mysql_errno($connid);
932 echo '<br />'. mysql_error($connid).')<br /><br />'."\n";
934 echo 'Deleting table <b>'.$db_settings['smilies_table'].'</b>... ';
935 if (mysql_query("DROP TABLE ". $db_settings['smilies_table'], $connid))
937 echo '<b style="color:green;">OK</b><br />';
939 else
941 $errors[] = mysql_error($connid);
942 echo '<b style="color:red;">FAILED</b> (MySQL: '. mysql_errno($connid);
943 echo '<br />'. mysql_error($connid).')<br /><br />'."\n";
945 echo 'Deleting table <b>'.$db_settings['banlists_table'].'</b>... ';
946 if (mysql_query("DROP TABLE ". $db_settings['banlists_table'], $connid))
948 echo '<b style="color:green;">OK</b><br />';
950 else
952 $errors[] = mysql_error($connid);
953 echo '<b style="color:red;">FAILED</b> (MySQL: '. mysql_errno($connid);
954 echo '<br />'. mysql_error($connid).')<br /><br />'."\n";
956 if (empty($errors))
958 echo '<br /><b>'.$lang_add['tables_deleted'].'</b>';
960 else
962 echo '<br /><b>'.$lang_add['tables_deleted_error'].'</b>';
965 if ($_POST['delete_modus'] == "db")
967 unset($errors);
968 echo '<br /><br />Deleting database <b>'.$db_settings['db'].'</b>... ';
969 $result = mysql_list_tables($db_settings['db'],$connid);
970 if (mysql_num_rows($result) == 0)
972 if (mysql_query("DROP DATABASE ". $db_settings['db'], $connid))
974 echo '<b style="color:green;">OK</b><br />';
976 else
978 $errors[] = mysql_error($connid);
979 echo '<b style="color:red;">FAILED</b> (MySQL: '. mysql_errno($connid);
980 echo '<br />'. mysql_error($connid) .')<br /><br />'."\n";
983 else
985 $errors[] = 'DB not empty';
986 echo '<b style="color:red;">FAILED</b> (there are still tables in the database)<br />';
988 if (empty($errors))
990 echo '<br /><b>'.$lang_add['db_deleted'].'</b>';
992 else
994 echo '<br /><b>'.$lang_add['db_deleted_error'].'</b>';
997 echo '</pre>';
998 die();
1000 $action="uninstall";
1003 if (isset($_POST['delete_marked_threads_confirmed']))
1005 $delMarkedThreadsQuery = "DELETE FROM ".$db_settings['forum_table']."
1006 WHERE marked='1'";
1007 $del_marked_result = mysql_query($delMarkedThreadsQuery, $connid);
1008 if (!$del_marked_result) die($lang['db_error']);
1009 if (isset($_POST['refer']))
1011 $headerRefer = ($_POST['refer'] == 'board') ? 'board.php' : 'mix.php';
1013 else
1015 $headerRefer = 'forum.php';
1017 header('Location: '. $settings['forum_address'].$headerRefer);
1018 die();
1021 if (isset($_POST['unmark_confirmed']))
1023 $setUnmarkThreadsQuery = "UPDATE ".$db_settings['forum_table']." SET
1024 time = time,
1025 last_answer = last_answer,
1026 edited = edited,
1027 marked = '0'";
1028 $remove_markings_result = mysql_query($setUnmarkThreadsQuery, $connid);
1029 if (!$remove_markings_result) die($lang['db_error']);
1030 if(isset($_POST['refer']))
1032 $headerRefer = ($_POST['refer'] == 'board') ? 'board.php' : 'mix.php';
1034 else
1036 $headerRefer = 'forum.php';
1038 header('Location: '. $settings['forum_address'].$headerRefer);
1039 die();
1042 if (isset($_POST['invert_markings_confirmed']))
1044 $invert_markings_result = mysql_query("UPDATE ". $db_settings['forum_table'] ." SET time = time, last_answer = last_answer, edited = edited, marked = '2' WHERE marked = '1'", $connid);
1045 $invert_markings_result = mysql_query("UPDATE ". $db_settings['forum_table'] ." SET time = time, last_answer = last_answer, edited = edited, marked = '1' WHERE marked = '0'", $connid);
1046 $invert_markings_result = mysql_query("UPDATE ". $db_settings['forum_table'] ." SET time = time, last_answer = last_answer, edited = edited, marked = '0' WHERE marked = '2'", $connid);
1047 if (isset($_POST['refer']))
1049 $headerRefer = ($_POST['refer'] == 'board') ? 'board.php' : 'mix.php';
1051 else
1053 $headerRefer = 'forum.php';
1055 header('Location: '. $settings['forum_address'].$headerRefer);
1056 die();
1059 if (isset($_POST['mark_threads_submitted']))
1061 if($_POST['mark_threads'] == 1)
1063 $limit = intval($_POST['n1'])-1;
1065 else if($_POST['mark_threads'] == 2)
1067 $limit = intval($_POST['n2'])-1;
1069 if($limit >= 0)
1071 # letzten Thread ermitteln, der nicht markiert werden soll:
1072 $getLastNonMarkedThreadQuery = "SELECT
1074 FROM ".$db_settings['forum_table']."
1075 WHERE pid = '0'
1076 ORDER BY id DESC
1077 LIMIT ".$limit.", 1";
1078 $mot_result = mysql_query($getLastNonMarkedThreadQuery, $connid);
1079 if (!$mot_result) die($lang['db_error']);
1080 $field = mysql_fetch_assoc($mot_result);
1081 $last_thread = $field['tid'];
1082 mysql_free_result($mot_result);
1083 # ...und alle älteren markieren:
1084 if ($_POST['mark_threads'] == 1)
1086 $setMarkedThreads1Query = "UPDATE ".$db_settings['forum_table']." SET
1087 time = time,
1088 last_answer = last_answer,
1089 edited = edited,
1090 marked = '1'
1091 WHERE tid < ".$last_thread;
1092 mysql_query($setMarkedThreads1Query, $connid);
1094 if ($_POST['mark_threads'] == 2)
1096 $setMarkedThreads2Query = "UPDATE ". $db_settings['forum_table'] ." SET
1097 time = time,
1098 last_answer = last_answer,
1099 edited = edited,
1100 marked = '1'
1101 WHERE tid < ". $last_thread ." AND time = last_answer";
1102 mysql_query($setMarkedThreads2Query, $connid);
1105 if (isset($_POST['refer']))
1107 $headerRefer = ($_POST['refer'] == 'board') ? 'board.php' : 'mix.php';
1109 else
1111 $headerRefer = 'forum.php';
1113 header('Location: '. $settings['forum_address'].$headerRefer);
1114 die();
1117 if (isset($_POST['lock_marked_threads_submitted']))
1119 $setLockThreadQuery = "UPDATE ". $db_settings['forum_table'] ." SET
1120 time = time,
1121 last_answer = last_answer,
1122 edited = edited,
1123 locked = '1'
1124 WHERE marked = '1'";
1125 mysql_query($setLockThreadQuery, $connid);
1126 if (isset($_POST['refer']))
1128 $headerRefer = ($_POST['refer'] == 'board') ? 'board.php' : 'mix.php';
1130 else
1132 $headerRefer = 'forum.php';
1134 header('Location: '. $settings['forum_address'].$headerRefer);
1135 die();
1138 if (isset($_POST['unlock_marked_threads_submitted']))
1140 $setUnlockThreadQuery = "UPDATE ". $db_settings['forum_table'] ." SET
1141 time = time,
1142 last_answer = last_answer,
1143 edited = edited,
1144 locked = '0'
1145 WHERE marked = '1'";
1146 mysql_query($setUnlockThreadQuery, $connid);
1147 if (isset($_POST['refer']))
1149 $headerRefer = ($_POST['refer'] == 'board') ? 'board.php' : 'mix.php';
1151 else
1153 $headerRefer = 'forum.php';
1155 header('Location: '. $settings['forum_address'].$headerRefer);
1156 die();
1159 if (isset($_POST['settings_submitted']))
1161 # not checked checkboxes:
1162 if (empty($_POST['captcha_posting'])) $_POST['captcha_posting'] = 0;
1163 if (empty($_POST['captcha_contact'])) $_POST['captcha_contact'] = 0;
1164 if (empty($_POST['captcha_register'])) $_POST['captcha_register'] = 0;
1165 while(list($key, $val) = each($_POST))
1167 if ($key != "settings_submitted")
1169 mysql_query("UPDATE ".$db_settings['settings_table']." SET value='".$val."' WHERE name='".$key."' LIMIT 1", $connid);
1172 header('Location: '. $settings['forum_address'] .'admin.php?action=settings&settingsCat='. urlencode($_GET['settingsCat']));
1173 die('<a href="admin.php?action=settings&amp;settingsCat='. urlencode($_GET['settingsCat']) .'">further...</a>');
1176 if (isset($_POST['ar_username']))
1178 if (isset($_POST['ar_send_userdata']) && $_POST['ar_send_userdata'] != '')
1180 $ar_send_userdata = true;
1182 # überflüssige Leerzeichen abschneiden:
1183 $ar_username = trim($_POST['ar_username']);
1184 $ar_email = trim($_POST['ar_email']);
1185 $ar_pw = trim($_POST['ar_pw']);
1186 $ar_pw_conf = trim($_POST['ar_pw_conf']);
1187 # Any empty fields?
1188 if ($ar_username=="" or $ar_email=="")
1190 $errors[] = $lang['error_form_uncompl'];
1192 if (empty($errors))
1194 if (($ar_pw=="" or $ar_pw_conf=="") && !isset($ar_send_userdata))
1196 $errors[] = $lang_add['error_send_userdata'];
1199 # wenn alle Felder ausgefüllt wurden, weitere Überprüfungen durchführen:
1200 if (empty($errors))
1202 # Is the name to long?
1203 if (mb_strlen($ar_username) > $settings['name_maxlength'])
1205 $errors[] = $lang['name_marking'] . " " .$lang['error_input_too_long'];
1207 # Is any part of the name to long?
1208 $text_arr = explode(" ",$ar_username);
1209 for ($i=0; $i<count($text_arr); $i++)
1211 trim($text_arr[$i]);
1212 $laenge = mb_strlen($text_arr[$i]);
1213 if ($laenge > $settings['name_word_maxlength'])
1215 $error_nwtl = str_replace("[word]", htmlspecialcharsmb_(substr($text_arr[$i],0,$settings['name_word_maxlength']))."...", $lang['error_name_word_too_long']);
1216 $errors[] = $error_nwtl;
1219 # schauen, ob der Name schon vergeben ist:
1220 $getNameReservedQuery = "SELECT
1221 user_name
1222 FROM ". $db_settings['userdata_table'] ."
1223 WHERE user_name = '". mysql_real_escape_string($ar_username) ."'";
1224 $name_result = mysql_query($getNameReservedQuery, $connid);
1225 if(!$name_result) die($lang['db_error']);
1226 $field = mysql_fetch_assoc($name_result);
1227 mysql_free_result($name_result);
1229 if (mb_strtolower($field["user_name"]) == mb_strtolower($ar_username) && $ar_username != "")
1231 $lang['error_name_reserved'] = str_replace("[name]", htmlspecialchars($ar_username), $lang['error_name_reserved']);
1232 $errors[] = $lang['error_name_reserved'];
1234 # Überprüfung ob die Email-Adresse das Format name@domain.tld hat:
1235 if (!preg_match($validator['email'], $ar_email))
1237 $errors[] = $lang['error_email_wrong'];
1239 if ($ar_pw_conf != $ar_pw)
1241 $errors[] = $lang_add['error_pw_conf_wrong'];
1244 # wenn keine Fehler, dann neuen User Aufnehmen:
1245 if (empty($errors))
1247 # neuen User in die Datenbank eintragen:
1248 # Passwort generieren, wenn kein Passwort eingegeben wurde:
1249 if($ar_pw=='')
1251 $letters = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789";
1252 mt_srand((double)microtime()*1000000);
1253 $ar_pw="";
1254 for($i=0; $i<8; $i++)
1256 $ar_pw.=substr($letters,mt_rand(0,strlen($letters)-1),1);
1259 $encoded_ar_pw = md5($ar_pw);
1260 $newUserQuery = "INSERT INTO ".$db_settings['userdata_table']." SET
1261 user_type = 'user',
1262 user_name = '". mysql_real_escape_string($ar_username) ."',
1263 user_pw = '".$encoded_ar_pw."',
1264 user_email = '". mysql_real_escape_string($ar_email) ."',
1265 hide_email = 1,
1266 last_login = NOW(),
1267 last_logout = NOW(),
1268 user_ip = '". $_SERVER["REMOTE_ADDR"] ."',
1269 registered = NOW(),
1270 user_view = '". $settings['standard'] ."',
1271 personal_messages = 1";
1272 $new_user_result = mysql_query($newUserQuery, $connid);
1273 if (!$new_user_result) die($lang['db_error']);
1275 # E-Mail an neuen User versenden:
1276 $send_error = '';
1277 if (isset($ar_send_userdata))
1279 $ip = $_SERVER["REMOTE_ADDR"];
1280 $lang['new_user_email_txt_a'] = str_replace("[name]", $ar_username, strip_tags($lang['new_user_email_txt_a']));
1281 $lang['new_user_email_txt_a'] = str_replace("[password]", $ar_pw, $lang['new_user_email_txt_a']);
1282 $lang['new_user_email_txt_a'] = str_replace("[login_link]", $settings['forum_address']."login.php?username=".urlencode($ar_username)."&userpw=".$ar_pw, $lang['new_user_email_txt_a']);
1283 $lang['new_user_email_txt_a'] = $lang['new_user_email_txt_a'];
1284 $header = "From: ".$settings['forum_name']." <".$settings['forum_email'].">\n";
1285 $header .= "X-Mailer: Php/" . phpversion(). "\n";
1286 $header .= "X-Sender-ip: ".$_SERVER["REMOTE_ADDR"]."\n";
1287 $header .= "Content-Type: text/plain";
1288 $new_user_mailto = $ar_username." <".$ar_email.">";
1289 if ($settings['mail_parameter']!='')
1291 if (!@mail($new_user_mailto, strip_tags($lang['new_user_email_sj']), $lang['new_user_email_txt_a'], $header, $settings['mail_parameter']))
1293 $send_error = '&send_error=true';
1296 else
1298 if (!@mail($new_user_mailto, strip_tags($lang['new_user_email_sj']), $lang['new_user_email_txt_a'], $header))
1300 $send_error = '&send_error=true';
1304 header('Location: '. $settings['forum_address'] .'admin.php?action=user&new_user='. urlencode($ar_username).$send_error);
1305 die('<a href="admin.php?action=user&amp;new_user='. urlencode($ar_username).$send_error.'">further...</a>');
1309 if (isset($_POST['banlists_submit']))
1311 if (!empty($_POST['banned_users'])
1312 and trim($_POST['banned_users']) != '')
1314 $paramView = 'settingsCat=ban_users';
1315 $banned_users_array = explode(',',$_POST['banned_users']);
1316 foreach($banned_users_array as $banned_user)
1318 if(trim($banned_user)!='')
1320 $banned_users_array_checked[] = trim($banned_user);
1323 $banned_users = implode(",", $banned_users_array_checked);
1325 else
1327 $banned_users = '';
1329 if (!empty($banned_users))
1331 $setBannedUserNamesQuery = "UPDATE ".$db_settings['banlists_table']." SET
1332 list = '". mysql_real_escape_string($banned_users) ."'
1333 WHERE name = 'users'";
1334 mysql_query($setBannedUserNamesQuery, $connid);
1336 if (!empty($_POST['banned_ips'])
1337 and trim($_POST['banned_ips']) != '')
1339 $paramView = 'settingsCat=ban_ips';
1340 $banned_ips_array = explode(',',$_POST['banned_ips']);
1341 $checkDoubleIP = array();
1342 $banned_ips = array();
1343 foreach ($banned_ips_array as $banned_ip)
1345 $banned_ip = trim($banned_ip);
1346 if (!empty($banned_ip)
1347 and ip2long($banned_ip) !== false
1348 and !in_array($banned_ip, $checkDoubleIP))
1350 $banned_ips[] = "(INET_ATON('". mysql_real_escape_string(trim($banned_ip)) ."'), NOW(), 1)";
1351 $checkDoubleIP[] = $banned_ip;
1355 if (!empty($banned_ips))
1357 $completeSet = implode(', ', $banned_ips);
1358 $setBannedIPsQuery = "INSERT INTO ". $db_settings['banned_ips_table'] ."
1359 (ip, last_date, requests)
1360 VALUES ". $completeSet ."
1361 ON DUPLICATE KEY UPDATE
1362 last_date = VALUES(last_date),
1363 requests = IF(requests > 4, requests, requests + 1)";
1364 $queryTest = mysql_query($setBannedIPsQuery, $connid);
1366 if (!empty($_POST['not_accepted_words'])
1367 and trim($_POST['not_accepted_words']) != '')
1369 $paramView = 'settingsCat=ban_words';
1370 $not_accepted_words_array = explode(',',$_POST['not_accepted_words']);
1371 foreach ($not_accepted_words_array as $not_accepted_word)
1373 if (trim($not_accepted_word)!='') $not_accepted_words_array_checked[] = trim($not_accepted_word);
1375 $not_accepted_words = implode(",", $not_accepted_words_array_checked);
1377 else
1379 $not_accepted_words = '';
1381 if (!empty($not_accepted_words))
1383 $setBadWordsQuery = "UPDATE ".$db_settings['banlists_table']." SET
1384 list = '". mysql_real_escape_string($not_accepted_words) ."'
1385 WHERE name = 'words'";
1386 mysql_query($setBadWordsQuery, $connid);
1388 header('Location: '. $settings['forum_address'] .'admin.php?action=banlists&'. $paramView);
1389 die('<a href="admin.php?action=banlists&amp;'. $paramView .'">further...</a>');
1392 if (isset($_POST['smiley_file']))
1394 if (!file_exists('img/smilies/'.$_POST['smiley_file']))
1396 $errors[] = $lang_add['smiley_file_doesnt_exist'];
1398 if (trim($_POST['smiley_code'])=='')
1400 $errors[] = $lang_add['smiley_code_error'];
1402 if (empty($errors))
1404 $count_result = mysql_query("SELECT COUNT(*) FROM ".$db_settings['smilies_table'], $connid);
1405 list($smilies_count) = mysql_fetch_row($count_result);
1406 mysql_free_result($count_result);
1407 $order_id = $smilies_count+1;
1408 $insertSmileyQuery = "INSERT INTO ". $db_settings['smilies_table'] ." SET
1409 order_id = ". intval($order_id) .",
1410 file = '". mysql_real_escape_string($_POST['smiley_file']) ."',
1411 code_1 = '". mysql_real_escape_string(trim($_POST['smiley_code'])) ."'";
1412 mysql_query($insertSmileyQuery, $connid) or die(mysql_error($connid));
1413 header('Location: '. $settings['forum_address'] .'admin.php?action=smilies');
1414 die();
1416 else
1418 $action='smilies';
1422 if(isset($_GET['delete_smiley']))
1424 $delSmileyQuery = "DELETE FROM ". $db_settings['smilies_table'] ."
1425 WHERE id = ". intval($_GET['delete_smiley']);
1426 mysql_query($delSmileyQuery, $connid);
1427 $getReorderSmiliesQuery = "SELECT
1429 FROM ". $db_settings['smilies_table'] ."
1430 ORDER BY order_id ASC";
1431 $result = mysql_query($getReorderSmiliesQuery, $connid);
1432 $i=1;
1433 while ($data = mysql_fetch_assoc($result))
1435 $setReorderSmileyQuery = "UPDATE ". $db_settings['smilies_table'] ."
1436 SET order_id = ". intval($i) ."
1437 WHERE id = ". intval($data['id']);
1438 mysql_query($setReorderSmileyQuery, $connid);
1439 $i++;
1441 mysql_free_result($result);
1442 header('Location: '. $settings['forum_address'] .'admin.php?action=smilies');
1443 die();
1446 if(isset($_GET['edit_smiley']))
1448 $getEditSmileyQuery = "SELECT
1450 file,
1451 code_1,
1452 code_2,
1453 code_3,
1454 code_4,
1455 code_5,
1456 title
1457 FROM ". $db_settings['smilies_table'] ."
1458 WHERE id = ". intval($_GET['edit_smiley']) ."
1459 LIMIT 1";
1460 $result = mysql_query($getEditSmileyQuery, $connid);
1461 if(!$result) die($lang['db_error']);
1462 $data = mysql_fetch_assoc($result);
1463 mysql_free_result($result);
1464 $id = $data['id'];
1465 $file = $data['file'];
1466 $code_1 = $data['code_1'];
1467 $code_2 = $data['code_2'];
1468 $code_3 = $data['code_3'];
1469 $code_4 = $data['code_4'];
1470 $code_5 = $data['code_5'];
1471 $title = $data['title'];
1472 $action='edit_smiley';
1475 if(isset($_POST['edit_smiley_submit']))
1477 $id = intval($_POST['id']);
1478 $file = trim($_POST['file']);
1479 $code_1 = trim($_POST['code_1']);
1480 $code_2 = trim($_POST['code_2']);
1481 $code_3 = trim($_POST['code_3']);
1482 $code_4 = trim($_POST['code_4']);
1483 $code_5 = trim($_POST['code_5']);
1484 $title = trim($_POST['title']);
1486 if (!file_exists('img/smilies/'.$file))
1488 $errors[] = $lang_add['smiley_file_doesnt_exist'];
1490 if($code_1=='' && $code_2=='' && $code_3=='' && $code_4=='' && $code_5=='')
1492 $errors[] = $lang_add['smiley_code_error'];
1494 if(empty($errors))
1496 $editSmileyUpdateQuery = "UPDATE ". $db_settings['smilies_table'] ." SET
1497 file='". mysql_real_escape_string($file) ."',
1498 code_1='". mysql_real_escape_string($code_1) ."',
1499 code_2='". mysql_real_escape_string($code_2) ."',
1500 code_3='". mysql_real_escape_string($code_3) ."',
1501 code_4='". mysql_real_escape_string($code_4) ."',
1502 code_5='". mysql_real_escape_string($code_5) ."',
1503 title='". mysql_real_escape_string($title) ."'
1504 WHERE id=". intval($id);
1505 mysql_query($editSmileyUpdateQuery, $connid);
1506 header('Location: '. $settings['forum_address'] .'admin.php?action=smilies');
1507 die();
1509 else
1511 $action='edit_smiley';
1515 if(isset($_GET['enable_smilies']))
1517 mysql_query("UPDATE ". $db_settings['settings_table'] ." SET value=1 WHERE name='smilies'", $connid);
1518 header('Location: '. $settings['forum_address'] .'admin.php?action=smilies');
1519 die();
1522 if(isset($_GET['disable_smilies']))
1524 mysql_query("UPDATE ". $db_settings['settings_table'] ." SET value=0 WHERE name='smilies'", $connid);
1525 header('Location: '. $settings['forum_address'] .'admin.php?action=smilies');
1526 die();
1529 if (isset($_GET['move_up_smiley']))
1531 $result = mysql_query("SELECT order_id FROM ". $db_settings['smilies_table'] ." WHERE id = ". intval($_GET['move_up_smiley']) ." LIMIT 1", $connid);
1532 if (!$result) die($lang['db_error']);
1533 $field = mysql_fetch_assoc($result);
1534 mysql_free_result($result);
1535 if ($field['order_id'] > 1)
1537 mysql_query("UPDATE ". $db_settings['smilies_table'] ." SET order_id=0 WHERE order_id=". $field['order_id'] ."-1", $connid);
1538 mysql_query("UPDATE ". $db_settings['smilies_table'] ." SET order_id=order_id-1 WHERE order_id=". $field['order_id'], $connid);
1539 mysql_query("UPDATE ". $db_settings['smilies_table'] ." SET order_id=". $field['order_id']." WHERE order_id=0", $connid);
1541 header('Location: '. $settings['forum_address'] .'admin.php?action=smilies');
1542 die();
1545 if (isset($_GET['move_down_smiley']))
1547 $count_result = mysql_query("SELECT COUNT(*) FROM ". $db_settings['smilies_table'], $connid);
1548 list($smilies_count) = mysql_fetch_row($count_result);
1549 mysql_free_result($count_result);
1551 $result = mysql_query("SELECT order_id FROM ". $db_settings['smilies_table'] ." WHERE id = ". intval($_GET['move_down_smiley']) ." LIMIT 1", $connid);
1552 if(!$result) die($lang['db_error']);
1553 $field = mysql_fetch_array($result);
1554 mysql_free_result($result);
1555 if ($field['order_id'] < $smilies_count)
1557 mysql_query("UPDATE ". $db_settings['smilies_table'] ." SET order_id=0 WHERE order_id=". $field['order_id'] ."+1", $connid);
1558 mysql_query("UPDATE ". $db_settings['smilies_table'] ." SET order_id=order_id+1 WHERE order_id=". $field['order_id'], $connid);
1559 mysql_query("UPDATE ". $db_settings['smilies_table'] ." SET order_id=". $field['order_id'] ." WHERE order_id=0", $connid);
1561 header('Location: '. $settings['forum_address'] .'admin.php?action=smilies');
1562 die();
1565 if (empty($action)) $action="main";
1567 $topnav = '<a class="textlink" href="';
1568 if (!empty($_SESSION[$settings['session_prefix'].'curr_view']))
1570 if ($_SESSION[$settings['session_prefix'].'curr_view'] == 'thread')
1572 $topnav .= 'forum.php';
1574 else
1576 $topnav .= $_SESSION[$settings['session_prefix'].'curr_view'].'.php';
1579 else if (!empty($_COOKIE['curr_view']) and in_array($_COOKIE['curr_view'], $possViews))
1581 $topnav .= $_COOKIE['curr_view'].'.php';
1583 else
1585 $topnav .= 'forum.php';
1587 $topnav .= '">'.$lang['back_to_overview_linkname'].'</a>&nbsp;';
1588 if (!empty($action))
1590 if ($action == "main")
1592 $topnav .= '<span class="current-page">'.$lang_add['admin_area'].'</span>';
1594 if ($action == "settings")
1596 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1597 $topnav .= '<span class="current-page">'.$lang_add['forum_settings'] .'</span>';
1599 if ($action == "debug")
1601 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1602 $topnav .= '<span class="current-page">'.$lang_add['debug_administr'] .'</span>';
1604 if ($action == "categories")
1606 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1607 $topnav .= '<span class="current-page">'.$lang_add['category_administr'].'</span>';
1609 if ($action == "delete_category")
1611 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1612 $topnav .= '<a class="textlink" href="admin.php?action=categories">'.$lang_add['category_administr'].'</a>&nbsp;';
1613 $topnav .= '<span class="current-page">'.$lang_add['delete_category'].'</span>';
1615 if ($action == "edit_category")
1617 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1618 $topnav .= '<a class="textlink" href="admin.php?action=categories">'.$lang_add['category_administr'].'</a>&nbsp;';
1619 $topnav .= '<span class="current-page">'.$lang_add['cat_edit_hl'].'</span>';
1621 if ($action == "user")
1623 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1624 $topnav .= '<span class="current-page">'.$lang_add['user_administr'].'</span>';
1626 if ($action == "edit_user")
1628 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1629 $topnav .= '<a class="textlink" href="admin.php?action=user">'.$lang_add['user_administr'].'</a>&nbsp;';
1630 $topnav .= '<span class="current-page">'.$lang_add['edit_user'].'</span>';
1632 if ($action == "delete_users_sure")
1634 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1635 $topnav .= '<a class="textlink" href="admin.php?action=user">'.$lang_add['user_administr'].'</a>&nbsp;';
1636 $topnav .= '<span class="current-page">'.$lang_add['delete_user'].'</span>';
1638 if ($action == "register")
1640 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1641 $topnav .= '<a class="textlink" href="admin.php?action=user">'.$lang_add['user_administr'].'</a>&nbsp;';
1642 $topnav .= '<span class="current-page">'.$lang_add['reg_user'].'</span>';
1644 if ($action == "email_list")
1646 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1647 $topnav .= '<a class="textlink" href="admin.php?action=user">'.$lang_add['user_administr'].'</a>&nbsp;';
1648 $topnav .= '<span class="current-page">'.$lang_add['email_list'].'</span>';
1650 if ($action == "clear_userdata")
1652 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1653 $topnav .= '<a class="textlink" href="admin.php?action=user">'.$lang_add['user_administr'].'</a>&nbsp;';
1654 $topnav .= '<span class="current-page">'.$lang_add['clear_userdata'].'</span>';
1656 if ($action == "banlists")
1658 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1659 $topnav .= '<span class="current-page">'.$lang_add['banlists'].'</span>';
1661 if ($action == "empty")
1663 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1664 $topnav .= '<span class="current-page">'.$lang_add['empty_forum'].'</span>';
1666 if ($action == "backup")
1668 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1669 $topnav .= '<span class="current-page">'.$lang_add['backup_restore'].'</span>';
1671 if ($action == "import_sql" or $action == "import_sql_ok")
1673 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1674 $topnav .= '<a class="textlink" href="admin.php?action=backup">'.$lang_add['backup_restore'].'</a>&nbsp;';
1675 $topnav .= '<span class="current-page">'.$lang_add['import_sql'].'</span>';
1677 if ($action == "uninstall")
1679 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1680 $topnav .= '<span class="current-page">'.$lang_add['uninstall'].'</span>';
1682 if ($action == "smilies")
1684 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1685 $topnav .= '<span class="current-page">'.$lang_add['smilies'].'</span>';
1687 if ($action == "edit_smiley")
1689 $topnav .= '<a class="textlink" href="admin.php">'.$lang_add['admin_area'].'</a>&nbsp;';
1690 $topnav .= '<a class="textlink" href="admin.php?action=smilies">'.$lang_add['smilies'].'</a>&nbsp;';
1691 $topnav .= '<span class="current-page">'.$lang_add['edit_smiley_hl'].'</span>';
1693 if ($action == "delete_marked_threads")
1695 $topnav .= '<span class="current-page">'.$lang_add['del_marked'].'</span>';
1697 if ($action == "unmark")
1699 $topnav .= '<span class="current-page">'.$lang_add['unmark_threads'].'</span>';
1701 if ($action == "lock_marked_threads")
1703 $topnav .= '<span class="current-page">'.$lang_add['lock_marked'].'</span>';
1705 if ($action == "unlock_marked_threads")
1707 $topnav .= '<span class="current-page">'.$lang_add['unlock_marked'].'</span>';
1709 if ($action == "invert_markings")
1711 $topnav .= '<span class="current-page">'.$lang_add['invert_markings'].'</span>';
1713 if ($action == "mark_threads")
1715 $topnav .= '<span class="current-page">'.$lang_add['mark_threads'].'</span>';
1719 parse_template();
1720 echo $header;
1722 switch ($action)
1724 case "main":
1725 echo '<ul class="linklist">'."\n";
1726 echo '<li><a class="textlink" href="admin.php?action=settings">'.$lang_add['forum_settings'].'</a></li>'."\n";
1727 echo '<li><a class="textlink" href="admin.php?action=debug">'.$lang_add['debug_administr'].'</a></li>'."\n";
1728 echo '<li><a class="textlink" href="admin.php?action=categories">'.$lang_add['category_administr'].'</a></li>'."\n";
1729 echo '<li><a class="textlink" href="admin.php?action=user">'.$lang_add['user_administr'].'</a></li>'."\n";
1730 echo '<li><a class="textlink" href="admin.php?action=smilies">'.$lang_add['smilies'].'</a></li>'."\n";
1731 echo '<li><a class="textlink" href="admin.php?action=banlists">'.$lang_add['banlists'].'</a></li>'."\n";
1732 echo '<li><a class="textlink" href="admin.php?action=empty">'.$lang_add['empty_forum'].'</a></li>'."\n";
1733 echo '<li><a class="textlink" href="admin.php?action=backup">'.$lang_add['backup_restore'].'</a></li>'."\n";
1734 echo '<li><a class="textlink" href="admin.php?action=uninstall">'.$lang_add['uninstall'].'</a></li>'."\n";
1735 echo '</ul>'."\n";
1736 break;
1737 case "debug":
1738 echo '<form action="admin.php" method="post">'."\n";
1739 echo '<table class="admin info">'."\n";
1740 echo ' <tbody>'."\n";
1741 echo ' <tr>'."\n";
1742 echo ' <td><label for="debug-none">'.$lang_add['debug_none'].'</label><br />';
1743 echo '<span class="info">'.$lang_add['debug_none_d'].'</span></td>'."\n";
1744 echo ' <td><input type="radio" name="debug_type" id="debug-none" value="no"';
1745 echo ($_SESSION[$settings['session_prefix'].'debug'] == 'no') ? ' checked="checked"' : '';
1746 echo ' /></td>'."\n";
1747 echo ' </tr><tr>'."\n";
1748 echo ' <td><label for="debug-lang">'.$lang_add['debug_lang'].'</label><br />';
1749 echo '<span class="info">'.$lang_add['debug_lang_d'].'</span></td>'."\n";
1750 echo ' <td><input type="radio" name="debug_type" id="debug-lang" value="lang"';
1751 echo ($_SESSION[$settings['session_prefix'].'debug'] == 'lang') ? ' checked="checked"' : '';
1752 echo ' /></td>'."\n";
1753 echo ' </tr><tr>'."\n";
1754 echo ' <td><label for="debug-session">'.$lang_add['debug_session'].'</label><br />';
1755 echo '<span class="info">'.$lang_add['debug_session_d'].'</span></td>'."\n";
1756 echo ' <td><input type="radio" name="debug_type" id="debug-session" value="session"';
1757 echo ($_SESSION[$settings['session_prefix'].'debug'] == 'session') ? ' checked="checked"' : '';
1758 echo ' /></td>'."\n";
1759 echo ' </tr><tr>'."\n";
1760 echo ' <td><label for="debug-css">'.$lang_add['debug_css'].'</label><br />';
1761 echo '<span class="info">'.$lang_add['debug_css_d'].'</span></td>'."\n";
1762 echo ' <td><input type="radio" name="debug_type" id="debug-css" value="css"';
1763 echo ($_SESSION[$settings['session_prefix'].'debug'] == 'css') ? ' checked="checked"' : '';
1764 echo ' /></td>'."\n";
1765 echo ' </tr>'."\n";
1766 echo ' </tbody>'."\n";
1767 echo '</table>'."\n";
1768 echo '<p><input type="submit" name="debug_submitted"';
1769 echo ' value="'.outputLangDebugInAttributes($lang_add['settings_sb']).'" /></p>'."\n";
1770 echo '</form>'."\n";
1771 break;
1772 case "categories":
1773 # look if there are entries in not existing categories:
1774 $entriesWOCategories = "SELECT COUNT(*) FROM ".$db_settings['forum_table']."
1775 WHERE category ";
1776 if (isset($category_ids_query))
1778 $entriesWOCategories .= "NOT IN (".$category_ids_query.")";
1780 else
1782 $entriesWOCategories .= "!= 0";
1784 $count_result = mysql_query($entriesWOCategories, $connid);
1785 list($entries_count) = mysql_fetch_row($count_result);
1786 mysql_free_result($count_result);
1787 if ($entries_count > 0)
1789 $cat_select = '<select class="kat" size="1" name="move_category">'."\n";
1790 if ($categories!=false)
1792 while (list($key, $val) = each($categories))
1794 if ($key!=0)
1796 $cat_select .= '<option value="'.intval($key);
1797 $cat_select .= '">'.htmlspecialchars($val).'</option>'."\n";
1801 else
1803 $cat_select .= '<option value="0">-</option>'."\n";
1805 $cat_select .= '</select>'."\n";
1806 # <div style="margin:0px 0px 20px 0px; padding:10px; border:1px dotted red;">
1807 echo '<form action="admin.php" method="post">'."\n";
1808 echo '<p>'.$lang_add['entries_in_not_ex_cat'].'</p>'."\n";
1809 echo '<p><input type="radio" name="mode" value="delete" checked="checked" />';
1810 echo $lang_add['entries_in_not_ex_cat_delete'].'<br />'."\n";
1811 echo '<input type="radio" name="mode" value="move" />';
1812 echo str_replace("[category]",$cat_select,$lang_add['entries_in_not_ex_cat_move']).'</p>'."\n";
1813 echo '<p><input type="submit" name="not_displayed_entries_submit" value="';
1814 echo outputLangDebugInAttributes($lang['submit_button_ok']).'"></p>'."\n";
1815 echo '</form>'."\n";
1817 $count_result = mysql_query("SELECT COUNT(*) FROM ".$db_settings['category_table'], $connid);
1818 list($categories_count) = mysql_fetch_row($count_result);
1819 mysql_free_result($count_result);
1820 if (isset($errors))
1822 echo errorMessages($errors);
1824 if ($categories_count > 0)
1826 $result = mysql_query("SELECT id, category_order, category, accession FROM ".$db_settings['category_table']." ORDER BY category_order ASC", $connid);
1827 if(!$result) die($lang['db_error']);
1829 echo '<table class="normaltab">'."\n";
1830 echo ' <thead>'."\n";
1831 echo ' <tr>'."\n";
1832 echo ' <th>'.$lang_add['cat_hl'].'</th>'."\n";
1833 echo ' <th>'.$lang_add['cat_accessible'].'</th>'."\n";
1834 echo ' <th>'.$lang_add['cat_topics'].'</th>'."\n";
1835 echo ' <th>'.$lang_add['cat_entries'].'</th>'."\n";
1836 echo ' <th colspan="2">'.$lang_add['cat_actions'].'</th>'."\n";
1837 echo ' <th>'.$lang_add['cat_move'].'</th>'."\n";
1838 echo ' </tr>'."\n";
1839 echo ' </thead>'."\n";
1840 echo ' <tbody>'."\n".' ';
1842 $i=0;
1843 while ($line = mysql_fetch_assoc($result))
1845 $count_result = mysql_query("SELECT COUNT(*) FROM ".$db_settings['forum_table']." WHERE category = '".intval($line['id'])."' AND pid = 0", $connid);
1846 list($threads_in_category) = mysql_fetch_row($count_result);
1847 mysql_free_result($count_result);
1848 $count_result = mysql_query("SELECT COUNT(*) FROM ".$db_settings['forum_table']." WHERE category = '".intval($line['id'])."'", $connid);
1849 list($postings_in_category) = mysql_fetch_row($count_result);
1850 mysql_free_result($count_result);
1851 echo '<tr>'."\n";
1852 echo ' <td><b>'.$line['category'].'</b></td>'."\n";
1853 echo ' <td>';
1854 if ($line['accession']==2) echo $lang_add['cat_accession_mod_admin'];
1855 else if ($line['accession']==1) echo $lang_add['cat_accession_reg_users'];
1856 else echo $lang_add['cat_accession_all'];
1857 echo '</td>'."\n";
1858 echo ' <td>'.$threads_in_category.'</td>'."\n";
1859 echo ' <td>'.$postings_in_category.'</td>'."\n";
1860 echo ' <td><a href="admin.php?edit_category='.$line['id'].'">'.$lang_add['cat_edit'].'</a></td>'."\n";
1861 echo ' <td><a href="admin.php?delete_category='.$line['id'].'">'.$lang_add['cat_delete'].'</a></td>'."\n";
1862 echo ' <td><a href="admin.php?move_up_category='.$line['id'].'">';
1863 echo '<img src="img/up.png" alt="up" width="11" height="11" /></a>&nbsp;';
1864 echo '<a href="admin.php?move_down_category='.$line['id'].'">';
1865 echo '<img src="img/down.png" alt="down" width="11" height="11" /></a></td>'."\n";
1866 echo ' </tr>';
1867 $i++;
1869 mysql_free_result($result);
1870 echo "\n".' </tbody>'."\n".'</table>'."\n";
1872 else
1874 echo '<p><i>'.$lang_add['no_categories'].'</i></p>'."\n";
1876 echo '<form action="admin.php" method="post"><div>'."\n";
1877 echo '<label for="cat-name">'.$lang_add['new_category'].'</label><br />'."\n";
1878 echo '<input type="text" name="new_category" id="cat-name" value="';
1879 echo isset($new_category) ? htmlspecialchars($new_category) : '';
1880 echo '" size="25" /><br />'."\n";
1881 echo '<b>'.$lang_add['accessible_for'].'</b><br />'."\n";
1882 echo '<input type="radio" name="accession" id="access-all" value="0"';
1883 if (empty($accession) || isset($accession) && $accession == 0)
1885 echo ' checked="ckecked"';
1887 echo ' /><label for="access-all">'.$lang_add['cat_accession_all'].'</label><br />'."\n";
1888 echo '<input type="radio" name="accession" id="access-user" value="1"';
1889 if (isset($accession) && $accession == 1)
1891 echo ' checked="ckecked"';
1893 echo ' /><label for="access-user">'.$lang_add['cat_accession_reg_users'].'</label><br />'."\n";
1894 echo '<input type="radio" name="accession" id="access-mod-admin" value="2"';
1895 if (isset($accession) && $accession == 2)
1897 echo ' checked="ckecked"';
1899 echo ' /><label for="access-mod-admin">'.$lang_add['cat_accession_mod_admin'].'</label><br /><br />'."\n";
1900 echo '<input type="submit" value="'.outputLangDebugInAttributes($lang['submit_button_ok']).'" /></div></form>'."\n";
1901 break;
1902 case "user":
1903 $order = isset($_GET['order']) ? $_GET['order'] : "user_id";
1904 $sam = isset($_GET['sam']) ? (int)$_GET['sam'] : 50;
1905 $descasc = isset($_GET['descasc']) ? $_GET['descasc'] : "ASC";
1906 $page = isset($_GET['page']) ? intval($_GET['page']) : 0;
1907 $category = empty($category) ? 0 : intval($category);
1908 if (isset($_GET['search_user'])) $search_user = $_GET['search_user'];
1909 if (isset($_GET['letter'])) $letter = $_GET['letter'];
1911 $ul = $page * $settings['users_per_page'];
1912 # as first, generate the menu
1913 $menuItems = array('userdata', 'logindata', 'actions');
1914 $menu .= '<ul class="menulist">'."\n";
1915 foreach ($menuItems as $item)
1917 if ((empty($_GET['settingsCat']) and $item == 'userdata')
1918 or ($item == $_GET['settingsCat']))
1920 $menu .= '<li><span>';
1921 $menu .= htmlspecialchars($lang_add['settings_cat'][$item]) .'</span></li>';
1923 else
1925 $menu .= '<li><a href="?action=user&amp;settingsCat='. $item .'">';
1926 $menu .= htmlspecialchars($lang_add['settings_cat'][$item]) .'</a></li>';
1929 $menu .= '</ul>'."\n";
1931 if (isset($letter))
1933 $getUserWhere = "
1934 WHERE user_name LIKE '". mysql_real_escape_string($_GET['letter']) ."%'
1937 else if (isset($search_user))
1939 $getUserWhere = "
1940 WHERE user_name LIKE '". mysql_real_escape_string($search_user) ."%'
1941 OR user_email LIKE '". mysql_real_escape_string($search_user) ."%'
1944 else
1946 $getUserWhere = "";
1948 if (isset($_GET['settingsCat'])
1949 and $_GET['settingsCat'] == 'logindata')
1951 $getUserListQuery = "SELECT
1952 user_id,
1953 user_name,
1954 user_type,
1955 logins,
1956 DATE_FORMAT(last_login + INTERVAL ".$time_difference." HOUR, '".$lang['time_format_sql']."') AS last_login_time
1957 FROM ". $db_settings['userdata_table'] . $getUserWhere ."
1958 ORDER BY ". $order ." ". $descasc ."
1959 LIMIT ". $ul .", ". $settings['users_per_page'];
1960 $currentRows = array('user_id', 'user_name', 'logins', 'last_login');
1962 else if (isset($_GET['settingsCat'])
1963 and $_GET['settingsCat'] == 'actions')
1965 $getUserListQuery = "SELECT
1966 user_id,
1967 user_name,
1968 user_type,
1969 user_lock
1970 FROM ". $db_settings['userdata_table'] . $getUserWhere ."
1971 ORDER BY ". $order ." ". $descasc ."
1972 LIMIT ". $ul .", ". $settings['users_per_page'];
1973 $currentRows = array('user_id', 'user_name', 'user_lock', 'actions');
1975 else
1977 $getUserListQuery = "SELECT
1978 user_id,
1979 user_name,
1980 user_type,
1981 user_email,
1982 DATE_FORMAT(registered + INTERVAL ".$time_difference." HOUR, '".$lang['time_format_sql']."') AS registered_time,
1983 INET_NTOA(ip_addr) AS ip_address
1984 FROM ". $db_settings['userdata_table'] . $getUserWhere ."
1985 ORDER BY ". $order ." ". $descasc ."
1986 LIMIT ". $ul .", ". $settings['users_per_page'];
1987 $currentRows = array('user_id', 'user_name', 'user_email', 'registered', 'ip');
1989 $result = mysql_query($getUserListQuery, $connid);
1990 if (!$result) die($lang['db_error']);
1991 $result_count = mysql_num_rows($result);
1993 if ($result_count < $sam) $sam = $result_count;
1994 $alphabet = range('A', 'Z');
1996 echo '<h2>'. str_replace("[number]", $result_count, $lang['num_reg_users']) .'</h2>'."\n";
1997 echo '<div><label for="search_user">'. $lang_add['search_user'] .'</label>&nbsp;';
1998 echo '<form action="'.$_SERVER['SCRIPT_NAME'].'" method="get" style="display:inline">'."\n";
1999 echo '<input type="hidden" name="action" value="user" />'."\n";
2000 echo '<input type="text" name="search_user" id="search_user" value="';
2001 echo (isset($search_user)) ? htmlspecialchars($search_user) : '';
2002 echo '" size="25">&nbsp;<input type="image" name="" value="" src="img/submit.png" alt="&raquo;" />';
2003 echo '</form>'."\n";
2004 if (empty($search_user) || trim($search_user) == '')
2006 echo '&nbsp;';
2007 echo '<form action="'.$_SERVER["SCRIPT_NAME"].'" method="get" style="display:inline">'."\n";
2008 echo '<input type="hidden" name="action" value="user" />'."\n";
2009 echo '<select class="kat" size="1" name="letter" onchange="this.form.submit();">'."\n";
2010 echo '<option value="">A-Z</option>'."\n";
2011 foreach ($alphabet as $lett)
2013 echo '<option value="'.$lett.'"';
2014 echo (isset($_GET['letter']) && $_GET['letter'] == $lett) ? ' selected="selected"' : '';
2015 echo '>'.$lett.'</option>'."\n";
2017 echo '</select>&nbsp;<input type="image" name="" value="" src="img/submit.png" alt="&raquo;" /></form>'."\n";
2018 echo nav($page, $settings['users_per_page'], $result_count, $order, $descasc, $category, $action);
2020 echo '</div>'."\n";
2022 if ($result_count > 0)
2024 $parLetter = !empty($letter) ? '&amp;letter='. urlencode($letter) : '';
2025 $currDescAsc = strtolower($descasc);
2026 if (isset($_GET['new_user']))
2028 echo '<p class="caution">';
2029 echo str_replace("[name]", htmlspecialchars(urldecode($_GET['new_user'])), $lang_add['new_user_registered']);
2030 if (isset($_GET['send_error']))
2032 echo '<br />'.$lang_add['userdata_send_error'];
2034 echo '</p>'."\n".'<p><a class="textlink" href="admin.php?action=register">'.$lang_add['reg_another_user'].'</a></p>'."\n";
2036 if (isset($no_users_in_selection))
2038 echo '<p class="caution">'.$lang_add['no_users_in_sel'].'</p>'."\n";
2040 echo $menu;
2041 echo '<form action="admin.php" method="post">'."\n";
2042 echo '<table class="normaltab">'."\n";
2043 echo ' <thead>'."\n";
2044 echo ' <tr>'."\n";
2045 echo ' <th>&nbsp;</th>'."\n";
2046 if (in_array('user_id', $currentRows))
2048 echo ' <th><a href="admin.php?action=user&amp;order=user_id&amp;descasc=';
2049 echo ($descasc=="ASC" && $order=="user_id") ? 'DESC' : 'ASC';
2050 echo '&amp;ul='.$ul.'&amp;sam='.$sam.$parLetter.'" title="'.$lang['order_linktitle'].'">'.$lang_add['user_id'].'</a>';
2051 if ($order=="user_id")
2053 echo outputImageDescAsc($currDescAsc);
2055 echo '</th>'."\n";
2057 if (in_array('user_name', $currentRows))
2059 echo ' <th><a href="admin.php?action=user&amp;order=user_name&amp;descasc=';
2060 echo ($descasc=="ASC" && $order=="user_name") ? "DESC" : "ASC";
2061 echo '&amp;ul='.$ul.'&amp;sam='.$sam.$parLetter.'" title="'.$lang['order_linktitle'].'">'.$lang_add['user_name'].'</a>';
2062 if ($order=="user_name")
2064 echo outputImageDescAsc($currDescAsc);
2066 echo '</th>'."\n";
2068 if (in_array('user_email', $currentRows))
2070 echo ' <th><a href="admin.php?action=user&amp;order=user_email&amp;descasc=';
2071 echo ($descasc=="ASC" && $order=="user_email") ? "DESC" : "ASC";
2072 echo '&amp;ul='.$ul.'&amp;sam='.$sam.$parLetter.'" title="'.$lang['order_linktitle'].'">'.$lang_add['user_email'].'</a>';
2073 if ($order=="user_email")
2075 echo outputImageDescAsc($currDescAsc);
2077 echo '</th>'."\n";
2079 if (in_array('registered', $currentRows))
2081 echo ' <th>';
2082 echo '<a href="admin.php?action=user&amp;order=registered&amp;descasc=';
2083 echo ($descasc=="ASC" && $order=="registered") ? "DESC" : "ASC";
2084 echo '&amp;ul='.$ul.'&amp;sam='.$sam.$parLetter.'" title="'.$lang['order_linktitle'].'">'.$lang_add['user_registered'].'</a>';
2085 if ($order=="registered")
2087 echo outputImageDescAsc($currDescAsc);
2089 echo '</th>'."\n";
2091 if (in_array('ip', $currentRows))
2093 echo ' <th>';
2094 echo '<a href="admin.php?action=user&amp;order=ip_addr&amp;descasc=';
2095 echo ($descasc=="ASC" && $order=="registered") ? "DESC" : "ASC";
2096 echo '&amp;ul='.$ul.'&amp;sam='.$sam.$parLetter.'" title="'.$lang['order_linktitle'].'">IP</a>';
2097 if ($order=="ip_addr")
2099 echo outputImageDescAsc($currDescAsc);
2101 echo '</th>'."\n";
2103 if (in_array('logins', $currentRows))
2105 echo ' <th><a href="admin.php?action=user&amp;order=logins&amp;descasc=';
2106 echo ($descasc=="ASC" && $order=="logins") ? "DESC" : "ASC";
2107 echo '&amp;ul='.$ul.'&amp;sam='.$sam.$parLetter.'" title="'.$lang['order_linktitle'].'">'.$lang_add['user_logins'].'</a>';
2108 if ($order=="logins")
2110 echo outputImageDescAsc($currDescAsc);
2112 echo '</th>'."\n";
2114 if (in_array('last_login', $currentRows))
2116 echo ' <th><a href="admin.php?action=user&amp;order=last_login&amp;descasc=';
2117 echo ($descasc=="ASC" && $order=="last_login") ? "DESC" : "ASC";
2118 echo '&amp;ul='.$ul.'&amp;sam='.$sam.$parLetter.'" title="'.$lang['order_linktitle'].'">'.$lang_add['last_login'].'</a>';
2119 if ($order=="last_login")
2121 echo outputImageDescAsc($currDescAsc);
2123 echo '</th>'."\n";
2125 if (in_array('user_lock', $currentRows))
2127 echo ' <th><a href="admin.php?action=user&amp;order=user_lock&amp;descasc=';
2128 echo ($descasc=="DESC" && $order=="user_lock") ? "ASC" : "DESC";
2129 echo '&amp;ul='.$ul.'&amp;sam='.$sam.$parLetter.'" title="'.$lang['order_linktitle'].'">'.$lang['lock'].'</a>';
2130 if ($order=="user_lock")
2132 echo outputImageDescAsc($currDescAsc);
2134 echo '</th>'."\n";
2136 echo in_array('actions', $currentRows) ?' <th colspan="2">&nbsp;</th>'."\n" : '';
2137 echo ' </tr>'."\n";
2138 echo ' </thead>'."\n".' <tbody>'."\n".' ';
2139 $i=0;
2140 while ($zeile = mysql_fetch_assoc($result))
2142 # highlight user, mods and admins:
2143 if (($settings['admin_mod_highlight'] == 1
2144 or $settings['user-highlight'] == 1)
2145 && $zeile["user_id"] > 0)
2147 $mark = outputStatusMark($mark, $zeile['user_type'], $connid);
2149 echo '<tr>'."\n";
2150 echo ' <td><input type="checkbox" name="selected[]" value="'.$zeile["user_id"].'" /></td>'."\n";
2151 if (in_array('user_id', $currentRows))
2153 echo ' <td class="info">'.$zeile["user_id"].'</td>'."\n";
2155 if (in_array('user_name', $currentRows))
2157 echo ' <td>';
2158 echo outputAuthorsName(htmlspecialchars($zeile["user_name"]), $mark, $zeile["user_id"]).'</td>'."\n";
2160 if (in_array('user_email', $currentRows))
2162 echo ' <td class="info"><a href="mailto:'.$zeile["user_email"].'" title="';
2163 echo str_replace("[name]", htmlspecialchars($zeile["user_name"]), $lang_add['mailto_user_lt']);
2164 echo '">'. htmlspecialchars($zeile["user_email"]) .'</a></td>'."\n";
2166 if (in_array('registered', $currentRows))
2168 echo ' <td class="info">'. htmlspecialchars($zeile["registered_time"]) .'</td>'."\n";
2170 if (in_array('ip', $currentRows))
2172 echo ' <td class="info">'. htmlspecialchars($zeile['ip_address']) .'</td>'."\n";
2174 if (in_array('logins', $currentRows))
2176 echo ' <td class="info">'.$zeile["logins"].'</td>'."\n";
2178 if (in_array('last_login', $currentRows))
2180 echo ' <td class="info">';
2181 echo ($zeile["logins"] > 0) ? htmlspecialchars($zeile["last_login_time"]) : "&nbsp;";
2182 echo '</td>'."\n";
2184 if (in_array('user_lock', $currentRows))
2186 echo ' <td class="info">';
2187 if ($zeile["user_lock"] == 0)
2189 echo '<a href="admin.php?user_lock='.$zeile["user_id"].'&amp;order='.$order.'&amp;descasc=';
2190 echo $descasc.'&amp;ul='.$ul.'&amp;sam='.$sam.'" title="';
2191 echo str_replace("[name]", htmlspecialchars($zeile["user_name"]), $lang['lock_user_lt']);
2192 echo '">'.$lang['unlocked'].'</a>';
2194 else
2196 echo '<a style="color: red;" href="admin.php?user_lock='.$zeile["user_id"].'&amp;order='.$order;
2197 echo '&amp;descasc='.$descasc.'&amp;ul='.$ul.'&amp;sam='.$sam.'" title="';
2198 echo str_replace("[name]", htmlspecialchars($zeile["user_name"]), $lang['unlock_user_lt']);
2199 echo '">'.$lang['locked'].'</a>';
2201 echo '</td>'."\n";
2203 if (in_array('actions', $currentRows))
2205 echo ' <td class="info"><a href="admin.php?edit_user='.$zeile["user_id"].'&amp;order='.$order.'&amp;descasc='.$descasc;
2206 echo '&amp;ul='.$ul.'&amp;sam='.$sam.'">'.$lang_add['edit_link'].'</a></td>'."\n";
2207 echo ' <td class="info"><a href="admin.php?delete_user='.$zeile["user_id"].'&amp;order='.$order.'&amp;descasc='.$descasc;
2208 echo '&amp;ul='.$ul.'&amp;sam='.$sam.'">'.$lang_add['delete_link'].'</a></td>'."\n";
2210 echo ' </tr>';
2211 $i++;
2213 mysql_free_result($result);
2214 echo "\n".' </tbody>'."\n".'</table>'."\n";
2215 echo '<div style="margin:5px 0px 0px 7px; padding:0px;"><img src="img/selected_arrow.png" alt="" width="35"';
2216 echo ' height="20" border="0"><input type="submit" name="delete_user" value="'.outputLangDebugInAttributes($lang_add['delete_users_sb']);
2217 echo '" title="'.$lang_add['delete_users_sb_title'].'" /></div>'."\n".'</form>'."\n";
2219 else
2221 echo '<p><i>'.$lang['no_users'].'</i></p>'."\n";
2223 echo '<ul class="linklist">'."\n";
2224 echo '<li><a class="textlink" href="admin.php?action=register">'.$lang_add['reg_user'].'</a></li>'."\n";
2225 echo '<li><a class="textlink" href="admin.php?action=email_list">'.$lang_add['email_list'].'</a></li>'."\n";
2226 echo '<li><a class="textlink" href="admin.php?action=clear_userdata">'.$lang_add['clear_userdata'].'</a></li>'."\n";
2227 echo '</ul>'."\n";
2228 break;
2229 case "register":
2230 echo '<p>'.$lang_add['register_exp'].'</p>'."\n";
2231 if (isset($errors)) { errorMessages($errors); }
2232 echo '<form action="admin.php" method="post">'."\n";
2233 echo '<input type="hidden" name="action" value="register">'."\n";
2234 echo '<b>'.$lang['username_marking'].'</b><br />'."\n";
2235 echo '<input type="text" size="25" name="ar_username" value="';
2236 echo (isset($ar_username)) ? htmlspecialchars($ar_username) : '';
2237 echo '" maxlength="'.$name_maxlength.'" /><br /><br /><b>'.$lang['user_email_marking'].'</b><br />'."\n";
2238 echo '<input type="text" size="25" name="ar_email" value="';
2239 echo (isset($ar_email)) ? htmlspecialchars($ar_email) : '';
2240 echo '" maxlength="'.$email_maxlength.'" /><br /><br /><b>'.$lang_add['pw_marking'].'</b><br />'."\n";
2241 echo '<input type="password" size="25" name="ar_pw" maxlength="50"><br /><br /><b>';
2242 echo $lang_add['pw_conf_marking'].'</b><br />'."\n";
2243 echo '<input type="password" size="25" name="ar_pw_conf" maxlength="50"><br /><br />'."\n";
2244 echo '<input type="checkbox" name="ar_send_userdata" value="true"';
2245 echo (isset($ar_send_userdata)) ? ' checked="checked"' : '';
2246 echo ' />'.$lang_add['ar_send_userdata'].'<br /><br />'."\n";
2247 echo '<input type="submit" name="pw_submit" value="'.$lang['new_pw_subm_button'];
2248 echo '" title="'.$lang['new_pw_subm_button_title'].'">'."\n";
2249 echo '</form>'."\n";
2250 break;
2251 case "settings":
2252 # initialize variables
2253 $output = '';
2254 $menu = '';
2255 $settingsTable = array();
2256 $catTable = array();
2257 unset($errors);
2258 $std = (isset($settings['time_difference'])) ? $settings['time_difference'] : 0;
2259 # read categories list from settings table
2260 $getAllSettingsCatsQuery = "SELECT DISTINCT
2262 FROM ". $db_settings['settings_table'];
2263 # getting the result of the query from the settings table
2264 $resultCats = mysql_query($getAllSettingsCatsQuery, $connid);
2265 # the database request failed
2266 if (!$resultCats)
2268 $output .= '<p>'. $lang['db_error'] .'</p>';
2270 # the database request was successfull
2271 else
2273 # as first, generate the menu
2274 $menu .= '<ul class="menulist">'."\n";
2275 while ($category = mysql_fetch_assoc($resultCats))
2277 $catTable[] = $category['cat'];
2278 if ((empty($_GET['settingsCat']) and $category['cat'] == 'general')
2279 or ($category['cat'] == $_GET['settingsCat']))
2281 $menu .= '<li><span>';
2282 $menu .= htmlspecialchars($lang_add['settings_cat'][$category['cat']]) .'</span></li>';
2284 else
2286 $menu .= '<li><a href="?action=settings&amp;settingsCat='. $category['cat'] .'">';
2287 $menu .= htmlspecialchars($lang_add['settings_cat'][$category['cat']]) .'</a></li>';
2290 $menu .= '</ul>'."\n";
2291 # generate the GET-parameter dependant part of the query to read forum settings
2292 if (in_array($_GET['settingsCat'], $catTable))
2294 $catsName = $lang_add['settings_cat'][$_GET['settingsCat']];
2295 $catParameter = $_GET['settingsCat'];
2296 $addit = "
2297 WHERE cat = '". mysql_real_escape_string($_GET['settingsCat']) ."'";
2299 else
2301 $catsName = $lang_add['settings_cat']['general'];
2302 $catParameter = 'general';
2303 $addit = "
2304 WHERE cat = 'general'";
2306 # the database query itself
2307 $getAllSettingsQuery = "SELECT
2308 name,
2309 value,
2310 cat,
2311 type,
2312 poss_values
2313 FROM ". $db_settings['settings_table'].$addit;
2314 # get the result of the query
2315 $resultSettings = mysql_query($getAllSettingsQuery, $connid);
2316 # the database request failed
2317 if (!$resultSettings)
2319 $output .= '<p>'. $lang['db_error'] .'</p>';
2321 # the database request was successfull
2322 else
2324 $output .= '<h2>'. $catsName .'</h2>'."\n";
2325 $output .= $menu;
2326 $output .= '<form action="admin.php?settingsCat='. urlencode($catParameter) .'" method="post">'."\n";
2327 $output .= ' <table class="admin">'."\n".' ';
2328 while ($setting = mysql_fetch_assoc($resultSettings))
2330 $output .= '<tr>'."\n";
2331 $output .= ' <td>';
2332 # debug information (interim solution)
2333 # $output .= array_key_exists($setting['name'], $lang_add)? '<label for="'. htmlspecialchars($setting['name']) .'">'. $lang_add[$setting['name']] .'</label> ('. $setting['name'] .')' : $setting['name'];
2334 $output .= array_key_exists($setting['name'], $lang_add)? '<label for="'. htmlspecialchars($setting['name']) .'">'. $lang_add[$setting['name']] .'</label>' : $setting['name'];
2335 $output .= array_key_exists($setting['name'] .'_d', $lang_add)? '<br /><span class="info">'. $lang_add[$setting['name'] .'_d'] .'</span>' : '';
2336 $output .= '</td>'."\n".' <td>'."\n";
2337 if ($setting['type'] == 'array')
2339 # use select
2340 $possible = explode(', ', $setting['poss_values']);
2341 $posslength = count($possible);
2342 # length of array is 1; it is a special case
2343 if ($posslength == 1)
2345 # read the text of the special case
2346 $matcher = explode(':', $possible[0]);
2347 # the possible values are not present,
2348 # the list will be genertated in another way
2349 unset($possible);
2350 # reinitialze the variable
2351 $possible = array();
2352 # the values comes from a file list
2353 if ($matcher[0] == 'file')
2355 $handle = opendir($matcher[1]);
2356 $c = 0;
2357 while ($file = readdir($handle))
2359 if (strrchr($file, ".") == ".php" && strrchr($file, "_") != "_add.php")
2361 $possible[$c] = $file .':'. ucfirst(str_replace(".php","",$file));
2362 $c++;
2365 closedir($handle);
2367 # the values comes from a function
2368 if ($matcher[0] == 'function')
2370 if ($matcher[1] == 'timezones')
2372 $zones = timezone_identifiers_list();
2373 $c = 0;
2374 foreach ($zones as $tz)
2376 $possible[$c] = $tz .':'. $tz;
2377 $c++;
2380 if ($matcher[1] == 'hours')
2382 $c = 0;
2383 for ($h = -24; $h <= 24; $h++)
2385 $possible[$c] = $h .':'. $h;
2386 $c++;
2390 # read the length of the new generated array
2391 $posslength = count($possible);
2393 $output .= ' <select id="'. htmlspecialchars($setting['name']) .'" name="'. htmlspecialchars($setting['name']) .'">'."\n";
2394 # generate the option elements
2395 for ($i = 0; $i < $posslength; $i++)
2397 # split the option, if possible
2398 if (strpos($possible[$i], ':'))
2400 $poss = explode(':', $possible[$i]);
2402 # generate a surrogate array
2403 else
2405 $poss = array($possible[$i], $possible[$i]);
2407 $output .= ' <option value="'. htmlspecialchars($poss[0]) .'"';
2408 $output .= ($setting['value'] == $poss[0]) ? ' selected="selected"' : '';
2409 # no language dependant text defined
2410 if (!array_key_exists($poss[1], $lang_add))
2412 $output .= '>'. htmlspecialchars($poss[1]);
2414 # if text is present, use it
2415 else
2417 $output .= '>'. htmlspecialchars($lang_add[$poss[1]]);
2419 $output .= '</option>'."\n";
2420 unset($poss);
2422 $output .= ' </select>'."\n";
2424 else
2426 # use input element, type text
2427 # make input field longer or shorter, dependant from type (integer vs. string)
2428 $length = ($setting['type'] == 'integer') ? 12 : 40;
2429 # readonly field in special case of setting for version string
2430 $readonly = ($setting['name'] == 'version') ? ' readonly="readonly"' : '';
2431 $output .= ' <input type="text" id="'. htmlspecialchars($setting['name']).'" name="'. htmlspecialchars($setting['name']) .'" value="'. htmlspecialchars($setting['value']) .'" size="'. $length .'"'. $readonly .' />'."\n";
2433 $output .= ' </td>'."\n";
2434 $output .= ' </tr>';
2436 $output .= "\n".' </table>'."\n";
2437 $output .= '<p><input type="submit" name="settings_submitted"';
2438 $output .= ' value="'.outputLangDebugInAttributes($lang_add['settings_sb']).'" /></p>'."\n";
2439 $output .= '</form>'."\n";
2442 echo $output;
2443 break;
2444 case "delete_users_sure":
2445 echo '<h2>'.$lang_add['delete_users_hl'].'</h2>'."\n";
2446 echo '<p class="caution">'.$lang['caution'].'</p>'."\n";
2447 echo '<p>'.(count($selected)==1) ? $lang_add['delete_user_conf'] : $lang_add['delete_users_conf'].'</p>'."\n";
2448 echo '<ul class="linklist">'."\n";
2449 for ($x=0; $x<count($selected_usernames); $x++)
2451 echo '<li><a href="user.php?id='.$selected[$x].'"><b>';
2452 echo htmlspecialchars($selected_usernames[$x]).'</b></a></li>'."\n";
2454 echo '</ul>'."\n";
2455 echo '<form action="admin.php" method="post">'."\n";
2456 for ($x=0; $x<count($selected); $x++)
2458 echo '<input type="hidden" name="selected_confirmed[]" value="'.$selected[$x].'" />'."\n";
2460 echo '<input type="submit" name="delete_confirmed" value="';
2461 echo outputLangDebugInAttributes($lang['user_del_subm_b']).'" />'."\n";
2462 echo '</form>'."\n";
2463 break;
2464 case "empty":
2465 if (isset($errors))
2467 echo errorMessages($errors);
2469 echo '<p class="caution">'.$lang['caution'].'</p>'."\n";
2470 echo '<p>'.$lang_add['empty_forum_note'].'</p>'."\n";
2471 echo '<form action="admin.php" method="post">'."\n";
2472 echo '<b>'.$lang['password_marking'].'</b><br /><input type="password"';
2473 echo ' size="25" name="delete_all_postings_confirm_pw" /><br /><br />';
2474 echo '<input type="submit" name="delete_all_postings_confirmed" value="';
2475 echo outputLangDebugInAttributes($lang_add['empty_forum_sb']).'" />'."\n";
2476 echo '</form>'."\n";
2477 break;
2478 case "uninstall":
2479 if (isset($errors))
2481 echo errorMessages($errors);
2483 echo '<p class="caution">'.$lang['caution'].'</p>'."\n";
2484 echo '<p>'.$lang_add['delete_db_note'].'</p>'."\n";
2485 echo '<form action="admin.php" method="post">'."\n";
2486 echo '<input type="radio" name="delete_modus" value="tables"';
2487 echo ' checked="checked" /> '.$lang_add['delete_tables'].'<br />';
2488 echo '<input type="radio" name="delete_modus" value="db" /> ';
2489 echo str_replace("[database]",$db_settings['db'],$lang_add['delete_db']);
2490 echo '<br /><br /><b>'.$lang['password_marking'].'</b><br />';
2491 echo '<input type="password" size="25" name="delete_db_confirm_pw" /><br /><br />';
2492 echo '<input type="submit" name="delete_db_confirmed" value="';
2493 echo outputLangDebugInAttributes($lang_add['delete_db_note_sb']).'" />'."\n".'</form>'."\n";
2494 break;
2495 case "delete_marked_threads":
2496 $lang_add['del_marked_note'] = str_replace('[marked_symbol]', '<img src="img/marked.png" alt="[x]" width="9" height="9" />', $lang_add['del_marked_note']);
2497 echo '<p class="caution">'.$lang['caution'].'</p>'."\n";
2498 echo '<p>'.$lang_add['del_marked_note'].'</p>'."\n";
2499 echo '<form action="admin.php" method="post">'."\n";
2500 if (isset($_GET['refer']))
2502 echo '<input type="hidden" name="refer" value="';
2503 echo htmlspecialchars($_GET['refer']).'" />'."\n";
2505 echo '<input type="submit" name="delete_marked_threads_confirmed" value="';
2506 echo outputLangDebugInAttributes($lang_add['del_marked_sb']).'" />'."\n";
2507 echo '</form>'."\n";
2508 break;
2509 case "unmark":
2510 echo '<p>'.$lang_add['unmark_threads_note'].'</p>'."\n";
2511 echo '<form action="admin.php" method="post">'."\n";
2512 if (isset($_GET['refer']))
2514 echo '<input type="hidden" name="refer" value="';
2515 echo htmlspecialchars($_GET['refer']).'" />'."\n";
2517 echo '<input type="submit" name="unmark_confirmed" value="';
2518 echo outputLangDebugInAttributes($lang['submit_button_ok']).'" />'."\n".'</form>'."\n";
2519 break;
2520 case "invert_markings":
2521 echo '<p>'.$lang_add['invert_markings_note'].'</p>'."\n";
2522 echo '<form action="admin.php" method="post">'."\n";
2523 if (isset($_GET['refer']))
2525 echo '<input type="hidden" name="refer" value="';
2526 echo htmlspecialchars($_GET['refer']).'" />'."\n";
2528 echo '<input type="submit" name="invert_markings_confirmed" value="';
2529 echo outputLangDebugInAttributes($lang['submit_button_ok']).'" /></form>'."\n";
2530 break;
2531 case "mark_threads":
2532 echo '<form action="admin.php" method="post" style="display: inline;">'."\n";
2533 if (isset($_GET['refer']))
2535 echo '<input type="hidden" name="refer" value="';
2536 echo htmlspecialchars($_GET['refer']).'" />'."\n";
2538 $lang_add['mark_old_threads'] = str_replace('[number]', '<input type="text" name="n1" value="" size="4" />', $lang_add['mark_old_threads']);
2539 $lang_add['mark_old_threads_no_replies'] = str_replace('[number]', '<input type="text" name="n2" value="" size="4" />', $lang_add['mark_old_threads_no_replies']);
2540 echo '<p><input type="radio" name="mark_threads" value="1" checked="checked" />';
2541 echo $lang_add['mark_old_threads'].'</p>'."\n";
2542 echo '<p><input type="radio" name="mark_threads" value="2" /> ';
2543 echo $lang_add['mark_old_threads_no_replies'].'</p>'."\n";
2544 echo '<p><input type="submit" name="mark_threads_submitted" value="';
2545 echo outputLangDebugInAttributes($lang['submit_button_ok']).'" /></p></form>'."\n";
2546 break;
2547 case "lock_marked_threads":
2548 $lang_add['lock_marked_conf'] = str_replace('[marked_symbol]', '<img src="img/marked.png" alt="[x]" width="9" height="9" />', $lang_add['lock_marked_conf']);
2549 echo '<p>'.$lang_add['lock_marked_conf'].'</p>'."\n";
2550 echo '<form action="admin.php" method="post">'."\n";
2551 if (isset($_GET['refer']))
2553 echo '<input type="hidden" name="refer" value="';
2554 echo htmlspecialchars($_GET['refer']).'" />'."\n";
2556 echo '<input type="submit" name="lock_marked_threads_submitted" value="';
2557 echo outputLangDebugInAttributes($lang['submit_button_ok']).'" /></form>'."\n";
2558 break;
2559 case "unlock_marked_threads":
2560 $lang_add['unlock_marked_conf'] = str_replace('[marked_symbol]', '<img src="img/marked.png" alt="[x]" width="9" height="9" />', $lang_add['unlock_marked_conf']);
2561 echo '<p>'.$lang_add['unlock_marked_conf'].'</p>'."\n";
2562 echo '<form action="admin.php" method="post">'."\n";
2563 if (isset($_GET['refer']))
2565 echo '<input type="hidden" name="refer" value="';
2566 echo htmlspecialchars($_GET['refer']).'" />'."\n";
2568 echo '<input type="submit" name="unlock_marked_threads_submitted" value="';
2569 echo outputLangDebugInAttributes($lang['submit_button_ok']).'" /></form>'."\n";
2570 break;
2571 case "delete_category":
2572 if (count($categories) > 1)
2574 $cat_select = '<select class="kat" size="1" name="move_category" id="del-keep-cat">'."\n";
2575 while (list($key, $val) = each($categories))
2577 if ($key != $category_id)
2579 $cat_select .= '<option value="'.$key.'">'.$val.'</option>'."\n";
2582 $cat_select .= '</select>'."\n";
2584 echo '<h2>'.str_replace("[category]",$category_name,$lang_add['del_cat_hl']).'</h2>'."\n";
2585 echo '<p class="caution">'.$lang['caution'].'</p>'."\n";
2586 echo '<form action="admin.php" method="post" style="display: inline;">'."\n";
2587 echo '<input type="hidden" name="category_id" value="';
2588 echo $category_id.'" />'."\n";
2589 if (count($categories) <= 1)
2591 echo '<input type="hidden" name="move_category" value="0" />'."\n";
2593 echo '<p><input type="radio" name="delete_mode" id="del-complete" value="complete"';
2594 echo ' checked="checked" /><label for="del-complete">'.$lang_add['del_cat_completely'].'</label></p>'."\n";
2595 echo '<p><input type="radio" name="delete_mode" id="del-keep" value="keep_entries" />';
2596 echo '<label for="del-keep">'.$lang_add['del_cat_keep_entries'].'</label>';
2597 if (count($categories) > 0)
2599 echo ' <label for="del-keep-cat">'.str_replace("[category]",$cat_select,$lang_add['del_cat_move_entries']).'</label>';
2601 echo '</p>'."\n".'<p><input type="submit" name="delete_category_submit" value="';
2602 echo outputLangDebugInAttributes($lang_add['del_cat_sb']).'" /></p></form>'."\n";
2603 break;
2604 case "edit_category":
2605 echo '<h2>'.$lang_add['cat_edit_hl'].'</h2>';
2606 if (isset($errors))
2608 echo errorMessages($errors);
2610 echo '<form action="admin.php" method="post"><div>'."\n";
2611 echo '<input type="hidden" name="id" value="'.$id.'" />'."\n";
2612 echo '<label for="cat-name">'.$lang_add['edit_category']."\n";
2613 echo '<input type="text" name="category" id="cat-name" value="';
2614 echo htmlspecialchars($category).'" size="25" /></label><br />'."\n";
2615 echo '<b>'.$lang_add['accessible_for'].'</b><br />'."\n";
2616 echo '<input type="radio" name="accession" id="access-all" value="0"';
2617 echo ($accession==0) ? ' checked="ckecked"' : '';
2618 echo ' /><label for="access-all">'.$lang_add['cat_accession_all'].'</label><br />'."\n";
2619 echo '<input type="radio" name="accession" id="access-user" value="1"';
2620 echo ($accession==1) ? ' checked="ckecked"' : '';
2621 echo ' /><label for="access-user">'.$lang_add['cat_accession_reg_users'].'</label><br />'."\n";
2622 echo '<input type="radio" name="accession" id="access-mod-admin" value="2"';
2623 echo ($accession==2) ? ' checked="ckecked"' : '';
2624 echo ' /><label for="access-mod-admin">'.$lang_add['cat_accession_mod_admin'].'</label><br /><br />'."\n";
2625 echo '<input type="submit" name="edit_category_submit" value="';
2626 echo outputLangDebugInAttributes($lang['submit_button_ok']).'" /></div></form>'."\n";
2627 break;
2628 case "backup":
2629 echo '<h2>'.$lang_add['backup_restore'].'</h2>';
2630 echo '<h3>'.$lang_add['backup'].'</h3>'."\n";
2631 echo '<ul class="linklist">'."\n";
2632 echo '<li><a class="textlink" href="admin.php?backup=1">'.$lang_add['sql_complete'].'</a></li>'."\n";
2633 echo '<li><a class="textlink" href="admin.php?backup=2">'.$lang_add['sql_forum'].'</a></li>'."\n";
2634 echo '<li><a class="textlink" href="admin.php?backup=3">'.$lang_add['sql_forum_marked'].'</a></li>'."\n";
2635 echo '<li><a class="textlink" href="admin.php?backup=4">'.$lang_add['sql_userdata'].'</a></li>'."\n";
2636 echo '<li><a class="textlink" href="admin.php?backup=5">'.$lang_add['sql_categories'].'</a></li>'."\n";
2637 echo '<li><a class="textlink" href="admin.php?backup=6">'.$lang_add['sql_settings'].'</a></li>'."\n";
2638 echo '<li><a class="textlink" href="admin.php?backup=7">'.$lang_add['sql_smilies'].'</a></li>'."\n";
2639 echo '<li><a class="textlink" href="admin.php?backup=8">'.$lang_add['sql_banlists'].'</a></li>'."\n";
2640 echo '</ul>'."\n";
2641 echo '<h3>'.$lang_add['restore'].'</h3>'."\n";
2642 echo '<ul class="linklist">'."\n";
2643 echo '<li><a class="textlink" href="admin.php?action=import_sql">'.$lang_add['import_sql'].'</a></li>'."\n";
2644 echo '</ul>'."\n";
2645 break;
2646 case "import_sql":
2647 echo '<p class="caution">'.$lang['caution'].'</p>'."\n";
2648 echo '<p class="normal">'.$lang_add['import_sql_note'].'</p>'."\n";
2649 if (isset($errors))
2651 echo errorMessages($errors);
2653 echo '<form action="admin.php" method="post">'."\n";
2654 echo '<p><b>'.$lang_add['sql_dump'].'</b><br />'."\n";
2655 echo '<textarea name="sql" cols="70" rows="15">';
2656 echo (isset($sql)) ? htmlspecialchars($sql) : '';
2657 echo '</textarea></p>'."\n";
2658 echo '<p><label for="sql_pw">'.$lang['password_marking'].'</label><br />';
2659 echo '<input type="password" size="25" name="sql_pw" id="sql_pw" /></p>'."\n";
2660 echo '<p><input type="submit" name="sql_submit" value="';
2661 echo outputLangDebugInAttributes($lang['submit_button_ok']).'" /></p>'."\n";
2662 echo '</form>'."\n";
2663 break;
2664 case "import_sql_ok":
2665 echo '<p>'.$lang_add['import_sql_ok'].'</p>'."\n";
2666 break;
2667 case "email_list":
2668 $email_result = mysql_query("SELECT user_email FROM ".$db_settings['userdata_table'], $connid);
2669 if (!$email_result) die($lang['db_error']);
2670 while ($line = mysql_fetch_assoc($email_result))
2672 $email_list[] = $line['user_email'];
2674 mysql_free_result($email_result);
2675 echo '<textarea onfocus="if (this.value==this.defaultValue) this.select()"';
2676 echo ' readonly="readonly" cols="60" rows="15" />';
2677 echo implode(", ",$email_list).'</textarea>'."\n";
2678 break;
2679 case "clear_userdata":
2680 echo '<p>'.$lang_add['clear_userdata_expl'].'</p>'."\n";
2681 echo '<form action="admin.php" method="post">'."\n";
2682 echo '<table>'."\n";
2683 echo ' <tr>'."\n";
2684 echo ' <td><input type="radio" name="clear_userdata" value="1" checked="checked" /></td>'."\n";
2685 echo ' <td>'.$lang_add['clear_users_1'].'</td>'."\n";
2686 echo ' </tr><tr>'."\n";
2687 echo ' <td><input type="radio" name="clear_userdata" value="2" /></td>'."\n";
2688 echo ' <td>'.$lang_add['clear_users_2'].'</td>'."\n";
2689 echo ' </tr><tr>'."\n";
2690 echo ' <td><input type="radio" name="clear_userdata" value="3" /></td>'."\n";
2691 echo ' <td>'.$lang_add['clear_users_3'].'</td>'."\n";
2692 echo ' </tr><tr>'."\n";
2693 echo ' <td><input type="radio" name="clear_userdata" value="4" /></td>'."\n";
2694 echo ' <td>'.$lang_add['clear_users_4'].'</td>'."\n";
2695 echo ' </tr><tr>'."\n";
2696 echo ' <td><input type="radio" name="clear_userdata" value="5" /></td>'."\n";
2697 echo ' <td>'.$lang_add['clear_users_5'].'</td>'."\n";
2698 echo ' </tr>'."\n";
2699 echo '</table>'."\n";
2700 echo '<p><input type="submit" value="';
2701 echo outputLangDebugInAttributes($lang['submit_button_ok']).'" /></p>'."\n";
2702 echo '</form>'."\n";
2703 break;
2704 case "banlists":
2705 # initialize variables
2706 $output = '';
2707 $menu = '';
2708 $menuitems = array('ban_ips'=>array('title'=>$lang_add['banned_ips'], 'description'=>$lang_add['banned_ips_d'], 'field_name'=>'banned_ips'),
2709 'ban_users'=>array('title'=>$lang_add['banned_users'], 'description'=>$lang_add['banned_users_d'], 'field_name'=>'banned_users'),
2710 'ban_words'=>array('title'=>$lang_add['not_accepted_words'], 'description'=>$lang_add['not_accepted_words_d'], 'field_name'=>'not_accepted_words'));
2711 $settingsTable = array();
2712 $catTable = array();
2713 unset($errors);
2714 # as first, generate the menu
2715 $menu .= '<ul class="menulist">'."\n";
2716 foreach ($menuitems as $key=>$val)
2718 if ((empty($_GET['settingsCat']) and $key == 'ban_ips')
2719 or ($key == $_GET['settingsCat']))
2721 $catTable = $key;
2722 $menu .= '<li><span>';
2723 $menu .= htmlspecialchars($val['title']) .'</span></li>';
2725 else
2727 $menu .= '<li><a href="?action=banlists&amp;settingsCat='. htmlspecialchars($key) .'">';
2728 $menu .= htmlspecialchars($val['title']) .'</a></li>';
2731 $menu .= '</ul>'."\n";
2732 if ($catTable == 'ban_users')
2734 # get banned users:
2735 $result = mysql_query("SELECT list FROM ".$db_settings['banlists_table']." WHERE name = 'users' LIMIT 1", $connid);
2736 if (!$result) die($lang['db_error']);
2737 $data = mysql_fetch_assoc($result);
2738 $banned_value = str_replace(',',', ',$data['list']);
2739 mysql_free_result($result);
2741 if ($catTable == 'ban_ips')
2743 # get infos about banned ips:
2744 $queryGetBannedIps = "SELECT
2745 COUNT('ip') AS counted_ips
2746 FROM ". $db_settings['banned_ips_table'];
2747 $result = mysql_query($queryGetBannedIps, $connid);
2748 if (!$result) die($lang['db_error']);
2749 $data = mysql_fetch_assoc($result);
2750 $IPsBanned = $data['counted_ips'];
2751 mysql_free_result($result);
2752 $queryGetLongBannedIps = "SELECT
2753 requests,
2754 COUNT('requests') AS counted_ips
2755 FROM ". $db_settings['banned_ips_table'] ."
2756 WHERE requests <= 20
2757 GROUP BY requests";
2758 $result = mysql_query($queryGetLongBannedIps, $connid);
2759 if (!$result) die($lang['db_error']);
2760 while ($data = mysql_fetch_assoc($result))
2762 $IPsBannedLong[] = $data;
2764 mysql_free_result($result);
2766 if ($catTable == 'ban_words')
2768 # get not accepted words:
2769 $result = mysql_query("SELECT list FROM ".$db_settings['banlists_table']." WHERE name = 'words' LIMIT 1", $connid);
2770 if (!$result) die($lang['db_error']);
2771 $data = mysql_fetch_assoc($result);
2772 $banned_value = str_replace(',',', ',$data['list']);
2773 mysql_free_result($result);
2775 # $output .= '<pre>'. print_r($menuitems, true) .'</pre>';
2776 $output .= $menu;
2777 $output .= '<form action="admin.php" method="post">'."\n";
2778 $output .= '<table class="admin">'."\n";
2779 $output .= ' <tr>'."\n";
2780 $output .= ' <td><label for="ban-field">'. $menuitems[$catTable]['title'] .'</label><br />';
2781 $output .= '<span class="info">'. $menuitems[$catTable]['description'] .'</span></td>'."\n";
2782 $output .= ' <td>'."\n";
2783 if (isset($IPsBanned) or isset($IPsBannedLong))
2785 $output .= ' <ul>'."\n";
2786 if (isset($IPsBanned)) $output .= ' <li>Anzahl der vorhandenen Einträge: <b>'. htmlspecialchars($IPsBanned) .'</b></li>'."\n";
2787 if (isset($IPsBannedLong))
2789 foreach ($IPsBannedLong as $IPsBannedCount)
2791 $output .= ' <li>'. htmlspecialchars($IPsBannedCount["requests"]) .' Zugriffe: <b>'. htmlspecialchars($IPsBannedCount["counted_ips"]) .'</b></li>'."\n";
2794 $output .= ' </ul>'."\n";
2796 $output .= '<textarea name="'. $menuitems[$catTable]['field_name'] .'" id="ban-field" cols="50" rows="7">';
2797 if (isset($banned_value)) $output .= htmlspecialchars($banned_value);
2798 $output .= '</textarea></td>'."\n";
2799 $output .= ' </tr>'."\n";
2800 $output .= '</table>'."\n";
2801 $output .= '<p><input type="submit" name="banlists_submit" value="';
2802 $output .= outputLangDebugInAttributes($lang_add['banlists_submit']).'" /></p>'."\n";
2803 $output .= '</form>'."\n";
2804 echo $output;
2805 break;
2806 case "smilies":
2807 if($settings['smilies'] == 1)
2809 $count_result = mysql_query("SELECT COUNT(*) FROM ".$db_settings['smilies_table'], $connid);
2810 list($smilies_count) = mysql_fetch_row($count_result);
2811 mysql_free_result($count_result);
2812 $fp = opendir('img/smilies/');
2813 while ($file = readdir($fp))
2815 if(preg_match('/\.gif$/i', $file) || preg_match('/\.png$/i', $file) || preg_match('/\.jpg$/i', $file))
2817 $smiley_files[] = $file;
2820 closedir($fp);
2821 if ($smilies_count > 0)
2823 $result = mysql_query("SELECT id, file, code_1, code_2, code_3, code_4, code_5, title FROM ".$db_settings['smilies_table']." ORDER BY order_id ASC", $connid);
2824 if (!$result) die($lang['db_error']);
2825 echo '<table class="normaltab">'."\n";
2826 echo ' <tr class="titlerow">'."\n";
2827 echo ' <th>'.$lang_add['edit_smilies_smiley'].'</th>'."\n";
2828 echo ' <th>'.$lang_add['edit_smilies_codes'].'</th>'."\n";
2829 echo ' <th>'.$lang_add['edit_smilies_title'].'</th>'."\n";
2830 echo ' <th colspan="2">'.$lang_add['edit_smilies_action'].'</th>'."\n";
2831 echo ' <th>'.$lang_add['edit_smilies_order'].'</th>'."\n";
2832 echo ' </tr>'."\n";
2833 $i=0;
2834 while ($line = mysql_fetch_assoc($result))
2836 # remove used smilies from smiley array:
2837 if (isset($smiley_files))
2839 unset($cleared_smiley_files);
2840 foreach ($smiley_files as $smiley_file)
2842 if($line['file']!=$smiley_file) $cleared_smiley_files[] = $smiley_file;
2844 if (isset($cleared_smiley_files)) $smiley_files = $cleared_smiley_files;
2845 else unset($smiley_files);
2847 unset($codes);
2848 if (trim($line['code_1'])!='') $codes[] = stripslashes($line['code_1']);
2849 if (trim($line['code_2'])!='') $codes[] = stripslashes($line['code_2']);
2850 if (trim($line['code_3'])!='') $codes[] = stripslashes($line['code_3']);
2851 if (trim($line['code_4'])!='') $codes[] = stripslashes($line['code_4']);
2852 if (trim($line['code_5'])!='') $codes[] = stripslashes($line['code_5']);
2853 $codes_disp = implode(' &nbsp;',$codes);
2854 $rowClass = ($i % 2 == 0) ? "a" : "b";
2855 echo '<tr class="'.$rowClass.'">'."\n";
2856 echo '<td><img src="img/smilies/'.$line['file'].'" alt="'.$line['code_1'].'"';
2857 echo ($line['title']!='') ? 'title="'.$line['title'].'"' : '';
2858 echo '/></td>'."\n";
2859 echo '<td>'.$codes_disp.'</td>'."\n";
2860 echo '<td>'.$line['title'].'</td>'."\n";
2861 echo '<td><a href="admin.php?edit_smiley='.$line['id'].'">';
2862 echo $lang_add['edit_link'].'</a></td>'."\n";
2863 echo '<td><a href="admin.php?delete_smiley='.$line['id'].'">';
2864 echo $lang_add['delete_link'].'</a></td>'."\n";
2865 echo '<td><a href="admin.php?move_up_smiley='.$line['id'];
2866 echo '"><img src="img/up.png" alt="up" width="11" height="11" /></a>';
2867 echo '&nbsp;<a href="admin.php?move_down_smiley='.$line['id'];
2868 echo '"><img src="img/down.png" alt="down" width="11" height="11" /></a></td>'."\n";
2869 echo '</tr>'."\n";
2870 $i++;
2872 mysql_free_result($result);
2873 echo '</table>'."\n";
2875 else
2877 echo '<p><i>'.$lang_add['no_smilies'].'</i></p>'."\n";
2879 if (isset($errors))
2881 echo errorMessages($errors);
2883 if (isset($smiley_files)) $smiley_count = count($smiley_files);
2884 else $smiley_count = 0;
2885 if ($smiley_count > 0)
2887 echo '<form action="admin.php" method="post">'."\n";
2888 echo '<table>'."\n";
2889 echo '<tr>'."\n";
2890 echo '<td>'.$lang_add['add_smiley_file'].'</td>'."\n";
2891 echo '<td>'.$lang_add['add_smiley_code'].'</td>'."\n";
2892 echo '<td>&nbsp;</td>'."\n";
2893 echo '</tr><tr>'."\n";
2894 echo '<td><select name="smiley_file" size="1">'."\n";
2895 foreach ($smiley_files as $smiley_file)
2897 echo '<option value="'.htmlspecialchars($smiley_file);
2898 echo '">'.htmlspecialchars($smiley_file).'</option>'."\n";
2900 echo '</select></td>'."\n";
2901 echo '<td><input type="text" name="smiley_code" size="10" /></td>'."\n";
2902 echo '<td><input type="submit" value="'.outputLangDebugInAttributes($lang['submit_button_ok']).'" /></td>'."\n";
2903 echo '</tr>'."\n";
2904 echo '</table>'."\n";
2905 echo '</form>'."\n";
2907 else
2909 echo '<p><i>'.$lang_add['no_other_smilies_in_folder'].'</i></p>'."\n";
2912 else
2914 echo '<p><i>'.$lang_add['smilies_disabled'].'</i></p>'."\n";
2916 echo '<p>';
2917 if ($settings['smilies']==1)
2919 echo '<a href="admin.php?disable_smilies=true">'.$lang_add['disable_smilies'].'</a>';
2921 else
2923 echo '<a href="admin.php?enable_smilies=true">'.$lang_add['enable_smilies'].'</a>';
2925 echo '</p>'."\n";
2926 break;
2927 case 'edit_smiley':
2928 if (isset($errors)) { echo errorMessages($errors); }
2929 echo '<form action="admin.php" method="post">'."\n";
2930 echo '<input type="hidden" name="id" value="'.$id.'" />'."\n";
2931 echo '<table class="normaltab">'."\n";
2932 echo '<tr>'."\n";
2933 echo '<td class="c"><label for="smiley-file">'.$lang_add['edit_smilies_smiley'].'</label></td>'."\n";
2934 echo '<td class="d"><select name="file" id="smiley-file" size="1">'."\n";
2935 $fp=opendir('img/smilies/');
2936 while ($dirfile = readdir($fp))
2938 if(preg_match('/\.gif$/i', $dirfile)
2939 || preg_match('/\.png$/i', $dirfile)
2940 || preg_match('/\.jpg$/i', $dirfile))
2942 echo '<option value="'.$dirfile.'"';
2943 echo ($dirfile == $file) ? ' selected="selected"' : '';
2944 echo '>'.$dirfile.'</option>'."\n";
2947 closedir($fp);
2948 echo '</select></td>'."\n";
2949 echo '</tr><tr>'."\n";
2950 echo '<td class="c">'.$lang_add['edit_smilies_codes'].'</td>'."\n";
2951 echo '<td class="d"><input type="text" name="code_1" size="7" value="';
2952 if (isset($code_1)) echo htmlspecialchars($code_1);
2953 echo '" /> <input type="text" name="code_2" size="7" value="';
2954 if (isset($code_2)) echo htmlspecialchars($code_2);
2955 echo '" /> <input type="text" name="code_3" size="7" value="';
2956 if (isset($code_3)) echo htmlspecialchars($code_3);
2957 echo '" /> <input type="text" name="code_4" size="7" value="';
2958 if (isset($code_4)) echo htmlspecialchars($code_4);
2959 echo '" /> <input type="text" name="code_5" size="7" value="';
2960 if (isset($code_5)) echo htmlspecialchars($code_5);
2961 echo '" /></td>'."\n";
2962 echo '</tr><tr>'."\n";
2963 echo '<td class="c"><label for="smiley-title">'.$lang_add['edit_smilies_title'].'</b></td>'."\n";
2964 echo '<td class="d"><input type="text" name="title" id="smiley-title" value="';
2965 if (isset($title)) echo htmlspecialchars($title);
2966 echo '" size="25" /></td>'."\n";
2967 echo '</tr>'."\n";
2968 echo '</table>'."\n";
2969 echo '<p><input type="submit" name="edit_smiley_submit" value="';
2970 echo outputLangDebugInAttributes($lang['submit_button_ok']).'" /></p>'."\n";
2971 break;
2972 case 'edit_user':
2973 if (isset($errors))
2975 echo errorMessages($errors);
2977 echo '<form action="admin.php" method="post"><div>'."\n";
2978 echo '<input type="hidden" name="edit_user_id" value="'.$edit_user_id.'" />'."\n";
2979 echo '<table class="admin info">'."\n";
2980 echo ' <tr>'."\n";
2981 echo ' <td><label for="set-uname">'.$lang['username_marking'].'</label></td>'."\n";
2982 echo ' <td><input type="text" size="40" name="edit_user_name"';
2983 echo ' value="'.htmlspecialchars($edit_user_name).'" id="set-uname" /></td>'."\n";
2984 echo ' </tr><tr>'."\n";
2985 echo ' <td>'.$lang_add['usertype_marking'].'</td>'."\n";
2986 echo ' <td><input type="radio" name="edit_user_type" value="user"';
2987 echo ($edit_user_type=="user") ? ' checked="checked"' : '';
2988 echo ' id="set-type-0" /><label for="set-type-0">'.$lang['ud_user'].'</label><br />';
2989 echo '<input type="radio" name="edit_user_type" value="mod"';
2990 echo ($edit_user_type=="mod") ? ' checked="checked"' : '';
2991 echo ' id="set-type-1" /><label for="set-type-1">'.$lang['ud_mod'].'</label><br />';
2992 echo '<input type="radio" name="edit_user_type" value="admin"';
2993 echo ($edit_user_type=="admin") ? ' checked="checked"' :'';
2994 echo ' id="set-type-2" /><label for="set-type-2">'.$lang['ud_admin'].'</label></td>'."\n";
2995 echo ' </tr><tr>'."\n";
2996 echo ' <td><label for="set-email">'.$lang['user_email_marking'].'</label></td>'."\n";
2997 echo ' <td><input type="text" size="40" name="user_email" ';
2998 echo 'value="'.htmlspecialchars($user_email).'" id="set-email" /></td>'."\n";
2999 echo ' </tr><tr>'."\n";
3000 echo ' <td>'.$lang['user_show_email'].'</td>'."\n";
3001 echo ' <td><input type="radio" name="hide_email" value="0"';
3002 echo ($hide_email=="0") ? ' checked="checked"' : '';
3003 echo ' id="show-mail-1" /><label for="show-mail-1">'.$lang['yes'].'</label><br />';
3004 echo '<input type="radio" name="hide_email" value="1"';
3005 echo ($hide_email=="1") ? ' checked="checked"' : '';
3006 echo ' id="show-mail-0" /><label for="show-mail-0">'.$lang['no'].'</label></td>'."\n";
3007 echo ' </tr><tr>'."\n";
3008 echo ' <td><label for="set-r-name">'.$lang['user_real_name'].'</label></td>'."\n";
3009 echo ' <td><input type="text" size="40" name="user_real_name"';
3010 echo ' value="'.htmlspecialchars($user_real_name).'" maxlength="';
3011 echo $settings['name_maxlength'].'" id="set-r-name" /></td>'."\n";
3012 echo ' </tr><tr>'."\n";
3013 echo ' <td><label for="set-hp">'.$lang['user_hp'].'</label></td>'."\n";
3014 echo ' <td><input type="text" size="40" name="user_hp" value="';
3015 echo htmlspecialchars($user_hp).'" maxlength="';
3016 echo $settings['hp_maxlength'].'" id="set-hp" /></td>'."\n";
3017 echo ' </tr><tr>'."\n";
3018 echo ' <td><label for="set-place">'.$lang['user_place'].'</label></td>'."\n";
3019 echo ' <td><input type="text" size="40" name="user_place"';
3020 echo ' value="'.htmlspecialchars($user_place).'" maxlength="';
3021 echo $settings['place_maxlength'].'" id="set-place" /></td>'."\n";
3022 echo ' </tr><tr>'."\n";
3023 echo ' <td><label for="set-profile">'.$lang['user_profile'].'</label></td>'."\n";
3024 echo ' <td><textarea cols="65" rows="4" name="profile" id="set-profile">';
3025 echo htmlspecialchars($profile).'</textarea></td>'."\n";
3026 echo ' </tr><tr>'."\n";
3027 echo ' <td><label for="set-signature">'.$lang['user_signature'].'</label></td>'."\n";
3028 echo ' <td><textarea cols="65" rows="4" name="signature" id="set-signature">';
3029 echo htmlspecialchars($signature).'</textarea></td>'."\n";
3030 echo ' </tr>';
3031 if ($settings['thread_view'] != 0
3032 && $settings['board_view'] != 0
3033 || $settings['board_view'] != 0
3034 && $settings['mix_view'] != 0
3035 || $settings['thread_view'] != 0
3036 && $settings['mix_view'] != 0)
3038 echo '<tr>'."\n";
3039 echo ' <td><b>'.$lang['user_standard_view'].'</b></td>'."\n";
3040 echo ' <td>'."\n";
3041 if ($settings['thread_view'] == 1)
3043 echo '<input type="radio" name="user_view" id="view-thread" value="thread"';
3044 echo ($user_view=="thread") ? ' checked="checked"' : '';
3045 echo ' /><label for="view-thread">'.$lang['thread_view_linkname'].'</label><br />';
3047 if ($settings['board_view'] == 1)
3049 echo '<input type="radio" name="user_view" id="view-board" value="board"';
3050 echo ($user_view=="board") ? ' checked="checked"' : '';
3051 echo ' /><label for="view-board">'.$lang['board_view_linkname'].'</label><br />';
3053 if ($settings['mix_view'] == 1)
3055 echo '<input type="radio" name="user_view" id="view-mix" value="mix"';
3056 echo ($user_view=="mix") ? ' checked="checked"' : '';
3057 echo ' /><label for="view-mix">'.$lang['mix_view_linkname'].'</label>';
3059 echo '</td>'."\n";
3060 echo ' </tr>'."\n";
3062 echo ' <tr>'."\n";
3063 echo ' <td>'.$lang['user_pers_msg'].'</td>'."\n";
3064 echo ' <td><input type="radio" name="personal_messages" value="1"';
3065 echo ($personal_messages=="1") ? ' checked="checked"' : '';
3066 echo ' id="pers-mess-1" /><label for="pers-mess-1">'.$lang['user_pers_msg_act'];
3067 echo '</label><br />';
3068 echo '<input type="radio" name="personal_messages" value="0"';
3069 echo ($personal_messages=="0") ? ' checked="checked"' : '';
3070 echo ' id="pers-mess-0" /><label for="pers-mess-0">'.$lang['user_pers_msg_deact'];
3071 echo '</label></td>'."\n";
3072 echo ' </tr><tr>'."\n";
3073 echo ' <td><label for="user-time-diff">'.$lang['user_time_diff'].'</b></td>'."\n";
3074 echo ' <td><select name="user_time_difference" id="user-time-diff" size="1">'."\n";
3075 for ($h = -24; $h <= 24; $h++)
3077 echo '<option value="'.htmlspecialchars($h).'"';
3078 echo ($user_time_difference==$h) ? ' selected="selected"' : '';
3079 echo ' />'.htmlspecialchars($h).'</option>'."\n";
3081 echo '</select></td>'."\n";
3082 echo ' </tr>';
3083 if ($edit_user_type=="admin" || $edit_user_type=="mod")
3085 echo '<tr>'."\n";
3086 echo ' <td>'.$lang['admin_mod_notif'].'</td>'."\n";
3087 echo ' <td><input type="checkbox" name="new_posting_notify" value="1"';
3088 echo ($new_posting_notify=="1") ? ' checked="checked"' : '';
3089 echo ' id="new-post" /><label for="new-post">'.$lang['admin_mod_notif_np'].'</label><br />';
3090 echo ' <input type="checkbox" name="new_user_notify" value="1"';
3091 echo ($new_user_notify=="1") ? ' checked=" checked"' : '';
3092 echo ' id="new-user" /><label for="new-user">'.$lang['admin_mod_notif_nu'].'</label></td>'."\n";
3093 echo ' </tr>';
3095 echo "\n".'</table>'."\n";
3096 echo '<p><input type="submit" name="edit_user_submit" value="';
3097 echo outputLangDebugInAttributes($lang['userdata_subm_button']).'" />&nbsp;<input type="reset" value="';
3098 echo outputLangDebugInAttributes($lang['reset_button']).'" /></p>'."\n";
3099 echo '</div></form>'."\n";
3100 break;
3102 echo $footer;
3104 else
3106 header("location: ". $settings['forum_address'] ."index.php");
3107 die('<a href="index.php">further...</a>');