Файл: localhost/modules/gifts/gift.php
Строк: 101
<?php
/**
* @package Zcore
* @author Artem Sokolovsky
* @url http://vk.com/x_s_s
*/
// Инклудим ядро
include_once ($_SERVER['DOCUMENT_ROOT']."/lite/core.php");
// Только для зарегистрированых
$profile->access(true);
// Подключаем ядро отправки email
$email = new email();
// Выводим шапку
$title = 'Подарок';
// Инклудим шапку
include_once (ROOT.'template/head.php');
// Ищим подарок в базе
$queryguest = DB :: $dbh -> query("SELECT * FROM `gifts` WHERE `id`=? LIMIT 1;", array($id));
$act = $queryguest -> fetch();
// Только если данный подарок существует
if (!empty($act)) {
// Обработка полученого id получателя
$id_user = (empty($_GET['add'])) ? 0 : abs(intval($_GET['add']));
// Ищем пользователя в базе
$data = DB :: $dbh -> queryFetch("SELECT `id`, `login`, `activation`, `email`, `date_aut`, `notice` FROM `user` WHERE `id`=? LIMIT 1;", array($id_user));
// Только если данный пользователь существует
if (!empty($data)) {
// Антифлуд
$antiflood = DB :: $dbh -> querySingle("SELECT count(*) FROM `gifts_user` WHERE `time`>? AND `user`=?;", array(time()-$config['antiflood_creation'], $user['id']));
// Только если был отправлен подарок в течении $config['antiflood_creation'] секунд
if (empty($antiflood)) {
// Запрещаем добавлять самого себя
if ($data['id'] != $user['id']) {
// Только если отправлен POST запрос
if (isset($_POST['save'])) {
// Проверяем sid
if (isset($_POST['sid']) && $system->check($_POST['sid']) == $user['sid']) {
// Проверяем монеты пользователя
if ($user['money'] >= $act['money']) {
// Обработка сообщения
$message = $system->check($_POST['message']);
// Обработка прав доступа
$access = abs(intval($_POST['access']));
// Обработка количества символов сообщения
if ($system->utf_strlen($message) >= 3 && $system->utf_strlen($message) < 10000) {
// Проверка доступа
if ($access == 0 || $access == 1 || $access == 2) {
// Делаем запрос в базу
DB :: $dbh -> query("INSERT INTO `gifts_user` (`gift`, `message`, `access`, `user`, `profile`, `time`, `ip`, `ua`) VALUES (?, ?, ?, ?, ?, ?, ?, ?);", array($act['id'], $message, $access, $user['id'], $data['id'], time(), $system->ip(), $system->ua()));
// Выводим id подарка
$id_gift = DB :: $dbh -> lastInsertId();
// Обновляем данные
DB :: $dbh -> query("UPDATE `gifts` SET `send`=`send`+1 WHERE `id`=?", array($act['id']));
// Генерируем случайный подарок отправителю
$rand = rand(1,10);
$rand_money = rand(1,5);
if ($rand == 5) {
// Добавляем бонус
DB :: $dbh -> query("UPDATE `user` SET `money`=`money`+'".$rand_money."' WHERE `id`=? LIMIT 1;", array($user['id']));
// Запись в логи
$message_logs = 'Подарок от администрации сайта';
DB :: $dbh -> query("INSERT INTO `user_logs` (`section`, `user`, `message`, `price`, `money`, `ip`, `ua`, `time`) VALUES (?, ?, ?, ?, ?, ?, ?, ?);", array(1, $user['id'], $message_logs, $rand_money, $user['money'] + $rand_money - $act['money'], $system->ip(), $system->ua(), time()));
// Уведомляем
$system->journal("0", "Подарок от администрации сайта ".$rand_money." монет", "/modules/services/logs", "".$user['id']."", "0");
}
// Снимаем монеты
DB :: $dbh -> query("UPDATE `user` SET `money`=`money`-'".$act['money']."' WHERE `id`=? LIMIT 1;", array($user['id']));
// Запись в логи
$message_logs_user = 'Подарок для <span style="font-weight: bold;">'.$data['login'].'</span>';
DB :: $dbh -> query("INSERT INTO `user_logs` (`section`, `user`, `message`, `price`, `money`, `ip`, `ua`, `time`) VALUES (?, ?, ?, ?, ?, ?, ?, ?);", array(0, $user['id'], $message_logs_user, $act['money'], $user['money'] - $act['money'], $system->ip(), $system->ua(), time()));
// Уведомление на email
if ($data['activation'] == 2 && $data['notice'] == 1 && $data['date_aut'] < time()-300) {
$email->send($data['email'], 'Новое уведомление на '.DOMAIN.'', '
Здравствуйте, <span style="font-weight: bold;">'.$data['login'].'</span>, у Вас новый подарок <br />
<a href="http://'.DOMAIN.'/modules/gifts/user/'.$data['id'].'">
<img src="http://'.SERVER_DOMAIN.'/gifts/128/'.$act['id'].'.png"/>
<br />
'.substr($message, 0, 100).'</a> <br />');
}
// Уведомление в журнал
DB :: $dbh -> query("INSERT INTO `journal` (`user`, `message`, `url`, `profile`, `read`, `time`, `section`) VALUES (?, ?, ?, ?, ?, ?, ?);", array(0, "У Вас новый подарок", "/modules/gifts/user/gift/".$id_gift."", $data['id'], 1, time(), 0));
// Уведомляем
$system->redirect("Подарок успешно отправлен", "/modules/gifts/user/".$data['id']."");
// Выводим ошибки
} else { $system->show("Пожалуйста, выберите один из вариантов типа подарка"); }
} else { $system->show("Слишком длинное или короткое сообщение"); }
} else { $system->show("У вас не хватает монет"); }
} else { $system->show("Замечена подозрительная активность, повторите действие"); }
} else if (isset($_POST['back'])) {
header ("Location: /modules/gifts/dir/$act[dir]/$add");
}
// Выводим форму
echo '
<div class="block">
Подарок для '.$profile->user($data['id']).'
</div>
<div class="block">
<img src="http://'.SERVER_DOMAIN.'/gifts/128/'.$act['id'].'.png"/> <br />
Стоимость: '.$act['money'].' монет <br />
</div>
'.($user['money'] < $act['money'] ? '
<div class="hide">
К сожалению, у вас не хватает монет.
</div>
' : '').'
<div class="block">
<form method="post">
Тип подарка: <br />
<input type="radio" name="access" value="0" checked/> Публичный <br />
<span style="font-size: 11px;"> Все будут видеть Ваш подарок, сообщение и Логин. </span> <br />
<input type="radio" name="access" value="1" /> Личный <br />
<span style="font-size: 11px;"> Все будут видеть Ваш подарок, но только получатель сможет видеть ваш Логин и сообщение. </span> <br />
<input type="radio" name="access" value="2" /> Анонимный <br />
<span style="font-size: 11px;"> Все будут видеть Ваш подарок. Только получатель увидит ваше сообщение. Никто не увидит ваш Логин. </span> <br />
</div>
<div class="block">
Сообщение: (10000 символов) <br />
<textarea cols="25" rows="3" name="message" class="textarea" /></textarea> <br />
</div>
<div class="block">
<input type="hidden" name="sid" value="'.$user['sid'].'" />
<input type="submit" name="save" value="Отправить" />
<input type="submit" name="back" value="Отмена" />
</form>
</div>';
// Выводим ошибки
} else { $system->show("Отказано в доступе"); }
} else { $system->show("Не так быстро, подождите немного"); }
} else { $system->show("Выбранный вами пользователь не существует"); }
} else { $system->show("Выбранный вами подарок не существует"); }
// Инклудим ноги
include_once (ROOT.'template/foot.php');
?>