Часть третья
require('../incfiles/head.php');
echo functions::display_error('Нельзя отвечать на свое же сообщение', '<a href="index.php?id=' . $th1['id'] . '">' . $lng['back'] . '</a>');
require('../incfiles/end.php');
exit;
}
$shift = (core::$system_set['timeshift'] + core::$user_set['timeshift']) * 3600;
$vr = date("d.m.Y / H:i", $type1['time'] + $shift);
$msg = isset($_POST['msg']) ? trim($_POST['msg']) : '';
$txt = isset($_POST['txt']) ? intval($_POST['txt']) : false;
if (isset($_POST['msgtrans']))
$msg = functions::trans($msg);
$to = $type1['from'];
if (!empty($_POST['citata'])) {
// Если была цитата, форматируем ее и обрабатываем
$citata = isset($_POST['citata']) ? trim($_POST['citata']) : '';
$citata = bbcode::notags($citata);
$citata = preg_replace('#\[c\](.*?)\[/c\]#si', '', $citata);
$citata = mb_substr($citata, 0, 200);
$tp = date("d.m.Y/H:i", $type1['time']);
$msg = '' . $to . ' (' . $tp . ")\r\n" . $citata . '' . $msg;
} elseif (isset($_POST['txt'])) {
// Если был ответ, обрабатываем реплику
switch ($txt) {
case 2:
$repl = $type1['from'] . ', ' . $lng_forum['reply_1'] . ', ';
break;
case 3:
$repl = $type1['from'] . ', ' . $lng_forum['reply_2'] . ' ([url=' . $set['homeurl'] . '/forum/index.php?act=post&id=' . $type1['id'] . ']' . $vr . '[/url]) ' . $lng_forum['reply_3'] . ', ';
break;
case 4:
$repl = $type1['from'] . ', ' . $lng_forum['reply_4'] . ' ';
break;
default :
$repl = $type1['from'] . ', ';
}
$msg = $repl . ' ' . $msg;
}
//Обрабатываем ссылки
$msg = preg_replace_callback('~\\[url=(http://.+?)\\](.+?)\\[/url\\]|(http://(www.)?[0-9a-zA-Z\.-]+\.[0-9a-zA-Z]{2,6}[0-9a-zA-Z/\?\.\~&_=/%-:#]*)~', 'forum_link', $msg);
if (isset($_POST['submit'])) {
if (empty($_POST['msg'])) {
require('../incfiles/head.php');
echo functions::display_error($lng['error_empty_message'], '<a href="index.php?act=say&id=' . $th . (isset($_GET['cyt']) ? '&cyt' : '') . '">' . $lng['repeat'] . '</a>');
require('../incfiles/end.php');
exit;
}
// Проверяем на минимальную длину
if (mb_strlen($msg) < 4) {
require('../incfiles/head.php');
echo functions::display_error($lng['error_message_short'], '<a href="index.php?id=' . $id . '">' . $lng['back'] . '</a>');
require('../incfiles/end.php');
exit;
}
// Проверяем, не повторяется ли сообщение?
$req = mysql_query("SELECT * FROM `forum` WHERE `user_id` = '$user_id' AND `type` = 'm' ORDER BY `time` DESC LIMIT 1");
if (mysql_num_rows($req) > 0) {
$res = mysql_fetch_array($req);
if ($msg == $res['text']) {
require('../incfiles/head.php');
echo functions::display_error($lng['error_message_exists'], '<a href="index.php?id=' . $th . '&start=' . $start . '">' . $lng['back'] . '</a>');
require('../incfiles/end.php');
exit;
}
}
// Удаляем фильтр, если он был
if (isset($_SESSION['fsort_id']) && $_SESSION['fsort_id'] == $th) {
unset($_SESSION['fsort_id']);
unset($_SESSION['fsort_users']);
}
// Добавляем сообщение в базу
mysql_query("INSERT INTO `forum` SET
`refid` = '$th',
`type` = 'm',
`time` = '" . time() . "',
`user_id` = '$user_id',
`from` = '$login',
`id_user` = '" . $type1['user_id'] . "',
`ip` = '" . core::$ip . "',
`ip_via_proxy` = '" . core::$ip_via_proxy . "',
`soft` = '" . mysql_real_escape_string($agn1) . "',
`text` = '" . mysql_real_escape_string($msg) . "'
");
$fadd = mysql_insert_id();
//Проверяем, если юзер, которому мы отвечаем
$count_users = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `id` = '" . $type1['user_id'] . "'"), 0);
//Если юзер найден, ставим ему метку о новом ответе
if($count_users)
mysql_query("UPDATE `users` SET `journal_forum`=(`journal_forum`+1) WHERE `id` = '" . $type1['user_id'] . "'");
// Обновляем время топика
mysql_query("UPDATE `forum`
SET `time` = '" . time() . "'
WHERE `id` = '$th'
");
// Обновляем статистику юзера
mysql_query("UPDATE `users` SET
`postforum`='" . ($datauser['postforum'] + 1) . "',
`lastpost` = '" . time() . "'