From 0736f3431095bbbbb47316af511705a1570481d0 Mon Sep 17 00:00:00 2001
From: David Siegfried <david.siegfried@uni-vechta.de>
Date: Mon, 17 Jun 2024 07:01:46 +0000
Subject: [PATCH] prevent php-warnings, closes #4310

Closes #4310

Merge request studip/studip!3114
---
 app/controllers/course/timesrooms.php   |  6 ++-
 app/controllers/new_password.php        | 56 ++++++++++++-------------
 app/views/course/cancel_dates/index.php |  2 +-
 app/views/oer/addfile/choose_file.php   |  2 +-
 lib/filesystem/CourseDateFolder.php     |  2 +-
 lib/models/RangeScale.php               |  8 +++-
 lib/raumzeit/SingleDate.class.php       |  6 +--
 7 files changed, 43 insertions(+), 39 deletions(-)

diff --git a/app/controllers/course/timesrooms.php b/app/controllers/course/timesrooms.php
index 5cb9066fb2e..b959ff5e6c4 100644
--- a/app/controllers/course/timesrooms.php
+++ b/app/controllers/course/timesrooms.php
@@ -444,7 +444,11 @@ class Course_TimesroomsController extends AuthenticatedController
         }
 
         // Set Room
-        $old_room_id = $termin->room_booking->resource_id;
+        if ($termin->room_booking) {
+            $old_room_id = $termin->room_booking->resource_id;
+        } else {
+            $old_room_id = null;
+        }
         $singledate = new SingleDate($termin);
         if ($singledate->setTime($date, $end_time)) {
             $singledate->store();
diff --git a/app/controllers/new_password.php b/app/controllers/new_password.php
index 525d73b6623..1e58659ed9a 100644
--- a/app/controllers/new_password.php
+++ b/app/controllers/new_password.php
@@ -41,36 +41,32 @@ class NewPasswordController extends StudipController
 
         $users = User::findByEmail(Request::get('mail'));
 
-        if (sizeof($users) == 1) {
-            $user = $users[0];
-        } else if (sizeof($users) > 1) {
-            setTempLanguage($users[0]->id);
-
-            // there are mutliple accounts with this mail addresses!
-            $subject = sprintf(
-                _("[Stud.IP - %s] Passwortänderung angefordert"),
-                Config::get()->UNI_NAME_CLEAN
-            );
-
-            $mailbody = sprintf(
-                _("Dies ist eine Informationsmail des Stud.IP-Systems\n"
-                    ."(Studienbegleitender Internetsupport von Präsenzlehre)\n- %s -\n\n"
-                    . "Für die Mail-Adresse %s wurde ein Link angefordert\n"
-                    . "um das Passwort zurückzusetzen.\n"
-                    . "Dieser Mail-Adresse sind jedoch mehrere Zugänge zugeordnet,\n"
-                    . "deshalb ist es nicht möglich, das Passwort hierüber zurückzusetzen.\n"
-                    . "Wenden sie sich bitte stattdessen an\n%s"
-                ),
-                Config::get()->UNI_NAME_CLEAN,
-                $users[0]->email,
-                $GLOBALS['UNI_CONTACT']
-            );
-
-            StudipMail::sendMessage($users[0]->email, $subject, $mailbody);
-
-            restoreLanguage();
-        }
-
+        $user = $users[0];
+        setTempLanguage($user->id);
+
+        // there are mutliple accounts with this mail addresses!
+        $subject = sprintf(
+            _("[Stud.IP - %s] Passwortänderung angefordert"),
+            Config::get()->UNI_NAME_CLEAN
+        );
+
+        $mailbody = sprintf(
+            _("Dies ist eine Informationsmail des Stud.IP-Systems\n"
+                ."(Studienbegleitender Internetsupport von Präsenzlehre)\n- %s -\n\n"
+                . "Für die Mail-Adresse %s wurde ein Link angefordert\n"
+                . "um das Passwort zurückzusetzen.\n"
+                . "Dieser Mail-Adresse sind jedoch mehrere Zugänge zugeordnet,\n"
+                . "deshalb ist es nicht möglich, das Passwort hierüber zurückzusetzen.\n"
+                . "Wenden sie sich bitte stattdessen an\n%s"
+            ),
+            Config::get()->UNI_NAME_CLEAN,
+            $users[0]->email,
+            $GLOBALS['UNI_CONTACT']
+        );
+
+        StudipMail::sendMessage($user->email, $subject, $mailbody);
+
+        restoreLanguage();
         if ($user) {
             // spam/abuse-protection
             // if there are more than 5 tokens present, do NOT send another mail
diff --git a/app/views/course/cancel_dates/index.php b/app/views/course/cancel_dates/index.php
index 3c092bc90fb..4f3e2978f21 100644
--- a/app/views/course/cancel_dates/index.php
+++ b/app/views/course/cancel_dates/index.php
@@ -20,7 +20,7 @@
             <?= _('Benachrichtigung über ausfallende Termine an alle Teilnehmenden verschicken') ?>
         </label>
     </fieldset>
-    <? if ($issue_id) : ?>
+    <? if (!empty($issue_id)) : ?>
         <input type="hidden" name="issue_id" value="<?= $issue_id ?>">
     <? else : ?>
         <input type="hidden" name="termin_id" value="<?= $dates[0]->getTerminId() ?>">
diff --git a/app/views/oer/addfile/choose_file.php b/app/views/oer/addfile/choose_file.php
index 6c896cf8d05..feb5b0f3503 100644
--- a/app/views/oer/addfile/choose_file.php
+++ b/app/views/oer/addfile/choose_file.php
@@ -12,7 +12,7 @@ if ($best_nine_tags && count($best_nine_tags) > 0) {
 <form class="oer_search"
       action="<?= $controller->link_for("oer/market/search") ?>"
       method="GET"
-      data-searchresults="<?= htmlReady(json_encode($material_data)) ?>"
+      data-searchresults="<?= htmlReady(json_encode($material_data ?? [])) ?>"
       data-filteredtag="<?= htmlReady(Request::get("tag")) ?>"
       data-filteredcategory="<?= htmlReady(Request::get("category")) ?>"
       data-tags="<?= htmlReady(json_encode($tags)) ?>"
diff --git a/lib/filesystem/CourseDateFolder.php b/lib/filesystem/CourseDateFolder.php
index 09eae1a95d9..10c943c672a 100644
--- a/lib/filesystem/CourseDateFolder.php
+++ b/lib/filesystem/CourseDateFolder.php
@@ -119,7 +119,7 @@ class CourseDateFolder extends PermissionEnabledFolder implements FolderType
         } else {
             $this->folderdata['data_content']['permission'] = 5;
         }
-        $this->folderdata['description'] = $request['description'] ?: '';
+        $this->folderdata['description'] = $request['description'] ?? '';
         return $this;
     }
 
diff --git a/lib/models/RangeScale.php b/lib/models/RangeScale.php
index 78bc65b12ac..21fe4112b45 100644
--- a/lib/models/RangeScale.php
+++ b/lib/models/RangeScale.php
@@ -20,7 +20,7 @@ class RangeScale extends QuestionnaireQuestion implements QuestionType
 {
     public static function getIcon(bool $active = false) : Icon
     {
-        return Icon::create(static::getIconShape(), $active ? 'clickable' : 'info');
+        return Icon::create(static::getIconShape(), $active ? Icon::ROLE_CLICKABLE : Icon::ROLE_INFO);
     }
 
     /**
@@ -64,7 +64,11 @@ class RangeScale extends QuestionnaireQuestion implements QuestionType
         $answer = $this->getMyAnswer();
 
         $answers = Request::getArray('answers');
-        $userAnswer = (array) $answers[$this->getId()]['answerdata']['answers'];
+        if (!empty($answers[$this->getId()])) {
+            $userAnswer = (array)$answers[$this->getId()]['answerdata']['answers'];
+        } else {
+            $userAnswer = [];
+        }
         $answer->setData(['answerdata' => ['answers' => $userAnswer ] ]);
         return $answer;
     }
diff --git a/lib/raumzeit/SingleDate.class.php b/lib/raumzeit/SingleDate.class.php
index 82a89db6852..59357158303 100644
--- a/lib/raumzeit/SingleDate.class.php
+++ b/lib/raumzeit/SingleDate.class.php
@@ -75,7 +75,7 @@ class SingleDate
         if ($data instanceOf CourseDate || $data instanceof CourseExDate) {
             $single_date_data = $data->toArray();
             $single_date_data['ex_termin'] = $data instanceOf CourseDate ? 0 : 1;
-            $single_date_data['resource_id'] = $data->room_booking->resource_id ?: '';
+            $single_date_data['resource_id'] = $data->room_booking->resource_id ?? '';
             if ($data instanceOf CourseDate) {
                 $single_date_data['related_persons'] = $data->dozenten->pluck('user_id');
                 $single_date_data['related_groups'] = $data->statusgruppen->pluck('statusgruppe_id');
@@ -147,9 +147,9 @@ class SingleDate
                 $after = $this->toString();
                 // logging
                 if ($before) {
-                    StudipLog::log('SINGLEDATE_CHANGE_TIME', $this->range_id, $this->id, $before . ' -> ' . $after);
+                    StudipLog::log('SINGLEDATE_CHANGE_TIME', $this->range_id, $this->termin_id, $before . ' -> ' . $after);
                 } else {
-                    StudipLog::log('SEM_ADD_SINGLEDATE', $this->range_id, $this->id, $after);
+                    StudipLog::log('SEM_ADD_SINGLEDATE', $this->range_id, $this->termin_id, $after);
                 }
 
                 return true;
-- 
GitLab