getRecord()->id; } function getCreator(): ?User { return (new Users)->get($this->getRecord()->creator_id); } function getName(): string { return $this->getRecord()->title; } function getCanonicalName(): string { return $this->getName(); } function getDescription(): ?string { return $this->getRecord()->description; } function isClosed(): ?bool { return (bool) $this->getRecord()->closed; } function getCreationTime(): DateTime { return new DateTime($this->getRecord()->created); } function isPrivate(): ?bool { return (bool) $this->getRecord()->private; } function hasAccess(User $user): bool { if ($user->isBtModerator() || !$this->isPrivate()) return true; $check = DB::i()->getContext()->table("bt_products_access")->where([ "tester" => $user->getId(), "product" => $this->getId() ]); if (sizeof($check) > 0) return true; return false; } }