game/_incl_data/class/User/Clan.php

91 lines
2.2 KiB
PHP
Raw Normal View History

<?php
namespace User;
use Clan\ClanInfo;
use Core\Config;
use Core\Db;
use Images;
class Clan
{
private $userid;
private int $id = 0;
private ?string $name;
private ?int $align;
private ?int $logo;
private ?int $status;
public function __construct(array $userinfo)
{
$this->userid = $userinfo['id'];
if (isset($_POST['joinclan']) && ClanInfo::isJoinable($_POST['joinclan'])) {
$this->join($_POST['joinclan']);
exit('<script>window.location.replace("/main.php?clan=1");</script>');
}
$c = Db::getRow('select * from clan where id = ?', [$userinfo['clan']]);
if (!empty($c)) {
foreach ($c as $k => $v) {
$this->$k = $v;
}
}
}
private function join(string $clanname)
{
Db::sql('update users set clan = (select id from clan where clan.name = ?) where id = ?', [$clanname, $this->userid]);
}
public function getId(): int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function getAlign(): ?int
{
return $this->align;
}
public function printLogoImage(): string
{
return '<img style="vertical-align:text-bottom;" src = "'. Images::getSrc($this->logo) . '" width = "24px" height = "15px">';
}
public function getStatus(): ?int
{
return $this->status;
}
public function printClan()
{
echo '<img style="vertical-align:text-bottom;" src="' . Config::img() . '/i/align/align' . $this->getAlign() . '.gif" alt="Склонность">' . $this->printLogoImage() . $this->getName();
}
public function getLogo(): ?int
{
return $this->logo;
}
/**
* Клан зарегистрирован и подверждён.
* @return bool
*/
public function isRegistered(): bool
{
return !empty($this->id) && $this->status !== 0;
}
/**
* Клан зарегистрирован и ожидает подтверждения.
* @return bool
*/
public function isAwaitingConfirmation(): bool
{
return !empty($this->id) && $this->status === 0;
}
}