2023-07-19 12:36:13 +00:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Clan;
|
|
|
|
|
|
|
|
|
|
use Core\Config;
|
|
|
|
|
use Core\Db;
|
|
|
|
|
use Uploader;
|
|
|
|
|
|
|
|
|
|
class Register
|
|
|
|
|
{
|
|
|
|
|
const REGISTER_COST_EKR = 50;
|
|
|
|
|
private string $name;
|
|
|
|
|
private int $align = 0;
|
|
|
|
|
private Uploader $logo;
|
|
|
|
|
private int $newClanId = 0;
|
|
|
|
|
|
|
|
|
|
public function __construct()
|
|
|
|
|
{
|
|
|
|
|
if (!isset($_POST['newclanname'], $_POST['newclanalign'], $_FILES['newclanlogo'])) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->setName($_POST['newclanname']);
|
|
|
|
|
$this->setLogo();
|
|
|
|
|
$this->setAlign(intval($_POST['newclanalign']));
|
|
|
|
|
$this->new();
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-31 17:06:51 +00:00
|
|
|
|
private function setName(string $name)
|
2023-07-19 12:36:13 +00:00
|
|
|
|
{
|
2023-07-31 17:06:51 +00:00
|
|
|
|
$this->name = $name;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function setLogo()
|
|
|
|
|
{
|
|
|
|
|
$this->logo = new Uploader('newclanlogo');
|
|
|
|
|
$this->logo->setMaxFileSize(.03);
|
|
|
|
|
$this->logo->setDimensions(24, 15);
|
|
|
|
|
$this->logo->setExtentions(['gif', 'png']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function setAlign(int $align)
|
|
|
|
|
{
|
|
|
|
|
if (!in_array($align, [0, 1, 3, 7])) {
|
|
|
|
|
$align = 0;
|
|
|
|
|
}
|
|
|
|
|
$this->align = $align;
|
2023-07-19 12:36:13 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function new()
|
|
|
|
|
{
|
|
|
|
|
if (!$this->hasGoodName()) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
$imageId = $this->logo->saveToDb();
|
|
|
|
|
if (!$imageId) {
|
|
|
|
|
echo $this->logo::$error;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Db::sql('insert into clan (name, align, logo) values (?,?,?)', [$this->name, $this->align, $imageId]);
|
|
|
|
|
$this->newClanId = Db::lastInsertId();
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-31 17:06:51 +00:00
|
|
|
|
private function hasGoodName(): bool
|
|
|
|
|
{
|
|
|
|
|
return Db::getValue('select count(id) from clan where name = ?', [$this->name]) === 0;
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-19 12:36:13 +00:00
|
|
|
|
public static function approve(int $clanId)
|
|
|
|
|
{
|
|
|
|
|
Db::sql('update clan set status = 1, time_reg = unix_timestamp() where id = ?', [$clanId]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static function reject(int $clanId)
|
|
|
|
|
{
|
|
|
|
|
Db::sql('delete from clan where id = ?', [$clanId]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static function printForm(): string
|
|
|
|
|
{
|
|
|
|
|
$img = Config::img() . '/i/align';
|
|
|
|
|
return <<<REGISTERFORM
|
|
|
|
|
<style>
|
|
|
|
|
div.regclangrid [type=radio] {
|
|
|
|
|
position: absolute;
|
|
|
|
|
opacity: 0;
|
|
|
|
|
width: 0;
|
|
|
|
|
height: 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* IMAGE STYLES */
|
|
|
|
|
div.regclangrid [type=radio] + img {
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* CHECKED STYLES */
|
|
|
|
|
div.regclangrid [type=radio]:checked + img {
|
|
|
|
|
outline: 1px solid brown;
|
|
|
|
|
padding: 2px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
div.regclangrid {
|
|
|
|
|
display: grid;
|
|
|
|
|
grid-template-columns: 100px auto;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
<form method="POST" enctype="multipart/form-data">
|
|
|
|
|
<div class="regclangrid">
|
|
|
|
|
<div><label for="clanname">Название:</label></div>
|
|
|
|
|
<div><input name="newclanname" id="clanname"></div>
|
|
|
|
|
<div><label for="clanlogo">Логотип:</label></div>
|
|
|
|
|
<div><input type="file" name="newclanlogo" accept="image/*" id="newclanlogo"> размер: 24×15, формат: png или gif, до 30Кб</div>
|
|
|
|
|
<div>Склонность:</div>
|
|
|
|
|
<div>
|
|
|
|
|
<label><input type="radio" name="newclanalign" value="0" checked><img src="$img/align0.gif" alt="none"></label>
|
|
|
|
|
<label><input type="radio" name="newclanalign" value="1"><img src="$img/align1.gif" alt="light"></label>
|
|
|
|
|
<label><input type="radio" name="newclanalign" value="3"><img src="$img/align3.gif" alt="dark"></label>
|
|
|
|
|
<label><input type="radio" name="newclanalign" value="7"><img src="$img/align7.gif" alt="neutral"></label>
|
|
|
|
|
</div>
|
|
|
|
|
<div></div>
|
|
|
|
|
<div><button type="submit">Подать заявку</button></div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</form>
|
|
|
|
|
REGISTERFORM;
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-31 17:06:51 +00:00
|
|
|
|
/**
|
|
|
|
|
* @return int
|
|
|
|
|
*/
|
|
|
|
|
public function getNewClanId(): int
|
2023-07-19 12:36:13 +00:00
|
|
|
|
{
|
2023-07-31 17:06:51 +00:00
|
|
|
|
return $this->newClanId;
|
2023-07-19 12:36:13 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|