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

109 lines
5.4 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
// Здание регистратуры!
use Battles\Bank;
use Battles\GameConfigs;
use Battles\Rooms;
use Battles\Template;
use Battles\User;
use Battles\Database\Db;
require_once 'functions.php';
$userClan = Db::getInstance()->ofetch('select * from clans where owner_id = ?', User::getInstance()->getId());
$clanFullName = $_POST['clan_full_name'] ?? '';
$clanShortName = $_POST['clan_short_name'] ?? '';
$clanInfo = $_POST['clan_info'] ?? '';
$userBank = new Bank(User::getInstance()->getId());
if ($clanFullName && $clanShortName && $clanInfo && !$userClan) {
$eff = Db::getInstance()->execute('select count(*) from users_effects where type = 20 and owner_id = ?', User::getInstance()->getId())->fetchColumn();
$name_check = Db::getInstance()->execute('select count(*) from clans where full_name = ? or short_name = ?', [$clanFullName, $clanShortName])->fetchColumn();
$errorMessage = [];
if (GameConfigs::CLAN['clan_register_lock']) {
$errorMessage[10] = 'Регистрация кланов закрыта! <BR>';
}
if (User::getInstance()->getAlign()) {
$errorMessage[0] = 'Вы уже имеете направленность!. <BR>';
}
if (User::getInstance()->getClan()) {
$errorMessage[1] = 'Вы уже состоите в клане!. <BR>';
}
if (GameConfigs::CLAN['clan_register_cost'] >= $userBank->getMoney()) {
$errorMessage[2] = 'Не хватает денег на регистрацию клана. <BR>';
}
if (!$eff) {
$errorMessage[3] = 'Нет проверки. <BR>';
}
if (!$name_check) {
$errorMessage[4] = 'Клан с такими данными уже существует.<br>';
}
if (!$errorMessage || User::getInstance()->getAdmin()) {
try {
Db::getInstance()->execute('insert into clans (owner_id, full_name, short_name, info) values (?,?,?,?)', [User::getInstance()->getId(), $clanFullName, $clanShortName, $clanInfo]);
$userBank->setMoney($userBank->getMoney() - GameConfigs::CLAN['clan_register_cost']);
Battles\Bank::setBankMoney($userBank->getMoney(), User::getInstance()->getId(), 'clanRegister');
// Заглушка для отображения данных по только что зарегистрированному клану, когда запрос в базу в начале файла ещё не проходит.
$userClan = new stdClass();
$userClan->full_name = $clanFullName;
$userClan->short_name = $clanShortName;
$userClan->info = $clanInfo;
unset($clanShortName, $clanFullName, $clanInfo);
echo 'Заявка на регистрацию клана подана.';
} catch (Throwable $exception) {
echo '<div style="background-color: #fae0e0;"><span class="error">Ошибка записи в базу!</span><br>' . $exception . '</div>';
}
} else {
foreach ($errorMessage as $error) {
echo sprintf('<span class="error">%s</span>', $error);
}
}
}
Template::header(Rooms::$roomNames[30]);
Template::buildingTop(Rooms::$roomNames[30], 'strah');
if ($userClan): ?>
<div>
<fieldset style="display: inline;">
<legend>Заявка на регистрацию</legend>
<label>
<input size=30 disabled value="<?= $userClan->full_name ?>">
</label>
<label>
<input size=30 disabled value="<?= $userClan->short_name ?>">
</label><BR>
<BR>
<label>
<textarea cols=80 rows=10 disabled><?= nl2br($userClan->info) ?></textarea>
</label><BR>
<button disabled>Заявка подана и рассматривается</button>
</fieldset>
</div>
<?php else: ?>
<div>
<form method="post">
<fieldset style="display: inline;">
<legend>Заявка на регистрацию</legend>
<label>
<input size=30 name="clan_full_name" placeholder="Название клана" value="<?= $clanFullName ?>">
</label>
<label>
<input size=30 name="clan_short_name" maxlength="5" placeholder="Английская аббревиатура"
value="<?= $clanShortName ?>">
</label><BR>
<BR>
<label>
<textarea cols=80 rows=10 name="clan_info"
placeholder="Информация о клане для энциклопедии"><?= nl2br($clanInfo) ?></textarea>
</label><BR>
<input type="submit" value="Подать заявку">
</fieldset>
</form>
</div>
<div>
Для регистрации клана необходимо иметь:
<ol>
<li>Проверку на чистоту. У вас её нет.
<li>10000 кредитов на банковском счёте. У вас на счету <?= $userBank->getMoney() ?>.
</ol>
Поле информации не обазательное. Но его содержимое может серьёзно повысить шансы на регистрацию клана.<BR>
Заявку на регистрацию подает глава клана.
</div>
<?php endif; ?>