FaZeBookSocialNetwork / www / src / FaZeBook / Data / User.php
User.php
Raw
<?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();
    }
}

?>