ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
ilObjTestMainSettings.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 {
23  protected int $test_id;
32 
33  public function __construct(
34  int $test_id,
35  ilObjTestSettingsGeneral $settings_general,
36  ilObjTestSettingsIntroduction $settings_introduction,
37  ilObjTestSettingsAccess $settings_access,
38  ilObjTestSettingsTestBehaviour $settings_test_behaviour,
39  ilObjTestSettingsQuestionBehaviour $settings_question_behaviour,
40  ilObjTestSettingsParticipantFunctionality $settings_participant_functionality,
41  ilObjTestSettingsFinishing $settings_finishing,
42  ilObjTestSettingsAdditional $settings_additional
43  ) {
44  $this->test_id = $test_id;
45 
46  foreach ([
47  $settings_general,
48  $settings_introduction,
49  $settings_access,
50  $settings_test_behaviour,
51  $settings_question_behaviour,
52  $settings_participant_functionality,
53  $settings_finishing,
54  $settings_additional
55  ] as $setting) {
56  $this->throwOnDifferentTestId($setting);
57  }
58 
59  $this->settings_general = $settings_general;
60  $this->settings_introduction = $settings_introduction;
61  $this->settings_access = $settings_access;
62  $this->settings_test_behaviour = $settings_test_behaviour;
63  $this->settings_question_behaviour = $settings_question_behaviour;
64  $this->settings_participant_functionality = $settings_participant_functionality;
65  $this->settings_finishing = $settings_finishing;
66  $this->settings_additional = $settings_additional;
67  }
68 
69  protected function throwOnDifferentTestId(TestSettings $setting)
70  {
71  if ($setting->getTestId() !== $this->getTestId()) {
72  throw new \LogicException('TestId mismatch in ' . get_class($setting));
73  }
74  }
75 
76  public function getTestId(): int
77  {
78  return $this->test_id;
79  }
80  public function withTestId(int $test_id): self
81  {
82  $clone = clone $this;
83  $clone->test_id = $test_id;
84  $clone->settings_general = $clone->settings_general->withTestId($test_id);
85  $clone->settings_introduction = $clone->settings_introduction->withTestId($test_id);
86  $clone->settings_access = $clone->settings_access->withTestId($test_id);
87  $clone->settings_test_behaviour = $clone->settings_test_behaviour->withTestId($test_id);
88  $clone->settings_question_behaviour = $clone->settings_question_behaviour->withTestId($test_id);
89  $clone->settings_participant_functionality = $clone->settings_participant_functionality->withTestId($test_id);
90  $clone->settings_finishing = $clone->settings_finishing->withTestId($test_id);
91  $clone->settings_additional = $clone->settings_additional->withTestId($test_id);
92  return $clone;
93  }
94 
96  {
98  }
100  {
101  $this->throwOnDifferentTestId($settings);
102  $clone = clone $this;
103  $clone->settings_general = $settings;
104  return $clone;
105  }
106 
108  {
110  }
112  {
113  $this->throwOnDifferentTestId($settings);
114  $clone = clone $this;
115  $clone->settings_introduction = $settings;
116  return $clone;
117  }
118 
120  {
121  return $this->settings_access;
122  }
124  {
125  $this->throwOnDifferentTestId($settings);
126  $clone = clone $this;
127  $clone->settings_access = $settings;
128  return $clone;
129  }
130 
132  {
134  }
136  {
137  $this->throwOnDifferentTestId($settings);
138  $clone = clone $this;
139  $clone->settings_test_behaviour = $settings;
140  return $clone;
141  }
142 
144  {
146  }
148  {
149  $this->throwOnDifferentTestId($settings);
150  $clone = clone $this;
151  $clone->settings_question_behaviour = $settings;
152  return $clone;
153  }
154 
156  {
158  }
160  {
161  $this->throwOnDifferentTestId($settings);
162  $clone = clone $this;
163  $clone->settings_participant_functionality = $settings;
164  return $clone;
165  }
166 
168  {
170  }
172  {
173  $this->throwOnDifferentTestId($settings);
174  $clone = clone $this;
175  $clone->settings_finishing = $settings;
176  return $clone;
177  }
178 
180  {
182  }
184  {
185  $this->throwOnDifferentTestId($settings);
186  $clone = clone $this;
187  $clone->settings_additional = $settings;
188  return $clone;
189  }
190 }
withAccessSettings(ilObjTestSettingsAccess $settings)
array $settings
Setting values (LTI parameters, custom parameters and local parameters).
Definition: System.php:200
withAdditionalSettings(ilObjTestSettingsAdditional $settings)
ilObjTestSettingsParticipantFunctionality $settings_participant_functionality
__construct(int $test_id, ilObjTestSettingsGeneral $settings_general, ilObjTestSettingsIntroduction $settings_introduction, ilObjTestSettingsAccess $settings_access, ilObjTestSettingsTestBehaviour $settings_test_behaviour, ilObjTestSettingsQuestionBehaviour $settings_question_behaviour, ilObjTestSettingsParticipantFunctionality $settings_participant_functionality, ilObjTestSettingsFinishing $settings_finishing, ilObjTestSettingsAdditional $settings_additional)
withQuestionBehaviourSettings(ilObjTestSettingsQuestionBehaviour $settings)
ilObjTestSettingsGeneral $settings_general
ilObjTestSettingsQuestionBehaviour $settings_question_behaviour
ilObjTestSettingsTestBehaviour $settings_test_behaviour
withParticipantFunctionalitySettings(ilObjTestSettingsParticipantFunctionality $settings)
withFinishingSettings(ilObjTestSettingsFinishing $settings)
ilObjTestSettingsFinishing $settings_finishing
withIntroductionSettings(ilObjTestSettingsIntroduction $settings)
ilObjTestSettingsAdditional $settings_additional
ilObjTestSettingsIntroduction $settings_introduction
throwOnDifferentTestId(TestSettings $setting)
withTestBehaviourSettings(ilObjTestSettingsTestBehaviour $settings)
ilObjTestSettingsAccess $settings_access
withGeneralSettings(ilObjTestSettingsGeneral $settings)