12
12
* name: MultilingualStringType,
13
13
* link_text: MultilingualStringType,
14
14
* link_url: MultilingualStringType,
15
+ * slug: string
15
16
* }
16
17
*
17
18
* @psalm-type AdmissionRequirementType = AdmissionRequirement & array{
@@ -22,6 +23,7 @@ final class AdmissionRequirement
22
23
{
23
24
public const ID = 'id ' ;
24
25
public const NAME = 'name ' ;
26
+ public const SLUG = 'slug ' ;
25
27
public const LINK_TEXT = 'link_text ' ;
26
28
public const LINK_URL = 'link_url ' ;
27
29
@@ -33,6 +35,7 @@ final class AdmissionRequirement
33
35
'required ' => [
34
36
AdmissionRequirement::ID ,
35
37
AdmissionRequirement::NAME ,
38
+ AdmissionRequirement::SLUG ,
36
39
AdmissionRequirement::LINK_TEXT ,
37
40
AdmissionRequirement::LINK_URL ,
38
41
AdmissionRequirement::PARENT ,
@@ -43,6 +46,10 @@ final class AdmissionRequirement
43
46
'minLength ' => 1 ,
44
47
],
45
48
AdmissionRequirement::NAME => MultilingualString::SCHEMA ,
49
+ AdmissionRequirement::SLUG => [
50
+ 'type ' => 'string ' ,
51
+ 'minLength ' => 1 ,
52
+ ],
46
53
AdmissionRequirement::LINK_TEXT => MultilingualString::SCHEMA ,
47
54
AdmissionRequirement::LINK_URL => MultilingualString::SCHEMA ,
48
55
AdmissionRequirement::PARENT => [
@@ -51,13 +58,18 @@ final class AdmissionRequirement
51
58
'required ' => [
52
59
AdmissionRequirement::ID ,
53
60
AdmissionRequirement::NAME ,
61
+ AdmissionRequirement::SLUG ,
54
62
],
55
63
'properties ' => [
56
64
AdmissionRequirement::ID => [
57
65
'type ' => 'string ' ,
58
66
'minLength ' => 1 ,
59
67
],
60
68
AdmissionRequirement::NAME => MultilingualString::SCHEMA ,
69
+ AdmissionRequirement::SLUG => [
70
+ 'type ' => 'string ' ,
71
+ 'minLength ' => 1 ,
72
+ ],
61
73
],
62
74
],
63
75
],
@@ -69,6 +81,7 @@ final class AdmissionRequirement
69
81
'required ' => [
70
82
AdmissionRequirement::ID ,
71
83
AdmissionRequirement::NAME ,
84
+ AdmissionRequirement::SLUG ,
72
85
AdmissionRequirement::LINK_TEXT ,
73
86
AdmissionRequirement::LINK_URL ,
74
87
],
@@ -78,6 +91,10 @@ final class AdmissionRequirement
78
91
'maxLength ' => 0 ,
79
92
],
80
93
AdmissionRequirement::NAME => MultilingualString::SCHEMA ,
94
+ AdmissionRequirement::SLUG => [
95
+ 'type ' => 'string ' ,
96
+ 'maxLength ' => 0 ,
97
+ ],
81
98
AdmissionRequirement::LINK_TEXT => MultilingualString::SCHEMA ,
82
99
AdmissionRequirement::LINK_URL => MultilingualString::SCHEMA ,
83
100
AdmissionRequirement::PARENT => [
@@ -89,22 +106,25 @@ final class AdmissionRequirement
89
106
private function __construct (
90
107
private MultilingualLink $ current ,
91
108
private ?AdmissionRequirement $ parent ,
109
+ private string $ slug
92
110
) {
93
111
}
94
112
95
113
public static function new (
96
114
MultilingualLink $ current ,
97
115
?AdmissionRequirement $ parent ,
116
+ string $ slug = ''
98
117
): self {
99
118
100
- return new self ($ current , $ parent );
119
+ return new self ($ current , $ parent, $ slug );
101
120
}
102
121
103
122
public static function empty (): self
104
123
{
105
124
return new self (
106
125
MultilingualLink::empty (),
107
- null
126
+ null ,
127
+ ''
108
128
);
109
129
}
110
130
@@ -122,10 +142,12 @@ public static function fromArray(array $data): self
122
142
123
143
/** @var AdmissionRequirementType|null $parentData */
124
144
$ parentData = $ data [self ::PARENT ] ?? null ;
145
+ $ slug = $ data [self ::SLUG ] ?? '' ;
125
146
126
147
return new self (
127
148
MultilingualLink::fromArray ($ currentData ),
128
- $ parentData ? self ::fromArray ($ parentData ) : null
149
+ $ parentData ? self ::fromArray ($ parentData ) : null ,
150
+ $ slug
129
151
);
130
152
}
131
153
@@ -138,6 +160,7 @@ public function asArray(): array
138
160
$ parentData = $ this ->parent ?->asArray();
139
161
$ currentData = $ this ->current ->asArray ();
140
162
$ currentData [self ::PARENT ] = $ parentData ;
163
+ $ currentData [self ::SLUG ] = $ this ->slug ;
141
164
142
165
return $ currentData ;
143
166
}
@@ -152,6 +175,11 @@ public function name(): MultilingualString
152
175
return $ this ->current ->name ();
153
176
}
154
177
178
+ public function slug (): string
179
+ {
180
+ return $ this ->slug ;
181
+ }
182
+
155
183
public function linkText (): MultilingualString
156
184
{
157
185
return $ this ->current ->linkText ();
0 commit comments