<?php
$title = 'Переписка';
include_once($_SERVER["DOCUMENT_ROOT"]."/inc/head.php");
if (isset($active) == true) {
$in_mail = $connect->prepare("insert into `mail` set `time` = ?, `user` = ?, `who` = ?, `text` = ?, `file` = ?");
if (user($id) && !in_blacklist($user['id'], $id) && !in_blacklist($id, $user['id'])) {
$user_mail = ulogin($id);
$m_row = user($id);
if ($user['login'] == $m_row['login']) {
header('location: /mail');
} else {
$stmt_new_count = $connect->prepare("select count(*) from `mail` where `who` = ? and `user` = ? and `read` = '0'");
$stmt_new_count->execute(array($user['login'], $m_row['login']));
$mail_new_count = $stmt_new_count->fetchColumn();
if ($mail_new_count > 0) {
$stmt = $connect->prepare("update `mail` set `read` = '1' where `who` = ? and `user` = ?");
$stmt->execute(array($user['login'], $m_row['login']));
header('location: /mail/read/'.$id);
}
echo '<div class="title">Переписка с '.$m_row['login'].'</div>';
if (!online($id)) {
echo '<div class="menu">Последний визит: '.daytime($m_row['lasttime']).'</div>';
}
if (p_mail_user($m_row['login'], $user['login'])) {
include_once($_SERVER["DOCUMENT_ROOT"]."/inc/smiles_bb.php");
$strow = $connect->prepare("select * from `mail` where `id` = ?");
$stmt_num = $connect->prepare("select count(*) from `mail` where `who` = ? and `user` = ? and `id` = ?");
if (isset($_GET['edit'])) {
$stmt_num_edit = $connect->prepare("select count(*) from `mail` where `read` = '0' and `time` > ? and `user` = ? and `who` = ? and `id` = ?");
$stmt_num_edit->execute(array(time() - 300, $user['login'], $m_row['login'], $_GET['edit']));
$num = $stmt_num_edit->fetchColumn();
if ($num > 0) {
$strow->execute(array($_GET['edit']));
$row = $strow->fetch(PDO::FETCH_LAZY);
if (isset($_POST['yes'])) {
$error = '';
if (empty($_POST['text'])) {
$error.= 'Введите сообщение!<br/>';
}
elseif (mb_strlen($_POST['text']) < 2) {
$error.= 'Текст должен содержать не менее 2 символов!<br/>';
}
elseif (mb_strlen($_POST['text']) > 2500) {
$error.= 'Текст должен содержать не более 2500 символов!<br/>';
}
if (!empty($error)) {
echo '<div class="menu">'.$error.'</div>';
} else {
$stmt = $connect->prepare("update `mail` set `text` = ? where `id` = ? limit 1");
if ($stmt->execute(array($_POST['text'], $_GET['edit']))) {
header('location: /mail/read/'.$id);
} else {
echo '<div class="menu">Произошла ошибка!</div>';
}
}
}
elseif (isset($_POST['no'])) {
header('location: /mail/read/'.$id);
}
echo '<div class="menu">
<form action="" method="post">
Сообщение:<br/><textarea name="text" rows="3" cols="20">'.$row['text'].'</textarea><br/>
<input type="submit" name="yes" value="Сохранить ('.val($_GET['edit'], 1).')"/>
<input type="submit" name="no" value="Отмена"/>
</form></div>';
} else {
header('location: /mail/read/'.$id);
}
} elseif (isset($_GET['cit'])) {
$stmt_num->execute(array($user['login'], $m_row['login'], $_GET['cit']));
$num = $stmt_num->fetchColumn();
if ($num > 0) {
$strow->execute(array($_GET['cit']));
$row = $strow->fetch(PDO::FETCH_LAZY);
if ($row['user'] != $user['login']) {
if (isset($_POST['yes'])) {
$error = '';
if (empty($_POST['text'])) {
$error.= 'Введите сообщение!<br/>';
}
elseif (mb_strlen($_POST['text']) < 2) {
$error.= 'Текст должен содержать не менее 2 символов!<br/>';
}
elseif (mb_strlen($_POST['text']) > 2500) {
$error.= 'Текст должен содержать не более 2500 символов!<br/>';
}
elseif (isset($_SESSION['guest_add']) && $_SESSION['guest_add'] > time() - $antiflud) {
$error.= 'Антиспам! Лимит - '.$antiflud.' секунд!<br/>';
}
if (file_exists($_FILES['filename']['tmp_name'])) {
$token = random_int(11111, 99999);
$files = $token."_".$_FILES['filename']['name'];
if (!is_safeFile(['jpg', 'jpeg', 'png', 'gif', 'zip', 'rar', '7z'], $_FILES['filename']['name'])) {
$error.= 'Неверный тип файла!<br/>';
}
if ($_FILES['filename']['size'] > 1048576 * 5) {
$error.= 'Максимальный размер файла - 5 Mb!<br/>';
}
}
if (!empty($error)) {
echo '<div class="menu">'.$error.'</div>';
} else {
if ($in_mail->execute(array(time(), $user['login'], $m_row['login'], $_POST['text'], $files ?? false))) {
// Добавляем в контакты
contact_add($user['login'], $user_mail);
if (file_exists($_FILES['filename']['tmp_name'])) {
move_uploaded_file($_FILES['filename']['tmp_name'], $_SERVER["DOCUMENT_ROOT"]."/files/".$files);
}
$_SESSION['guest_add'] = time();
header('location: /mail/read/'.$id);
} else {
echo '<div class="menu">Произошла ошибка!</div>';
}
}
}
elseif (isset($_POST['no'])) {
header('location: /mail/read/'.$id);
}
$cit = "[u]".$row['user']."[/u] (".daytime($row['time']).")[br]".$row['text'];
$tag = array('[cit]', '[/cit]');
$str = str_replace($tag, null, $cit);
echo '<div class="menu">
<form action="" method="post" enctype="multipart/form-data">
Сообщение:<br/><textarea name="text" rows="5" cols="30">[cit]'.$str.'[/cit][br]</textarea><br/>
Прикрепить файл:<br/><input type="file" name="filename"><br />
<input type="submit" name="yes" value="Цитировать ('.val($_GET['cit'], 1).')"/>
<input type="submit" name="no" value="Отмена"/>
</form></div>';
} else {
header('location: /mail/read/'.$id);
}
} else {
header('location: /mail/read/'.$id);
}
} else {
if (isset($_POST['refresh'])) {
header('location: /mail/read/'.$id);
}
elseif (isset($_POST['text'])) {
$error = '';
if (empty($_POST['text'])) {
$error.= 'Введите сообщение!<br/>';
}
elseif (mb_strlen($_POST['text']) < 2) {
$error.= 'Текст должен содержать не менее 2 символов!<br/>';
}
elseif (mb_strlen($_POST['text']) > 2500) {
$error.= 'Текст должен содержать не более 2500 символов!<br/>';
}
elseif (isset($_SESSION['guest_add']) && $_SESSION['guest_add'] > time() - $antiflud) {
$error.= 'Антиспам! Лимит - '.$antiflud.' секунд!<br/>';
}
if (file_exists($_FILES['filename']['tmp_name'])) {
$token = random_int(11111, 99999);
$files = $token."_".$_FILES['filename']['name'];
if (!is_safeFile(['jpg', 'jpeg', 'png', 'gif', 'zip', 'rar', '7z'], $_FILES['filename']['name'])) {
$error.= 'Неверный тип файла!<br/>';
}
if ($_FILES['filename']['size'] > 1048576 * 5) {
$error.= 'Максимальный размер файла - 5 Mb!<br/>';
}
}
if (!empty($error)) {
echo '<div class="menu">'.$error.'</div>';
} else {
if ($in_mail->execute(array(time(), $user['login'], $m_row['login'], $_POST['text'], $files ?? false))) {
// Добавляем в контакты
contact_add($user['login'], $m_row['login']);
$_SESSION['guest_add'] = time();
if (file_exists($_FILES['filename']['tmp_name'])) {
move_uploaded_file($_FILES['filename']['tmp_name'], $_SERVER["DOCUMENT_ROOT"]."/files/".$files);
}
header('location: /mail/read/'.$id);
} else {
echo '<div class="menu">Ошибка при добавлении сообщения!</div>';
}
}
}
echo '<div class="menu">
<form name="form" action="" method="post" enctype="multipart/form-data">
Сообщение:<br/><textarea name="text" rows="3" cols="20"></textarea><br/>
Прикрепить файл:<br/><input type="file" name="filename"><br />
<input type="submit" value="Написать"/>
<input type="submit" name="refresh" value="Обновить">
</form></div>';
}
} else {
echo '<div class="menu">Данному пользователю могут отправлять сообщения только друзья!</div>';
}
$stmt_count = $connect->prepare("select count(*) from `mail` where (`who` = :who and `user` = :user) or (`who` = :user and `user` = :who)");
$stmt_count->bindValue(':who', $user['login']);
$stmt_count->bindValue(':user', $m_row['login']);
$stmt_count->execute();
$count = $stmt_count->fetchColumn();
$k_post = $count;
$k_page = k_page($k_post, 10);
$page = page($k_page);
$start = 10 * $page - 10;
$data = $connect->prepare("select * from `mail` where `who` = :who and `user` = :user or `who` = :user and `user` = :who order by `id` desc limit :start, 10");
$data->bindValue(':who', $user['login']);
$data->bindValue(':user', $m_row['login']);
$data->bindValue(':start', $start, PDO::PARAM_INT);
$data->execute();
$sql = $data->fetchAll();
if ($count == 0) {
echo '<div class="menu">Сообщений нет!</div>';
} else {
foreach ($sql as $row) {
echo '<div class="menu"><img src="/img/us.png"> <a href="/user/'.uid($row['user'], 1).'" class="mlink">'.$row['user'].'</a> ('.daytime($row['time']).') '.($row['read'] == 0 ? '<small>Не прочитано</small> ' : '') . ($row['time'] > time() - 300 && $row['read'] == 0 && $row['user'] == $user['login'] ? '(<a href="?edit='.$row['id'].'">Редактировать</a>)' : '') . ($row['user'] != $user['login'] ? '(<a href="?cit='.$row['id'].'">Цит.</a>)' : '').'<span class="online">'.online($row['user'], 1).'</span><hr />'.nl2br(smiles(bb(bblinks($row['text'])))) . (file_exists($_SERVER["DOCUMENT_ROOT"]."/files/".$row['file']) && $row['file'] ? '<hr/>Файл: <a href="/files/'.$row['file'].'">'.$row['file'].'</a> ('.get_filesize($_SERVER["DOCUMENT_ROOT"]."/files/".$row['file']).')' : '').'</div>';
}
if ($k_page > 1) navigation($k_page, $page);
}
if ($version == 'mobile') echo '<div class="forlink"><a href="/mail" class="links"><img src="/img/mail.png" alt=""> Сообщения</a></div>';
}
} else {
header('location: /mail');
}
} else {
header('Location: /');
}
include_once($_SERVER["DOCUMENT_ROOT"]."/inc/foot.php");
?>