diff --git a/app/controllers/resources/room_request.php b/app/controllers/resources/room_request.php index 1afe52e854fa345b177f6e91aabd1af8a32400c7..52a93db1e9a4d7482949e73cacb65de62ed3c60b 100644 --- a/app/controllers/resources/room_request.php +++ b/app/controllers/resources/room_request.php @@ -1484,14 +1484,14 @@ class Resources_RoomRequestController extends AuthenticatedController $this->request_semester_string = ''; $request_start_semester = $this->request->getStartSemester(); $request_end_semester = $this->request->getEndSemester(); - if ($request_start_semester->id != $request_end_semester->id && $request_end_semester->id) { + if ($request_start_semester && $request_end_semester && $request_start_semester->id != $request_end_semester->id && $request_end_semester->id) { $this->request_semester_string = sprintf( '%1$s - %2$s', $request_start_semester->name, $request_end_semester->name ); } else { - $this->request_semester_string = $request_start_semester->name; + $this->request_semester_string = $request_start_semester ? $request_start_semester->name : ''; } $this->metadate_availability_share = []; diff --git a/app/views/resources/_common/_request_tr.php b/app/views/resources/_common/_request_tr.php index bd827a8b7cd246d9007d9afbad70b5d0220685c4..5908c39af47a30310fff8a9c5b077bdb52d9bec8 100644 --- a/app/views/resources/_common/_request_tr.php +++ b/app/views/resources/_common/_request_tr.php @@ -48,7 +48,7 @@ <? endif ?> </td> <? $intervals = $request->getTimeIntervals() ?> - <td data-sort-value="<?= htmlReady($intervals[0]['begin']) ?>"> + <td data-sort-value="<?= htmlReady(isset($intervals[0]) ? $intervals[0]['begin'] : '') ?>"> <?= $request->getTypeString() ?> <? if ($request->isSimpleRequest()): ?> <? @@ -74,7 +74,7 @@ <? endif ?> <? endif ?> <? else: ?> - <? if (count($intervals) > 1 && $intervals[0]['begin'] > 0): ?> + <? if (count($intervals) > 1 && isset($intervals[0]) && $intervals[0]['begin'] > 0): ?> <br> (<?= htmlReady( sprintf( diff --git a/app/views/resources/room_request/resolve.php b/app/views/resources/room_request/resolve.php index 19bffc40efee52ba94f0479d05d7808926fc70ad..3bdea9dc9dc9c4feebdf86702f2bc145e8934a28 100644 --- a/app/views/resources/room_request/resolve.php +++ b/app/views/resources/room_request/resolve.php @@ -109,14 +109,14 @@ <dt><?= _('Rüstzeit') ?></dt> <dd> <?= htmlReady(sprintf( - ngettext('%d Minute', '%d Minuten', $request->preparation_time / 60), + ngettext('%d Minute', '%d Minuten', (int)$request->preparation_time / 60), $request->preparation_time / 60 )) ?> </dd> <? endif ?> - <? if ($room_request->preparation_time): ?> - <? $preparation_time_minutes = intval($room_request->preparation_time / 60) ?> + <? if (isset($room_request) && $room_request->preparation_time): ?> + <? $preparation_time_minutes = (int)$room_request->preparation_time / 60 ?> <dt><?= _('Rüstzeit') ?></dt> <dd> <?= htmlReady( @@ -159,7 +159,7 @@ <dt><?= _('Antwort') ?></dt> <? if ($request->closed == 0) : ?> <dd> - <textarea name="reply_comment"><?= htmlReady($room_request->reply_comment) ?></textarea> + <textarea name="reply_comment"><?= htmlReady(isset($room_request) ? $room_request->reply_comment : '') ?></textarea> </dd> <? else : ?> <dd><?= htmlReady($request->reply_comment) ?></dd> @@ -348,7 +348,7 @@ 'room' => $request_resource, 'time_intervals' => $request_time_intervals, 'availability' => $room_availability[$request_resource->id], - 'underload' => $room_underload[$room_request->resource_id], + 'underload' => isset($room_request) && isset($room_underload[$room_request->resource_id]) ? $room_underload[$room_request->resource_id] : '', 'selected_rooms' => $selected_rooms ] ) ?> @@ -375,14 +375,14 @@ <? endif ?> </section> <footer data-dialog-button> - <? if ($prev_request) : ?> + <? if (!empty($prev_request)) : ?> <?= \Studip\LinkButton::create( _('Vorherige Anfrage'), $controller->resolveURL($prev_request), ['data-dialog' => 'size=big'] ) ?> <? endif ?> - <? if ($show_form) : ?> + <? if (!empty($show_form)) : ?> <? if ($show_force_resolve_button): ?> <?= \Studip\Button::create(_('Anfrage trotzdem auflösen'), 'force_resolve') ?> <? else: ?> @@ -415,7 +415,7 @@ $controller->declineURL($request->id, ['delete' => '1']), ['data-dialog' => 'size=auto'] ) ?> - <? if ($show_expand_metadates_button) : ?> + <? if (!empty($show_expand_metadates_button)) : ?> <?= \Studip\Button::create(_('Terminserien expandieren'), 'expand_metadates') ?> <? endif ?> <? if (Request::submitted('expand_metadates')) : ?> @@ -425,7 +425,7 @@ ) ?> <? endif ?> <? endif ?> - <? if ($next_request) : ?> + <? if (!empty($next_request)) : ?> <?= \Studip\LinkButton::create( _('Nächste Anfrage'), $controller->resolveURL($next_request), diff --git a/app/views/resources/room_request/resolve_room_tr.php b/app/views/resources/room_request/resolve_room_tr.php index 8a4b8d8e9e138463704884a8f6d22e4358d4c3f7..42839b7e613777fc17015c3f8bc52ba8d1bd71f2 100644 --- a/app/views/resources/room_request/resolve_room_tr.php +++ b/app/views/resources/room_request/resolve_room_tr.php @@ -3,7 +3,7 @@ <? if ($room->bookingPlanVisibleForUser($current_user)): ?> <? $booking_plan_params = []; - if ($time_intervals[0]['begin']) { + if (isset($time_intervals[0]) && $time_intervals[0]['begin']) { $booking_plan_params = [ 'defaultDate' => date('Y-m-d', $time_intervals[0]['begin']) ]; @@ -25,7 +25,7 @@ [<?= htmlReady($underload) ?>%] <? endif ?> </td> - <? if (count($time_intervals) > 1) : ?> + <? if (!empty($time_intervals) && count($time_intervals) > 1) : ?> <td> <input type="checkbox" data-proxyfor="input.radio-<?= htmlReady($room->id) ?>" name="all_in_room" value="<?= htmlReady($room->id) ?>" diff --git a/lib/models/resources/ResourceRequest.class.php b/lib/models/resources/ResourceRequest.class.php index 3cb6c12a38870b6c4fc5db16dbe9527cff893c77..0f1a3a6c6b6b980b2e3242425e4112fc5a90ed83 100644 --- a/lib/models/resources/ResourceRequest.class.php +++ b/lib/models/resources/ResourceRequest.class.php @@ -551,10 +551,10 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen public function cbAfterStore() { if ($this->isFieldDirty('closed')) { - if ($this->closed == 3) { + if ((int)$this->closed === 3) { $this->sendRequestDeniedMail(); StudipLog::log('RES_REQUEST_DENY', $this->course_id, $this->resource_id, $this->getLoggingInfoText()); - } elseif ($this->closed == 1 || $this->closed == 2) { + } elseif ((int)$this->closed === 1 || (int)$this->closed === 2) { StudipLog::log('RES_REQUEST_RESOLVE', $this->course_id, $this->resource_id, $this->getLoggingInfoText()); } } else { @@ -587,7 +587,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen } $class_name = $this->resource->class_name; - if ($class_name == 'Resource') { + if ($class_name === 'Resource') { //This is already the correct class. return $this; } @@ -595,10 +595,9 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen if (is_subclass_of($class_name, 'Resource')) { //Now we append 'Request' to the class name: $class_name = $class_name . 'Request'; - $converted_resource = $class_name::buildExisting( + return $class_name::buildExisting( $this->toRawArray() ); - return $converted_resource; } else { //$class_name does not contain the name of a subclass //of Resource. That's an error! @@ -631,13 +630,13 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen */ public function setRangeFields($range_type = '', $range_ids = []) { - if ($range_type == 'date') { + if ($range_type === 'date') { $this->termin_id = $range_ids[0]; $this->metadate_id = ''; - } elseif ($range_type == 'cycle') { + } elseif ($range_type === 'cycle') { $this->termin_id = ''; $this->metadate_id = $range_ids[0]; - } elseif ($range_type == 'date-multiple') { + } elseif ($range_type === 'date-multiple') { $this->termin_id = ''; $this->metadate_id = ''; $appointments = []; @@ -647,7 +646,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen $appointments[] = $app; } $this->appointments = $appointments; - } elseif ($range_type == 'course') { + } elseif ($range_type === 'course') { $this->termin_id = ''; $this->metadate_id = ''; $this->course_id = $range_ids[0]; @@ -817,13 +816,14 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen return $start_date; } - if ($this->metadate_id) { - $start_date->setTimestamp($this->cycle->dates->first()->date); + $fist_date = $this->cycle->dates->first(); + if ($this->metadate_id && isset($first_date->date)) { + $start_date->setTimestamp($first_date->date); return $start_date; } - if ($this->course_id) { - $start_date->setTimestamp($this->course->dates->first()->date); + if ($this->course_id && isset($first_date->date)) { + $start_date->setTimestamp($fist_date->date); return $start_date; } @@ -1301,7 +1301,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen foreach ($intervals as $interval) { $room = ''; - if ($interval['range'] == 'CourseDate') { + if ($interval['range'] === 'CourseDate') { $date = call_user_func([$interval['range'], 'find'], $interval['range_id']); if ($date->room_booking) { $room_obj = Room::find($date->room_booking->resource_id); @@ -1311,9 +1311,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen } } - $same_day = (date('Ymd', $interval['begin']) - == date('Ymd', $interval['end']) - ); + $same_day = date('Ymd', $interval['begin']) === date('Ymd', $interval['end']); if ($same_day) { $strings[] = strftime('%a. %x %R', $interval['begin']) . ' - ' . strftime('%R', $interval['end']) @@ -1344,13 +1342,13 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen $interval_in_range = ( ( $interval['begin'] >= $begin->getTimestamp() - and + && $interval['begin'] <= $end->getTimestamp() ) - or + || ( $interval['end'] >= $begin->getTimestamp() - and + && $interval['end'] <= $end->getTimestamp() ) ); @@ -1408,15 +1406,13 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen if ($this->isNew()) { return _('Diese Anfrage wurde noch nicht gespeichert.'); } - if ($this->closed == 0) { + if ((int)$this->closed === 0) { return _('Die Anfrage wurde noch nicht bearbeitet.'); - } else if ($this->closed == 3) { + } else if ((int)$this->closed === 3) { return _('Die Anfrage wurde bearbeitet und abgelehnt.'); } else { return _('Die Anfrage wurde bearbeitet.'); } - - return _('unbekannt'); } @@ -1435,6 +1431,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen { $now = time(); $strings = []; + $resource_name = ''; if (count($this->appointments)) { $parts = []; foreach ($this->appointments as $rra) { @@ -1462,15 +1459,13 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen } } elseif ($this->course_id) { $course = new Seminar($this->course_id); - if ($course) { - $strings[] = $course->getDatesTemplate('dates/seminar_html_roomplanning', - [ - 'shrink' => false, - 'show_room' => true, - 'with_past_intervals' => $with_past_intervals - ] - ); - } + $strings[] = $course->getDatesTemplate('dates/seminar_html_roomplanning', + [ + 'shrink' => false, + 'show_room' => true, + 'with_past_intervals' => $with_past_intervals + ] + ); } elseif ($this->begin && $this->end) { $begin_date = date('Ymd', $this->begin); $end_date = date('Ymd', $this->end); @@ -1512,7 +1507,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen } else { return sprintf(_('Einzeltermine (%sx)'), count($this->appointments)); } - } elseif (count($this->appointments) == 1) { + } elseif (count($this->appointments) === 1) { $date = $this->appointments[0]->appointment; if ($short || !$date) { return _('Einzeltermin'); @@ -1572,7 +1567,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen /** - * @param arrya $excluded_property_names + * @param array $excluded_property_names * Returns all resource property definitions for all properties * which can be applied for this ResourceRequest by looking at the * Resource category. If no resource category ID is set for the request @@ -1738,7 +1733,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen /** * @param string $name * @param string $state - * @return True, if the property state could be set, false otherwise. + * @return bool True, if the property state could be set, false otherwise. */ public function setProperty($name, $state = '') { @@ -1825,7 +1820,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen if ($range_object instanceof User) { if (get_visibility_by_id($range_object->id)) { $name = $range_object->getFullName(); - } else if ($this->user_id == $GLOBALS['user']->id) { + } else if ($this->user_id === $GLOBALS['user']->id) { $name = $range_object->getFullName(); } else { $current_user = User::findCurrent(); @@ -2125,7 +2120,6 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen $metadates = []; $single_dates = []; if (is_array($bookings)) { - $booked_rooms = []; foreach ($bookings as $booking) { if (!($booking instanceof ResourceBooking)) { continue; @@ -2304,7 +2298,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen foreach ($time_intervals as $interval) { $real_begin = $interval['begin']; if ($this->preparation_time) { - $real_begin += $this->preparation_time; + $real_begin += (int)$this->preparation_time; $begin = new DateTime(); $begin->setTimestamp($interval['begin']); $end = new DateTime(); @@ -2425,7 +2419,6 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen $time_intervals = $intervals; } - $user = null; if ($user_id) { $user = User::find($user_id); } else { @@ -2437,9 +2430,11 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen public function getPriority() { + if (!isset($this->getTimeIntervals()[0])) { + return 0; + } $first = $this->getTimeIntervals()[0]; - $diff = round(($first['begin'] - time()) / 86400); - return $diff; + return round(($first['begin'] - time()) / 86400); } public function getLoggingInfoText()