<?php
# заголовок
define('TITLE', 'Подарки');
# определение данных
$params = PARAMS; $page = 1; $main = true; // получение параметров
$open = false; $give = false; $drudge = false; // данные по умолчанию
$refresh = $FUNC->random(8, true); // случайное число
####################
####################
# жалоба на подарок
if (isset($params['drudge']) && isset($params['token']) && $params['token'] == TOKEN) {
# идентификатор подарка
$id = $FUNC->filter($params['drudge'], 'int');
# проверка на возможность жалобы, обработка данных
if (db_exist($DB, 'gifts', 'id', array('id' => $id, 'whom' => USER['id']))) {
db_update($DB, 'gifts', array('view' => 'yes'), array('id' => $id)); } } // просмотр подарка
####################
# просмотрена жалоба
if (isset($params['viewed']) && isset($params['token']) &&
$params['token'] == TOKEN && USER['status'] == 'admin') {
# идентификатор подарка
$id = $FUNC->filter($params['viewed'], 'int');
# проверка жалобы, обработка данных
if (db_exist($DB, 'gifts', 'id', array('id' => $id, 'view' => 'yes'))) {
db_update($DB, 'gifts', array('view' => 'no'), array('id' => $id)); } }
####################
# просмотр подарка, жалоба
if (isset($params['viewer']) && isset($params['token']) &&
$params['token'] == TOKEN && USER['status'] == 'admin') {
# идентификатор подарка
$id = $FUNC->filter($params['viewer'], 'int');
# блокировка пользователя, фильтрация идентификатора
if (isset($params['block'])) { $lock = $FUNC->filter($params['block'], 'int');
if (db_exist($DB, 'users', 'id', array('id' => $lock))) db_update($DB, 'settings',
array('gift' => 'no'), array('id' => $lock)); }
# проверка на возможность просмотра подарка, обработка данных
if (db_exist($DB, 'gifts', 'id', array('id' => $id, 'view' => 'yes'))) { $drudge = true; $present = db_output($DB,
'gifts', array('id', 'image', 'text', 'user', 'view'), array('id' => $id, 'view' => 'yes')); // вывод подарка
$bud = db_output($DB, 'users', array('id', 'nick', 'sex'), array('id' => $present['user'])); // данные отправителя
$setup = db_output($DB, 'settings', 'gift', array('id' => $bud['id'])); } } // настройки отправителя
####################
# удаление подарка
if (isset($params['delete']) && isset($params['token']) && $params['token'] == TOKEN) {
# идентификатор подарка
$id = $FUNC->filter($params['delete'], 'int');
# проверка, удаление данных
if (db_exist($DB, 'gifts', 'id', array('id' => $id, 'whom' => USER['id']))) db_delete($DB, 'gifts', array('id' => $id)); }
####################
# открытие подарка, фильтрация идентификатора
if (isset($params['open'])) { $id = $FUNC->filter($params['open'], 'int'); // фильтрация
# проверка на возможность диалога, обработка данных
if (db_exist($DB, 'gifts', 'id', array('id' => $id, 'whom' => USER['id']))) { $open = true; // открытие подарка
$present = db_output($DB, 'gifts', array('id', 'image', 'text', 'user', 'view'), array('id' => $id)); // данные подарка
$buddy = db_output($DB, 'users', array('id', 'nick', 'sex'), array('id' => $present['user'])); } } // данные отправителя
####################
# дарение подарка, преобразование ника
if (isset($params['give']) && USER['money'] >= 100) {
$nickname = $USER->nick($params['give'], true);
# обработка данных
$nick = $FUNC->filter($nickname, 'sql'); // фильтрация
$nicked = $USER->nick($params['give']); // обработка для ссылок
# проверка на возможность дарения, обработка данных
if (db_exist($DB, 'users', 'id', array('nick' => $nick)) && USER['nick'] != $nick) { $give = true;
$buddy = db_output($DB, 'users', array('id','nick', 'sex'), array('nick' => $nick)); // данные получателя
$setup = db_output($DB,'settings', array('contact','gift'), array('id' => $buddy['id'])); } } // настройки получателя
####################
####################
# вывод подарков, отправка
if ($give) { $list = GIFT; $pages = 5; if ($pages > 5) $pages = 5; if (isset($params['page'])) { // страницы
$page = $FUNC->filter($params['page'], 'int'); if ($page > $pages) $page = $pages; // проверка навигации
elseif ($page < 1) $page = 1; } else $page = 1; $offset = ($page * DATA['gift']) - DATA['mail']; $gift = // порядок
array_slice($list, $offset, DATA['gift'], true); $delete = true; $nav = true; $select = false; // вывод массива, данные по умолчанию
# проверка наличия выбора, обработка данных
if (isset($params['buy'])) { $buy = $FUNC->filter($params['buy'], 'sql'); // фильтрация
$select = false; foreach ($list as $var) { $divide = explode(';', $var); // проверка выбора подарка
$image = $divide[0]; if (!$select) { if ($buy == $image) $select = true; } } // определение
if ($select) { $nav = false; $roster = true; } } // доступ к комментарию
# обработка данных массива
$data = array(); $counter = 0; foreach ($gift as $var) { $divide = explode(';', $var);
$data[$counter]['image'] = $divide[0]; $data[$counter]['name'] = $divide[1]; // определение данных
$data[$counter]['start'] = false; $data[$counter]['end'] = false; if ($counter % 2)
$data[$counter]['end'] = true; else $data[$counter]['start'] = true; $counter++; } // выбор позиции списка
# стилизация, возможность на отправку сообщение, проверка списков
$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; $present = (SETUP['gift'] == 'yes' && $setup['gift'] == 'yes' && $ignore && $friend) ? true : false; // возможность отправки
if (!$present) { if (SETUP['gift'] == 'no') $ban = 'Вам закрыт доступ к подаркам.'; elseif ($setup['gift'] == 'no') $ban = 'Игрок не может
получать подарки.'; elseif (!$friend) $ban = 'Игроку могут дарить только друзья.'; else $ban = 'Игрок добавил Вас в черный список.'; } } // уведомление
####################
####################
# вывод подарка, получение
elseif ($open) { $nicked = $USER->nick($buddy['nick']); // обработка для ссылок
$claim = ($present['view'] == 'no') ? true : false; db_update($DB, // ссылка на жалобу
'gifts', array('open' => 'yes'), array ('id' => $present['id'])); } // подарок просмотрен
####################
####################
# вывод подарка, жалоба
elseif ($drudge) { $select = false; $nicked = $USER->nick($bud['nick']); // обработка для ссылок
$buddy = array(); $buddy['nick'] = $bud['nick']; $bud['link'] = $USER->nick($bud['nick']); } // вывод ника, ссылка
####################
# вывод главной страницы
$main = ($drudge || $give || $open) ? false : true;
# проверка наличия, вывод моих подарков
if ($main) { if (!db_exist($DB, 'gifts', 'id', array('whom' => USER['id']))) $empty = true;
else { $empty = false; $presents = db_count($DB, 'gifts', 'id', array('whom' => USER['id'])); // счетчик
# работа с данными, из базы данных
$dial = db_count($DB, 'gifts', 'id', array('whom' => USER['id'])); $pages = ceil($dial / DATA['gift']); if ($pages > 5) $pages = 5; // страницы
if (isset($params['page'])) { $page = $FUNC->filter($params['page'], 'int'); if ($page > $pages) $page = $pages; // проверка навигации
elseif ($page < 1) $page = 1; } else $page = 1; $offset = ($page * DATA['gift']) - DATA['gift']; $query = db_output($DB, // определение смещения
'gifts', array('id', 'open', 'user', 'time'), array('whom' => USER['id']), true, 'time', DATA['gift'], $offset, 'DESC'); // вывод подарков из базы
$one = ($pages == 2) ? '<' : 1; $two = ($pages == 2) ? '>' : 2; // навигация, определение переходов
# разбор диалога, переработка данных в массиве
$index = 0; while ($assoc = $query->fetch_assoc()) {
$gift[$index] = $assoc; $index++; }
# обработка данных
foreach ($gift as &$post) { $user = db_output($DB, 'users', array('id', 'nick', 'sex'), array('id' => $post['user'])); // данные автора
$post['name'] = $user['nick']; $post['nick'] = $USER->nick($user['nick']); $post['sex'] = $user['sex']; // имя, пол, ссылка
$post['time'] = $USER->when($post['time'], true) .' назад'; $post['type'] = ($post['open'] == 'yes') ? 'gift' : 'new'; } } } // время получения подарка
# проверка на наличие жалоб, вывод ссылки
if (USER['status'] == 'admin' && (db_exist($DB, 'gifts', 'id', array('view' => 'yes'))) && !$drudge) {
$view = true; $moan = db_output($DB, 'gifts', 'id', array('view' => 'yes')); } else $view = false;
####################
# данные верхней ссылки
if ($give) $spot = ($page == 1) ? '/gifts/give/'. $USER->nick($nick) .'/refresh/'. $refresh :
'/gifts/give/'. $USER->nick($nick) .'/page/'. $page .'/refresh/'. $refresh; // дарение подарка
elseif ($open) $spot = '/gifts/open/'. $present['id'] .'/refresh/'. $refresh; // просмотр подарка
elseif ($drudge) $spot = '/gifts/viewer/'. $present['id'] .'/refresh/'. $refresh; // просмотр жалобы
else $spot = ($page == 1) ? '/gifts/refresh/'. $refresh : '/gifts/page/'. $page .'/refresh/'. $refresh; // мои подарки
?>