<?php namespace FaZeBook\Data; use DateTimeImmutable; use R; class User extends DataObject { /* ----- Name ----- */ public function getFirstName(): string { return $this->dbo->firstName; } public function setFirstName(string $firstName) { $this->dbo->firstName = $firstName; $this->update(); } public function getLastName(): string { return $this->dbo->lastName; } public function setLastName(string $lastName) { $this->dbo->lastName = $lastName; $this->update(); } public function getFullName(): string { return $this->getFirstName() . ' ' . $this->getLastName(); } /* ----- E-Mail Address ----- */ public function getEmail(): string { return $this->dbo->email; } public function setEmail(string $email) { $this->dbo->email = $email; $this->update(); } /* ----- Phone Number ----- */ public function getPhoneNumber() { return $this->dbo->phone; } public function setPhoneNumber(string $phone) { $this->dbo->phone = $phone; $this->update(); } /* ----- Kills / Deaths ----- */ public function getKills(): int { return $this->dbo->kills; } public function getDeaths(): int { return $this->dbo->deaths; } /* ----- Karma ----- */ public function getKarma(): int { return $this->dbo->karma; } public function setKarma(int $karma) { $this->dbo->karma = $karma; $this->update(); } /* ----- Birthday ----- */ public function getBirthday() { return new DateTimeImmutable($this->dbo->birthday); } public function setBirthday(DateTimeImmutable $birthday) { $this->dbo->birthday = $birthday->format("Y-m-d"); $this->update(); } /* ----- Password ----- */ public function verifyPassword(string $password_attempt): bool { return password_verify($password_attempt, $this->dbo->passwordHash); } public function setPassword(string $password) { $this->dbo->passwordHash = password_hash($password, PASSWORD_DEFAULT); $this->update(); } /* ----- Permissions ----- */ public function addPermission(int $permission) { $this->dbo->permissions |= $permission; $this->update(); } public function removePermission(int $permission) { $this->dbo->permissions &= ~$permission; $this->update(); } public function hasPermissions(int $permissions): bool { return ($this->dbo->permissions & $permissions) > 0; } /* ----- Last Seen ----- */ public function getLastSeen(): DateTimeImmutable { return new DateTimeImmutable('@' . $this->dbo->lastSeen); } public function updateLastSeen() { $this->dbo->lastSeen = time(); $this->update(); } /* ----- Political Direction ----- */ public function getPoliticalDirection(): int { return $this->dbo->politicalDirection; } public function setPoliticalDirection(int $politicalDirection) { $this->dbo->politicalDirection = $politicalDirection; $this->update(); } /* ----- Avatar URL ----- */ public function getAvatarUrl() { return $this->dbo->avatarUrl; } public function setAvatarUrl($avatarUrl) { $this->dbo->avatarUrl = $avatarUrl; $this->update(); } } ?>