19 declare(strict_types=1);
43 public function prepareCreateOrUpdate(
49 $set->prepared_changes[] = [
59 $set->prepared_changes[] = [
'delete should not be prepared!'];
63 public function prepareForceCreate(
69 $set->prepared_changes[] = [
'force create should not be prepared!'];
75 protected string $path_string =
'~start~';
77 public function withNextStep(
string $name,
bool $add_as_first =
false):
PathBuilder 79 $builder = clone $this;
81 $name .=
'[added as first]';
83 $builder->path_string .=
'%' . $name;
89 $builder = clone $this;
90 $builder->path_string .=
'{' . $type->value .
':' . implode(
'><', $values) .
'}';
96 return new class ($this->path_string) extends
NullPath {
97 public function __construct(
protected string $path_string)
103 return $this->path_string;
116 return $this->builder;
123 return new class () extends
NullSet {
124 public array $prepared_changes = [];
129 return new Creator($manipulator, $path_factory, $scaffold_provider);
136 $set = $creator->createSet(
'some title');
138 $expected_title_changes = [
139 'path' =>
'~start~%general%title%string',
140 'values' => [
'some title']
142 $prepared_changes = $set->prepared_changes;
143 $this->assertCount(1, $prepared_changes);
144 $this->assertContains($expected_title_changes, $prepared_changes);
151 $set = $creator->createSet(
'');
153 $expected_title_changes = [
154 'path' =>
'~start~%general%title%string',
155 'values' => [
'some title']
157 $prepared_changes = $set->prepared_changes;
158 $this->assertCount(1, $prepared_changes);
159 $this->assertSame(
'~start~%general%title%string', $prepared_changes[0][
'path']);
160 $this->assertCount(1, $prepared_changes[0][
'values']);
161 $this->assertNotSame(
'', $prepared_changes[0][
'values'][0]);
168 $set = $creator->createSet(
'some title',
'',
'tg');
170 $expected_title_changes = [
171 'path' =>
'~start~%general%title%string',
172 'values' => [
'some title']
174 $expected_title_lang_changes = [
175 'path' =>
'~start~%general%title%language',
178 $expected_lang_changes = [
179 'path' =>
'~start~%general%language',
182 $prepared_changes = $set->prepared_changes;
183 $this->assertCount(3, $prepared_changes);
184 $this->assertContains($expected_title_changes, $prepared_changes);
185 $this->assertContains($expected_title_lang_changes, $prepared_changes);
186 $this->assertContains($expected_lang_changes, $prepared_changes);
193 $set = $creator->createSet(
'some title',
'some description');
195 $expected_title_changes = [
196 'path' =>
'~start~%general%title%string',
197 'values' => [
'some title']
199 $expected_description_changes = [
200 'path' =>
'~start~%general%description%string',
201 'values' => [
'some description']
203 $prepared_changes = $set->prepared_changes;
204 $this->assertCount(2, $prepared_changes);
205 $this->assertContains($expected_title_changes, $prepared_changes);
206 $this->assertContains($expected_description_changes, $prepared_changes);
213 $set = $creator->createSet(
'some title',
'some description',
'tg');
215 $expected_title_changes = [
216 'path' =>
'~start~%general%title%string',
217 'values' => [
'some title']
219 $expected_title_lang_changes = [
220 'path' =>
'~start~%general%title%language',
223 $expected_lang_changes = [
224 'path' =>
'~start~%general%language',
227 $expected_description_changes = [
228 'path' =>
'~start~%general%description%string',
229 'values' => [
'some description']
231 $expected_description_lang_changes = [
232 'path' =>
'~start~%general%description%language',
235 $prepared_changes = $set->prepared_changes;
236 $this->assertCount(5, $prepared_changes);
237 $this->assertContains($expected_title_changes, $prepared_changes);
238 $this->assertContains($expected_title_lang_changes, $prepared_changes);
239 $this->assertContains($expected_lang_changes, $prepared_changes);
240 $this->assertContains($expected_description_changes, $prepared_changes);
241 $this->assertContains($expected_description_lang_changes, $prepared_changes);
__construct()
Constructor setup ILIAS global object public.
custom()
expected output: > ILIAS shows a base horizontal bar chart but customized with e.g.