diff options
author | Philip Häusler <msquare@notrademark.de> | 2011-12-17 15:18:13 +0100 |
---|---|---|
committer | Philip Häusler <msquare@notrademark.de> | 2011-12-17 15:18:13 +0100 |
commit | 61d61848a414dd266f7765fd89b35ce7b07a4e53 (patch) | |
tree | eb74da4bc35474336e0bded6806c360d095eaa94 | |
parent | d786fcde95cd9a418957ba76ffe4c9ed58711796 (diff) |
#1, #3, angels active and t-shirts
-rw-r--r-- | includes/pages/admin_active.php | 117 | ||||
-rw-r--r-- | includes/sys_menu.php | 1 | ||||
-rw-r--r-- | public/index.php | 4 | ||||
-rw-r--r-- | templates/admin_active.html | 39 |
4 files changed, 161 insertions, 0 deletions
diff --git a/includes/pages/admin_active.php b/includes/pages/admin_active.php new file mode 100644 index 00000000..d993395b --- /dev/null +++ b/includes/pages/admin_active.php @@ -0,0 +1,117 @@ +<?php +function admin_active() { + $msg = ""; + $search = ""; + $count = 0; + $limit = ""; + $set_active = ""; + if (isset ($_REQUEST['search'])) + $search = strip_request_item('search'); + + if (isset ($_REQUEST['set_active'])) { + $ok = true; + + if (isset ($_REQUEST['count']) && preg_match("/^[0-9]+$/", $_REQUEST['count'])) + $count = strip_request_item('count'); + else { + $ok = false; + $msg .= error("Please enter a number of angels to be marked as active."); + } + + if ($ok) + $limit = " LIMIT " . $count; + if (isset ($_REQUEST['ack'])) { + sql_query("UPDATE `User` SET `Aktiv` = 0 WHERE `Tshirt` = 0"); + $users = sql_select("SELECT `User`.*, COUNT(`ShiftEntry`.`id`) as `shift_count`, SUM(`end`-`start`) as `shift_length` FROM `User` LEFT JOIN `ShiftEntry` ON `User`.`UID` = `ShiftEntry`.`UID` LEFT JOIN `Shifts` ON `ShiftEntry`.`SID` = `Shifts`.`SID` WHERE `User`.`Gekommen` = 1 GROUP BY `User`.`UID` ORDER BY `shift_length` DESC" . $limit); + foreach ($users as $usr) + sql_query("UPDATE `User` SET `Aktiv` = 1 WHERE `UID`=" . sql_escape($usr['UID'])); + + $limit = ""; + $msg = success("Marked angels."); + } else { + $set_active = '<a href="' . page_link_to('admin_active') . '&serach=' . $search . '">« back</a> | <a href="' . page_link_to('admin_active') . '&search=' . $search . '&count=' . $count . '&set_active&ack">apply</a>'; + } + } + + if (isset ($_REQUEST['active']) && preg_match("/^[0-9]+$/", $_REQUEST['active'])) { + $id = $_REQUEST['active']; + sql_query("UPDATE `User` SET `Aktiv`=1 WHERE `UID`=" . sql_escape($id) . " LIMIT 1"); + $msg = success("Angel has been marked as active."); + } + elseif (isset ($_REQUEST['not_active']) && preg_match("/^[0-9]+$/", $_REQUEST['not_active'])) { + $id = $_REQUEST['not_active']; + sql_query("UPDATE `User` SET `Aktiv`=0 WHERE `UID`=" . sql_escape($id) . " LIMIT 1"); + $msg = success("Angel has been marked as not active."); + } + elseif (isset ($_REQUEST['tshirt']) && preg_match("/^[0-9]+$/", $_REQUEST['tshirt'])) { + $id = $_REQUEST['tshirt']; + sql_query("UPDATE `User` SET `Tshirt`=1 WHERE `UID`=" . sql_escape($id) . " LIMIT 1"); + $msg = success("Angel has got a t-shirt."); + } + elseif (isset ($_REQUEST['not_tshirt']) && preg_match("/^[0-9]+$/", $_REQUEST['not_tshirt'])) { + $id = $_REQUEST['not_tshirt']; + sql_query("UPDATE `User` SET `Tshirt`=0 WHERE `UID`=" . sql_escape($id) . " LIMIT 1"); + $msg = success("Angel has got no t-shirt."); + } + + $users = sql_select("SELECT `User`.*, COUNT(`ShiftEntry`.`id`) as `shift_count`, SUM(`end`-`start`) as `shift_length` FROM `User` LEFT JOIN `ShiftEntry` ON `User`.`UID` = `ShiftEntry`.`UID` LEFT JOIN `Shifts` ON `ShiftEntry`.`SID` = `Shifts`.`SID` WHERE `User`.`Gekommen` = 1 GROUP BY `User`.`UID` ORDER BY `shift_length` DESC" . $limit); + + $table = ""; + if ($search == "") + $tokens = array (); + else + $tokens = explode(" ", $search); + foreach ($users as $usr) { + if (count($tokens) > 0) { + $match = false; + $index = join("", $usr); + foreach ($tokens as $t) + if (strstr($index, trim($t))) { + $match = true; + break; + } + if (!$match) + continue; + } + $table .= '<tr>'; + $table .= '<td>' . $usr['Nick'] . '</td>'; + $table .= '<td>' . $usr['shift_count'] . '</td>'; + + if ($usr['shift_count'] == 0) + $table .= '<td>-</td>'; + else + $table .= '<td>' . round($usr['shift_length'] / 60) . ' min (' . round($usr['shift_length'] / 3600) . ' h)</td>'; + + if ($usr['Aktiv'] == 1) + $table .= '<td>yes</td>'; + else + $table .= '<td></td>'; + if ($usr['Tshirt'] == 1) + $table .= '<td>yes</td>'; + else + $table .= '<td></td>'; + + $actions = array (); + if ($usr['Aktiv'] == 0) + $actions[] = '<a href="' . page_link_to('admin_active') . '&active=' . $usr['UID'] . '&search=' . $search . '">set active</a>'; + if ($usr['Aktiv'] == 1 && $usr['Tshirt'] == 0) { + $actions[] = '<a href="' . page_link_to('admin_active') . '&not_active=' . $usr['UID'] . '&search=' . $search . '">remove active</a>'; + $actions[] = '<a href="' . page_link_to('admin_active') . '&tshirt=' . $usr['UID'] . '&search=' . $search . '">got t-shirt</a>'; + } + if ($usr['Tshirt'] == 1) + $actions[] = '<a href="' . page_link_to('admin_active') . '&not_tshirt=' . $usr['UID'] . '&search=' . $search . '">remove t-shirt</a>'; + + $table .= '<td>' . join(' | ', $actions) . '</td>'; + + $table .= '</tr>'; + } + return template_render('../templates/admin_active.html', array ( + 'search' => $search, + 'count' => $count, + 'set_active' => $set_active, + 'table' => $table, + 'msg' => $msg, + 'link' => page_link_to('admin_active') + )); +} +?>
\ No newline at end of file diff --git a/includes/sys_menu.php b/includes/sys_menu.php index 00bf4801..ef1998e1 100644 --- a/includes/sys_menu.php +++ b/includes/sys_menu.php @@ -37,6 +37,7 @@ function make_navigation() { // Admin Navigation $menu .= make_navigation_for(Get_Text('admin/'), array ( "admin_arrive", + "admin_active", "admin_user", "admin_usershifts", "admin_questions", diff --git a/public/index.php b/public/index.php index 1a58852b..d1865d4c 100644 --- a/public/index.php +++ b/public/index.php @@ -98,6 +98,10 @@ elseif (in_array($p, $privileges)) { require_once ('includes/pages/admin_arrive.php'); $content = admin_arrive(); } + elseif ($p == "admin_active") { + require_once ('includes/pages/admin_active.php'); + $content = admin_active(); + } elseif ($p == "admin_news") { require_once ('includes/pages/admin_news.php'); $content = admin_news(); diff --git a/templates/admin_active.html b/templates/admin_active.html new file mode 100644 index 00000000..51304334 --- /dev/null +++ b/templates/admin_active.html @@ -0,0 +1,39 @@ +<form action="%link%" method="post"> + <p> + Search Angel: <input type="text" name="search" value="%search%" /><input type="submit" name="submit" value="Search" /> + </p> + <p> + Mark <input type="text" name="count" value="%count%" style="width: 30px;"/>most working angels as active <input type="submit" name="set_active" value="Preview" /> + </p> + <p> + %set_active% + </p> +</form> +%msg% +<table> + <thead> + <tr> + <th> + Nickname + </th> + <th> + Shifts + </th> + <th> + Length + </th> + <th> + Active? + </th> + <th> + T-shirt? + </th> + <th> + Action + </th> + </tr> + </thead> + <tbody> + %table% + </tbody> +</table> |