Reapplied "Merge pull request #319 from jwacalex/gh_317_unable_to_edit_hidden_room_in_admin"

This commit is contained in:
Igor Scheller 2017-07-17 23:08:15 +02:00
parent a2b9edc6a3
commit 317c91a22f
3 changed files with 23 additions and 8 deletions

View File

@ -19,7 +19,11 @@ function room_controller()
redirect(page_link_to());
}
$room = load_room();
$room = load_room(false);
if ($room['show'] != 'Y' && !in_array('admin_rooms', $privileges)) {
redirect(page_link_to());
}
$all_shifts = Shifts_by_room($room);
$days = [];
foreach ($all_shifts as $shift) {
@ -99,15 +103,16 @@ function room_edit_link($room)
/**
* Loads room by request param room_id
*
* @param bool $onlyVisible
* @return array
*/
function load_room()
function load_room($onlyVisible = true)
{
if (!test_request_int('room_id')) {
redirect(page_link_to());
}
$room = Room($_REQUEST['room_id']);
$room = Room($_REQUEST['room_id'], $onlyVisible);
if ($room == null) {
redirect(page_link_to());
}

View File

@ -57,16 +57,16 @@ function Room_create($name, $from_frab, $public, $number = null)
* Returns room by id.
*
* @param int $room_id RID
* @param bool $show_only
* @param bool $onlyVisible
* @return array|false
*/
function Room($room_id, $show_only = true)
function Room($room_id, $onlyVisible = true)
{
$room_source = DB::select('
SELECT *
FROM `Room`
WHERE `RID` = ?
' . ($show_only ? 'AND `show` = \'Y\'' : ''),
' . ($onlyVisible ? 'AND `show` = \'Y\'' : ''),
[$room_id]
);

View File

@ -197,7 +197,8 @@ function make_room_navigation($menu)
return $menu;
}
$rooms = Rooms();
// Get a list of all rooms
$rooms = Rooms(true);
$room_menu = [];
if (in_array('admin_rooms', $privileges)) {
$room_menu[] = toolbar_item_link(page_link_to('admin_rooms'), 'list', _('Manage rooms'));
@ -206,7 +207,16 @@ function make_room_navigation($menu)
$room_menu[] = toolbar_item_divider();
}
foreach ($rooms as $room) {
$room_menu[] = toolbar_item_link(room_link($room), 'map-marker', $room['Name']);
if (
$room['show'] == 'Y' // room is public
|| (
// room is not public, but user can admin_rooms
$room['show'] != 'Y'
&& in_array('admin_rooms', $privileges)
)
) {
$room_menu[] = toolbar_item_link(room_link($room), 'map-marker', $room['Name']);
}
}
if (count($room_menu) > 0) {
$menu[] = toolbar_dropdown('map-marker', _('Rooms'), $room_menu);