<?php
define('NTLCMS', 1);
$module = 'dialog';
include ('../system/start.php');
include ('../system/function.php');
include ('../system/antidos.php');
$page_title = 'Страница диалога - клик клуба ' . strtoupper($_SERVER['HTTP_HOST']);
include ('../system/head.php');
include ('../system/crypt.class.php');
if (!$active){
header('Location: '.URL);
$_SESSION['fail'] = 'Вы не авторизированы!';
exit;
}
if ($set['mails'] == '1' && $_USER['admin'] != '1'){
echo '<div class="title"><center>Личная почта</center></div>';
echo '<div class="post"><center><i class="fa fa-close fa-fw"></i> Модуль закрыт администратором!</center></div>';
echo '<div class="block"><i class="fa fa-home fa-fw"></i> <a href="'.URL.'/cabinet">В кабинет</a></div>';
include ('../system/foot.php'); 
exit;
}
$getlogin = isset($_GET['login']) ? filter_var($_GET['login'], FILTER_SANITIZE_STRING) : false;
$mess = DB :: run() -> query("select * from `users` where `login` = ?", array($getlogin)) -> fetch(PDO::FETCH_OBJ);
if (isset($mess -> login) and $ulogin == $getlogin){
header('Location: '.URL.'/messages');
$_SESSION['fail'] = 'Произошла ошибка!'; 
exit;
}
if (is_blacklisted($ulogin, $mess->login)) {
header('Location: '.URL.'/messages');
$_SESSION['fail'] = 'Вы добавили этого пользователя в черный список!';
exit;
}
if (is_blacklisted($mess->login, $ulogin)) {
header('Location: '.URL.'/messages');
$_SESSION['fail'] = 'Этот пользователь добавил вас в черный список!';
exit;
}
echo '<div class="title"><b>'.razd.' Сообщения | Диалог с '.checkout($mess -> login).'</b></div>';
if (DB :: run() -> querySingle("select count(`id`) from `contacts` where `kogo` = ? and `kto` = ? limit 1", array($mess -> login, $ulogin)) == 0){
DB :: run() -> query("insert into `contacts` (`kto`, `kogo`, `time`, `posl_time`) values (?, ?, ?, ?)", array($ilogin, $mess -> login, TIME, TIME));
DB :: run() -> query("insert into `contacts` (`kto`, `kogo`, `time`, `posl_time`) values (?, ?, ?, ?)", array($mess -> login, $ilogin, TIME, TIME));
}
if (isset($_REQUEST['ok'])){
$text = isset($_POST['text']) ? trim($_POST['text']) : '';
$text = preg_replace('/[\x00-\x1F\x7F]/u', '', $text);
$text = preg_replace('/[\p{Mn}\p{Me}]+/u', '', $text);
$text = preg_replace('/[\x{200B}-\x{200F}\x{202A}-\x{202E}\x{FEFF}]/u', '', $text);
$text = preg_replace('/\s{2,}/u', ' ', $text);
$text = trim($text);
if (is_blacklisted($ulogin, $mess->login)) {
$error.= 'Вы добавили этого пользователя в черный список!<br/>';
}
if (is_blacklisted($mess->login, $ulogin)) {
$error.= 'Этот пользователь добавил вас в черный список!<br/>';
}
if (empty($text)){
$error.= 'Введите текст сообщения!<br/>';
} elseif (mb_strlen($text, 'UTF-8') > 2500){
$error.= 'Сообщение должно содержать до 2500 символов!<br/>';
} elseif (DB :: run() -> querySingle("select (`time`) from `message` where `kto` = ? and `time` > ?", array($ulogin, TIME - $set['antispam']))){
$error.= 'Антиспам! Лимит '.ints($set['antispam']).' секунд!<br/>';
}
if (is_uploaded_file($_FILES['file']['tmp_name'])){
$checktype = explode('.', $_FILES['file']['name']);
$filetype = array('png', 'jpg', 'jpeg', 'bmp', 'wbmp', 'tif', 'tiff', 'gif',
'ico', '3gp', 'mp4', 'divx', 'dlx', 'mpeg', 'mpeg4', 'avi', 'pdf', 'txt', 'sql', 'text',
'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'ppf', 'mdb', 'accdb', 'exe', 'jar', 'jad',
'zip', 'rar', '7z', 'tar', 'mp3', 'wav', 'wave', 'midi', 'mid', 'mp2', 'flac', 'djv',
'djvu', 'iso', 'mdf', 'mds', 'pas', 'thm', 'nth', 'sis');
$upfiletype = substr($_FILES['file']['name'], strrpos($_FILES['file']['name'], ".") + 1);
$file = checkin($_SERVER['HTTP_HOST'].'_'.rand(0,999999).'_'.$_FILES['file']['name']);
if (!@file_exists($_FILES['file']['tmp_name'])){
$error.= 'Выберите файл!<br/>';
}
}
if ($error){
echo '<div class="post"><center><i class="fa fa-close fa-fw"></i> '.$error.'</center></div>';
} else {
$encrypted_text = $crypt->xoft_encode($text, $set['secure']);
DB :: run() -> query("update `contacts` set `posl_time` = ? where `kogo` = ? and `kto` = ? limit 1", array(TIME, $ilogin, $mess -> login));
DB :: run() -> query("update `contacts` set `posl_time` = ? where `kto` = ? and `kogo` = ? limit 1", array(TIME, $ilogin, $mess -> login));
DB :: run() -> query("insert into `message` (`text`, `kto`, `komy`, `time`, `readlen`) values (?, ?, ?, ?, ?)", array($encrypted_text, $ilogin, $mess -> login, TIME, 0));
$insert = DB :: run() -> lastInsertId();
if (move_uploaded_file($_FILES['file']['tmp_name'], FOLDER.'/mail/files/'.$file)){
DB :: run() -> query("update `message` set `filename` = ? where `id` = ? limit 1", array($file, $insert));
}
$_SESSION['success'] = 'Сообщение добавлено!';
header('Location: '.URL.'/dialog-'.$mess -> login);
exit;
}
}
echo '<div class="menu"><form name="form" action="'.URL.'/dialog-'.checkout($mess -> login).'" method="post" enctype="multipart/form-data">';
echo fast_smile() . panel('text').'<textarea name="text" rows="3" cols="20">'.(isset($_POST['text']) ? htmlspecialchars($_POST['text']) : '').'</textarea><br/>
<input name="file" type="file"/><br/><input type="submit" name="ok" value="Написать"/>
<a href="'.URL.'/dialog-'.checkout($mess -> login).'">
<input type="button" class="form" value="Обновить"/></a></form></div>';
$k_post = DB :: run() -> querySingle("select count(`id`) from `message` where `kto` = ? and `komy` = ? or `kto` = ? and `komy` = ?", array($ulogin, $mess -> login, $mess -> login, $ulogin));
$k_page = k_page($k_post, $onpage); 
$page = page($k_page); 
$start = $onpage * $page - $onpage;
$sql = DB :: run() -> query("select * from `message` where `kto` = ? and `komy` = ? or `kto` = ? and `komy` = ? order by `time` desc limit ".$start.", ".$onpage, array($ulogin, $mess -> login, $mess -> login, $ulogin));
while ($row = $sql -> fetch(PDO::FETCH_OBJ)){
echo '<div class="menu">';
echo ava($row -> kto).' '.login($row -> kto, 1).' '.online($row -> kto).' ['.lasttime($row -> time).']';
if ($row -> readlen == '0'){
echo ' [<font color="red">Не прочитано</font>]';
} else {
echo ' [<font color="green">Прочитано</font>]';
}
echo '<br/><i class="fa fa-file-text-o fa-fw"></i> '.outtext($crypt->xoft_decode($row -> text, $set['secure']), 1 ,1 ,1).'<br/>';
if (!empty($row -> filename)){ 
$filesize = filesize(FOLDER.'/mail/files/'.$row -> filename);
echo '<i class="fa fa-cloud-download fa-fw"></i> <b>- Файл: </b> <a href="'.URL.'/down-'.checkout($row -> filename).'">'.checkout($row -> filename).'</a> ['.formatsize($filesize).']';
}
echo '</div>';
if ($ulogin == $row -> komy){
DB :: run() -> query("update `message` set `readlen` = ? where `id` = ? limit 1", array(1, $row -> id));
}
}
if ($k_post < 1) echo '<div class="post"><center><i class="fa fa-close fa-fw"></i> Переписка с '.checkout($mess -> login).' еще не состоялась!</center></div>';
if ($k_page > 1) navigation(URL.'/dialog-'.checkout($mess -> login).'?', $k_page, $page);
echo '<div class="block"><i class="fa fa-home fa-fw"></i> <a href="'.URL.'/cabinet">В кабинет</a> | <a href="'.URL.'/messages">Личная почта</a></div>';
include ('../system/foot.php');
?>