diff --git a/app/controllers/resources/admin.php b/app/controllers/resources/admin.php index 084839f5dc13baad33c597e45bf5825a45808326..85538fa0855e3a9d2b731dba5776f915deb4a526 100644 --- a/app/controllers/resources/admin.php +++ b/app/controllers/resources/admin.php @@ -365,6 +365,9 @@ class Resources_AdminController extends AuthenticatedController PageLayout::setTitle(_('Eigenschaftsgruppen verwalten')); + $this->new_group_name = ''; + $this->property_move = []; + if (Request::submitted('save')) { CSRFProtection::verifyUnsafeRequest(); @@ -749,6 +752,8 @@ class Resources_AdminController extends AuthenticatedController CSRFProtection::verifyUnsafeRequest(); } + $this->separable_room_name = ''; + $db = DBManager::get(); $this->buildings = []; diff --git a/app/controllers/resources/category.php b/app/controllers/resources/category.php index e57a7d98cb19e0ace9cdfdc00bf4913a4eb1074e..76f55fdbca9089496d2d49f50511bdc6a12a6560 100644 --- a/app/controllers/resources/category.php +++ b/app/controllers/resources/category.php @@ -48,6 +48,11 @@ class Resources_CategoryController extends AuthenticatedController $this->mode = 'add'; $this->previously_set_properties = []; $this->show_form = false; + $this->set_properties = []; + $this->name = ''; + $this->description = ''; + $this->class_name = ''; + $this->iconnr = ''; $this->class_names = ResourceManager::getAllResourceClassNames(); $this->available_properties = ResourcePropertyDefinition::findBySql( @@ -85,7 +90,6 @@ class Resources_CategoryController extends AuthenticatedController $properties_requestable = Request::getArray('prop_requestable'); $properties_protected = Request::getArray('prop_protected'); - $this->set_properties = []; foreach (array_keys($set_properties) as $key) { $this->set_properties[$key] = [ 'id' => $key, @@ -205,6 +209,7 @@ class Resources_CategoryController extends AuthenticatedController $this->mode = 'edit'; $this->previously_set_properties = []; $this->show_form = false; + $this->set_properties = []; $this->category = ResourceCategory::find($category_id); if (!$this->category) { @@ -249,12 +254,11 @@ class Resources_CategoryController extends AuthenticatedController $properties_requestable = Request::getArray('prop_requestable'); $properties_protected = Request::getArray('prop_protected'); - $this->set_properties = []; foreach (array_keys($set_properties) as $key) { $this->set_properties[$key] = [ 'id' => $key, - 'requestable' => $properties_requestable[$key], - 'protected' => $properties_protected[$key] + 'requestable' => $properties_requestable[$key] ?? false, + 'protected' => $properties_protected[$key] ?? false ]; } diff --git a/app/controllers/resources/export.php b/app/controllers/resources/export.php index f64264a8c1985c904af86f30774651559d7f2a17..6c430094dabbb897299b7a071040819f0d47d060 100644 --- a/app/controllers/resources/export.php +++ b/app/controllers/resources/export.php @@ -62,6 +62,9 @@ class Resources_ExportController extends AuthenticatedController throw new AccessDeniedException(); } + $this->available_rooms = []; + $this->available_clipboards = []; + PageLayout::setTitle(_('Quellen für den Export von Buchungen auswählen')); $this->select_rooms = Request::get('select_rooms'); diff --git a/app/controllers/resources/messages.php b/app/controllers/resources/messages.php index a48131552db169b91e656aa1ba783684a470e008..ae202e58c6070ffcf199bc42a9b6b0506c2cf07c 100644 --- a/app/controllers/resources/messages.php +++ b/app/controllers/resources/messages.php @@ -38,6 +38,10 @@ class Resources_MessagesController extends AuthenticatedController $this->room_selection = 'search'; $this->recipient_selection = 'permission'; + $this->clipboard_id = ''; + $this->min_permission = ''; + $this->selected_rooms = []; + $this->room_search = new QuickSearch( 'room_name', new RoomSearch() @@ -65,7 +69,6 @@ class Resources_MessagesController extends AuthenticatedController $this->room_ids = Request::getArray('room_ids'); $this->selected_rooms = Room::findMany($this->room_ids); $this->clipboard_id = Request::get('clipboard_id'); - $this->min_permission = ''; //First validation: diff --git a/app/controllers/resources/print.php b/app/controllers/resources/print.php index 066a3249f946eaaa478e47e2ad18f106e535abb1..3b4c1e5d94c96c22e3d8c420f9540631f04f9084 100644 --- a/app/controllers/resources/print.php +++ b/app/controllers/resources/print.php @@ -116,6 +116,9 @@ class Resources_PrintController extends AuthenticatedController } PageLayout::setTitle(_('Belegungsplan-Seriendruck')); + $this->selected_clipboard = null; + $this->selected_schedule = null; + $this->clipboard_selected = false; $this->print_schedules = false; if (Request::submitted('select_clipboard')) { diff --git a/app/controllers/resources/property.php b/app/controllers/resources/property.php index 3bae0f40ce1c8868d1ec4360e3c62ba022e5f5b7..6c2bff4baddd78c023019bc45820219fc66ebf00 100644 --- a/app/controllers/resources/property.php +++ b/app/controllers/resources/property.php @@ -42,9 +42,14 @@ class Resources_PropertyController extends AuthenticatedController $this->write_permission_level = 'autor'; $this->type = 'bool'; - $property = new ResourcePropertyDefinition(); - $this->description = $property->description; - $this->display_name = $property->display_name; + $this->property = new ResourcePropertyDefinition(); + $this->name = ''; + $this->description = $this->property->description; + $this->display_name = $this->property->display_name; + $this->options = ''; + $this->searchable = false; + $this->info_label = false; + $this->range_search = false; $this->show_form = true; if (Request::submitted('save')) { @@ -80,25 +85,25 @@ class Resources_PropertyController extends AuthenticatedController return; } - $property->name = $this->name; - $property->description = $this->description; - $property->type = $this->type; - $property->searchable = ($this->searchable ? '1' : '0'); - $property->options = $this->options; - $property->display_name = $this->display_name; - $property->range_search = ( + $this->property->name = $this->name; + $this->property->description = $this->description; + $this->property->type = $this->type; + $this->property->searchable = ($this->searchable ? '1' : '0'); + $this->property->options = $this->options; + $this->property->display_name = $this->display_name; + $this->property->range_search = ( $this->range_search ? '1' : '0' ); - $property->write_permission_level = $this->write_permission_level; - $property->info_label = ( + $this->property->write_permission_level = $this->write_permission_level; + $this->property->info_label = ( $this->info_label ? '1' : '0' ); - if ($property->store()) { + if ($this->property->store()) { $this->show_form = false; PageLayout::postSuccess( _('Die Eigenschaft wurde gespeichert!') diff --git a/app/controllers/resources/resource.php b/app/controllers/resources/resource.php index e7570d2c0c0d73b15bb41cadc4d238ce1fbd2676..50f9d4af345da59af8f4dabe661f791c50130e28 100644 --- a/app/controllers/resources/resource.php +++ b/app/controllers/resources/resource.php @@ -597,7 +597,7 @@ class Resources_ResourceController extends AuthenticatedController ); return; } - $this->resource = $this->resources[0]; + $this->resource = $this->resources[0] ?? null; $this->getUserAndCheckPermissions('admin'); diff --git a/app/controllers/resources/room.php b/app/controllers/resources/room.php index 61fb9ef4af503d619a9537d64872e58f754afcee..1e9fc732b1952dcbaee32cc02be1d09bb177da30 100644 --- a/app/controllers/resources/room.php +++ b/app/controllers/resources/room.php @@ -201,8 +201,16 @@ class Resources_RoomController extends AuthenticatedController $user = User::findCurrent(); $this->mode = $mode; $this->show_form = false; + $this->parent_id = ''; + $this->category_id = ''; + $this->room = null; + $this->booking_plan_is_public = false; + $this->sort_position = '0'; + + if ($mode == 'add') { PageLayout::setTitle(_('Raum hinzufügen')); + $this->room = new Room(); } elseif ($mode == 'edit' || $mode == 'delete') { $this->room = Room::find($room_id); if (!$this->room) { diff --git a/app/controllers/resources/room_planning.php b/app/controllers/resources/room_planning.php index d0a0b895ae8694d084f685b31cd7cc743238cb7f..55fc168f7ebb7c1b26b320ad1d66c794938e692f 100644 --- a/app/controllers/resources/room_planning.php +++ b/app/controllers/resources/room_planning.php @@ -90,6 +90,8 @@ class Resources_RoomPlanningController extends AuthenticatedController $this->user = User::findCurrent(); + $this->resource = null; + $new_resource_id = Request::get('new_resource_id'); if ($new_resource_id) { $this->redirect( diff --git a/app/controllers/resources/room_request.php b/app/controllers/resources/room_request.php index 0d3b3a100f49cba47153753fb0a19244b70f6c62..97ba8ac8265d53109fe441aab6f581ea92be10ef 100644 --- a/app/controllers/resources/room_request.php +++ b/app/controllers/resources/room_request.php @@ -117,7 +117,7 @@ class Resources_RoomRequestController extends AuthenticatedController } $this->selected_room_ids = []; - if ($this->filter['room_id']) { + if (!empty($this->filter['room_id'])) { $room = Resource::find($this->filter['room_id']); if (!($room instanceof Resource)) { PageLayout::postError( @@ -142,7 +142,7 @@ class Resources_RoomRequestController extends AuthenticatedController return; } $this->selected_room_ids = [$room->id]; - } elseif ($this->filter['group']) { + } elseif (!empty($this->filter['group'])) { //Filter rooms by the selected room group: $clipboard = Clipboard::find($this->filter['group']); if (!($clipboard instanceof Clipboard)) { @@ -197,9 +197,9 @@ class Resources_RoomRequestController extends AuthenticatedController protected function getFilteredRoomRequests() { $sql = ''; - if ($this->filter['request_status'] == 'closed') { + if (!empty($this->filter['request_status']) && $this->filter['request_status'] == 'closed') { $sql .= "resource_requests.closed IN ('1', '2') "; - } elseif ($this->filter['request_status'] == 'denied') { + } elseif (!empty($this->filter['request_status']) && $this->filter['request_status'] == 'denied') { $sql .= "resource_requests.closed = '3' "; } else { $sql .= "resource_requests.closed < '1' "; @@ -208,7 +208,7 @@ class Resources_RoomRequestController extends AuthenticatedController $sql_params = [ 'room_ids' => $this->selected_room_ids ]; - if (!$this->filter['specific_requests']) { + if (empty($this->filter['specific_requests'])) { $sql .= "OR resource_id IS NULL or resource_id = ''"; } $sql .= ") "; @@ -217,7 +217,7 @@ class Resources_RoomRequestController extends AuthenticatedController $sql_params['current_user_id'] = User::findCurrent()->id; } - if ($this->filter['request_periods'] == 'periodic') { + if (!empty($this->filter['request_periods']) && $this->filter['request_periods'] == 'periodic') { // get rid of requests for single dates AND requests for multiple single dates // also check if there exists cycle dates in case it is a request for the whole seminar $sql .= " AND resource_requests.termin_id = '' @@ -231,7 +231,7 @@ class Resources_RoomRequestController extends AuthenticatedController WHERE seminar_cycle_dates.seminar_id = resource_requests.course_id )"; } - if ($this->filter['request_periods'] == 'aperiodic') { + if (!empty($this->filter['request_periods']) && $this->filter['request_periods'] == 'aperiodic') { $sql .= " AND ( resource_requests.termin_id <> '' OR EXISTS @@ -307,7 +307,7 @@ class Resources_RoomRequestController extends AuthenticatedController (resource_requests.termin_id = '' AND resource_requests.metadate_id = '' AND EXISTS (SELECT * FROM termine WHERE termine.range_id=resource_requests.course_id AND termine.date BETWEEN :begin AND :semester_end)) "; - if (!$this->filter['request_periods']) { + if (empty($this->filter['request_periods'])) { $sql .= ' OR ( CAST(resource_requests.begin AS SIGNED) - resource_requests.preparation_time < :semester_end AND resource_requests.end > :begin @@ -614,7 +614,7 @@ class Resources_RoomRequestController extends AuthenticatedController $element = new SelectElement( $class_id, $class['name'], - $this->filter['course_type'] === (string)$class_id + !empty($this->filter['course_type']) && $this->filter['course_type'] === (string)$class_id ); $list->addElement( $element->setAsHeader(), @@ -625,7 +625,7 @@ class Resources_RoomRequestController extends AuthenticatedController $element = new SelectElement( $class_id . '_' . $id, $result['name'], - $this->filter['course_type'] === $class_id . '_' . $id + !empty($this->filter['course_type']) && $this->filter['course_type'] === $class_id . '_' . $id ); $list->addElement( $element->setIndentLevel(1), @@ -653,7 +653,7 @@ class Resources_RoomRequestController extends AuthenticatedController new SelectElement( $clip->id, $clip->name, - $this->filter['group'] == $clip->id + !empty($this->filter['group']) && $this->filter['group'] == $clip->id ), 'clip-' . $clip->id ); @@ -669,7 +669,7 @@ class Resources_RoomRequestController extends AuthenticatedController new SelectElement( '', _('bitte wählen'), - !$this->filter['room_id'] + empty($this->filter['room_id']) ) ); foreach ($this->available_rooms as $room) { @@ -677,7 +677,7 @@ class Resources_RoomRequestController extends AuthenticatedController new SelectElement( $room->id, $room->name, - $room->id == $this->filter['room_id'] + !empty($this->filter['room_id']) && $room->id == $this->filter['room_id'] ) ); } @@ -704,22 +704,22 @@ class Resources_RoomRequestController extends AuthenticatedController $widget->addRadioButton( _('Alle Termine'), $this->overviewURL(['request_periods' => '0']), - !$this->filter['request_periods'] + empty($this->filter['request_periods']) ); $widget->addRadioButton( _('Nur regelmäßige Termine'), $this->overviewURL(['request_periods' => 'periodic']), - $this->filter['request_periods'] == 'periodic' + !empty($this->filter['request_periods']) && $this->filter['request_periods'] == 'periodic' ); $widget->addRadioButton( _('Nur unregelmäßige Termine'), $this->overviewURL(['request_periods' => 'aperiodic']), - $this->filter['request_periods'] == 'aperiodic' + !empty($this->filter['request_periods']) && $this->filter['request_periods'] == 'aperiodic' ); $widget->addElement(new WidgetElement('<br>')); $widget->addCheckbox( _('Nur mit Raumangabe'), - $this->filter['specific_requests'], + !empty($this->filter['specific_requests']), $this->overviewURL(['toggle_specific_requests' => 1]) ); $widget->addCheckbox( @@ -740,9 +740,14 @@ class Resources_RoomRequestController extends AuthenticatedController 'dow-all' ); foreach (range(1, 7) as $day) { - $dow_selector->addElement(new SelectElement( - $day, strftime('%A', strtotime('this monday +' . ($day - 1) . ' day')), $this->filter['dow'] == $day - ), 'dow-' . $day); + $dow_selector->addElement( + new SelectElement( + $day, + strftime('%A', strtotime('this monday +' . ($day - 1) . ' day')), + !empty($this->filter['dow']) && $this->filter['dow'] == $day + ), + 'dow-' . $day + ); } $sidebar->addWidget($dow_selector, 'filter-dow'); @@ -796,7 +801,7 @@ class Resources_RoomRequestController extends AuthenticatedController $this->sort_order = $this->filter['sort_order']; $this->sort_var = $this->filter['sorting']; - $this->request_status = $this->filter['request_status']; + $this->request_status = $this->filter['request_status'] ?? ''; } public function index_action($request_id = null) diff --git a/app/controllers/room_management/planning.php b/app/controllers/room_management/planning.php index 5890a66d17fdb8f97bc4ce690eaf64fc6248ac6e..5a04bb4e8d098294f7c02509fa0dd15e45534a44 100644 --- a/app/controllers/room_management/planning.php +++ b/app/controllers/room_management/planning.php @@ -31,6 +31,10 @@ class RoomManagement_PlanningController extends AuthenticatedController Navigation::activateItem('/resources/planning/index'); } $selected_clipboard_id = Request::get('clipboard_id', $selected_clipboard_id); + + $this->no_clipboard = false; + $this->no_rooms = false; + if ($selected_clipboard_id) { $_SESSION['selected_clipboard_id'] = $selected_clipboard_id; } else { @@ -259,6 +263,10 @@ class RoomManagement_PlanningController extends AuthenticatedController } $selected_clipboard_id = Request::get('clipboard_id', $selected_clipboard_id); + + $this->no_clipboard = false; + $this->no_rooms = false; + if ($selected_clipboard_id) { $_SESSION['selected_clipboard_id'] = $selected_clipboard_id; } else { @@ -359,7 +367,7 @@ class RoomManagement_PlanningController extends AuthenticatedController } $semester_selector = new SemesterSelectorWidget( URLHelper::getURL( - 'dispatch.php/room_management/planning/semester_plan/' . $this->resource->id, + 'dispatch.php/room_management/planning/semester_plan/' . (!empty($this->resource) ? $this->resource->id : ''), [ 'allday' => Request::get('allday', false) ] @@ -1042,6 +1050,8 @@ class RoomManagement_PlanningController extends AuthenticatedController } $selected_clipboard_id = Request::get('clipboard_id', $selected_clipboard_id); + $this->standalone = false; + if ($selected_clipboard_id) { $_SESSION['selected_clipboard_id'] = $selected_clipboard_id; } else { diff --git a/app/views/resources/_common/_grouped_room_list.php b/app/views/resources/_common/_grouped_room_list.php index 95a56863873c180d44b0d59c4a55527e6c0eb750..66ca47f4075b82b55d776d8924611c9d123164cd 100644 --- a/app/views/resources/_common/_grouped_room_list.php +++ b/app/views/resources/_common/_grouped_room_list.php @@ -12,7 +12,7 @@ */ ?> <? if ($grouped_rooms) : ?> - <? if ($title) : ?> + <? if (!empty($title)) : ?> <h1><?= htmlReady($title) ?></h1> <? endif ?> <? foreach ($grouped_rooms as $group) : ?> @@ -56,7 +56,7 @@ <tr> <td> <a href="<?= $room_link ?>" - <?= $show_in_dialog ? 'data-dialog="size=big"' : '' ?>> + <?= !empty($show_in_dialog) ? 'data-dialog="size=big"' : '' ?>> <?= htmlReady($resource->name) ?> </a> </td> diff --git a/app/views/resources/_common/_permission_table.php b/app/views/resources/_common/_permission_table.php index c23302fd67348f7e9fb7612713701e463b377ca1..614ce577b5ed2a24d7993901c9b0fb79cb6895b7 100644 --- a/app/views/resources/_common/_permission_table.php +++ b/app/views/resources/_common/_permission_table.php @@ -43,14 +43,14 @@ if (!isset($show_delete_action)) { <table class="default sortable-table resource-permissions-table" data-sortlist="[[1, 0]]" <?= $table_id ? 'id="' . htmlReady($table_id) . '"' : '' ?>> - <? if ($table_caption): ?> + <? if (!empty($table_caption)): ?> <caption><?= htmlReady($table_caption) ?></caption> <? endif ?> <colgroup> <col class="checkbox"> <col> <col> - <? if ($custom_columns): ?> + <? if (!empty($custom_columns)): ?> <? foreach ($custom_columns as $column_name): ?> <col> <? endforeach ?> @@ -65,7 +65,7 @@ if (!isset($show_delete_action)) { </th> <th data-sort="text"><?= _('Name') ?></th> <th data-sort="htmldata"><?= _('Rechtestufe') ?></th> - <? if ($custom_columns): ?> + <? if (!empty($custom_columns)): ?> <? foreach (array_keys($custom_columns) as $column_name): ?> <th><?= htmlReady($column_name) ?></th> <? endforeach ?> @@ -82,7 +82,7 @@ if (!isset($show_delete_action)) { 'data-activates-condition' => 'table.resource-permissions-table :checkbox:checked' ]; ?> - + <?= \Studip\Button::create(_('Löschen'), 'bulk_delete', $button_attrs) ?> </td> </tr> @@ -158,7 +158,7 @@ if (!isset($show_delete_action)) { </option> </select> </td> - <? if ($custom_columns): ?> + <? if (!empty($custom_columns)): ?> <? foreach ($custom_columns as $column_content): ?> <td> <?= htmlReady($column_content[$permission->id]) ?> @@ -205,7 +205,7 @@ if (!isset($show_delete_action)) { </option> </select> </td> - <? if ($custom_columns): ?> + <? if (!empty($custom_columns)): ?> <? foreach (array_keys($custom_columns) as $column_name): ?> <td><?= htmlReady($custom_columns[$column_name]) ?></td> <? endforeach ?> diff --git a/app/views/resources/_common/_request_tr.php b/app/views/resources/_common/_request_tr.php index a6324bf0f5cbe65e8eb7236eb4434bf8a516c808..bd827a8b7cd246d9007d9afbad70b5d0220685c4 100644 --- a/app/views/resources/_common/_request_tr.php +++ b/app/views/resources/_common/_request_tr.php @@ -131,7 +131,7 @@ $edit_url = $controller->link_for('resources/room_request/edit/' . $request->id); $edit_url_attributes = ['data-dialog' => 'size=auto']; } - if ($edit_url && $edit_urL_attributes) { + if ($edit_url && $edit_url_attributes) { $action_menu->addLink( $edit_url, _('Anfrage bearbeiten'), diff --git a/app/views/resources/_common/_resource_tr.php b/app/views/resources/_common/_resource_tr.php index 7201d230fdf1603c42f1c39a5db872fc77b80fc6..839e112061f481662b87598c34afe76b4ac41760 100644 --- a/app/views/resources/_common/_resource_tr.php +++ b/app/views/resources/_common/_resource_tr.php @@ -75,7 +75,7 @@ */ ?> <tr> - <? if ($checkbox_data && $checkbox_data['name']): ?> + <? if (!empty($checkbox_data) && $checkbox_data['name']): ?> <? if ($checkbox_data['checked']) { $checkbox_data['checked'] = 'checked'; @@ -93,7 +93,7 @@ ? $resource->getActionLink('booking_plan') : $resource->getActionLink('show') ) ?>" - <?= $user_has_booking_rights ? '' : 'data-dialog' ?> + <?= !empty($user_has_booking_rights) ? '' : 'data-dialog' ?> data-id="<?= htmlReady($resource->id) ?>" data-range_type="<?= $clipboard_range_type ? htmlReady($clipboard_range_type) @@ -120,7 +120,7 @@ <?= Icon::create('link-intern')->asImg(['class' => 'text-bottom']) ?> <? endif ?> </a> - <? if ($resource_tooltip): ?> + <? if (!empty($resource_tooltip)): ?> <span class="text-bottom"> <?= tooltipIcon($resource_tooltip) ?> </span> @@ -142,7 +142,7 @@ </td> <? endforeach ?> <? endif ?> - <? if ($additional_columns): ?> + <? if (!empty($additional_columns)): ?> <? foreach ($additional_columns as $column): ?> <td> <?= htmlReady($column) ?> diff --git a/app/views/resources/_common/_room_tr.php b/app/views/resources/_common/_room_tr.php index 79502118d9fe9df75f90df60b249d4ba6388e24a..37f26d1b59f71f4890eb458eaa3fffe4174489a6 100644 --- a/app/views/resources/_common/_room_tr.php +++ b/app/views/resources/_common/_room_tr.php @@ -52,10 +52,10 @@ if ($room->requestable && $show_autor_actions) { <?= $this->render_partial( 'resources/_common/_resource_tr.php', [ - 'checkbox_data' => $checkbox_data, + 'checkbox_data' => $checkbox_data ?? '', 'resource' => $room, 'booking_plan_link_on_name' => true, - 'resource_tooltip' => $room_tooltip, + 'resource_tooltip' => $room_tooltip ?? '', 'show_global_admin_actions' => $show_global_admin_actions, 'show_admin_actions' => $show_admin_actions, 'show_tutor_actions' => $show_tutor_actions, @@ -67,7 +67,7 @@ if ($room->requestable && $show_autor_actions) { 'additional_properties' => ['seats'], 'clipboard_range_type' => 'Room', 'additional_actions' => ( - is_array($additional_actions) + (!empty($additional_actions) && is_array($additional_actions)) ? array_merge( $room_actions, $additional_actions diff --git a/app/views/resources/admin/property_groups.php b/app/views/resources/admin/property_groups.php index 0146474788d4d9012d8bca4b0d7ec07323ee83ed..9859c6e9dab4ab3cc3305aacc8b5634523c88a59 100644 --- a/app/views/resources/admin/property_groups.php +++ b/app/views/resources/admin/property_groups.php @@ -140,12 +140,12 @@ <? if ($property_groups): ?> <select name="property_move[<?= htmlReady($property->id)?>]"> <option value="" - <?= $property_move[$property->id] == '' + <?= empty($property_move[$property->id]) ? 'selected="selected"' : '' ?>></option> <? foreach ($property_groups as $group): ?> <option value="<?= htmlReady($group->id) ?>" - <?= $property_move[$property->id] == $group->id + <?= (!empty($property_move[$property->id]) && $property_move[$property->id] == $group->id) ? 'selected="selected"' : '' ?>> <?= htmlReady($group->name) ?> diff --git a/app/views/resources/resource/_standard_properties_form_part.php b/app/views/resources/resource/_standard_properties_form_part.php index d4b5149e22a6c509381cf0e081984fcfb1507038..2cd81e81f6bf0d6d8feba68afb0c15bc4b6e4a03 100644 --- a/app/views/resources/resource/_standard_properties_form_part.php +++ b/app/views/resources/resource/_standard_properties_form_part.php @@ -18,7 +18,7 @@ <section> <? foreach ($properties as $property): ?> <?= $property->toHtmlInput( - $property_data[$property->id], + $property_data[$property->id] ?? '', '', true, true diff --git a/app/views/resources/resource/permissions.php b/app/views/resources/resource/permissions.php index b0e82d9798789608b87a3f270940a64e517bd578..02cf057ff8ade88f16dfd27f55502adaad31c490 100644 --- a/app/views/resources/resource/permissions.php +++ b/app/views/resources/resource/permissions.php @@ -23,7 +23,7 @@ : 'data-dialog' ) : '') ?>> - <? if ($custom_hidden_fields): ?> + <? if (!empty($custom_hidden_fields)): ?> <? foreach ($custom_hidden_fields as $name => $content): ?> <? if (is_array($content)): ?> <? foreach ($content as $item): ?> @@ -41,7 +41,7 @@ 'resources/_common/_permission_table.php', [ 'permissions' => $permissions, - 'custom_empty_list_message' => $custom_empty_list_message, + 'custom_empty_list_message' => $custom_empty_list_message ?? '', 'table_id' => $table_id, 'single_user' => $user ] @@ -53,7 +53,7 @@ <?= $user_search->render() ?> </label> </p> - <? if ($course_search): ?> + <? if (!empty($course_search)): ?> <p> <label> <?= _('Teilnehmende aus Veranstaltung hinzufügen') ?> @@ -65,7 +65,7 @@ <div data-dialog-button> <?= \Studip\Button::create( - ($custom_save_button_text ? $custom_save_button_text : _('Speichern')), + $custom_save_button_text ?? _('Speichern'), 'save' ) ?> </div> diff --git a/app/views/resources/room/_add_edit_form.php b/app/views/resources/room/_add_edit_form.php index f0a640bb0b2e9ea852aae980a75ff705f52ae65d..320996ccc26a1c6ea2e108b57b2f658d140d7ea3 100644 --- a/app/views/resources/room/_add_edit_form.php +++ b/app/views/resources/room/_add_edit_form.php @@ -39,11 +39,11 @@ </label> <label> <?= _('Raumtyp') ?> - <input type="text" name="room_type" value="<?= htmlReady($room_type) ?>"> + <input type="text" name="room_type" value="<?= htmlReady($room_type ?? '') ?>"> </label> <label> <?= _('Sitzplätze') ?> - <input type="number" name="seats" value="<?= htmlReady($seats) ?>"> + <input type="number" name="seats" value="<?= htmlReady($seats ?? '0') ?>"> </label> <label> <input type="checkbox" name="booking_plan_is_public" value="1" diff --git a/app/views/resources/room/select_category.php b/app/views/resources/room/select_category.php index 7d2249b30a473ca7d15e6d37f3a832480496a862..80acb518835f36e5b135878a031d43c67fae56cd 100644 --- a/app/views/resources/room/select_category.php +++ b/app/views/resources/room/select_category.php @@ -1,5 +1,5 @@ <? if ($categories) : ?> - <form method="get" action="<?= $controller->url_for('resources/room/add/' . $room_id) ?>" class="default" + <form method="get" action="<?= $controller->url_for('resources/room/add/') ?>" class="default" data-dialog="size=auto"> <label> <?= _('Raumkategorie') ?> diff --git a/app/views/resources/room_planning/semester_plan.php b/app/views/resources/room_planning/semester_plan.php index 55d7056a2396a8e624cbfe6a2ee802cfa395e391..f950ed12eec3a10e6b1f47776c00bc7507d8b1a2 100644 --- a/app/views/resources/room_planning/semester_plan.php +++ b/app/views/resources/room_planning/semester_plan.php @@ -1,4 +1,4 @@ -<? if ($resource) : ?> +<? if (!empty($resource)) : ?> <? if (Request::get("allday")) { $min_time = '00:00:00'; $max_time = '24:00:00'; diff --git a/lib/classes/restapi/RouteMap.php b/lib/classes/restapi/RouteMap.php index 61e1fc2a2a867d3faae7e83d9d64ed37d35cfa0d..e418ecd40626e7876b75b670621e1b60d68ee986 100644 --- a/lib/classes/restapi/RouteMap.php +++ b/lib/classes/restapi/RouteMap.php @@ -315,8 +315,8 @@ abstract class RouteMap // find the requested media type private function getRequestMediaType() { - if ($contentType = $_SERVER['CONTENT_TYPE']) { - $contentTypeParts = preg_split('/\s*[;,]\s*/', $contentType); + if (!empty($_SERVER['CONTENT_TYPE'])) { + $contentTypeParts = preg_split('/\s*[;,]\s*/', $_SERVER['CONTENT_TYPE']); return mb_strtolower($contentTypeParts[0]); } } @@ -947,6 +947,9 @@ abstract class RouteMap public function urlf($addr_f, $format_params, $url_params = null) { + if (!is_array($format_params)) { + $format_params = [$format_params]; + } return $this->url(vsprintf($addr_f, $format_params), $url_params); } diff --git a/lib/classes/restapi/Router.php b/lib/classes/restapi/Router.php index de663bdabca676fc20333a806b7b0f298c89d8f1..a66463ec91d8c4ab458c052113a90979d0379be8 100644 --- a/lib/classes/restapi/Router.php +++ b/lib/classes/restapi/Router.php @@ -364,7 +364,10 @@ class Router $content_renderer = $this->negotiateContent($uri); - [$route, $parameters, $allow_nobody] = $this->matchRoute($uri, $method, $content_renderer); + $match_result = $this->matchRoute($uri, $method, $content_renderer); + $route = $match_result[0]; + $parameters = $match_result[1]; + $allow_nobody = $match_result[2] ?? false; if (!$route) { //No route found for the combination of URI and method. //We return the allowed methods for the route in the HTTP header: @@ -483,7 +486,7 @@ class Router $result = call_user_func_array($handler, $parameters); - if (method_exists($result, 'toArray')) { + if (is_object($result) && method_exists($result, 'toArray')) { $result = $result->toArray(); } diff --git a/lib/models/SimpleORMap.class.php b/lib/models/SimpleORMap.class.php index cf09f450511deaa8155a8a0346444098a140930e..5fed34a9a5b682a727afca44e1f975741364e331 100644 --- a/lib/models/SimpleORMap.class.php +++ b/lib/models/SimpleORMap.class.php @@ -1465,7 +1465,7 @@ class SimpleORMap implements ArrayAccess, Countable, IteratorAggregate $field = strtolower($field); $options = $this->getRelationOptions($relation); if ($options['type'] === 'has_one' || $options['type'] === 'belongs_to') { - return $this->{$relation}->{$field}; + return $this->{$relation}->{$field} ?? null; } else { throw new InvalidArgumentException('Relation ' . $relation . ' not found or not applicable.'); } diff --git a/lib/models/resources/Resource.class.php b/lib/models/resources/Resource.class.php index fa854a636c00e12a8b8c58afb0af9d8acec39d34..e66598dd89a6cfaeb28780c0ce7867f512315be3 100644 --- a/lib/models/resources/Resource.class.php +++ b/lib/models/resources/Resource.class.php @@ -1365,10 +1365,10 @@ class Resource extends SimpleORMap implements StudipItem continue; } $group_name = ''; - if ($property->definition->group->name) { + if (!empty($property->definition->group->name)) { $group_name = $property->definition->group->name; } - if (!is_array($property_groups[$group_name])) { + if (empty($property_groups[$group_name]) || !is_array($property_groups[$group_name])) { $property_groups[$group_name] = []; } $property_groups[$group_name][] = $property; diff --git a/lib/models/resources/ResourceCategory.class.php b/lib/models/resources/ResourceCategory.class.php index 90783737af640f5f85ca870ae8ea9c76f1e60460..9738cbcef7568eff4e4c68c7b35f6589a212f903 100644 --- a/lib/models/resources/ResourceCategory.class.php +++ b/lib/models/resources/ResourceCategory.class.php @@ -210,7 +210,7 @@ class ResourceCategory extends SimpleORMap ]; $property_groups = []; foreach ($definitions as $definition) { - if ($definition->group->name) { + if ($definition->group && $definition->group->name) { $group_name = $definition->group->name; if (!is_array($property_groups[$group_name])) { $property_groups[$group_name] = []; diff --git a/lib/resources/RoomManager.class.php b/lib/resources/RoomManager.class.php index 240ce4598132eb521140314782b7ff168934f642..3c956a004c06cde1d21c288992e74000a8b31f00 100644 --- a/lib/resources/RoomManager.class.php +++ b/lib/resources/RoomManager.class.php @@ -838,13 +838,13 @@ class RoomManager //Invalid room continue; } - if (!is_array($grouped_rooms[$location->id])) { + if (empty($grouped_rooms[$location->id])) { $grouped_rooms[$location->id] = [ 'location' => $location, 'buildings' => [] ]; } - if (!is_array($grouped_rooms[$location->id]['buildings'][$building->id])) { + if (empty($grouped_rooms[$location->id]['buildings'][$building->id])) { $grouped_rooms[$location->id]['buildings'][$building->id] = [ 'building' => $building, 'rooms' => []