From a76fd9a3dbc92f7d9d44ca7cd991869954ce9efd Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Wed, 15 May 2024 20:09:50 +0000
Subject: [PATCH] fixes #4168

Closes #4168

Merge request studip/studip!3006
---
 app/controllers/admin/datafields.php           | 10 ++++++----
 app/controllers/course/wizard.php              |  9 ++-------
 app/views/course/statusgroups/batch_action.php | 14 +++++++-------
 app/views/course/wizard/summary.php            | 11 ++++++++++-
 app/views/shared/modul/_modul.php              |  8 ++++----
 app/views/shared/modul/_modul_ohne_lv.php      | 14 +++++++-------
 6 files changed, 36 insertions(+), 30 deletions(-)

diff --git a/app/controllers/admin/datafields.php b/app/controllers/admin/datafields.php
index bf390c9fcbc..6019a1385b3 100644
--- a/app/controllers/admin/datafields.php
+++ b/app/controllers/admin/datafields.php
@@ -94,15 +94,17 @@ class Admin_DatafieldsController extends AuthenticatedController
 
         if (Request::submitted('uebernehmen')) {
             if (Request::get('datafield_name')) {
-                $datafield->name          = Request::i18n('datafield_name');
-                if ($datafield->object_type === 'moduldeskriptor'
-                        || $datafield->object_type === 'modulteildeskriptor') {
+                $datafield->name = Request::i18n('datafield_name');
+                if (
+                    $datafield->object_type === 'moduldeskriptor'
+                    || $datafield->object_type === 'modulteildeskriptor'
+                ) {
                     $object_class = implode(',', Request::getArray('object_class'));
                     $datafield->object_class  = (trim($object_class) && $object_class != 'NULL') ? $object_class : null;
                 } elseif ($datafield->object_type === 'studycourse') {
                     $datafield->object_class  = trim(Request::option('object_class', 'all_settings'));
                 } else {
-                    $datafield->object_class  = array_sum(Request::getArray('object_class')) ?: null;
+                    $datafield->object_class  = array_sum(Request::intArray('object_class')) ?: null;
                 }
                 $datafield->edit_perms     = Request::get('edit_perms');
                 $datafield->view_perms     = Request::get('visibility_perms');
diff --git a/app/controllers/course/wizard.php b/app/controllers/course/wizard.php
index 636d6eb4fe5..dffb1c9a554 100644
--- a/app/controllers/course/wizard.php
+++ b/app/controllers/course/wizard.php
@@ -25,14 +25,9 @@ class Course_WizardController extends AuthenticatedController
     public function before_filter (&$action, &$args)
     {
         parent::before_filter($action, $args);
-        global $perm;
-        if (Request::isXhr()) {
-            $this->dialog = true;
-        }
-
-        $sidebar = Sidebar::get();
 
-        $this->studygroup = Request::int('studygroup') ?: $this->flash['studygroup'];
+        $this->dialog = Request::isXhr();
+        $this->studygroup = Request::bool('studygroup', $this->flash['studygroup'] ?? false);
 
         if (!$this->studygroup) {
             PageLayout::setTitle(_('Neue Veranstaltung anlegen'));
diff --git a/app/views/course/statusgroups/batch_action.php b/app/views/course/statusgroups/batch_action.php
index 10bec38f777..5600d3a1014 100644
--- a/app/views/course/statusgroups/batch_action.php
+++ b/app/views/course/statusgroups/batch_action.php
@@ -1,26 +1,26 @@
 <?php
-    if ($edit_size) {
+    if (!empty($edit_size)) {
         echo $this->render_partial('course/statusgroups/_edit_groups_size', compact('groups'));
-    } elseif ($edit_selfassign) {
+    } elseif (!empty($edit_selfassign)) {
         echo $this->render_partial('course/statusgroups/_edit_groups_selfassign', compact('groups'));
-    } elseif ($askdelete) {
+    } elseif (!empty($askdelete)) {
         echo $this->render_partial('course/statusgroups/_askdelete_groups', compact('groups'));
-    } elseif ($movemembers) {
+    } elseif (!empty($movemembers)) {
         echo $this->render_partial(
             'course/statusgroups/_move_members',
             compact('target_groups', 'members', 'source_group')
         );
-    } elseif ($copymembers) {
+    } elseif (!empty($copymembers)) {
         echo $this->render_partial(
             'course/statusgroups/_copy_members',
             compact('target_groups', 'members', 'source_group')
         );
-    } elseif ($deletemembers) {
+    } elseif (!empty($deletemembers)) {
         echo $this->render_partial(
             'course/statusgroups/_askdelete_members',
             compact('members', 'source_group')
         );
-    } elseif ($cancelmembers) {
+    } elseif (!empty($cancelmembers)) {
         echo $this->render_partial(
             'course/statusgroups/_askcancel_members',
             compact('members')
diff --git a/app/views/course/wizard/summary.php b/app/views/course/wizard/summary.php
index 423ad18350c..65493623472 100644
--- a/app/views/course/wizard/summary.php
+++ b/app/views/course/wizard/summary.php
@@ -1,4 +1,13 @@
-<form class="default" action="<?= $controller->url_for('course/wizard/process', $stepnumber, $temp_id) ?>" method="post">
+<?php
+/**
+ * @var Course_WikiController $controller
+ * @var int $stepnumber
+ * @var string $temp_id
+ * @var bool $dialog
+ * @var Course|null $source_course
+ */
+?>
+<form class="default" action="<?= $controller->link_for('course/wizard/process', $stepnumber, $temp_id) ?>" method="post">
 <fieldset>
     <legend><?= _('Anlegen der Veranstaltung') ?></legend>
 
diff --git a/app/views/shared/modul/_modul.php b/app/views/shared/modul/_modul.php
index c813c443621..461e4864c5e 100644
--- a/app/views/shared/modul/_modul.php
+++ b/app/views/shared/modul/_modul.php
@@ -46,7 +46,7 @@
             <td><strong><?= _('Semester der erstmaligen Durchführung') ?></strong></td>
             <td data-mvv-field="mvv_modul.start"><?= htmlReady($startSemester['name'] ?? '') ?></td>
         </tr>
-        <? if ($instituteName) : ?>
+        <? if (!empty($instituteName)) : ?>
         <tr>
             <td><strong><?= _('Fachbereich/Institut') ?></strong></td>
             <td data-mvv-field="mvv_modul_inst"><?= htmlReady($instituteName) ?></td>
@@ -135,7 +135,7 @@
             <td><strong><?= _('Modulinhalte') ?></strong></td>
             <td data-mvv-field="mvv_modul_deskriptor.inhalte"><?= formatReady($modulDeskriptor->inhalte) ?></td>
         </tr>
-        <? if ($type !== 3) : ?>
+        <? if (!isset($type) || $type !== 3) : ?>
         <tr>
             <td><strong><?= ngettext('Lehrveranstaltungsform', 'Lehrveranstaltungsformen', count($modul->modulteile)) ?></strong></td>
             <td data-mvv-field="mvv_modulteil_deskriptor.lernlehrform">
@@ -171,7 +171,7 @@
         </tr>
         <tr>
             <td><strong><?= _('Prüfungsebene') ?></strong></td>
-            <td data-mvv-field="mvv_modul.pruef_ebene"><?= htmlReady($pruefungsEbene) ?></td>
+            <td data-mvv-field="mvv_modul.pruef_ebene"><?= htmlReady($pruefungsEbene ?? '') ?></td>
         </tr>
         <tr>
             <td><strong><?= _('Credit-Points') ?></strong></td>
@@ -180,7 +180,7 @@
         <tr>
             <td><strong><?= _('Modulabschlussnote') ?></strong></td>
             <td>
-                <? if ($type !== 3) : ?>
+                <? if (!isset($type) || $type !== 3) : ?>
                     <? $nummer_modulteil = 1; ?>
                     <? $note = []; ?>
                     <? foreach ($modul->modulteile as $modulteil): ?>
diff --git a/app/views/shared/modul/_modul_ohne_lv.php b/app/views/shared/modul/_modul_ohne_lv.php
index 07e53102b1d..f3c74ec3ad6 100644
--- a/app/views/shared/modul/_modul_ohne_lv.php
+++ b/app/views/shared/modul/_modul_ohne_lv.php
@@ -3,12 +3,12 @@
         <? $modulSumme =  $modul->wl_selbst + $modul->wl_pruef ?>
         <tr>
             <td style="width: 30%;"><strong><?= _('Workload selbstgestaltete Arbeit') ?></strong></td>
-            <td style="width: 70%;" data-mvv-field="mvv_modul.wl_selbst mvv_modul_deskriptor.kommentar_wl_selbst"><?= htmlReady($modul->wl_selbst) ?> <?= MVVController::trim($modulDeskriptor->kommentar_wl_selbst) ? sprintf(" (%s)", formatReady($modulDeskriptor->kommentar_wl_selbst)) : '' ?></td>
+            <td style="width: 70%;" data-mvv-field="mvv_modul.wl_selbst mvv_modul_deskriptor.kommentar_wl_selbst"><?= htmlReady($modul->wl_selbst) ?> <?= MVVController::trim($modulDeskriptor->kommentar_wl_selbst ?? '') ? sprintf(" (%s)", formatReady($modulDeskriptor->kommentar_wl_selbst)) : '' ?></td>
 
         </tr>
         <tr>
             <td style="width: 30%;"><strong><?= _('Workload Prüfung incl. Vorbereitung') ?></strong></td>
-            <td style="width: 70%;" data-mvv-field="mvv_modul.wl_pruef mvv_modul_deskriptor.kommentar_wl_pruef"><?= htmlReady($modul->wl_pruef) ?> <?= MVVController::trim($modulDeskriptor->kommentar_wl_pruef) ? sprintf(" (%s)", formatReady($modulDeskriptor->kommentar_wl_pruef)) : '' ?></td>
+            <td style="width: 70%;" data-mvv-field="mvv_modul.wl_pruef mvv_modul_deskriptor.kommentar_wl_pruef"><?= htmlReady($modul->wl_pruef) ?> <?= MVVController::trim($modulDeskriptor->kommentar_wl_pruef ?? '') ? sprintf(" (%s)", formatReady($modulDeskriptor->kommentar_wl_pruef)) : '' ?></td>
 
         </tr>
         <tr>
@@ -17,21 +17,21 @@
         </tr>
     </tbody>
 </table>
-<table class="mvv-modul-details" data-mvv-id="<?= $modulDeskriptor?$modulDeskriptor->getId():''; ?>" data-mvv-type="moduldeskriptor">
+<table class="mvv-modul-details" data-mvv-id="<?= isset($modulDeskriptor) ? $modulDeskriptor->getId() : ''; ?>" data-mvv-type="moduldeskriptor">
     <tbody>
-        <? if (trim($modulDeskriptor->pruef_vorleistung)) : ?>
+        <? if (trim($modulDeskriptor->pruef_vorleistung ?? '')) : ?>
         <tr>
             <td style="width: 30%;"><strong><?= _('Prüfungsvorleistung') ?></strong></td>
-            <td style="width: 70%;" data-mvv-field="mvv_modul_deskriptor.pruef_vorleistung" ><?= formatReady($modulDeskriptor->pruef_vorleistung) ?></td>
+            <td style="width: 70%;" data-mvv-field="mvv_modul_deskriptor.pruef_vorleistung" ><?= formatReady($modulDeskriptor->pruef_vorleistung ?? '') ?></td>
         </tr>
         <? endif; ?>
         <tr>
             <td style="width: 30%;"><strong><?= _('Prüfungsform') ?></strong></td>
-            <td style="width: 70%;" data-mvv-field="mvv_modul_deskriptor.pruef_leistung"><?= formatReady($modulDeskriptor->pruef_leistung) ?></td>
+            <td style="width: 70%;" data-mvv-field="mvv_modul_deskriptor.pruef_leistung"><?= formatReady($modulDeskriptor->pruef_leistung ?? '') ?></td>
         </tr>
         <tr>
             <td style="width: 30%;"><strong><?= _('Wiederholungsprüfung') ?></strong></td>
-            <td style="width: 70%;" data-mvv-field="mvv_modul_deskriptor.pruef_wiederholung"><?= formatReady($modulDeskriptor->pruef_wiederholung) ?></td>
+            <td style="width: 70%;" data-mvv-field="mvv_modul_deskriptor.pruef_wiederholung"><?= formatReady($modulDeskriptor->pruef_wiederholung ?? '') ?></td>
         </tr>
     </tbody>
 </table>
-- 
GitLab