<?php

# определение данных
$post = array(); // массив пост - данных
$form = false; // имя формы
$go = false; // переадресация

# проверка блокировки
$block = (SETUP['mail'] == 'no') ? true : false;

# проверка отправки формы
if ($_SERVER['REQUEST_METHOD'] == 'POST' && SETUP['mail'] == 'yes') { $post['access'] = 'stopped';
$nick = (isset($_POST['nick'])) ? $FUNC->filter($_POST['nick'], 'sql') : false; // фильтрация ника

# проверка полей, никнейм и разрешение на отправку
$post['nick'] = ($nick && db_exist($DB, 'users', 'id', array('nick' => $nick))) ? $_POST['nick'] : 'stopped'; if ($post['nick'] != 'stopped') { 
$buddy = db_output($DB, 'users', 'id', array('nick' => $nick)); $setup = db_output($DB,'settings', array('contact','mail'), array('id' => $buddy['id'])); // данные собеседника
$ignore = (!db_exist($DB, 'contacts', 'id', array('type' => 'ignore', 'user' => $buddy['id'], 'whom' => USER['id']))) ? true : false; // черный список
if ($setup['contact'] == 'mate') $friend = (db_exist($DB, 'contacts', 'id', array('type' => 'friend', 'user' => $buddy['id'], 'whom' => USER['id']))) // друзья
? true : false; else $friend = true; $post['access'] = (SETUP['mail'] == 'yes' && $setup['mail'] == 'yes' && $ignore && $friend) ? 'true' : 'stopped'; } // возможность отправки

# проверка полей
$post['text'] = (!empty($_POST['text']) && $GAME->message($_POST['text'], 500)) ? $_POST['text'] : 'stopped'; // текст
$post['token'] = (isset($_POST['token']) && $_POST['token'] == TOKEN) ? 'true' : 'stopped'; // токен

# ограничение, вывод ошибки
if ($post['access'] == 'stopped') { $block = true; if (SETUP['mail'] == 'no') $ban = 'Вам закрыт доступ к почте.'; elseif ($setup['mail'] == 'no') 
$ban = 'Собеседнику заблокирована почта.'; elseif (!$friend) $ban = 'Игроку могут писать только друзья.'; else $ban = 'Игрок добавил Вас в черный список.'; } // уведомление

# определение наличия ошибок
if (in_array('stopped', $post)) { $mail = true; // показ формы почты

# проверка текста, определение стилей
$class = ($post['text'] == 'stopped') ? 'no': 'ok';

# проверка введенного текста, вывод данных
$value = (isset($_POST['text']) && !empty($_POST['text'])) ? $_POST['text'] : false;

# отсутствие ошибок, определение диалогов
} else { if (db_exist($DB, 'dialogs', 'id', array('author' => USER['id'], 'reply' => $buddy['id']))) { $out = db_output($DB, 
'dialogs', 'id', array('author' => USER['id'], 'reply' => $buddy['id'])); $author = $out['id']; } else { $update = true;
$author = db_create($DB, 'dialogs', array('author' => USER['id'], 'reply' => $buddy['id']), true); } // мой диалог
if (db_exist($DB, 'dialogs', 'id', array('author' => $buddy['id'], 'reply' => USER['id']))) {
$out = db_output($DB, 'dialogs', 'id', array('author' => $buddy['id'], 'reply' => USER['id'])); $reply = $out['id'];
} else $reply = db_create($DB, 'dialogs', array('author' => $buddy['id'], 'reply' => USER['id']), true); // собеседник

# определение обновления, фильтрация текста
if (isset($update)) $go = '/mail/dialog/'. $USER->nick($nick); $text = $FUNC->filter($post['text'], 'sql');

# обновление диалогов
db_update($DB, 'dialogs', array('open' => 'yes', 'time' => time(), 'user' => USER['id']), array('id' => $author)); // мой диалог
db_update($DB, 'dialogs', array('open' => 'no', 'time' => time(), 'user' => USER['id']), array('id' => $reply)); // собеседник

# запись сообщений
db_create($DB, 'mail', array('dialog' => $author, 'text' => $text, 'time' => time(), 'user' => USER['id'])); // мой диалог
db_create($DB, 'mail', array('dialog' => $reply, 'text' => $text, 'time' => time(), 'user' => USER['id'])); } } // собеседник

?>