diff --git a/lib/classes/SemBrowse.class.php b/lib/classes/SemBrowse.class.php
index f9eed7f01be0e681ed25c72133431cb4b80caa04..16f13f16b4246957d82d94be50c48f4e1b258205 100644
--- a/lib/classes/SemBrowse.class.php
+++ b/lib/classes/SemBrowse.class.php
@@ -54,7 +54,7 @@ class SemBrowse {
                     ]
                 ];
 
-        if (!$_SESSION['sem_browse_data']) {
+        if (empty($_SESSION['sem_browse_data'])) {
             $_SESSION['sem_browse_data'] = $sem_browse_data_init;
         }
         $this->sem_browse_data =& $_SESSION['sem_browse_data'];
@@ -67,10 +67,12 @@ class SemBrowse {
                 $this->sem_browse_data[$persistend_field] = Request::option($persistend_field);
             }
         }
-        $this->search_obj = new StudipSemSearch('search_sem',
-                false, !(is_object($GLOBALS['perm'])
-                    && $GLOBALS['perm']->have_perm(Config::get()->SEM_VISIBILITY_PERM)),
-                $this->sem_browse_data['show_class']);
+        $this->search_obj = new StudipSemSearch(
+            'search_sem',
+            false,
+            !(is_object($GLOBALS['perm']) && $GLOBALS['perm']->have_perm(Config::get()->SEM_VISIBILITY_PERM)),
+            $this->sem_browse_data['show_class'] ?? null
+        );
 
 
         if (Request::get($this->search_obj->form_name . '_scope_choose')) {
@@ -86,14 +88,15 @@ class SemBrowse {
                     Request::option($this->search_obj->form_name . '_sem');
         }
 
-        if (Request::get('keep_result_set')
-                || $this->sem_browse_data['sset']
-                || (!empty($this->sem_browse_data['search_result'])
-                        && $this->sem_browse_data['show_entries'])) {
+        if (
+            Request::get('keep_result_set')
+            || !empty($this->sem_browse_data['sset'])
+            || (!empty($this->sem_browse_data['search_result']) && $this->sem_browse_data['show_entries'])
+        ) {
             $this->show_result = true;
         }
 
-        if ($this->sem_browse_data['cmd'] == 'xts') {
+        if (isset($this->sem_browse_data['cmd']) && $this->sem_browse_data['cmd'] === 'xts') {
             if ($this->search_obj->new_search_button_clicked) {
                 $this->show_result = false;
                 $this->sem_browse_data['sset'] = false;
@@ -101,7 +104,9 @@ class SemBrowse {
             }
         }
 
-        if($this->sem_browse_data['default_sem'] != 'all') {
+        if (!isset($this->sem_browse_data['default_sem'])) {
+            $this->sem_number[0] = 0;
+        } elseif ($this->sem_browse_data['default_sem'] != 'all') {
             $this->sem_number[0] = intval($this->sem_browse_data['default_sem']);
         } else {
             $this->sem_number = false;
@@ -405,11 +410,12 @@ class SemBrowse {
                 && count($this->sem_browse_data['search_result'])) {
             if (!is_object($this->sem_tree)) {
                 $this->sem_tree = new StudipSemTreeViewSimple(
-                        $this->sem_browse_data['start_item_id'],
+                        $this->sem_browse_data['start_item_id'] ?? null,
                         $this->sem_number,
                         !empty($this->sem_browse_data['sem_status']) && is_array($this->sem_browse_data['sem_status'])
                             ? $this->sem_browse_data['sem_status'] : false,
-                        !(is_object($GLOBALS['perm']) && $GLOBALS['perm']->have_perm(Config::get()->SEM_VISIBILITY_PERM)));
+                        !(is_object($GLOBALS['perm']) && $GLOBALS['perm']->have_perm(Config::get()->SEM_VISIBILITY_PERM))
+                );
             }
             $the_tree = $this->sem_tree->tree;
 
@@ -429,7 +435,7 @@ class SemBrowse {
                 } else {
                     echo '<tr><th colspan="5">';
                 }
-                switch ($this->sem_browse_data['group_by']){
+                switch ($this->sem_browse_data['group_by'] ?? null) {
                     case 0:
                         echo htmlReady($this->search_obj->sem_dates[$group_field]['name']);
                         break;
@@ -758,8 +764,8 @@ class SemBrowse {
                     for ($i = $start_sem; $i <= $sem_number_end; ++$i) {
                         if ($this->sem_number === false
                                 || is_array($this->sem_number)
-                                && in_array($i,$this->sem_number)) {
-                            if ($group_by_data[$i] && !$tmp_group_by_data[$i]) {
+                                && in_array($i, $this->sem_number)) {
+                            if (!empty($group_by_data[$i]) && empty($tmp_group_by_data[$i])) {
                                 foreach (array_keys($group_by_data[$i]['Seminar_id']) as $id) {
                                     $tmp_group_by_data[$i]['Seminar_id'][$id] = true;
                                 }
diff --git a/lib/filesystem/FileManager.php b/lib/filesystem/FileManager.php
index 1f790be5f7e1024966381284e89a0142d5c60c21..a958c61127d8047f49676468e52392da1d66a2b6 100644
--- a/lib/filesystem/FileManager.php
+++ b/lib/filesystem/FileManager.php
@@ -1795,7 +1795,7 @@ class FileManager
         return [
             'type'       => $upload_type['type'],
             'file_types' => $upload_type['file_types'],
-            'file_size'  => $upload_type['file_sizes'][$status],
+            'file_size'  => $upload_type['file_sizes'][$status] ?? 0,
         ];
     }
 
diff --git a/lib/seminar_open.php b/lib/seminar_open.php
index 8d7d65e9089e4ff5a53fc9600d66435b08e69c8c..e84a429d9d6b507de9155b7d830fd3140869d33d 100644
--- a/lib/seminar_open.php
+++ b/lib/seminar_open.php
@@ -101,7 +101,7 @@ if ($auth->is_authenticated() && is_object($user) && $user->id != "nobody") {
         if (UserConfig::get($user->id)->PERSONAL_STARTPAGE > 0 && $i_page == "index.php" && !$perm->have_perm("root")) {
             $seminar_open_redirected = TRUE;
         }
-        if ($_SESSION['contrast']) {
+        if (!empty($_SESSION['contrast'])) {
             UserConfig::get($GLOBALS['user']->id)->store('USER_HIGH_CONTRAST', 1);
             unset($_SESSION['contrast']);
         }
diff --git a/templates/calendar/entries/grouped_entry.php b/templates/calendar/entries/grouped_entry.php
index 990052d5902822ccbce6d502fafba69c8af92560..9e882157653cae0cfb6d06769b3cdb7da31e0d6e 100644
--- a/templates/calendar/entries/grouped_entry.php
+++ b/templates/calendar/entries/grouped_entry.php
@@ -21,7 +21,7 @@ $element_id = md5(uniqid());
     style="top: <?= $top ?>px; height: <?= $height ?>px; width: <?= str_replace(',', '.', $width) ?>%<?= ($col > 0) ? ';left:'. str_replace(',', '.', $col * $width) .'%' : '' ?>"
     title="<?= htmlReady(implode(', ', $title)) ?>">
 
-    <a <?= $entry['url'] ? ' href="'.$entry['url'].'"' : '' ?>
+    <a <?= isset($entry['url']) ? ' href="'.$entry['url'].'"' : '' ?>
         <?= $entry[0]['onClick'] ? 'onClick="STUDIP.Calendar.clickEngine(' . $entry[0]['onClick'] . ', this, event); return false;"' : '' ?>>
 
     <!-- for safari5 we need to set the height for the dl as well -->
diff --git a/templates/header.php b/templates/header.php
index 51620ce130bace3762f245e3da1a2e651d83a9bd..3911b207c5c698d77ccb4abaa68850029a9f57d4 100644
--- a/templates/header.php
+++ b/templates/header.php
@@ -324,7 +324,7 @@ if ($navigation) {
                 // need to handle institutes separately (always visible)
                 if (isset($GLOBALS['SessSemName']['class']) && $GLOBALS['SessSemName']['class'] === 'inst') {
                     $public_hint = _('öffentliche Einrichtung');
-                } else if (Course::findCurrent()->lesezugriff == 0) {
+                } else if (Course::findCurrent() && !Course::findCurrent()->lesezugriff) {
                     $public_hint = _('öffentliche Veranstaltung');
                 }
             }