3502904656
Singleton в некоторых местах вместо решения #42. Новые шаги для решения #16 и #52. Closes #42. Closes #32. Closes #31.
119 lines
5.1 KiB
PHP
119 lines
5.1 KiB
PHP
<?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>
|