PluginProbe ʕ •ᴥ•ʔ
FAPI Member / 2.1.18
FAPI Member v2.1.18
2.2.34 2.2.33 2.2.32 trunk 1.9.47 2.1.18 2.2.24 2.2.25 2.2.26 2.2.28 2.2.29 2.2.30 2.2.31
fapi-member / src / Model / Membership.php
fapi-member / src / Model Last commit date
Enums 1 year ago ApiConnection.php 1 year ago MemberLevel.php 1 year ago MemberSection.php 1 year ago Membership.php 1 year ago Page.php 1 year ago Settings.php 1 year ago User.php 1 year ago
Membership.php
93 lines
1 <?php declare(strict_types=1);
2
3 namespace FapiMember\Model;
4
5 use DateTimeImmutable;
6 use FapiMember\Model\Enums\Format;
7 use FapiMember\Library\SmartEmailing\Types\BoolType;
8 use FapiMember\Utils\DateTimesImmutable;
9 use FapiMember\Library\SmartEmailing\Types\IntType;
10
11 class Membership
12 {
13 private int $levelId;
14 private int $userId;
15 private DateTimeImmutable|null $registered;
16 private DateTimeImmutable|null $until;
17 private bool $isUnlimited;
18
19 public function __construct($data)
20 {
21 $this->levelId = IntType::extract($data, 'level_id');
22 $this->userId = IntType::extract($data, 'user_id');
23 $this->registered = DateTimesImmutable::extractOrNull($data, 'registered');
24 $this->until = DateTimesImmutable::extractOrNull($data, 'until');
25 $this->isUnlimited = BoolType::extractOrNull($data, 'is_unlimited') ?? false;
26 }
27
28 public function getLevelId(): int
29 {
30 return $this->levelId;
31 }
32
33 public function getUserId(): int
34 {
35 return $this->userId;
36 }
37
38 public function getRegistered(): DateTimeImmutable|null
39 {
40 return $this->registered;
41 }
42
43 public function getUntil(): DateTimeImmutable|null
44 {
45 return $this->until;
46 }
47
48 public function isUnlimited(): bool
49 {
50 return $this->isUnlimited;
51 }
52
53 public function setRegistered(DateTimeImmutable|null $registered): void
54 {
55 $this->registered = DateTimesImmutable::fromOrNull($registered);
56 }
57
58 public function setUntil(DateTimeImmutable|null $until): void
59 {
60 $this->until = DateTimesImmutable::fromOrNull($until);
61 }
62
63 public function setIsUnlimited(bool $isUnlimited): void
64 {
65 $this->isUnlimited = BoolType::fromOrNull($isUnlimited);
66 }
67
68 /**
69 * @return array<mixed>
70 */
71 public function jsonSerialize(): array
72 {
73 return array(
74 'level' => $this->levelId,
75 'registered' => $this->registered->format(Format::DATE_TIME) ?? null,
76 'until' => $this->until?->format(Format::DATE_TIME) ?? null,
77 'isUnlimited' => $this->isUnlimited,
78 );
79 }
80
81 public function toArray(): array
82 {
83 return [
84 'level' => $this->levelId,
85 'user_id' => $this->userId,
86 'registered' => $this->registered->format(Format::DATE_TIME) ?? null,
87 'until' => $this->until?->format(Format::DATE_TIME) ?? null,
88 'is_unlimited' => $this->isUnlimited,
89 ];
90 }
91
92 }
93