From 9098b8e80d4d790609f0a267b88169a129366b1b Mon Sep 17 00:00:00 2001 From: msquare Date: Fri, 18 Nov 2016 08:47:52 +0100 Subject: reduce complexity of user view --- includes/view/User_view.php | 121 ++++++++++++++++++++++++++------------------ 1 file changed, 73 insertions(+), 48 deletions(-) (limited to 'includes/view/User_view.php') diff --git a/includes/view/User_view.php b/includes/view/User_view.php index 09509c3d..65cb36b3 100644 --- a/includes/view/User_view.php +++ b/includes/view/User_view.php @@ -223,67 +223,83 @@ function User_shift_state_render($user) { return '' . _("Shift ends %c") . ''; } -function User_view($user_source, $admin_user_privilege, $freeloader, $user_angeltypes, $user_groups, $shifts, $its_me) { +function User_view_shiftentries($needed_angel_type) { + $shift_info = '
' . $needed_angel_type['name'] . ': '; + + $shift_entries = []; + foreach ($needed_angel_type['users'] as $user_shift) { + $member = User_Nick_render($user_shift); + if ($user_shift['freeloaded']) { + $member = '' . $member . ''; + } + + $shift_entries[] = $member; + } + $shift_info .= join(", ", $shift_entries); + + return $shift_info; +} + +/** + * Helper that renders a shift line for user view + */ +function User_view_myshift($shift, $user_source, $its_me) { global $LETZTES_AUSTRAGEN, $privileges; - $user_name = htmlspecialchars($user_source['Vorname']) . " " . htmlspecialchars($user_source['Name']); + $shift_info = '' . $shift['name'] . ''; + if ($shift['title']) { + $shift_info .= '
' . $shift['title'] . ''; + } + foreach ($shift['needed_angeltypes'] as $needed_angel_type) { + $shift_info .= User_view_shiftentries($needed_angel_type); + } + + $myshift = [ + 'date' => date("Y-m-d", $shift['start']), + 'time' => date("H:i", $shift['start']) . ' - ' . date("H:i", $shift['end']), + 'room' => $shift['Name'], + 'shift_info' => $shift_info, + 'comment' => $shift['Comment'] + ]; + + if ($shift['freeloaded']) { + if (in_array("user_shifts_admin", $privileges)) { + $myshift['comment'] .= '

' . _("Freeloaded") . ': ' . $shift['freeload_comment'] . '

'; + } else { + $myshift['comment'] .= '

' . _("Freeloaded") . '

'; + } + } + + $myshift['actions'] = [ + button(shift_link($shift), glyph('eye-open') . _('view'), 'btn-xs') + ]; + if ($its_me || in_array('user_shifts_admin', $privileges)) { + $myshift['actions'][] = button(page_link_to('user_myshifts') . '&edit=' . $shift['id'] . '&id=' . $user_source['UID'], glyph('edit') . _('edit'), 'btn-xs'); + } + if (($shift['start'] > time() + $LETZTES_AUSTRAGEN * 3600) || in_array('user_shifts_admin', $privileges)) { + $myshift['actions'][] = button(page_link_to('user_myshifts') . ((! $its_me) ? '&id=' . $user_source['UID'] : '') . '&cancel=' . $shift['id'], glyph('trash') . _('sign off'), 'btn-xs'); + } + $myshift['actions'] = table_buttons($myshift['actions']); + return $myshift; +} + +/** + * Helper that prepares the shift table for user view + */ +function User_view_myshifts($shifts, $user_source, $its_me) { $myshifts_table = []; $timesum = 0; foreach ($shifts as $shift) { - $shift_info = '' . $shift['name'] . ''; - if ($shift['title']) { - $shift_info .= '
' . $shift['title'] . ''; - } - foreach ($shift['needed_angeltypes'] as $needed_angel_type) { - $shift_info .= '
' . $needed_angel_type['name'] . ': '; - - $shift_entries = []; - foreach ($needed_angel_type['users'] as $user_shift) { - $member = User_Nick_render($user_shift); - if ($user_shift['freeloaded']) { - $member = '' . $member . ''; - } - - $shift_entries[] = $member; - } - $shift_info .= join(", ", $shift_entries); - } - - $myshift = [ - 'date' => date("Y-m-d", $shift['start']), - 'time' => date("H:i", $shift['start']) . ' - ' . date("H:i", $shift['end']), - 'room' => $shift['Name'], - 'shift_info' => $shift_info, - 'comment' => $shift['Comment'] - ]; - - if ($shift['freeloaded']) { - if (in_array("user_shifts_admin", $privileges)) { - $myshift['comment'] .= '

' . _("Freeloaded") . ': ' . $shift['freeload_comment'] . '

'; - } else { - $myshift['comment'] .= '

' . _("Freeloaded") . '

'; - } - } - - $myshift['actions'] = [ - button(shift_link($shift), glyph('eye-open') . _('view'), 'btn-xs') - ]; - if ($its_me || in_array('user_shifts_admin', $privileges)) { - $myshift['actions'][] = button(page_link_to('user_myshifts') . '&edit=' . $shift['id'] . '&id=' . $user_source['UID'], glyph('edit') . _('edit'), 'btn-xs'); - } - if (($shift['start'] > time() + $LETZTES_AUSTRAGEN * 3600) || in_array('user_shifts_admin', $privileges)) { - $myshift['actions'][] = button(page_link_to('user_myshifts') . ((! $its_me) ? '&id=' . $user_source['UID'] : '') . '&cancel=' . $shift['id'], glyph('trash') . _('sign off'), 'btn-xs'); - } - $myshift['actions'] = table_buttons($myshift['actions']); + $myshifts_table[] = User_view_myshift($shift, $user_source, $its_me); if ($shift['freeloaded']) { $timesum += (- 2 * ($shift['end'] - $shift['start'])); } else { $timesum += ($shift['end'] - $shift['start']); } - $myshifts_table[] = $myshift; } + if (count($myshifts_table) > 0) { $myshifts_table[] = [ 'date' => '' . _("Sum:") . '', @@ -294,6 +310,15 @@ function User_view($user_source, $admin_user_privilege, $freeloader, $user_angel 'actions' => "" ]; } + return $myshifts_table; +} + +/** + * Renders view for a single user + */ +function User_view($user_source, $admin_user_privilege, $freeloader, $user_angeltypes, $user_groups, $shifts, $its_me) { + $user_name = htmlspecialchars($user_source['Vorname']) . " " . htmlspecialchars($user_source['Name']); + $myshifts_table = User_view_myshifts($shifts, $user_source, $its_me); return page_with_title(' ' . htmlspecialchars($user_source['Nick']) . ' ' . $user_name . '', [ msg(), -- cgit v1.2.3-54-g00ecf