db = $db; $this->user = $user; $this->clan = $this->db->ofetch('select * from clans where owner_id = ?', $this->user->getId()); } public function addMember(string $login): string { $error = null; $check = $this->db->ofetch('select id, level, clan from users where login = ?', $login); if (!$this->getProverka($check->id)) { $error .= '
Нет проверки!'; } if ($check->clan) { $error .= '
Персонаж уже состоит в клане!'; } if ($check->level < 1) { $error .= '
Персонаж 0 уровня не может быть принят!'; } if ($this->user->getMoney() < GameConfigs::CLAN['add_member_cost']) { $error .= '
Недостаточно денег!'; } if ($error) { return $error; } $this->user->setMoney($this->user->getMoney() - GameConfigs::CLAN['add_member_cost']); $this->user->saveMoney(); $this->db->execute('update users set clan = ? where id = ?', [$this->user->getClan(), $check->id]); return "Персонаж «{$login}» успешно принят в клан."; } public function removeMember(string $login): string { $error = null; $check = $this->db->ofetch('select id, clan from users where login = ?', $login); if ($this->user->getMoney() < GameConfigs::CLAN['remove_member_cost']) { $error .= '
Недостаточно денег!'; } if ($check->id === $this->user->getId()) { $error .= '
Себя выгонять нельзя!'; } if ($check->clan !== $this->user->getClan()) { $error .= '
Персонаж не состоит в этом клане!'; } if ($error) { return $error; } $this->user->setMoney($this->user->getMoney() - GameConfigs::CLAN['remove_member_cost']); $this->user->saveMoney(); $this->db->execute('update users set clan = null where id = ?', $check->id); return "Персонаж «{$login}» покинул клан."; } public function changeOwner(string $login): string { $error = null; $check = $this->db->ofetch('select id, clan from users where login = ?', $login); if ($check->id === $this->user->getId()) { $error .= '
Самоудовлетворяетесь? ;)'; } if ($check->clan !== $this->user->getClan()) { $error .= '
Персонаж не состоит в этом клане!'; } if ($error) { return $error; } $this->db->execute('update clans set owner_id = ? where owner_id = ?', [$check->id, $this->user->getId()]); return 'Вы передали управление кланом персонажу «' . $login . '».'; } public function setClanInfo(string $text) { $check = $this->db->ofetch('select id from users where clan = (select short_name from clans where owner_id = ?)', $this->user->getId()); if ($check->id !== $this->user->getId()) { return 'Ошибка доступа!'; } $this->db->execute('update clans set info = ? where owner_id = ?', [$text, $check->id]); return 'Описание клана изменено!'; } public function getMemberlist(): array { $query = 'select id, (select 1 from clans where short_name = clan and owner_id = id) as clan_owner, room from users where clan = ? order by clan_owner desc, room, login'; return $this->db->ofetchAll($query, $this->user->getClan()); } private function getProverka($user_id) { return $this->db->fetch('select 1 from users_effects where type = 20 and owner_id = ?', $user_id); } public function getClanOwnerId(): ?int { return $this->clan->owner_id; } public function getClanName(): ?string { return $this->clan->full_name; } public function getClanShortName(): ?string { return $this->clan->short_name; } }