ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
Repository.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
24{
25 private const SETTINGS_KEY_DISABLED_QUESTION_TYPES_LEGACY = 'forbidden_questiontypes';
26 private const SETTINGS_KEY_MANUAL_SCORING_LEGACY = 'assessment_manual_scoring';
27
28 private const SETTINGS_KEY_PROCESS_LOCK_MODE = 'ass_process_lock_mode';
29 private const SETTINGS_KEY_IMAGE_MAP_LINE_COLOR = 'imap_line_color';
30 private const SETTINGS_KEY_UNIQUE_USER_IDENTIFIER = 'user_criteria';
31 private const SETTINGS_KEY_SKILL_TRIGGERING_NUMBER_OF_ANSWERS = 'ass_skl_trig_num_answ_barrier';
32 private const SETTINGS_KEY_EXPORT_ESSAY_QUESTIONS_AS_HTML = 'export_essay_qst_with_html';
33 private const SETTINGS_KEY_DISABLED_QUESTION_TYPES = 'disabled_question_types';
34 private const SETTINGS_KEY_MANUAL_SCORING_ENABLED = 'manual_scoring';
35 private const SETTINGS_KEY_ADJUSTING_QUESTIONS_WITH_RESULTS_ALLOWED = 'assessment_adjustments_enabled';
36 private const SETTINGS_KEY_PAGE_EDITOR_ENABLED = 'enable_tst_page_edit';
37
38 private const SETTINGS_KEY_LOGGING_ENABLED = 'assessment_logging';
39 private const SETTINGS_KEY_IP_LOGGING_ENABLED = 'assessment_logging_ip';
40
43
44 public function __construct(
45 private \ilSetting $settings_global,
46 private \ilSetting $settings_test
47 ) {
48 }
49
51 {
52 if ($this->global_test_settings === null) {
53 $this->global_test_settings = $this->buildGlobalTestSettings();
54 }
56 }
57
59 {
60 $global_settings = new GlobalTestSettings();
61
62 if (($process_lock_mode = ProcessLockModes::tryFrom(
63 $this->settings_test->get(self::SETTINGS_KEY_PROCESS_LOCK_MODE) ?? ''
64 )) !== null
65 ) {
66 $global_settings = $global_settings->withProcessLockMode($process_lock_mode);
67 }
68
69 if (($image_map_line_color = $this->settings_test->get(self::SETTINGS_KEY_IMAGE_MAP_LINE_COLOR)) !== null) {
70 $global_settings = $global_settings->withImageMapLineColor($image_map_line_color);
71 }
72
73 if (($user_identifier = UserIdentifiers::tryFrom(
74 $this->settings_test->get(self::SETTINGS_KEY_UNIQUE_USER_IDENTIFIER) ?? ''
75 )) !== null
76 ) {
77 $global_settings = $global_settings->withUserIdentifier($user_identifier);
78 }
79
80 if (($skill_triggering_number_of_answers = $this->settings_test->get(self::SETTINGS_KEY_SKILL_TRIGGERING_NUMBER_OF_ANSWERS)) !== null) {
81 $global_settings = $global_settings->withSkillTriggeringNumberOfAnswers((int) $skill_triggering_number_of_answers);
82 }
83
84 if (($export_essay_questions_as_html = $this->settings_test->get(self::SETTINGS_KEY_EXPORT_ESSAY_QUESTIONS_AS_HTML)) !== null) {
85 $global_settings = $global_settings->withExportEssayQuestionsAsHtml($export_essay_questions_as_html === '1');
86 }
87
88 if (($disabled_question_types_legacy = $this->settings_test->get(self::SETTINGS_KEY_DISABLED_QUESTION_TYPES_LEGACY)) !== null) {
89 $this->migrateLegacyQuestionTypes($disabled_question_types_legacy);
90 }
91
92 if (($disabled_question_types = $this->settings_test->get(self::SETTINGS_KEY_DISABLED_QUESTION_TYPES)) !== null) {
93 $global_settings = $global_settings->withDisabledQuestionTypes(explode(',', $disabled_question_types));
94 }
95
96 if (($manual_scoring_legacy = $this->settings_test->get(self::SETTINGS_KEY_MANUAL_SCORING_LEGACY)) !== null) {
97 $this->migrateLegacyManualScoring($manual_scoring_legacy);
98 }
99
100 if (($manual_scoring_enabled = $this->settings_test->get(self::SETTINGS_KEY_MANUAL_SCORING_ENABLED)) !== null) {
101 $global_settings = $global_settings->withManualScoringEnabled($manual_scoring_enabled === '1');
102 }
103
104 if (($adjusting_questions_with_results_allowed = $this->settings_test->get(self::SETTINGS_KEY_ADJUSTING_QUESTIONS_WITH_RESULTS_ALLOWED)) !== null) {
105 $global_settings = $global_settings->withAdjustingQuestionsWithResultsAllowed($adjusting_questions_with_results_allowed === '1');
106 }
107
108 if (($page_editor_enabled = $this->settings_global->get(self::SETTINGS_KEY_PAGE_EDITOR_ENABLED)) !== null) {
109 $global_settings = $global_settings->withPageEditorEnabled($page_editor_enabled === '1');
110 }
111
112 return $global_settings;
113 }
114
115 public function storeGlobalSettings(GlobalTestSettings $global_settings): void
116 {
117 $this->settings_test->set(self::SETTINGS_KEY_PROCESS_LOCK_MODE, $global_settings->getProcessLockMode()->value);
118 $this->settings_test->set(self::SETTINGS_KEY_IMAGE_MAP_LINE_COLOR, $global_settings->getImageMapLineColor());
119 $this->settings_test->set(self::SETTINGS_KEY_UNIQUE_USER_IDENTIFIER, $global_settings->getUserIdentifier()->value);
120 $this->settings_test->set(self::SETTINGS_KEY_SKILL_TRIGGERING_NUMBER_OF_ANSWERS, (string) $global_settings->getSkillTriggeringNumberOfAnswers());
121 $this->settings_test->set(self::SETTINGS_KEY_EXPORT_ESSAY_QUESTIONS_AS_HTML, $global_settings->getExportEssayQuestionsAsHtml() ? '1' : '0');
122 $this->settings_test->set(self::SETTINGS_KEY_DISABLED_QUESTION_TYPES, implode(',', $global_settings->getDisabledQuestionTypes()));
123 $this->settings_test->set(self::SETTINGS_KEY_MANUAL_SCORING_ENABLED, $global_settings->isManualScoringEnabled() ? '1' : '0');
124 $this->settings_test->set(self::SETTINGS_KEY_ADJUSTING_QUESTIONS_WITH_RESULTS_ALLOWED, $global_settings->isAdjustingQuestionsWithResultsAllowed() ? '1' : '0');
125
126 $this->global_test_settings = $global_settings;
127 }
128
130 {
131 if ($this->test_logging_settings === null) {
132 $this->test_logging_settings = new TestLoggingSettings(
133 $this->settings_test->get(self::SETTINGS_KEY_LOGGING_ENABLED) === '1',
134 $this->settings_test->get(self::SETTINGS_KEY_IP_LOGGING_ENABLED) !== '0'
135 );
136 }
138 }
139
140 public function storeLoggingSettings(TestLoggingSettings $logging_settings): void
141 {
142 $this->settings_test->set(self::SETTINGS_KEY_LOGGING_ENABLED, $logging_settings->isLoggingEnabled() ? '1' : '0');
143 $this->settings_test->set(self::SETTINGS_KEY_IP_LOGGING_ENABLED, $logging_settings->isIPLoggingEnabled() ? '1' : '0');
144 }
145
146 private function migrateLegacyQuestionTypes(string $legacy_types): void
147 {
148 $this->settings_test->delete(self::SETTINGS_KEY_DISABLED_QUESTION_TYPES_LEGACY);
149 $this->settings_test->set(self::SETTINGS_KEY_DISABLED_QUESTION_TYPES, implode(',', unserialize($legacy_types, ['allowed_classes' => false]) ?? []));
150 }
151
152 private function migrateLegacyManualScoring(string $legacy_manual_scoring): void
153 {
154 $this->settings_test->delete(self::SETTINGS_KEY_MANUAL_SCORING_LEGACY);
155 $this->settings_test->set(self::SETTINGS_KEY_MANUAL_SCORING_ENABLED, array_filter(array_map('intval', explode(',', $legacy_manual_scoring))) !== [] ? '1' : '0');
156 }
157}
migrateLegacyManualScoring(string $legacy_manual_scoring)
Definition: Repository.php:152
storeLoggingSettings(TestLoggingSettings $logging_settings)
Definition: Repository.php:140
__construct(private \ilSetting $settings_global, private \ilSetting $settings_test)
Definition: Repository.php:44
storeGlobalSettings(GlobalTestSettings $global_settings)
Definition: Repository.php:115
migrateLegacyQuestionTypes(string $legacy_types)
Definition: Repository.php:146
ILIAS Setting Class.