From 1d9e1c467cf4d3920f9bcf0157481c7ca8ea6d5d Mon Sep 17 00:00:00 2001 From: Philip Häusler Date: Sun, 28 Sep 2014 14:50:08 +0200 Subject: user list rewritten --- includes/controller/angeltypes_controller.php | 2 +- includes/controller/users_controller.php | 41 ++++++++++++- includes/model/User_model.php | 10 +++ includes/pages/admin_user.php | 88 ++------------------------- includes/sys_template.php | 24 +++++++- includes/view/User_view.php | 47 ++++++++++++++ 6 files changed, 125 insertions(+), 87 deletions(-) (limited to 'includes') diff --git a/includes/controller/angeltypes_controller.php b/includes/controller/angeltypes_controller.php index 93c0e6bf..79ffcfb4 100644 --- a/includes/controller/angeltypes_controller.php +++ b/includes/controller/angeltypes_controller.php @@ -225,7 +225,7 @@ function angeltypes_list_controller() { $angeltype['restricted'] = $angeltype['restricted'] ? '' . _(' : ''; $angeltype['name'] = '' . $angeltype['name'] . ''; - $angeltype['actions'] = buttons($actions); + $angeltype['actions'] = table_buttons($actions); } return array( diff --git a/includes/controller/users_controller.php b/includes/controller/users_controller.php index 1f3b3677..b1692e21 100644 --- a/includes/controller/users_controller.php +++ b/includes/controller/users_controller.php @@ -55,7 +55,46 @@ function user_controller() { } function users_list_controller() { - redirect(page_link_to('admin_user')); + global $privileges; + + if (! in_array('admin_user', $privileges)) + redirect(page_link_to('')); + + $order_by = 'Nick'; + if (isset($_REQUEST['OrderBy']) && in_array($_REQUEST['OrderBy'], array( + 'Nick', + 'Name', + 'Vorname', + 'Alter', + 'DECT', + 'email', + 'Size', + 'Gekommen', + 'Aktiv', + 'force_active', + 'Tshirt', + 'lastLogIn' + ))) + $order_by = $_REQUEST['OrderBy']; + + $users = Users($order_by); + if ($users === false) + engelsystem_error('Unable to load users.'); + + foreach ($users as &$user) { + $user['freeloads'] = sql_select_single_cell("SELECT COUNT(*) FROM `ShiftEntry` WHERE `freeloaded` = 1 AND `UID` = " . sql_escape($user['UID'])); + } + + $arrived_count = sql_select_single_cell("SELECT COUNT(*) FROM `User` WHERE `Gekommen` = 1"); + $active_count = sql_select_single_cell("SELECT COUNT(*) FROM `User` WHERE `Aktiv` = 1"); + $force_active_count = sql_select_single_cell("SELECT COUNT(*) FROM `User` WHERE `force_active` = 1"); + $freeloads_count = sql_select_single_cell("SELECT COUNT(*) FROM `ShiftEntry` WHERE `freeloaded` = 1"); + $tshirts_count = sql_select_single_cell("SELECT COUNT(*) FROM `User` WHERE `Tshirt` = 1"); + + return array( + _('All users'), + Users_view($users, $order_by, $arrived_count, $active_count, $force_active_count, $freeloads_count, $tshirts_count) + ); } /** diff --git a/includes/model/User_model.php b/includes/model/User_model.php index 7d2809f7..af4c4a97 100644 --- a/includes/model/User_model.php +++ b/includes/model/User_model.php @@ -1,8 +1,18 @@ 0) { $id = $_REQUEST['id']; if (! isset($_REQUEST['action'])) { - $html .= '

' . _('Edit user') . '

'; $html .= "Hallo,
" . "hier kannst du den Eintrag ändern. Unter dem Punkt 'Gekommen' " . "wird der Engel als anwesend markiert, ein Ja bei Aktiv bedeutet, " . "dass der Engel aktiv war und damit ein Anspruch auf ein T-Shirt hat. " . "Wenn T-Shirt ein 'Ja' enthält, bedeutet dies, dass der Engel " . "bereits sein T-Shirt erhalten hat.

\n"; $html .= "
\n"; @@ -265,90 +264,11 @@ function admin_user() { } } } else { - // Userliste, keine UID uebergeben... - $html .= '

' . _('All users') . '

'; - - $html .= "Neuen Engel eintragen »

\n"; - - if (! isset($_GET["OrderBy"])) - $_GET["OrderBy"] = "Nick"; - $SQL = "SELECT * FROM `User` ORDER BY `" . sql_escape($_GET["OrderBy"]) . "` ASC"; - $angels = sql_select($SQL); - - function prepare_angel_table($angel) { - global $privileges; - $groups = sql_select_single_col("SELECT `Name` FROM `UserGroups` JOIN `Groups` ON (`Groups`.`UID` = `UserGroups`.`group_id`) WHERE `UserGroups`.`uid`=" . sql_escape($angel["UID"]) . " ORDER BY `Groups`.`Name`"); - $angeltypes = sql_select_single_col(" - SELECT `AngelTypes`.`name` - FROM `UserAngelTypes` - JOIN `AngelTypes` ON (`UserAngelTypes`.`angeltype_id`=`AngelTypes`.`id`) - WHERE `user_id`=" . sql_escape($angel['UID'])); - $popup = ''; @@ -292,7 +310,11 @@ function button($href, $label, $class = "") { * Rendert eine Toolbar mit Knöpfen */ function buttons($buttons = array ()) { - return '
' . join(' ', $buttons) . '
'; + return '
' . table_buttons($buttons) . '
'; +} + +function table_buttons($buttons = array()) { + return '
' . join(' ', $buttons) . '
'; } // Load and render template diff --git a/includes/view/User_view.php b/includes/view/User_view.php index 4c783644..a866439d 100644 --- a/includes/view/User_view.php +++ b/includes/view/User_view.php @@ -19,6 +19,53 @@ $tshirt_sizes = array( 'XL-G' => "XL Girl" ); +function Users_view($users, $order_by, $arrived_count, $active_count, $force_active_count, $freeloads_count, $tshirts_count) { + foreach ($users as &$user) { + $user['Gekommen'] = glyph_bool($user['Gekommen']); + $user['Aktiv'] = glyph_bool($user['Aktiv']); + $user['force_active'] = glyph_bool($user['force_active']); + $user['Tshirt'] = glyph_bool($user['Tshirt']); + $user['lastLogIn'] = date(_('m/d/Y h:i a'), $user['lastLogIn']); + $user['actions'] = table_buttons(array( + button(page_link_to('admin_user') . '&id=' . $user['UID'], _('edit'), 'btn-xs') + )); + } + $users[] = array( + 'Nick' => '' . _('Sum') . '', + 'Gekommen' => $arrived_count, + 'Aktiv' => $active_count, + 'force_active' => $force_active_count, + 'freeloads' => $freeloads_count, + 'Tshirt' => $tshirts_count, + 'actions' => '' . count($users) . '' + ); + + return page_with_title(_('All users'), array( + msg(), + buttons(array( + button(page_link_to('register'), glyph('plus') . _('New user')) + )), + table(array( + 'Nick' => Users_table_header_link('Nick', _('Nick'), $order_by), + 'Vorname' => Users_table_header_link('Vorname', _('Prename'), $order_by), + 'Name' => Users_table_header_link('Name', _('Name'), $order_by), + 'DECT' => Users_table_header_link('DECT', _('DECT'), $order_by), + 'Gekommen' => Users_table_header_link('Gekommen', _('Arrived'), $order_by), + 'freeloads' => _('Freeloads'), + 'Aktiv' => Users_table_header_link('Aktiv', _('Active'), $order_by), + 'force_active' => Users_table_header_link('force_active', _('Forced'), $order_by), + 'Tshirt' => Users_table_header_link('Tshirt', _('T-Shirt'), $order_by), + 'Size' => Users_table_header_link('Size', _('Size'), $order_by), + 'lastLogIn' => Users_table_header_link('lastLogIn', _('Last login'), $order_by), + 'actions' => '' + ), $users) + )); +} + +function Users_table_header_link($column, $label, $order_by) { + return '' . $label . ($order_by == $column ? ' ' : '') . ''; +} + function User_shift_state_render($user) { $upcoming_shifts = ShiftEntries_upcoming_for_user($user); if ($upcoming_shifts === false) -- cgit v1.2.3-54-g00ecf