<?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; // мои подарки

?>