From a2a499c2d267561f1a445ffe02a8a5b5f96cf4c0 Mon Sep 17 00:00:00 2001
From: David Siegfried <david.siegfried@uni-vechta.de>
Date: Mon, 7 Nov 2022 13:04:29 +0000
Subject: [PATCH] prevent php8-warning, closes #1750

Closes #1750

Merge request studip/studip!1139
---
 app/controllers/course/basicdata.php          | 14 +++++---
 app/controllers/course/files.php              |  2 ++
 app/controllers/course/studygroup.php         | 10 ++++--
 app/controllers/file.php                      |  5 ++-
 app/controllers/files.php                     |  3 +-
 app/controllers/institute/files.php           |  2 ++
 app/controllers/messages.php                  |  2 ++
 app/controllers/resources/booking.php         |  7 ++--
 app/controllers/resources/room_request.php    | 32 ++++++++++---------
 app/views/admin/sem_classes/details.php       |  4 +--
 app/views/course/overview/index.php           | 16 +++++++---
 app/views/course/statusgroups/index.php       |  2 +-
 app/views/file/add_files_window.php           |  2 +-
 app/views/file/edit_license.php               |  4 +--
 .../resources/booking/_add_edit_form.php      |  8 ++---
 app/views/resources/resource/permissions.php  |  5 ++-
 app/views/resources/room_request/planning.php | 10 +++---
 lib/classes/Icon.class.php                    |  4 ++-
 lib/classes/MultiPersonSearch.class.php       | 22 ++++++-------
 lib/classes/Seminar.class.php                 |  3 ++
 lib/classes/TreeAbstract.class.php            |  2 +-
 .../sidebar/RoomClipboardWidget.class.php     |  2 +-
 lib/classes/visibility/UserPrivacy.php        |  2 +-
 .../classes/db/EvaluationObjectDB.class.php   |  2 +-
 .../evaluation_admin_overview.inc.php         | 11 ++++---
 .../evaluation_admin_overview.lib.php         |  9 +++---
 lib/filesystem/StandardFile.php               |  4 +--
 lib/models/ToolActivation.php                 |  3 +-
 lib/models/User.class.php                     | 22 +++++++------
 lib/seminar_open.php                          |  2 +-
 public/sendfile.php                           |  2 +-
 templates/dates/seminar_html.php              |  2 +-
 32 files changed, 128 insertions(+), 92 deletions(-)

diff --git a/app/controllers/course/basicdata.php b/app/controllers/course/basicdata.php
index 8a32bc34885..708e8db49f6 100644
--- a/app/controllers/course/basicdata.php
+++ b/app/controllers/course/basicdata.php
@@ -369,6 +369,7 @@ class Course_BasicdataController extends AuthenticatedController
              $this->url_for('avatar/update/course', $course_id),
              Icon::create('edit')
         );
+
         if ($this->deputies_enabled) {
             if (Deputy::isDeputy($GLOBALS['user']->id, $this->course_id)) {
                 $newstatus = 'dozent';
@@ -376,11 +377,16 @@ class Course_BasicdataController extends AuthenticatedController
             } else if (in_array($GLOBALS['user']->id, array_keys($this->dozenten)) && count($this->dozenten) > 1) {
                 $newstatus = 'deputy';
                 $text = _('Vertretung werden');
+            } else {
+                $newstatus = '';
+                $text = '';
+            }
+            if ($newstatus !== '' && $text !== '') {
+                $widget->addLink($text,
+                    $this->url_for('course/basicdata/switchdeputy', $this->course_id, $newstatus),
+                    Icon::create('persons')
+                );
             }
-            $widget->addLink($text,
-                 $this->url_for('course/basicdata/switchdeputy', $this->course_id, $newstatus),
-                 Icon::create('persons')
-            );
         }
         $sidebar->addWidget($widget);
         if ($GLOBALS['perm']->have_studip_perm('admin', $this->course_id)) {
diff --git a/app/controllers/course/files.php b/app/controllers/course/files.php
index 6cfef6e750d..2cb69a881d1 100644
--- a/app/controllers/course/files.php
+++ b/app/controllers/course/files.php
@@ -194,6 +194,8 @@ class Course_FilesController extends AuthenticatedController
         //find all files in all subdirectories:
         list($this->files, $this->folders) = array_values(FileManager::getFolderFilesRecursive($this->topFolder, $GLOBALS['user']->id));
 
+        $this->table_title = '';
+        $this->pagination_html = '';
         $this->range_type = 'course';
         $this->show_default_sidebar = true;
         $this->form_action = $this->url_for('file/bulk/' . $folder->getId());
diff --git a/app/controllers/course/studygroup.php b/app/controllers/course/studygroup.php
index b327a1afcb3..fc55bf560a1 100644
--- a/app/controllers/course/studygroup.php
+++ b/app/controllers/course/studygroup.php
@@ -48,7 +48,7 @@ class Course_StudygroupController extends AuthenticatedController
         }
 
         // Obtain default view
-        $default_view = $user_cfg[$course_id] ?: 'gallery';
+        $default_view = $user_cfg[$course_id] ?? 'gallery';
         $view = Request::option('view', $default_view);
         if (!in_array($view, words('gallery list'))) {
             $view = 'gallery';
@@ -91,7 +91,11 @@ class Course_StudygroupController extends AuthenticatedController
             $stmt->execute([$GLOBALS['user']->id, $id]);
             $data = $stmt->fetch();
 
-            $membership_requested = $data['status'] === 'accepted';
+            if (isset($data['status'])) {
+                $membership_requested = $data['status'] === 'accepted';
+            } else {
+                $membership_requested = false;
+            }
             $invited = StudygroupModel::isInvited($GLOBALS['user']->id, $id);
 
             if (!preg_match('/^(' . preg_quote($GLOBALS['CANONICAL_RELATIVE_PATH_STUDIP'], '/') . ')?([a-zA-Z0-9_-]+\.php)([a-zA-Z0-9_?&=-]*)$/', Request::get('send_from_search_page'))) {
@@ -510,7 +514,7 @@ class Course_StudygroupController extends AuthenticatedController
         $this->sem_class        = $sem->getSemClass();
         $this->invitedMembers   = StudygroupModel::getInvitations($id);
         $this->rechte           = $GLOBALS['perm']->have_studip_perm('tutor', $id);
-
+        $this->page = null;
         $this->setupMembersSidebar($sem);
     }
 
diff --git a/app/controllers/file.php b/app/controllers/file.php
index f41d87ba0b6..e4c09d36cfc 100644
--- a/app/controllers/file.php
+++ b/app/controllers/file.php
@@ -874,7 +874,7 @@ class FileController extends AuthenticatedController
                 $this->to_folder_type = new StandardFolder($folder);
             }
         }
-
+        $this->filesystemplugin = null;
         if (Request::get('to_plugin')) {
             $folder_id = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], "dispatch.php/file/choose_folder") + strlen("dispatch.php/file/choose_folder"));
             if (strpos($folder_id, "?") !== false) {
@@ -1333,6 +1333,7 @@ class FileController extends AuthenticatedController
 
     public function choose_file_action($folder_id = null)
     {
+        $this->filesystemplugin = null;
         if (Request::get('to_plugin')) {
             $to_plugin = PluginManager::getInstance()->getPlugin(Request::get('to_plugin'));
             $this->to_folder_type = $to_plugin->getFolder(Request::get('to_folder_id', ''));
@@ -1673,6 +1674,7 @@ class FileController extends AuthenticatedController
     public function add_url_action($folder_id)
     {
         $this->content_terms_of_use_entries = ContentTermsOfUse::findAll();
+        $this->content_terms_of_use_id = Request::get('content_terms_of_use_id');
         if (Request::get("to_plugin")) {
             $folder_id = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], "dispatch.php/file/add_url/") + strlen("dispatch.php/file/add_url/"));
             if (strpos($folder_id, "?") !== false) {
@@ -1780,6 +1782,7 @@ class FileController extends AuthenticatedController
             ];
         }
 
+        $new_folder = null;
         if (Request::submitted('create') || Request::submitted('force_creation')) {
             CSRFProtection::verifyUnsafeRequest();
 
diff --git a/app/controllers/files.php b/app/controllers/files.php
index aaa26ef5669..9ed804f5ae5 100644
--- a/app/controllers/files.php
+++ b/app/controllers/files.php
@@ -627,7 +627,8 @@ class FilesController extends AuthenticatedController
         if (!$folder) {
             throw new Exception(_('Fehler beim Laden des Hauptordners!'));
         }
-
+        $this->table_title = '';
+        $this->pagination_html = '';
         $this->topFolder = $folder->getTypedFolder();
         $this->form_action = $this->link_for('file/bulk/' . $this->topFolder->getId());
         $this->show_default_sidebar = true;
diff --git a/app/controllers/institute/files.php b/app/controllers/institute/files.php
index 9f2cdd5559b..6f622ae8bf1 100644
--- a/app/controllers/institute/files.php
+++ b/app/controllers/institute/files.php
@@ -148,6 +148,8 @@ class Institute_FilesController extends AuthenticatedController
         //find all files in all subdirectories:
         list($this->files, $this->folders) = array_values(FileManager::getFolderFilesRecursive($this->topFolder, $GLOBALS['user']->id));
 
+        $this->table_title = '';
+        $this->pagination_html = '';
         $this->range_type = 'institute';
         $this->show_default_sidebar = true;
         $this->enable_table_filter = true;
diff --git a/app/controllers/messages.php b/app/controllers/messages.php
index 38f0d23704c..274e2eb27da 100644
--- a/app/controllers/messages.php
+++ b/app/controllers/messages.php
@@ -141,6 +141,8 @@ class MessagesController extends AuthenticatedController {
         $attachment_folder = Folder::findOneByRange_id($this->message->id);
         if ($attachment_folder) {
             $this->attachment_folder = $attachment_folder->getTypedFolder();
+        } else {
+            $this->attachment_folder = null;
         }
 
 
diff --git a/app/controllers/resources/booking.php b/app/controllers/resources/booking.php
index 47ddd4ca443..d05862d7877 100644
--- a/app/controllers/resources/booking.php
+++ b/app/controllers/resources/booking.php
@@ -54,6 +54,7 @@ class Resources_BookingController extends AuthenticatedController
                 'autor'
             );
         }
+        $this->no_reload = Request::submitted('no_reload');
     }
 
 
@@ -922,17 +923,15 @@ class Resources_BookingController extends AuthenticatedController
         foreach ($this->resources as $resource) {
             //Check if the resource is a room and if the room is part of a
             //separable room.
+            //We must display a warning.
 
             if ($resource instanceof Room) {
                 $other_room_parts = Room::findOtherRoomParts($resource);
-
+                $simple_message = true;
                 if ($other_room_parts) {
                     $this->other_room_parts[$resource->id] = $other_room_parts;
                     $this->separable_rooms_selected = true;
 
-                    //We must display a warning.
-                    $simple_message = true;
-
                     if ($only_one_room and $other_room_parts) {
                         //If there is only one room we can be informative.
                         $simple_message = false;
diff --git a/app/controllers/resources/room_request.php b/app/controllers/resources/room_request.php
index e15a432a244..050cf174e92 100644
--- a/app/controllers/resources/room_request.php
+++ b/app/controllers/resources/room_request.php
@@ -339,17 +339,19 @@ class Resources_RoomRequestController extends AuthenticatedController
         $sql .= " GROUP BY resource_requests.id ";
 
         // if table should be sorted by marking state
-        switch ($this->filter['sorting']) {
-            case 1:
-                $sql .= " ORDER BY resource_requests.marked ";
-                break;
-            case 10:
-                $sql .= " ORDER BY resource_requests.chdate ";
-                break;
-            default:
-                $sql .= " ORDER BY mkdate ";
-        }
-        $sql .= $this->filter['sort_order'] === 'desc' ? 'DESC' : 'ASC';
+        if (isset($this->filter['sorting'])) {
+            switch ($this->filter['sorting']) {
+                case 1:
+                    $sql .= " ORDER BY resource_requests.marked ";
+                    break;
+                case 10:
+                    $sql .= " ORDER BY resource_requests.chdate ";
+                    break;
+                default:
+                    $sql .= " ORDER BY mkdate ";
+            }
+            $sql .= $this->filter['sort_order'] === 'desc' ? 'DESC' : 'ASC';
+        }
 
         $requests = RoomRequest::findBySql($sql, $sql_params);
         $result = [];
@@ -2657,7 +2659,7 @@ class Resources_RoomRequestController extends AuthenticatedController
             $element = new SelectElement(
                 $class_id,
                 $class['name'],
-                $this->filter['course_type'] === (string)$class_id
+                isset($this->filter['course_type']) && ($this->filter['course_type'] === (string)$class_id)
             );
             $list->addElement(
                 $element->setAsHeader(),
@@ -2668,7 +2670,7 @@ class Resources_RoomRequestController extends AuthenticatedController
                 $element = new SelectElement(
                     $class_id . '_' . $id,
                     $result['name'],
-                    $this->filter['course_type'] === $class_id . '_' . $id
+                    isset($this->filter['course_type']) && ($this->filter['course_type'] === $class_id . '_' . $id)
                 );
                 $list->addElement(
                     $element->setIndentLevel(1),
@@ -2698,7 +2700,7 @@ class Resources_RoomRequestController extends AuthenticatedController
         $widget->addElement(new WidgetElement('<br>'));
         $widget->addCheckbox(
             _('Nur mit Raumangabe'),
-            $this->filter['specific_requests'],
+            !empty($this->filter['specific_requests']),
             $this->planningURL(['toggle_specific_requests' => 1])
         );
         $widget->addCheckbox(
@@ -2710,7 +2712,7 @@ class Resources_RoomRequestController extends AuthenticatedController
 
         $this->requests = $this->getFilteredRoomRequests();
 
-        if ($this->filter['room_id']) {
+        if (!empty($this->filter['room_id'])) {
             $this->resource = Resource::find($this->filter['room_id']);
             if (!$this->resource) {
                 PageLayout::postError(
diff --git a/app/views/admin/sem_classes/details.php b/app/views/admin/sem_classes/details.php
index 6cbfed3eb56..b6b8a35ee12 100644
--- a/app/views/admin/sem_classes/details.php
+++ b/app/views/admin/sem_classes/details.php
@@ -220,8 +220,8 @@
                             'plugin' => $module_info,
                             'sem_class' => $sem_class,
                             'plugin_id' => $module_name,
-                            'activated' => $sem_class['modules'][$module_name]['activated'],
-                            'sticky' => $sem_class['modules'][$module_name]['sticky']
+                            'activated' => $sem_class['modules'][$module_name]['activated'] ?? false,
+                            'sticky' => $sem_class['modules'][$module_name]['sticky'] ?? false,
                         ]
                     )?>
                 <? endforeach ?>
diff --git a/app/views/course/overview/index.php b/app/views/course/overview/index.php
index 8fc61b77e28..39d801d9dba 100644
--- a/app/views/course/overview/index.php
+++ b/app/views/course/overview/index.php
@@ -55,15 +55,23 @@
 <?php
 
 // Anzeige von News
-echo $news;
+if (!empty($news)) {
+    echo $news;
+}
 
 // Anzeige von Terminen
-echo $dates;
+if (!empty($dates)) {
+    echo $dates;
+}
 
 // Anzeige von Umfragen
-echo $evaluations;
+if (!empty($evaluations)) {
+    echo $evaluations;
+}
 
-echo $questionnaires;
+if (!empty($questionnaires)) {
+    echo $questionnaires;
+}
 
 // display plugins
 
diff --git a/app/views/course/statusgroups/index.php b/app/views/course/statusgroups/index.php
index 2f75624656a..d420de24f85 100644
--- a/app/views/course/statusgroups/index.php
+++ b/app/views/course/statusgroups/index.php
@@ -10,7 +10,7 @@
             'members'     => $group['members'],
             'joinable'    => $group['joinable'],
             'invisible'   => $group['invisible_users'],
-            'load'        => $open_groups ? true : $group['load'],
+            'load'        => $open_groups ? true : $group['load'] ?? true,
             'order'       => $order,
             'sort_by'     => $sort_by,
             'open_group'  => $open_groups,
diff --git a/app/views/file/add_files_window.php b/app/views/file/add_files_window.php
index 0973ed8e647..53a7b73f627 100644
--- a/app/views/file/add_files_window.php
+++ b/app/views/file/add_files_window.php
@@ -14,7 +14,7 @@ if ($folder_id) {
 }
 
 ?>
-<div class="files_source_selector" data-folder_id="<?= htmlReady($folder_id) ?>" <? if ($hidden) echo ' style="display: none;"'; ?>>
+<div class="files_source_selector" data-folder_id="<?= htmlReady($folder_id) ?>" <? if (!empty($hidden)) echo ' style="display: none;"'; ?>>
     <h2 class="dialog-subtitle"><?= _('Quelle auswählen') ?></h2>
     <div class="file_select_possibilities">
         <? if ($range instanceof Course && !$range->getSemClass()['studygroup_mode'] && $GLOBALS['perm']->have_studip_perm('tutor', $range->id)
diff --git a/app/views/file/edit_license.php b/app/views/file/edit_license.php
index 0ca27b2c788..ebd5ff01de4 100644
--- a/app/views/file/edit_license.php
+++ b/app/views/file/edit_license.php
@@ -1,4 +1,4 @@
-<form action="<?= $controller->link_for('file/edit_license', $origin_folder_id) ?>"
+<form action="<?= $controller->link_for('file/edit_license', $origin_folder_id ?? null) ?>"
       method="post" class="default" data-dialog="reload-on-close">
 <input type="hidden" name="re_location" value="<?= htmlReady($re_location) ?>">
 <? foreach ($file_refs as $file_ref) : ?>
@@ -23,4 +23,4 @@
             $controller->url_for((in_array($folder->range_type, ['course', 'institute']) ? $folder->range_type . '/' : '') . 'files/index/' . $folder->id)
         ) ?>
     </footer>
-</form>
\ No newline at end of file
+</form>
diff --git a/app/views/resources/booking/_add_edit_form.php b/app/views/resources/booking/_add_edit_form.php
index fc59350201c..c35f405db1c 100644
--- a/app/views/resources/booking/_add_edit_form.php
+++ b/app/views/resources/booking/_add_edit_form.php
@@ -7,7 +7,7 @@
           ?>"
           data-dialog="<?= $no_reload ? 'size=auto' : 'reload-on-close' ?>">
         <input type="hidden" name="origin_url"
-               value="<?= htmlReady($origin_url) ?>">
+               value="<?= htmlReady($origin_url??'') ?>">
         <? if ($resources) : ?>
             <? foreach ($resources as $resource): ?>
                 <input type="hidden" name="resource_ids[]"
@@ -434,7 +434,7 @@
         <div class="fieldset-row">
             <fieldset>
                 <legend><?= _('Personen') ?></legend>
-                <? if ($booking->assigned_user instanceof User): ?>
+                <? if ($booking && $booking->assigned_user instanceof User): ?>
                     <p>
                         <a href="<?= $controller->link_for(
                             'profile',
@@ -474,7 +474,7 @@
                         </div>
                     </label>
                 <? endif ?>
-                <? if ($booking->booking_user): ?>
+                <? if ($booking && $booking->booking_user): ?>
                     <p style="margin-top:1em;margin-bottom:0;">
                         <?= htmlReady(
                             _('Gebucht von:')
@@ -508,7 +508,7 @@
             <fieldset class="description">
                 <legend><?= _('Buchungstext') ?></legend>
                 <label>
-                    <textarea name="description" <?= !$show_booking_type_selection ? 'autofocus' : ''?>><?= htmlReady($description) ?></textarea>
+                    <textarea name="description" <?= !$show_booking_type_selection ? 'autofocus' : ''?>><?= htmlReady($description ?? '') ?></textarea>
                 </label>
             </fieldset>
         </div>
diff --git a/app/views/resources/resource/permissions.php b/app/views/resources/resource/permissions.php
index 02cf057ff8a..e7a1bc9a5eb 100644
--- a/app/views/resources/resource/permissions.php
+++ b/app/views/resources/resource/permissions.php
@@ -1,7 +1,6 @@
 <form class="default" method="post"
-      action="<?= ($custom_form_action_link
-          ? $custom_form_action_link
-          : ($single_user_mode
+      action="<?= (!empty($custom_form_action_link)
+          ? $custom_form_action_link : ($single_user_mode
               ? $resource->getActionLink(
                   'permissions',
                   [
diff --git a/app/views/resources/room_request/planning.php b/app/views/resources/room_request/planning.php
index 20e9efb33a2..7ecf3238594 100644
--- a/app/views/resources/room_request/planning.php
+++ b/app/views/resources/room_request/planning.php
@@ -5,14 +5,14 @@
         <select name="room_id" aria-labelledby="<?= _('Bitte wählen Sie einen Raum aus') ?>" onchange="this.form.submit()">
             <option value=""><?= _('Bitte wählen') ?></option>
             <? foreach ($this->available_rooms as $room) : ?>
-                <option value="<?= $room->id ?>" <?= $resource && $resource->id === $room->id ? 'selected' : '' ?>>
+                <option value="<?= $room->id ?>" <?= !empty($resource) && $resource->id === $room->id ? 'selected' : '' ?>>
                     <?= htmlReady($room->name) ?>
                 </option>
             <? endforeach ?>
         </select>
     </fieldset>
 </form>
-<? if ($resource): ?>
+<? if (!empty($resource)): ?>
     <?
     $min_time = Config::get()->INSTITUTE_COURSE_PLAN_START_HOUR . ':00';
     $max_time = Config::get()->INSTITUTE_COURSE_PLAN_END_HOUR . ':00';
@@ -64,7 +64,7 @@
         _('Semesterplan'),
         [
             'editable'           => true,
-            'selectable'         => ($fullcalendar_studip_urls['add'] != null),
+            'selectable'         => isset($fullcalendar_studip_urls['add']),
             'studip_urls'        => $fullcalendar_studip_urls,
             'minTime'            => ($min_time),
             'maxTime'            => ($max_time),
@@ -300,6 +300,6 @@
     </form>
 <? endif ?>
 
-<? if (!$requests && $resource) : ?>
+<? if (!$requests && !empty($resource)) : ?>
     <?= MessageBox::info(_('Es sind keine Anfragen vorhanden!')) ?>
-<? endif ?>
\ No newline at end of file
+<? endif ?>
diff --git a/lib/classes/Icon.class.php b/lib/classes/Icon.class.php
index 30d3f3a4317..f2e4fa5dd81 100644
--- a/lib/classes/Icon.class.php
+++ b/lib/classes/Icon.class.php
@@ -368,7 +368,9 @@ class Icon
     {
         $size = $size ?: Icon::DEFAULT_SIZE;
         if (isset($this->attributes['size'])) {
-            list($size, $temp) = explode('@', $this->attributes['size'], 2);
+            $parts =  explode('@', $this->attributes['size'], 2);
+            $size = $parts[0];
+            $temp = $parts[1] ?? null;
             unset($this->attributes['size']);
         }
         return (int)$size;
diff --git a/lib/classes/MultiPersonSearch.class.php b/lib/classes/MultiPersonSearch.class.php
index eafcdbb529a..db984c77038 100644
--- a/lib/classes/MultiPersonSearch.class.php
+++ b/lib/classes/MultiPersonSearch.class.php
@@ -491,17 +491,17 @@ class MultiPersonSearch {
      */
     public function restoreFromSession() {
         if (isset($_SESSION['multipersonsearch'][$this->name])) {
-            $this->title = $_SESSION['multipersonsearch'][$this->name]['title'];
-            $this->description = $_SESSION['multipersonsearch'][$this->name]['description'];
-            $this->quickfilterIds = $_SESSION['multipersonsearch'][$this->name]['quickfilterIds'];
-            $this->additionalHMTL = $_SESSION['multipersonsearch'][$this->name]['additionalHMTL'];
-            $this->executeURL = html_entity_decode($_SESSION['multipersonsearch'][$this->name]['executeURL']);
-            $this->jsFunction = $_SESSION['multipersonsearch'][$this->name]['jsFunction'];
-            $this->defaultSelectableUsersIDs = $_SESSION['multipersonsearch'][$this->name]['defaultSelectableUsersIDs'];
-            $this->defaultSelectedUsersIDs = $_SESSION['multipersonsearch'][$this->name]['defaultSelectedUsersIDs'];
-            $this->searchObject = unserialize($_SESSION['multipersonsearch'][$this->name]['searchObject']);
-            $this->navigationItem = $_SESSION['multipersonsearch'][$this->name]['navigationItem'];
-            $this->dataDialogStatus = $_SESSION['multipersonsearch'][$this->name]['dataDialogStatus'];
+            $this->title = $_SESSION['multipersonsearch'][$this->name]['title'] ?? '';
+            $this->description = $_SESSION['multipersonsearch'][$this->name]['description'] ?? '';
+            $this->quickfilterIds = $_SESSION['multipersonsearch'][$this->name]['quickfilterIds'] ?? [];
+            $this->additionalHMTL = $_SESSION['multipersonsearch'][$this->name]['additionalHMTL'] ?? '';
+            $this->executeURL = html_entity_decode($_SESSION['multipersonsearch'][$this->name]['executeURL'] ?? '');
+            $this->jsFunction = $_SESSION['multipersonsearch'][$this->name]['jsFunction'] ?? '';
+            $this->defaultSelectableUsersIDs = $_SESSION['multipersonsearch'][$this->name]['defaultSelectableUsersIDs'] ?? [];
+            $this->defaultSelectedUsersIDs = $_SESSION['multipersonsearch'][$this->name]['defaultSelectedUsersIDs'] ?? [];
+            $this->searchObject = unserialize($_SESSION['multipersonsearch'][$this->name]['searchObject'] ?? null);
+            $this->navigationItem = $_SESSION['multipersonsearch'][$this->name]['navigationItem'] ?? null;
+            $this->dataDialogStatus = $_SESSION['multipersonsearch'][$this->name]['dataDialogStatus'] ?? '';
         }
     }
 
diff --git a/lib/classes/Seminar.class.php b/lib/classes/Seminar.class.php
index 0e839e88fee..84985e224a6 100644
--- a/lib/classes/Seminar.class.php
+++ b/lib/classes/Seminar.class.php
@@ -333,6 +333,9 @@ class Seminar
                 $cycles[$id]['last_date'] = CycleDataDB::getLastDate($id);
                 if (!empty($cycles[$id]['assigned_rooms'])) {
                     foreach ($cycles[$id]['assigned_rooms'] as $room_id => $count) {
+                        if (!isset($rooms[$room_id])) {
+                            $rooms[$room_id] = 0;
+                        }
                         $rooms[$room_id] += $count;
                     }
                 }
diff --git a/lib/classes/TreeAbstract.class.php b/lib/classes/TreeAbstract.class.php
index dc9682073d6..7cdb9404a6c 100644
--- a/lib/classes/TreeAbstract.class.php
+++ b/lib/classes/TreeAbstract.class.php
@@ -203,7 +203,7 @@ class TreeAbstract {
     */
     public function getKids($item_id)
     {
-        return (is_array($this->tree_childs[$item_id])) ? $this->tree_childs[$item_id] : null;
+        return (isset($this->tree_childs[$item_id]) && is_array($this->tree_childs[$item_id])) ? $this->tree_childs[$item_id] : null;
     }
 
     /**
diff --git a/lib/classes/sidebar/RoomClipboardWidget.class.php b/lib/classes/sidebar/RoomClipboardWidget.class.php
index da5146a9cd5..3d90c3680ca 100644
--- a/lib/classes/sidebar/RoomClipboardWidget.class.php
+++ b/lib/classes/sidebar/RoomClipboardWidget.class.php
@@ -14,7 +14,7 @@ class RoomClipboardWidget extends ClipboardWidget
     public function __construct()
     {
         parent::__construct(['Room']);
-
+        $this->allowed_item_class = '';
         $this->setTitle(_('Individuelle Raumgruppen'));
         $this->template = 'sidebar/room-clipboard-widget';
 
diff --git a/lib/classes/visibility/UserPrivacy.php b/lib/classes/visibility/UserPrivacy.php
index e521dc3ba66..1cfbcdaa907 100644
--- a/lib/classes/visibility/UserPrivacy.php
+++ b/lib/classes/visibility/UserPrivacy.php
@@ -71,7 +71,7 @@ class UserPrivacy
                             }
                         }
 
-                        $child = $idmap[$key] ?: new User_Visibility_Settings();
+                        $child = $idmap[$key] ?? new User_Visibility_Settings();
                         $child->setData([
                             'user_id'    => $this->user->id,
                             'parent_id'  => $vis->id,
diff --git a/lib/evaluation/classes/db/EvaluationObjectDB.class.php b/lib/evaluation/classes/db/EvaluationObjectDB.class.php
index 2af32a482e9..1e8f66ff416 100644
--- a/lib/evaluation/classes/db/EvaluationObjectDB.class.php
+++ b/lib/evaluation/classes/db/EvaluationObjectDB.class.php
@@ -200,7 +200,7 @@ class EvaluationObjectDB extends DatabaseObject
     {
         $no_permisson = 0;
         $rangeIDs = $eval->getRangeIDs();
-
+        $no_permisson_ranges = [];
         if (!is_array($rangeIDs)) {
             $rangeIDs = [$rangeIDs];
         }
diff --git a/lib/evaluation/evaluation_admin_overview.inc.php b/lib/evaluation/evaluation_admin_overview.inc.php
index 32b7a5fd499..d8ba9a31cb8 100644
--- a/lib/evaluation/evaluation_admin_overview.inc.php
+++ b/lib/evaluation/evaluation_admin_overview.inc.php
@@ -51,7 +51,7 @@ define("DISCARD_OPENID", "discard_openid");
 
 /* Create objects ---------------------------------------------------------- */
 $db = new EvaluationObjectDB ();
-if ($db->isError) {
+if ($db->getErrors()) {
     return MessageBox::error(_("Datenbankfehler"));
 }
 $lib = new EvalOverview ($db, $GLOBALS['perm'], $GLOBALS['user']);
@@ -59,10 +59,10 @@ $lib = new EvalOverview ($db, $GLOBALS['perm'], $GLOBALS['user']);
 
 
 /* Set variables ----------------------------------------------------------- */
-if ($_SESSION['evalID'])  {
+if (isset($_SESSION['evalID']))  {
     unset($_SESSION['evalID']);
 }
-if ($_SESSION['rangeID']) {
+if (isset($_SESSION['rangeID'])) {
     unset($_SESSION['rangeID']);
 }
 
@@ -70,7 +70,7 @@ if (!empty($the_range)) {
     $rangeID = $the_range;
 }
 
-$rangeID = ($rangeID) ? $rangeID : Context::getId();
+$rangeID = $rangeID ?? Context::getId();
 
 if (empty ($rangeID) || ($rangeID == $GLOBALS['user']->username)) {
     $rangeID = $GLOBALS['user']->id;
@@ -101,9 +101,10 @@ if (!$GLOBALS['perm']->have_studip_perm("tutor", $rangeID) && $GLOBALS['user']->
     return;
 }
 
-$safeguard = $lib->callSafeguard($evalAction, $evalID, $rangeID, $search, $referer);
+$safeguard = $lib->callSafeguard($evalAction, $evalID, $rangeID, $search, null);
 /* ---------------------------------------------------------- end: safeguard */
 
+$foundTable = '';
 /* found public templates -------------------------------------------------- */
 if ($templates_search) {
     $search = trim($search);
diff --git a/lib/evaluation/evaluation_admin_overview.lib.php b/lib/evaluation/evaluation_admin_overview.lib.php
index b552a5fe163..54f3f46f484 100644
--- a/lib/evaluation/evaluation_admin_overview.lib.php
+++ b/lib/evaluation/evaluation_admin_overview.lib.php
@@ -2210,14 +2210,15 @@ class EvalOverview
      */
     function getPageCommand()
     {
-        if (Request::option("evalAction"))
-            return Request::option("evalAction");
-
+        if (Request::option('evalAction')) {
+            return Request::option('evalAction');
+        }
+        $command = [];
         foreach ($_REQUEST as $key => $value) {
             if (preg_match("/(.*)_button(_x)?/", $key, $command))
                 break;
         }
-        return $command[1];
+        return $command[1] ?? '';
     }
 
 # ===================================================== end: public functions #
diff --git a/lib/filesystem/StandardFile.php b/lib/filesystem/StandardFile.php
index 05f6979e392..412600fdd9f 100644
--- a/lib/filesystem/StandardFile.php
+++ b/lib/filesystem/StandardFile.php
@@ -65,11 +65,11 @@ class StandardFile implements FileType, ArrayAccess, StandardFileInterface
 
         $fileref = new FileRef();
         $fileref['name']                    = $filename;
-        $fileref['description']             = $data['description'] ?: "";
+        $fileref['description']             = $data['description'] ?? "";
         $fileref['downloads']               = 0;
         $fileref['user_id']                 = $user_id;
         $fileref['file_id']                 = $file->getId();
-        $fileref['content_terms_of_use_id'] = $data['content_terms_of_use_id'] ?: ContentTermsOfUse::findDefault()->id;
+        $fileref['content_terms_of_use_id'] = $data['content_terms_of_use_id'] ?? ContentTermsOfUse::findDefault()->id;
 
         return new static($fileref, $file);
     }
diff --git a/lib/models/ToolActivation.php b/lib/models/ToolActivation.php
index 06ec25f4dc8..422fb0f991d 100644
--- a/lib/models/ToolActivation.php
+++ b/lib/models/ToolActivation.php
@@ -82,8 +82,7 @@ class ToolActivation extends SimpleORMap
         $module = $this->getStudipModule();
         if ($module) {
             $metadata = $module->getMetadata();
-            $name = $metadata['displayname'] ?: $module->getPluginName();
-            return $name;
+            return $metadata['displayname'] ?? $module->getPluginName();
         }
     }
 
diff --git a/lib/models/User.class.php b/lib/models/User.class.php
index 6011e6b791a..7ec24aa2cfb 100644
--- a/lib/models/User.class.php
+++ b/lib/models/User.class.php
@@ -718,6 +718,8 @@ class User extends AuthUserMd5 implements Range, PrivacyObject
         // Non-private dates.
         if (Config::get()->CALENDAR_ENABLE) {
             $dates = CalendarEvent::countBySql('range_id = ?', [$this->id]);
+        } else {
+            $dates = [];
         }
 
         // Votes
@@ -737,7 +739,7 @@ class User extends AuthUserMd5 implements Range, PrivacyObject
         if (Avatar::getAvatar($this->id)->is_customized() && empty($GLOBALS['NOT_HIDEABLE_FIELDS'][$this->perms]['picture'])) {
             $homepage_elements['picture'] = [
                 'name'        => _('Eigenes Bild'),
-                'visibility'  => $homepage_visibility['picture'] ?: get_default_homepage_visibility($this->id),
+                'visibility'  => $homepage_visibility['picture'] ?? get_default_homepage_visibility($this->id),
                 'extern'      => true,
                 'identifier'  => 'commondata'
             ];
@@ -746,7 +748,7 @@ class User extends AuthUserMd5 implements Range, PrivacyObject
         if ($this->info->motto && empty($GLOBALS['NOT_HIDEABLE_FIELDS'][$this->perms]['motto'])) {
             $homepage_elements['motto'] = [
                 'name'       => _('Motto'),
-                'visibility' => $homepage_visibility['motto'] ?: get_default_homepage_visibility($this->id),
+                'visibility' => $homepage_visibility['motto']?? get_default_homepage_visibility($this->id),
                 'identifier' => 'privatedata'
             ];
         }
@@ -754,7 +756,7 @@ class User extends AuthUserMd5 implements Range, PrivacyObject
             if ($GLOBALS['user']->cfg->getValue('SKYPE_NAME') && empty($GLOBALS['NOT_HIDEABLE_FIELDS'][$this->perms]['skype_name'])) {
                 $homepage_elements['skype_name'] = [
                     'name'       => _('Skype Name'),
-                    'visibility' => $homepage_visibility['skype_name'] ?: get_default_homepage_visibility($this->id),
+                    'visibility' => $homepage_visibility['skype_name']?? get_default_homepage_visibility($this->id),
                     'identifier' => 'privatedata'
                 ];
             }
@@ -762,28 +764,28 @@ class User extends AuthUserMd5 implements Range, PrivacyObject
         if ($this->info->privatnr && empty($GLOBALS['NOT_HIDEABLE_FIELDS'][$this->perms]['Private Daten_phone'])) {
             $homepage_elements['private_phone'] = [
                 'name'       => _('Private Telefonnummer'),
-                'visibility' => $homepage_visibility['private_phone'] ?: get_default_homepage_visibility($this->id),
+                'visibility' => $homepage_visibility['private_phone']?? get_default_homepage_visibility($this->id),
                 'identifier' => 'privatedata'
             ];
         }
         if ($this->info->privatcell && empty($GLOBALS['NOT_HIDEABLE_FIELDS'][$this->perms]['private_cell'])) {
             $homepage_elements['private_cell'] = [
                 'name'       => _('Private Handynummer'),
-                'visibility' => $homepage_visibility['private_cell'] ?: get_default_homepage_visibility($this->id),
+                'visibility' => $homepage_visibility['private_cell']?? get_default_homepage_visibility($this->id),
                 'identifier' => 'privatedata'
             ];
         }
         if ($this->info->privadr && empty($GLOBALS['NOT_HIDEABLE_FIELDS'][$this->perms]['privadr'])) {
             $homepage_elements['privadr'] = [
                 'name'         => _('Private Adresse'),
-                'visibility'   => $homepage_visibility['privadr'] ?: get_default_homepage_visibility($this->id),
+                'visibility'   => $homepage_visibility['privadr']?? get_default_homepage_visibility($this->id),
                 'identifier'   => 'privatedata'
             ];
         }
         if ($this->info->home && empty($GLOBALS['NOT_HIDEABLE_FIELDS'][$this->perms]['homepage'])) {
             $homepage_elements['homepage'] = [
                 'name'        => _('Homepage-Adresse'),
-                'visibility'  => $homepage_visibility['homepage'] ?: get_default_homepage_visibility($this->id),
+                'visibility'  => $homepage_visibility['homepage']?? get_default_homepage_visibility($this->id),
                 'extern'      => true,
                 'identifier'  => 'privatedata'
             ];
@@ -791,7 +793,7 @@ class User extends AuthUserMd5 implements Range, PrivacyObject
         if ($news && empty($GLOBALS['NOT_HIDEABLE_FIELDS'][$this->perms]['news'])) {
             $homepage_elements['news'] = [
                 'name'       => _('Ankündigungen'),
-                'visibility' => $homepage_visibility['news'] ?: get_default_homepage_visibility($this->id),
+                'visibility' => $homepage_visibility['news']?? get_default_homepage_visibility($this->id),
                 'extern'     => true,
                 'identifier' => 'commondata'
             ];
@@ -799,7 +801,7 @@ class User extends AuthUserMd5 implements Range, PrivacyObject
         if (Config::get()->CALENDAR_ENABLE && $dates && empty($GLOBALS['NOT_HIDEABLE_FIELDS'][$this->perms]['dates'])) {
             $homepage_elements['termine'] = [
                 'name'       => _('Termine'),
-                'visibility' => $homepage_visibility['termine'] ?: get_default_homepage_visibility($this->id),
+                'visibility' => $homepage_visibility['termine']?? get_default_homepage_visibility($this->id),
                 'extern'     => true,
                 'identifier' => 'commondata'
             ];
@@ -807,7 +809,7 @@ class User extends AuthUserMd5 implements Range, PrivacyObject
         if (Config::get()->VOTE_ENABLE && ($activeVotes || $stoppedVotes || $activeEvals) && empty($GLOBALS['NOT_HIDEABLE_FIELDS'][$this->perms]['votes'])) {
             $homepage_elements['votes'] = [
                 'name'       => _('Fragebögen'),
-                'visibility' => $homepage_visibility['votes'] ?: get_default_homepage_visibility($this->id),
+                'visibility' => $homepage_visibility['votes']?? get_default_homepage_visibility($this->id),
                 'identifier' => 'commondata'
             ];
         }
diff --git a/lib/seminar_open.php b/lib/seminar_open.php
index 3449f202eac..8d7d65e9089 100644
--- a/lib/seminar_open.php
+++ b/lib/seminar_open.php
@@ -186,7 +186,7 @@ if (!Request::isXhr() && $perm->have_perm('root')) {
         $_SESSION['migration-check']['disabled'] = true;
     }
 
-    if (!$_SESSION['migration-check']['disabled']
+    if (!empty($_SESSION['migration-check']['disabled'])
         && $_SESSION['migration-check']['count'] > 0
     ) {
         $info = sprintf(
diff --git a/public/sendfile.php b/public/sendfile.php
index 77cc7353a3b..0c6391aed18 100644
--- a/public/sendfile.php
+++ b/public/sendfile.php
@@ -175,7 +175,7 @@ while (ob_get_level()) {
     ob_end_clean();
 }
 
-if (isset($file_ref, $file_ref->file) && $file_ref->file->metadata['access_type'] === 'redirect') {
+if (isset($file_ref, $file_ref->file, $file_ref->file->metadata['access_type']) && $file_ref->file->metadata['access_type'] === 'redirect') {
     $file_ref->incrementDownloadCounter();
     header('Location: ' . $file_ref->file->metadata['url']);
     die();
diff --git a/templates/dates/seminar_html.php b/templates/dates/seminar_html.php
index 515d9f89624..1f55dbfbbb4 100644
--- a/templates/dates/seminar_html.php
+++ b/templates/dates/seminar_html.php
@@ -45,7 +45,7 @@ if (!$dates['regular']['turnus_data'] && empty($dates['irregular'])) {
     $freetext_rooms = [];
     $irregular_rooms = [];
 
-    if (is_array($dates['irregular'])) {
+    if (isset($dates['irregular']) && is_array($dates['irregular'])) {
         foreach ($dates['irregular'] as $date) {
             if (!isset($irregular_rooms[$date['resource_id']])) {
                 $irregular_rooms[$date['resource_id']] = 0;
-- 
GitLab