battles/presents.php
Igor Barkov (iwork) 3502904656 Рефакторинг, очистка, работа над ошибками, связанными с базой, отказ от глобальной переменной $user во многих файлах.
Singleton в некоторых местах вместо решения #42.
Новые шаги для решения #16 и #52.
Closes #42.
Closes #32.
Closes #31.
2022-01-27 01:15:33 +02:00

119 lines
5.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Created by PhpStorm.
* User: Lopar
* Date: 15.01.2019
* Time: 14:51
*/
/*
* Файл в котором будуn аккумулироваться покупка и отправка подарков и сувениров, которые не будут являться предметами,
* а просто записями в базе и просто будут отображаться в инвентаре, как неосязаемая сущность со сроком годности или
* без и правом игрока скрыть или удалить любой подаренный подарок.
*
*/
use Battles\Bank;
use Battles\Template;
use Battles\User;
if ($_SESSION['uid'] != 2) {
header("Location: index.php");
exit;
}
require_once 'config.php';
$status = '';
$dirname = "i/presents/";
$images = glob($dirname . "*.png");
if (!empty($_POST['sendAction'])) {
if (empty($_POST['present'])) {
$status = "Подарок не выбран!";
return;
}
if (empty($_POST['receiver'])) {
$status = "Поле «Получатель» не заполнено!";
return;
}
$receiver = db::c()->query('SELECT `id` FROM `users` WHERE `login` = "?s"', $_POST['receiver'])->fetch_assoc();
if (empty($receiver)) {
$status = "Получатель {$receiver} не найден в базе!";
return;
}
$_POST['text'] = $_POST['text'] ?? null;
if (empty($_POST['days']) || $_POST['days'] < 1 || !is_numeric($_POST['days'])) {
$_POST['days'] = 1;
}
$cost = $_POST['days'] * 5;
if (User::getInstance()->getMoney() < $cost) {
$status = "Не хватает кредитов на оплату подарка!";
return;
}
if ($_POST['sender'] == 1) {
$sender = "Анонимный подарок";
} elseif ($_POST['sender'] == 2 && User::getInstance()->getClan()) {
$sender = "Подарок от клана " . User::getInstance()->getClan();
} else {
$sender = "Подарок от " . User::getInstance()->getLogin();
}
User::getInstance()->setMoney(User::getInstance()->getMoney() - $cost);
Bank::setWalletMoney(User::getInstance()->getMoney(), User::getInstance()->getId());
db::c()->query('INSERT INTO users_presents (owner, img, text, sender, expiration_date) VALUES (?i,"?s","?s","?s",DATE_ADD(CURDATE(),INTERVAL ?i DAY))', $receiver['id'], $_POST['present'], $_POST['text'], $sender, $_POST['days']);
$telegraphText = "Вам пришёл подарок от {$sender}!";
db::c()->query('INSERT INTO `telegraph` (receiver, text) VALUES (?i,"?s")', $receiver['id'], $telegraphText);
$status = "Подарок удачно доставлен к {$_POST['receiver']}! Вы потратили <b>{$cost}</b> кр.";
}
Template::header('Дарильня');
?>
<script src="js/main.js"></script>
<style>
label.present > input { /* HIDE RADIO */
visibility: hidden; /* Makes input not-clickable */
position: absolute; /* Remove input from document flow */
}
label.present > input + img { /* IMAGE STYLES */
cursor: pointer;
border: 1px solid transparent;
}
label.present > input:checked + img { /* (RADIO CHECKED) IMAGE STYLES */
border: 1px solid darkred;
background: lightcoral;
}
</style>
<h1>Дарильня</h1>
<div class="private"><?= $status ?></div>
Вы можете сделать подарок любому персонажу. Ваш подарок будет
отображаться в информации о персонаже.<br><br>
<div>
Выберите подарок:<br>
<form method="post">
<?php foreach ($images as $image): ?>
<label class="present">
<input type="radio" name="present" value="<?= $image ?>">
<img src="<?= $image ?>" alt="">
</label>
<?php endforeach; ?>
<br><input name="receiver" placeholder="Имя получателя"><br>
<textarea name="text"
rows=6 cols=80
placeholder="Текст сопроводительной записки (в информации о персонаже не отображается). Заполнять не обязательно."></textarea><br>
<br>Выберите, от чьего имени подарок:<br>
<label><input type=radio name=sender value=0 checked> <?= User::getInstance()->getLogin() ?></label><br>
<label><input type=radio name=sender value=1> анонимно</label><br>
<?php if (!empty(User::getInstance()->getClan())): ?>
<label><input type=radio name=sender value=2> от имени клана <b><?= User::getInstance()->getClan() ?></b></label><br>
<?php endif; ?>
<br>Долговечность подарка (5кр в день):<br>
<input name="days" placeholder="Количество дней"><br>
<input type="hidden" name="sendAction" value="1">
<br>
<input type="submit" value="Подарить">
</form>
</div>