520 lines
17 KiB
PHP
520 lines
17 KiB
PHP
<?php
|
||
/*
|
||
=====================================================
|
||
DLE Forum - by DLE Files Group
|
||
-----------------------------------------------------
|
||
http://dle-files.ru/
|
||
-----------------------------------------------------
|
||
File: moderation.php
|
||
=====================================================
|
||
Copyright (c) 2008,2010 DLE Files Group
|
||
=====================================================
|
||
*/
|
||
|
||
if(!defined('DATALIFEENGINE'))
|
||
{
|
||
die("Hacking attempt!");
|
||
}
|
||
$code = !empty($_POST['code']) ? $_POST['code'] : $_GET['code'];
|
||
|
||
$selectedtids = $_REQUEST['selected_id'];
|
||
|
||
$subaction = $_REQUEST['subaction'];
|
||
|
||
switch ($code)
|
||
{
|
||
// ********************************************************************************
|
||
// OPEN TOPIC
|
||
// ********************************************************************************
|
||
case "01":
|
||
|
||
if ($selectedtids and is_moderation(0, $selectedtids, 0) OR group_moderation($selectedtids, 'forum_topic_set'))
|
||
{
|
||
if (!moderator_value('open_topic', $forum_id, $m_member) AND !group_moderation($selectedtids, 'forum_topic_set')) die();
|
||
|
||
$selectedtids = explode(",",$selectedtids);
|
||
|
||
foreach($selectedtids as $topic_id)
|
||
{
|
||
$topic_id = intval($topic_id);
|
||
if ( $topic_id == 0 ) continue;
|
||
$db->query("UPDATE " . PREFIX . "_forum_topics SET topic_status = '0' WHERE tid = '$topic_id'");
|
||
|
||
$db->query("UPDATE " . PREFIX . "_forum_posts SET hidden = '0' WHERE topic_id = '$topic_id' and hidden NOT IN (1,6)");
|
||
}
|
||
|
||
header("Location: $_SERVER[HTTP_REFERER]");
|
||
}
|
||
|
||
else
|
||
{
|
||
die("Hacking attempt!");
|
||
}
|
||
|
||
break;
|
||
|
||
// ********************************************************************************
|
||
// CLOSE TOPIC
|
||
// ********************************************************************************
|
||
case "02":
|
||
|
||
if ($selectedtids and is_moderation(0, $selectedtids, 0) OR group_moderation($selectedtids, 'forum_topic_set'))
|
||
{
|
||
if (!moderator_value('close_topic', $forum_id, $m_member) AND !group_moderation($selectedtids, 'forum_topic_set')) die();
|
||
|
||
$selectedtids = explode(",",$selectedtids);
|
||
|
||
foreach($selectedtids as $topic_id)
|
||
{
|
||
$topic_id = intval($topic_id);
|
||
if ( $topic_id == 0 ) continue;
|
||
$db->query("UPDATE " . PREFIX . "_forum_topics SET topic_status = '1' WHERE tid = '$topic_id'");
|
||
|
||
$db->query("UPDATE " . PREFIX . "_forum_posts SET hidden = '2' WHERE topic_id = '$topic_id' and hidden NOT IN (1,6)");
|
||
}
|
||
|
||
header("Location: {$_SERVER['HTTP_REFERER']}");
|
||
}
|
||
|
||
else
|
||
{
|
||
die("Hacking attempt!");
|
||
}
|
||
|
||
break;
|
||
|
||
// ********************************************************************************
|
||
// DEL TOPIC
|
||
// ********************************************************************************
|
||
case "03":
|
||
|
||
if ($selectedtids and is_moderation(0, $selectedtids, 0) OR group_moderation($selectedtids, 'forum_topic_del'))
|
||
{
|
||
if (!moderator_value('delete_topic', $forum_id, $m_member) AND !group_moderation($selectedtids, 'forum_topic_del')) die();
|
||
|
||
$selectedtids = explode(",",$selectedtids);
|
||
|
||
foreach($selectedtids as $topic_id)
|
||
{
|
||
$topic_id = intval($topic_id);
|
||
if ( $topic_id == 0 ) continue;
|
||
$row_topic = $db->super_query("SELECT * FROM " . PREFIX . "_forum_topics WHERE tid = '$topic_id'");
|
||
|
||
$topic_id = $row_topic['tid'];
|
||
|
||
$forum_id = $row_topic['forum_id'];
|
||
|
||
$post_all = $row_topic['post'];
|
||
|
||
if (!$forum_config['set_topic_post'])
|
||
{
|
||
$post_all = ($post_all - 1);
|
||
}
|
||
|
||
if ($topic_id)
|
||
{
|
||
// user converting //
|
||
if ($forum_config['set_post_num_up'])
|
||
{
|
||
$query = $db->query("SELECT distinct post_author FROM " . PREFIX . "_forum_posts WHERE topic_id = '$topic_id'");
|
||
|
||
while ($row = $db->get_row($query))
|
||
{
|
||
if ($forum_config['set_topic_post'])
|
||
{
|
||
$topic = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_forum_topics WHERE author_topic = '$row[post_author]'");
|
||
|
||
$topic_num = $topic['count'];
|
||
}
|
||
|
||
$post = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_forum_posts WHERE post_author = '$row[post_author]'");
|
||
|
||
$post_num = $post['count'];
|
||
|
||
$update = ($topic_num + $post_num);
|
||
|
||
$db->query("UPDATE " . PREFIX . "_users SET forum_post = '$update' WHERE name ='$row[post_author]'");
|
||
}
|
||
}
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
$result = $db->query("SELECT * FROM " . PREFIX . "_forum_files WHERE topic_id = '" . $topic_id . "'");
|
||
|
||
while ($row = $db->get_row($result)) {
|
||
|
||
if ($row['file_type'] == "file") {
|
||
|
||
unlink(UPLOAD_DIR."files/" . $row['onserver']);
|
||
|
||
} elseif ($row['file_type'] == "thumb") {
|
||
|
||
unlink(UPLOAD_DIR."thumbs/" . $row['onserver']);
|
||
|
||
unlink(UPLOAD_DIR."images/" . $row['onserver']);
|
||
|
||
} else {
|
||
|
||
unlink(UPLOAD_DIR."images/" . $row['onserver']);
|
||
|
||
}
|
||
|
||
}
|
||
|
||
$db->query("DELETE FROM " . PREFIX . "_forum_files WHERE topic_id = '" . $topic_id . "'");
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
$db->query("DELETE FROM " . PREFIX . "_forum_posts WHERE topic_id = '$topic_id'");
|
||
|
||
$db->query("DELETE FROM " . PREFIX . "_forum_topics WHERE `tid` = '$topic_id'");
|
||
|
||
$new_result = $db->super_query("SELECT * FROM ". PREFIX ."_forum_topics WHERE forum_id = '$forum_id' ORDER by start_date DESC");
|
||
|
||
$db->query("UPDATE " . PREFIX . "_forum_forums SET topics = topics-1, posts = posts-$post_all, f_last_tid = '$new_result[tid]', f_last_title = '$new_result[title]', f_last_date = '$new_result[last_date]', f_last_poster_name = '$new_result[last_poster_name]' WHERE id ='$forum_id'");
|
||
|
||
$db->query("DELETE FROM " . PREFIX . "_forum_poll_log WHERE topic_id = '$topic_id'");
|
||
|
||
// del discuss id //
|
||
$db->query("UPDATE " . PREFIX . "_post SET news_tid = '0' WHERE news_tid = '$topic_id'");
|
||
|
||
// del attachment //
|
||
$db->query("SELECT * FROM " . PREFIX . "_forum_files WHERE topic_id = '$topic_id'"); // and file_attach='1'
|
||
|
||
while($row = $db->get_row())
|
||
{
|
||
if ($row['file_type'] == "image")
|
||
{
|
||
@unlink(UPLOAD_DIR."images/".$row['onserver']);
|
||
}
|
||
|
||
elseif ($row['file_type'] == "thumb")
|
||
{
|
||
@unlink(UPLOAD_DIR."thumbs/".$row['onserver']);
|
||
|
||
@unlink(UPLOAD_DIR."images/".$row['onserver']);
|
||
}
|
||
|
||
else
|
||
{
|
||
@unlink(UPLOAD_DIR."files/".$row['onserver']);
|
||
}
|
||
|
||
$db->query("DELETE FROM " . PREFIX . "_forum_files WHERE file_id = '$row[file_id]'");
|
||
} // end - del attachment //
|
||
}
|
||
}
|
||
|
||
if ($forum_config['mod_rewrite'])
|
||
{
|
||
$forum_location = "{$forum_url}/forum_{$forum_id}";
|
||
}
|
||
else
|
||
{
|
||
$forum_location = "{$forum_url}showforum={$forum_id}";
|
||
}
|
||
|
||
header("Location: {$forum_location}");
|
||
}
|
||
|
||
else
|
||
{
|
||
die("Hacking attempt!");
|
||
}
|
||
|
||
break;
|
||
|
||
// ********************************************************************************
|
||
// EDIT TOPIC TITLE
|
||
// ********************************************************************************
|
||
case "04":
|
||
|
||
$selectedtids = intval($selectedtids);
|
||
|
||
if (!$subaction and is_moderation(0, $selectedtids, 0) OR !$subaction and group_moderation($selectedtids, 'forum_topic_edit'))
|
||
{
|
||
if (!moderator_value('edit_topic', $forum_id, $m_member) AND !group_moderation($selectedtids, 'forum_topic_edit')) die();
|
||
|
||
$row = $db->super_query("SELECT * FROM " . PREFIX . "_forum_topics WHERE tid = '{$selectedtids}'");
|
||
|
||
$topic_action_add = $a_forum_url."act=moderation&code=04&subaction=save&selected_id={$selectedtids}";
|
||
|
||
require_once SYSTEM_DIR.'/classes/parse.class.php';
|
||
|
||
$parse = new ParseFilter();
|
||
|
||
$parse->safe_mode = true;
|
||
|
||
$topic_title = $parse->decodeBBCodes($row['title'], false);
|
||
$topic_descr = $parse->decodeBBCodes($row['topic_descr'], false);
|
||
|
||
$tpl->load_template($tpl_dir.'edittopic.tpl');
|
||
|
||
$tpl->set('{topic_title}', $topic_title);
|
||
$tpl->set('{topic_descr}', $topic_descr);
|
||
|
||
if (check_access($forum_config['tools_poll']))
|
||
{
|
||
$tpl->set('[poll]','');
|
||
$tpl->set('[/poll]','');
|
||
|
||
$tpl->set('{vote_title}', $parse->decodeBBCodes($row['poll_title'], false));
|
||
$tpl->set('{frage}', $parse->decodeBBCodes($row['frage'], false));
|
||
$tpl->set('{vote_body}', $parse->decodeBBCodes($row['poll_body'], false));
|
||
}
|
||
else
|
||
{
|
||
$tpl->set_block("'\\[poll\\](.*?)\\[/poll\\]'si","");
|
||
}
|
||
|
||
$tpl->copy_template = "<form method=\"post\" name=\"dle-comments-form\" id=\"dle-comments-form\" action=\"{$topic_action_add}\">".$tpl->copy_template."</form>";
|
||
|
||
$tpl->compile('dle_forum');
|
||
$tpl->clear();
|
||
}
|
||
|
||
if ($subaction == "save" and is_moderation(0, $selectedtids, 0) OR $subaction == "save" and group_moderation($selectedtids, 'forum_topic_edit'))
|
||
{
|
||
if (!moderator_value('edit_topic', $forum_id, $m_member) AND !group_moderation($selectedtids, 'forum_topic_edit')) die();
|
||
|
||
require_once SYSTEM_DIR.'/classes/parse.class.php';
|
||
|
||
$parse->safe_mode = true;
|
||
|
||
$parse = new ParseFilter(Array(), Array(), 1, 1);
|
||
|
||
$topic_title = $db->safesql($parse->process($_POST['topic_title']));
|
||
$topic_descr = $db->safesql($parse->process($_POST['topic_descr']));
|
||
$vote_title = trim($db->safesql($parse->process($_POST['vote_title'])));
|
||
$frage = trim($db->safesql($parse->process($_POST['frage'])));
|
||
$vote_body = $db->safesql($parse->BB_Parse($parse->process($_POST['vote_body']), false));
|
||
$poll_multiple = intval($_POST['poll_multiple']);
|
||
|
||
$db->query("UPDATE " . PREFIX . "_forum_topics SET title = '$topic_title', topic_descr = '$topic_descr', poll_title = '$vote_title', frage = '$frage', poll_body = '$vote_body', multiple = '$poll_multiple' WHERE tid = '$selectedtids'");
|
||
|
||
if ($forum_config['mod_rewrite'])
|
||
{
|
||
$topic_location = "{$forum_url}/topic_$selectedtids";
|
||
} else
|
||
{
|
||
$topic_location = "{$forum_url}showtopic=$selectedtids";
|
||
}
|
||
|
||
header("Location: $topic_location");
|
||
}
|
||
|
||
$bbr_app = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
|
||
|
||
break;
|
||
|
||
// ********************************************************************************
|
||
// MOVE TOPIC
|
||
// ********************************************************************************
|
||
case "05":
|
||
|
||
if ($selectedtids and is_moderation(0, $selectedtids, 0))
|
||
{
|
||
if (!moderator_value('move_topic', $is_mod['forum_id'], $m_member)) die();
|
||
|
||
$move_fid = $_REQUEST['move_fid'];
|
||
|
||
if (!$subaction)
|
||
{
|
||
$topic_action_add = "{$a_forum_url}act=moderation&code=05&subaction=move&selected_id=$selectedtids";
|
||
|
||
$tpl->load_template($tpl_dir.'movetopic.tpl');
|
||
|
||
$tpl->set('{topic_title}', $topic_title);
|
||
$tpl->set('{forum}', $is_forum_name);
|
||
$tpl->set('{forum_list}', forum_list());
|
||
|
||
$tpl->copy_template = "<form method=\"post\" action=\"{$topic_action_add}\">".$tpl->copy_template."</form>";
|
||
|
||
$tpl->compile('dle_forum');
|
||
$tpl->clear();
|
||
}
|
||
|
||
if ($subaction == "move" and $selectedtids and $move_fid)
|
||
{
|
||
$tid = $selectedtids;
|
||
|
||
$selectedtids = explode(",",$selectedtids);
|
||
|
||
$new_post_count = 0;
|
||
|
||
$postcount = intval ($forums_array[$move_fid]['postcount']);
|
||
|
||
foreach ($selectedtids as $topic_id)
|
||
{
|
||
$topic_id = intval($topic_id);
|
||
if ( $topic_id == 0 ) continue;
|
||
$db->query("UPDATE " . PREFIX . "_forum_topics SET forum_id = '$move_fid' WHERE tid = '$topic_id'");
|
||
$tid_count++;
|
||
|
||
$post = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_forum_posts WHERE topic_id = '$topic_id'");
|
||
|
||
$post_count = $post_count + $post['count'];
|
||
|
||
$db->query("UPDATE " . PREFIX . "_forum_posts SET is_count = '$postcount' WHERE topic_id = '$topic_id'");
|
||
}
|
||
|
||
$post_count = $post_count - $tid_count;
|
||
|
||
if ($forum_config['topic_sort']) $sort_type = "last_date";
|
||
else $sort_type = "tid";
|
||
|
||
$row1 = $db->super_query("SELECT * FROM ". PREFIX ."_forum_topics WHERE forum_id = '{$is_mod['forum_id']}' ORDER by $sort_type DESC");
|
||
|
||
$row2 = $db->super_query("SELECT * FROM ". PREFIX ."_forum_topics WHERE forum_id = '$move_fid' ORDER by $sort_type DESC");
|
||
|
||
$db->query("UPDATE " . PREFIX . "_forum_forums SET posts = posts-$post_count, topics = topics-$tid_count, f_last_tid = '$row1[tid]', f_last_title = '$row1[title]', f_last_date ='$row1[last_date]', f_last_poster_name = '$row1[last_poster_name]' WHERE id = '{$is_mod['forum_id']}'");
|
||
|
||
$db->query("UPDATE " . PREFIX . "_forum_forums SET posts = posts+$post_count, topics = topics+$tid_count, f_last_tid = '$row2[tid]', f_last_title = '$row2[title]', f_last_date ='$row2[last_date]', f_last_poster_name = '$row2[last_poster_name]' WHERE id = '$move_fid'");
|
||
|
||
if ($forum_config['mod_rewrite'])
|
||
{
|
||
$topic_location = "{$forum_url}/topic_$tid";
|
||
|
||
$forum_location = "{$forum_url}/forum_$move_fid";
|
||
}
|
||
else
|
||
{
|
||
$topic_location = "{$forum_url}showtopic=$tid";
|
||
|
||
$forum_location = "{$forum_url}showforum=$move_fid";
|
||
}
|
||
|
||
if ($tid_count > 1)
|
||
{
|
||
header("Location: $forum_location");
|
||
}
|
||
else
|
||
{
|
||
header("Location: $topic_location");
|
||
}
|
||
}
|
||
|
||
$bbr_app = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
|
||
}
|
||
|
||
break;
|
||
|
||
// ********************************************************************************
|
||
// HIDDEN TOPIC
|
||
// ********************************************************************************
|
||
case "06":
|
||
|
||
if ($selectedtids and is_moderation(0, $selectedtids, 0))
|
||
{
|
||
$selectedtids = explode(",",$selectedtids);
|
||
|
||
foreach($selectedtids as $topic_id)
|
||
{
|
||
$topic_id = intval($topic_id);
|
||
if ( $topic_id == 0 ) continue;
|
||
$db->query("UPDATE " . PREFIX . "_forum_topics SET hidden = '1' WHERE tid = '$topic_id'");
|
||
|
||
$db->query("UPDATE " . PREFIX . "_forum_posts SET hidden = '6' WHERE topic_id = '$topic_id' and hidden NOT IN (1,2)");
|
||
}
|
||
|
||
header("Location: {$_SERVER['HTTP_REFERER']}");
|
||
}
|
||
|
||
break;
|
||
|
||
// ********************************************************************************
|
||
// NOT HIDDEN TOPIC
|
||
// ********************************************************************************
|
||
case "07":
|
||
|
||
if ($selectedtids and is_moderation(0, $selectedtids, 0))
|
||
{
|
||
$selectedtids = explode(",",$selectedtids);
|
||
|
||
foreach($selectedtids as $topic_id)
|
||
{
|
||
$topic_id = intval($topic_id);
|
||
if ( $topic_id == 0 ) continue;
|
||
$db->query("UPDATE " . PREFIX . "_forum_topics SET hidden = '0' WHERE tid = '$topic_id'");
|
||
|
||
$db->query("UPDATE " . PREFIX . "_forum_posts SET hidden = '0' WHERE topic_id = '$topic_id' and hidden NOT IN (1,2)");
|
||
}
|
||
|
||
header("Location: {$_SERVER['HTTP_REFERER']}");
|
||
}
|
||
|
||
break;
|
||
|
||
// ********************************************************************************
|
||
// FIXED TOPIC
|
||
// ********************************************************************************
|
||
case "08":
|
||
|
||
if ($selectedtids and is_moderation(0, $selectedtids, 0))
|
||
{
|
||
if (!moderator_value('pin_topic', $forum_id, $m_member)) die();
|
||
|
||
$selectedtids = explode(",",$selectedtids);
|
||
|
||
foreach($selectedtids as $topic_id)
|
||
{
|
||
$topic_id = intval($topic_id);
|
||
if ( $topic_id == 0 ) continue;
|
||
$db->query("UPDATE " . PREFIX . "_forum_topics SET fixed = '0' WHERE tid = '$topic_id'");
|
||
}
|
||
|
||
header("Location: {$_SERVER['HTTP_REFERER']}");
|
||
}
|
||
|
||
break;
|
||
|
||
// ********************************************************************************
|
||
// NOT FIXED TOPIC
|
||
// ********************************************************************************
|
||
case "09":
|
||
|
||
if ($selectedtids and is_moderation(0, $selectedtids, 0))
|
||
{
|
||
if (!moderator_value('unpin_topic', $forum_id, $m_member)) die();
|
||
|
||
$selectedtids = explode(",",$selectedtids);
|
||
|
||
foreach($selectedtids as $topic_id)
|
||
{
|
||
$topic_id = intval($topic_id);
|
||
if ( $topic_id == 0 ) continue;
|
||
$db->query("UPDATE " . PREFIX . "_forum_topics SET fixed = '1' WHERE tid = '$topic_id'");
|
||
}
|
||
|
||
header("Location: {$_SERVER['HTTP_REFERER']}");
|
||
}
|
||
|
||
break;
|
||
|
||
// ********************************************************************************
|
||
// CALC
|
||
// ********************************************************************************
|
||
case "10":
|
||
|
||
$topic_id = intval($_REQUEST['tid']);
|
||
|
||
if ($topic_id and is_moderation(0, $topic_id, 0))
|
||
{
|
||
calk_topic_del ($topic_id);
|
||
|
||
header("Location: {$_SERVER['HTTP_REFERER']}");
|
||
}
|
||
|
||
break;
|
||
|
||
// ********************************************************************************
|
||
// Default
|
||
// ********************************************************************************
|
||
default:
|
||
|
||
header("Location: {$_SERVER['HTTP_REFERER']}");
|
||
|
||
break;
|
||
}
|
||
|
||
?>
|