From d7fafc10b8621c583061094919d147a4ea4be5ae Mon Sep 17 00:00:00 2001 From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de> Date: Fri, 24 May 2024 15:34:23 +0200 Subject: [PATCH] fix warnings on PHP 8, fixes #160 --- exercises/cloze_exercise.php | 2 +- exercises/lt_exercise.php | 2 +- exercises/me_exercise.php | 2 +- exercises/seq_exercise.php | 2 +- exercises/tb_exercise.php | 8 ++++++++ lib/DummyExercise.php | 10 ++++++++-- views/exercises/cloze_exercise/edit.php | 10 +++------- views/exercises/lt_exercise/edit.php | 12 ++++-------- views/exercises/seq_exercise/edit.php | 8 ++------ views/exercises/tb_exercise/edit.php | 12 ++++++------ views/exercises/tb_exercise/print.php | 10 +++++----- views/sheets/print_assignment.php | 5 +++++ 12 files changed, 45 insertions(+), 38 deletions(-) diff --git a/exercises/cloze_exercise.php b/exercises/cloze_exercise.php index 7ba11ca..3c6c9f3 100644 --- a/exercises/cloze_exercise.php +++ b/exercises/cloze_exercise.php @@ -194,7 +194,7 @@ class cloze_exercise extends Exercise { $template = parent::getViewTemplate($view, $solution, $assignment, $user_id); - if ($solution) { + if ($solution && $solution->id) { $template->results = $this->evaluateItems($solution); } diff --git a/exercises/lt_exercise.php b/exercises/lt_exercise.php index 1064612..746f272 100644 --- a/exercises/lt_exercise.php +++ b/exercises/lt_exercise.php @@ -235,7 +235,7 @@ class lt_exercise extends Exercise { $template = parent::getViewTemplate($view, $solution, $assignment, $user_id); - if ($solution) { + if ($solution && $solution->id) { $template->results = $this->evaluateItems($solution); } diff --git a/exercises/me_exercise.php b/exercises/me_exercise.php index 29c8c6e..9aa2c70 100644 --- a/exercises/me_exercise.php +++ b/exercises/me_exercise.php @@ -195,7 +195,7 @@ class me_exercise extends Exercise { $template = parent::getViewTemplate($view, $solution, $assignment, $user_id); - if ($solution) { + if ($solution && $solution->id) { $template->results = $this->evaluateItems($solution); } diff --git a/exercises/seq_exercise.php b/exercises/seq_exercise.php index 2373dc0..c4c478f 100644 --- a/exercises/seq_exercise.php +++ b/exercises/seq_exercise.php @@ -193,7 +193,7 @@ class seq_exercise extends Exercise { $template = parent::getViewTemplate($view, $solution, $assignment, $user_id); - if ($solution) { + if ($solution && $solution->id) { $template->results = $this->evaluateItems($solution); } diff --git a/exercises/tb_exercise.php b/exercises/tb_exercise.php index 950c21d..67a22c8 100644 --- a/exercises/tb_exercise.php +++ b/exercises/tb_exercise.php @@ -79,6 +79,14 @@ class tb_exercise extends Exercise } } + /** + * Return the layout of this task (text, markup, code or none). + */ + public function getLayout() + { + return isset($this->task['layout']) ? $this->task['layout'] : 'text'; + } + /** * Evaluates a student's solution for the individual items in this * exercise. Returns an array of ('points' => float, 'safe' => boolean). diff --git a/lib/DummyExercise.php b/lib/DummyExercise.php index 8868f8a..b0e9f9c 100644 --- a/lib/DummyExercise.php +++ b/lib/DummyExercise.php @@ -42,7 +42,10 @@ class DummyExercise extends Exercise */ public function getEditTemplate($assignment) { - return $GLOBALS['template_factory']->open('shared/string'); + $template = $GLOBALS['template_factory']->open('shared/string'); + $template->content = ''; + + return $template; } /** @@ -50,6 +53,9 @@ class DummyExercise extends Exercise */ public function getViewTemplate($view, $solution, $assignment, $user_id) { - return $GLOBALS['template_factory']->open('shared/string'); + $template = $GLOBALS['template_factory']->open('shared/string'); + $template->content = ''; + + return $template; } } diff --git a/views/exercises/cloze_exercise/edit.php b/views/exercises/cloze_exercise/edit.php index 485cf97..000302a 100644 --- a/views/exercises/cloze_exercise/edit.php +++ b/views/exercises/cloze_exercise/edit.php @@ -42,24 +42,20 @@ <label> <?= _vips('Art des Textvergleichs') ?> - <? if ($exercise->task['compare']): ?> - <? $checked[$exercise->task['compare']] = 'selected' ?> - <? endif ?> - <select name="compare" onchange="$(this).parent().next('label').toggle($(this).val() === 'numeric')"> <option value=""> <?= _vips('Groß-/Kleinschreibung unterscheiden') ?> </option> - <option value="ignorecase" <?= $checked['ignorecase'] ?>> + <option value="ignorecase" <?= isset($exercise->task['compare']) && $exercise->task['compare'] === 'ignorecase' ? 'selected' : '' ?>> <?= _vips('Groß-/Kleinschreibung ignorieren') ?> </option> - <option value="numeric" <?= $checked['numeric'] ?>> + <option value="numeric" <?= isset($exercise->task['compare']) && $exercise->task['compare'] === 'numeric' ? 'selected' : '' ?>> <?= _vips('Numerischer Wertevergleich (ggf. mit Einheit)') ?> </option> </select> </label> - <label style="<?= $checked['numeric'] ? '' : 'display: none;' ?>"> + <label style="<?= isset($exercise->task['compare']) && $exercise->task['compare'] === 'numeric' ? '' : 'display: none;' ?>"> <?= _vips('Erlaubte relative Abweichung vom korrekten Wert') ?> <br> <input type="text" class="size-s" style="display: inline; text-align: right;" diff --git a/views/exercises/lt_exercise/edit.php b/views/exercises/lt_exercise/edit.php index f6beb31..10deffa 100644 --- a/views/exercises/lt_exercise/edit.php +++ b/views/exercises/lt_exercise/edit.php @@ -70,27 +70,23 @@ <label> <?= _vips('Art des Textvergleichs') ?> - <? if ($exercise->task['compare']): ?> - <? $checked[$exercise->task['compare']] = 'selected' ?> - <? endif ?> - <select name="compare" onchange="$(this).parent().next('label').toggle($(this).val() === 'numeric')"> <option value=""> <?= _vips('Groß-/Kleinschreibung ignorieren') ?> </option> - <option value="levenshtein" <?= $checked['levenshtein'] ?>> + <option value="levenshtein" <?= isset($exercise->task['compare']) && $exercise->task['compare'] === 'levenshtein' ? 'selected' : '' ?>> <?= _vips('Textähnlichkeit (Levenshtein-Distanz)') ?> </option> - <option value="soundex" <?= $checked['soundex'] ?>> + <option value="soundex" <?= isset($exercise->task['compare']) && $exercise->task['compare'] === 'soundex' ? 'selected' : '' ?>> <?= _vips('Ähnlichkeit der Aussprache (Soundex)') ?> </option> - <option value="numeric" <?= $checked['numeric'] ?>> + <option value="numeric" <?= isset($exercise->task['compare']) && $exercise->task['compare'] === 'numeric' ? 'selected' : '' ?>> <?= _vips('Numerischer Wertevergleich (ggf. mit Einheit)') ?> </option> </select> </label> -<label style="<?= $checked['numeric'] ? '' : 'display: none;' ?>"> +<label style="<?= isset($exercise->task['compare']) && $exercise->task['compare'] === 'numeric' ? '' : 'display: none;' ?>"> <?= _vips('Erlaubte relative Abweichung vom korrekten Wert') ?> <br> <input type="text" class="size-s" style="display: inline; text-align: right;" diff --git a/views/exercises/seq_exercise/edit.php b/views/exercises/seq_exercise/edit.php index 08d27cb..9f08d7f 100644 --- a/views/exercises/seq_exercise/edit.php +++ b/views/exercises/seq_exercise/edit.php @@ -35,18 +35,14 @@ <label> <?= _vips('Verfahren zur Punktevergabe') ?> - <? if ($exercise->task['compare']): ?> - <? $checked[$exercise->task['compare']] = 'selected' ?> - <? endif ?> - <select name="compare"> <option value=""> <?= _vips('Punkte nur bei vollständig korrekter Lösung') ?> </option> - <option value="position" <?= $checked['position'] ?>> + <option value="position" <?= isset($exercise->task['compare']) && $exercise->task['compare'] === 'position' ? 'selected' : '' ?>> <?= _vips('Punkte für Antworten an den korrekten Positionen') ?> </option> - <option value="sequence" <?= $checked['sequence'] ?>> + <option value="sequence" <?= isset($exercise->task['compare']) && $exercise->task['compare'] === 'sequence' ? 'selected' : '' ?>> <?= _vips('Punkte für Paare von Antworten in korrekter Reihenfolge') ?> </option> </select> diff --git a/views/exercises/tb_exercise/edit.php b/views/exercises/tb_exercise/edit.php index c2ab8cb..1071dcb 100644 --- a/views/exercises/tb_exercise/edit.php +++ b/views/exercises/tb_exercise/edit.php @@ -5,22 +5,22 @@ <option value=""> <?= _vips('Texteingabe - einfacher Text ohne Formatierungen') ?> </option> - <option value="markup" <? if ($exercise->task['layout'] === 'markup'): ?>selected<? endif ?>> + <option value="markup" <? if ($exercise->getLayout() === 'markup'): ?>selected<? endif ?>> <?= _vips('Texteingabe - Textformatierungen bei Eingabe der Lösung anbieten') ?> </option> - <option value="code" <? if ($exercise->task['layout'] === 'code'): ?>selected<? endif ?>> + <option value="code" <? if ($exercise->getLayout() === 'code'): ?>selected<? endif ?>> <?= _vips('Texteingabe - Programmcode (nichtproportionale Schriftart)') ?> </option> - <option value="none" <? if ($exercise->task['layout'] === 'none'): ?>selected<? endif ?>> + <option value="none" <? if ($exercise->getLayout() === 'none'): ?>selected<? endif ?>> <?= _vips('keine Texteingabe - nur Hochladen von Dateien erlauben') ?> </option> </select> </label> -<label class="none-hidden" style="<?= $exercise->task['layout'] === 'none' ? 'display: none;' : '' ?>"> +<label class="none-hidden" style="<?= $exercise->getLayout() === 'none' ? 'display: none;' : '' ?>"> <?= _vips('Vorgegebener Text im Antwortfeld') ?> <?= $this->render_partial('exercises/flexible_textarea', - ['name' => 'answer_default', 'value' => $exercise->task['template'], 'monospace' => $exercise->task['layout'] === 'code', 'wysiwyg' => $exercise->task['layout'] === 'markup']) ?> + ['name' => 'answer_default', 'value' => $exercise->task['template'], 'monospace' => $exercise->getLayout() === 'code', 'wysiwyg' => $exercise->getLayout() === 'markup']) ?> </label> <label> @@ -28,7 +28,7 @@ <textarea class="character_input size-l wysiwyg" name="answer_0" rows="<?= vips_textarea_size($exercise->task['answers'][0]['text']) ?>"><?= wysiwygReady($exercise->task['answers'][0]['text']) ?></textarea> </label> -<div class="none-hidden" style="<?= $exercise->task['layout'] === 'none' ? 'display: none;' : '' ?>"> +<div class="none-hidden" style="<?= $exercise->getLayout() === 'none' ? 'display: none;' : '' ?>"> <label> <?= _vips('Zeichenwähler') ?> diff --git a/views/exercises/tb_exercise/print.php b/views/exercises/tb_exercise/print.php index cf82852..391c411 100644 --- a/views/exercises/tb_exercise/print.php +++ b/views/exercises/tb_exercise/print.php @@ -1,4 +1,4 @@ -<? if ($exercise->task['layout'] !== 'none'): ?> +<? if ($exercise->getLayout() !== 'none'): ?> <? if ($print_correction && $solution->commented_solution != '') : ?> <div class="label-text"> <?= _vips('Kommentierte Lösung:') ?> @@ -11,9 +11,9 @@ </div> <div class="vips_output"> - <? if ($exercise->task['layout'] === 'markup'): ?> + <? if ($exercise->getLayout() === 'markup'): ?> <?= formatReady($response[0]) ?> - <? elseif ($exercise->task['layout'] === 'code'): ?> + <? elseif ($exercise->getLayout() === 'code'): ?> <pre><?= htmlReady($response[0]) ?></pre> <? else: ?> <?= htmlReady($response[0], true, true) ?> @@ -25,9 +25,9 @@ </div> <? else : ?> <div class="vips_output" style="min-height: 30em;"> - <? if ($exercise->task['layout'] === 'markup'): ?> + <? if ($exercise->getLayout() === 'markup'): ?> <?= formatReady($exercise->task['template']) ?> - <? elseif ($exercise->task['layout'] === 'code'): ?> + <? elseif ($exercise->getLayout() === 'code'): ?> <pre><?= htmlReady($exercise->task['template']) ?></pre> <? else: ?> <?= htmlReady($exercise->task['template'], true, true) ?> diff --git a/views/sheets/print_assignment.php b/views/sheets/print_assignment.php index 684230f..4fa307a 100644 --- a/views/sheets/print_assignment.php +++ b/views/sheets/print_assignment.php @@ -50,6 +50,11 @@ <? $solution = $assignment->getSolution($user_id, $exercise->id); ?> <? endif ?> + <? if (!$solution): ?> + <? $solution = new VipsSolution(); ?> + <? $solution->assignment = $assignment; ?> + <? endif ?> + <?= $this->render_partial('exercises/print_exercise', [ 'exercise' => $exercise, 'exercise_position' => $i + 1, -- GitLab