diff --git a/includes/pages/admin_active.php b/includes/pages/admin_active.php index 7811d795..f0ea9d27 100644 --- a/includes/pages/admin_active.php +++ b/includes/pages/admin_active.php @@ -28,7 +28,7 @@ function admin_active() { $user_nicks = array(); foreach ($users as $usr) { sql_query("UPDATE `User` SET `Aktiv` = 1 WHERE `UID`=" . sql_escape($usr['UID'])); - $user_nicks[] = $usr['Nick']; + $user_nicks[] = User_Nick_render($usr); } engelsystem_log("These angels are active now: " . join(", ", $user_nicks)); @@ -44,7 +44,7 @@ function admin_active() { $user_source = User($id); if($user_source != null) { sql_query("UPDATE `User` SET `Aktiv`=1 WHERE `UID`=" . sql_escape($id) . " LIMIT 1"); - engelsystem_log("User " . $user_source['Nick'] . " is active now."); + engelsystem_log("User " . User_Nick_render($user_source) . " is active now."); $msg = success("Angel has been marked as active.", true); } else $msg = error("Angel not found.", true); @@ -54,7 +54,7 @@ function admin_active() { $user_source = User($id); if($user_source != null) { sql_query("UPDATE `User` SET `Aktiv`=0 WHERE `UID`=" . sql_escape($id) . " LIMIT 1"); - engelsystem_log("User " . $user_source['Nick'] . " is NOT active now."); + engelsystem_log("User " . User_Nick_render($user_source) . " is NOT active now."); $msg = success("Angel has been marked as not active.", true); } else $msg = error("Angel not found.", true); @@ -64,7 +64,7 @@ function admin_active() { $user_source = User($id); if($user_source != null) { sql_query("UPDATE `User` SET `Tshirt`=1 WHERE `UID`=" . sql_escape($id) . " LIMIT 1"); - engelsystem_log("User " . $user_source['Nick'] . " has tshirt now."); + engelsystem_log("User " . User_Nick_render($user_source) . " has tshirt now."); $msg = success("Angel has got a t-shirt.", true); } else $msg = error("Angel not found.", true); @@ -74,7 +74,7 @@ function admin_active() { $user_source = User($id); if($user_source != null) { sql_query("UPDATE `User` SET `Tshirt`=0 WHERE `UID`=" . sql_escape($id) . " LIMIT 1"); - engelsystem_log("User " . $user_source['Nick'] . " NO tshirt."); + engelsystem_log("User " . User_Nick_render($user_source) . " has NO tshirt."); $msg = success("Angel has got no t-shirt.", true); } else $msg = error("Angel not found.", true); @@ -100,7 +100,7 @@ function admin_active() { continue; } $table .= ''; - $table .= '' . $usr['Nick'] . ''; + $table .= '' . User_Nick_render($usr) . ''; $table .= '' . $tshirt_sizes[$usr['Size']] . ''; $table .= '' . $usr['shift_count'] . ''; diff --git a/includes/pages/admin_arrive.php b/includes/pages/admin_arrive.php index 805813cd..ad085de6 100644 --- a/includes/pages/admin_arrive.php +++ b/includes/pages/admin_arrive.php @@ -10,7 +10,7 @@ function admin_arrive() { $user_source = User($id); if($user_source != null) { sql_query("UPDATE `User` SET `Gekommen`=0 WHERE `UID`=" . sql_escape($id) . " LIMIT 1"); - engelsystem_log("User set to not arrived: " . $user_source['Nick']); + engelsystem_log("User set to not arrived: " . User_Nick_render($user_source)); $msg = success("Reset done. Angel has not arrived.", true); } else $msg = error("Angel not found.", true); } @@ -19,7 +19,7 @@ function admin_arrive() { $user_source = User($id); if($user_source != null) { sql_query("UPDATE `User` SET `Gekommen`=1 WHERE `UID`=" . sql_escape($id) . " LIMIT 1"); - engelsystem_log("User set has arrived: " . $user_source['Nick']); + engelsystem_log("User set has arrived: " . User_Nick_render($user_source)); $msg = success("Angel has been marked as arrived.", true); } else $msg = error("Angel not found.", true); } @@ -43,7 +43,7 @@ function admin_arrive() { continue; } $table .= ''; - $table .= '' . $usr['Nick'] . ''; + $table .= '' . User_Nick_render($usr) . ''; if ($usr['Gekommen'] == 1) $table .= 'yesreset'; else diff --git a/includes/pages/admin_free.php b/includes/pages/admin_free.php index 43b2e1a7..41f6c0e9 100644 --- a/includes/pages/admin_free.php +++ b/includes/pages/admin_free.php @@ -1,65 +1,62 @@ 'alle Typen'); - foreach ($angel_types_source as $angel_type) - $angel_types[$angel_type['id']] = $angel_type['name']; + $angel_types_source = sql_select("SELECT `id`, `name` FROM `AngelTypes` ORDER BY `name`"); + $angel_types = array('' => 'alle Typen'); + foreach ($angel_types_source as $angel_type) + $angel_types[$angel_type['id']] = $angel_type['name']; - $users = sql_select("SELECT `User`.* FROM `User` ${angeltypesearch} LEFT JOIN `ShiftEntry` ON `User`.`UID` = `ShiftEntry`.`UID` LEFT JOIN `Shifts` ON (`ShiftEntry`.`SID` = `Shifts`.`SID` AND `Shifts`.`start` < " . sql_escape(time()) . " AND `Shifts`.`end` > " . sql_escape(time()) . ") WHERE `User`.`Gekommen` = 1 AND `Shifts`.`SID` IS NULL GROUP BY `User`.`UID` ORDER BY `Nick`"); + $users = sql_select("SELECT `User`.* FROM `User` ${angeltypesearch} LEFT JOIN `ShiftEntry` ON `User`.`UID` = `ShiftEntry`.`UID` LEFT JOIN `Shifts` ON (`ShiftEntry`.`SID` = `Shifts`.`SID` AND `Shifts`.`start` < " . sql_escape(time()) . " AND `Shifts`.`end` > " . sql_escape(time()) . ") WHERE `User`.`Gekommen` = 1 AND `Shifts`.`SID` IS NULL GROUP BY `User`.`UID` ORDER BY `Nick`"); - $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 (stristr($index, trim($t))) { - $match = true; - break; - } - if (!$match) - continue; - } - $table .= ''; - if (in_array('user_shifts_admin', $privileges)) - $table .= '' . $usr['Nick'] . ''; - else - $table .= '' . $usr['Nick'] . ''; - $table .= '' . $usr['DECT'] . ''; - $table .= '' . $usr['jabber'] . ''; - if (in_array('admin_user', $privileges)) - $table .= 'edit'; - else - $table .= '' . $usr['Nick'] . ''; + $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 (stristr($index, trim($t))) { + $match = true; + break; + } + if (!$match) + continue; + } + $table .= ''; + $table .= '' . User_Nick_render($usr) . ''; + $table .= '' . $usr['DECT'] . ''; + $table .= '' . $usr['jabber'] . ''; + if (in_array('admin_user', $privileges)) + $table .= 'edit'; + else + $table .= '' . User_Nick_render($usr) . ''; - $table .= ''; - } - return template_render('../templates/admin_free.html', array ( - 'search' => $search, - 'angeltypes' => html_select_key('angeltype', 'angeltype', $angel_types, $_REQUEST['angeltype']), - 'confirmed_only' => isset($_REQUEST['confirmed_only'])? 'checked' : '', - 'table' => $table, - 'link' => page_link_to('admin_free') - )); + $table .= ''; + } + return template_render('../templates/admin_free.html', array ( + 'search' => $search, + 'angeltypes' => html_select_key('angeltype', 'angeltype', $angel_types, $_REQUEST['angeltype']), + 'confirmed_only' => isset($_REQUEST['confirmed_only'])? 'checked' : '', + 'table' => $table, + 'link' => page_link_to('admin_free') + )); } ?> diff --git a/includes/pages/admin_groups.php b/includes/pages/admin_groups.php index df472359..dbcd5797 100644 --- a/includes/pages/admin_groups.php +++ b/includes/pages/admin_groups.php @@ -27,7 +27,7 @@ function admin_groups() { } return template_render('../templates/admin_groups.html', array ( - 'nick' => $user['Nick'], + 'nick' => User_Nick_render($user), 'groups' => $groups_html )); } else { diff --git a/includes/pages/admin_language.php b/includes/pages/admin_language.php index 5ca4b9cf..be89fc70 100644 --- a/includes/pages/admin_language.php +++ b/includes/pages/admin_language.php @@ -4,7 +4,7 @@ function admin_language() { $html = ""; if (!isset ($_POST["TextID"])) { - $html .= Get_Text("Hello") . $user['Nick'] . ",
\n"; + $html .= Get_Text("Hello") . User_Nick_render($user) . ",
\n"; $html .= Get_Text("pub_sprache_text1") . "

\n"; $html .= "" . Get_Text("pub_sprache_ShowEntry") . ""; diff --git a/includes/pages/admin_user.php b/includes/pages/admin_user.php index 180e7371..0c9f9bbe 100644 --- a/includes/pages/admin_user.php +++ b/includes/pages/admin_user.php @@ -103,11 +103,11 @@ function admin_user() { if (isset ($_REQUEST['submit_user_angeltypes'])) { $selected_angel_types = isset($_REQUEST['selected_angel_types']) && is_array($_REQUEST['selected_angel_types'])? - array_intersect($_REQUEST['selected_angel_types'], array_keys($angel_types)) - : array(); + array_intersect($_REQUEST['selected_angel_types'], array_keys($angel_types)) + : array(); $accepted_angel_types = isset($_REQUEST['accepted_angel_types']) && is_array($_REQUEST['accepted_angel_types'])? - array_unique(array_diff(array_intersect($_REQUEST['accepted_angel_types'], array_keys($angel_types)), $nonrestricted_angel_types)) - : array(); + array_unique(array_diff(array_intersect($_REQUEST['accepted_angel_types'], array_keys($angel_types)), $nonrestricted_angel_types)) + : array(); if (in_array("admin_user_angeltypes", $privileges)) $selected_angel_types = array_merge((array) $selected_angel_types, $accepted_angel_types); $selected_angel_types = array_unique($selected_angel_types); @@ -133,7 +133,7 @@ function admin_user() { } sql_stop_transaction(); - engelsystem_log("Set angeltypes of " . $user_source['Nick'] . " to: " . join(", ", $user_angel_type_info)); + engelsystem_log("Set angeltypes of " . User_Nick_render($user_source) . " to: " . join(", ", $user_angel_type_info)); success("Angeltypes saved."); redirect(page_link_to('admin_user') . '&id=' . $user_source['UID']); } @@ -220,7 +220,8 @@ function admin_user() { $user_groups_info[] = $groups[$group]['Name']; } } - engelsystem_log("Set groups of " . $user_source['Nick'] . " to: " . join(", ", $user_groups_info)); + $user_source = User($id); + engelsystem_log("Set groups of " . User_Nick_render($user_source) . " to: " . join(", ", $user_groups_info)); $html .= success("Benutzergruppen gespeichert.", true); } else { $html .= error("Du kannst keine Engel mit mehr Rechten bearbeiten.", true); @@ -232,11 +233,11 @@ function admin_user() { case 'delete' : if ($user['UID'] != $id) { - $nickname = sql_select("SELECT `Nick` FROM `User` WHERE `UID` = '" . sql_escape($id) . "' LIMIT 1"); + $user_source = sql_select("SELECT `Nick`, `UID` FROM `User` WHERE `UID` = '" . sql_escape($id) . "' LIMIT 1"); sql_query("DELETE FROM `User` WHERE `UID`=" . sql_escape($id) . " LIMIT 1"); sql_query("DELETE FROM `UserGroups` WHERE `uid`=" . sql_escape($id)); sql_query("UPDATE `ShiftEntry` SET `UID`=0, `Comment`=NULL WHERE `UID`=" . sql_escape($id)); - engelsystem_log("Deleted user " . $nickname[0]['Nick']); + engelsystem_log("Deleted user " . User_Nick_render($user_source)); $html .= success("Benutzer gelöscht!", true); } else { $html .= error("Du kannst Dich nicht selber löschen!", true); @@ -269,7 +270,8 @@ function admin_user() { case 'change_pw' : if ($_REQUEST['new_pw'] != "" && $_REQUEST['new_pw'] == $_REQUEST['new_pw2']) { set_password($id, $_REQUEST['new_pw']); - engelsystem_log("Set new password for " . $user_source['Nick']); + $user_source = User($id); + engelsystem_log("Set new password for " . User_Nick_render($user_source)); $html .= success("Passwort neu gesetzt.", true); } else { $html .= error("Die Eingaben müssen übereinstimmen und dürfen nicht leer sein!", true); @@ -313,7 +315,7 @@ function admin_user() { if (strlen($angel["jabber"]) > 0) $popup .= "
Jabber: " . $angel["jabber"]; return array( - 'Nick' => in_array('user_shifts_admin', $privileges)? '' . htmlspecialchars($angel["Nick"]) . '' : htmlspecialchars($angel['Nick']), + 'Nick' => User_Nick_render($angel), 'Name' => htmlspecialchars($angel['Vorname'] . ' ' . $angel['Name']), 'DECT' => htmlspecialchars($angel['DECT']), 'Alter' => htmlspecialchars($angel['Alter']), @@ -343,7 +345,7 @@ function admin_user() { 'Size' => '
Größe
', 'lastLogIn' => 'Last login', 'edit' => ''), - $angels); + $angels); } return $html; } diff --git a/includes/pages/admin_user_angeltypes.php b/includes/pages/admin_user_angeltypes.php index 295804a3..dfb67781 100644 --- a/includes/pages/admin_user_angeltypes.php +++ b/includes/pages/admin_user_angeltypes.php @@ -48,10 +48,10 @@ function admin_user_angeltypes() { } if (isset ($_REQUEST['confirm']) && test_request_int('confirm') && sql_num_query("SELECT * FROM `UserAngelTypes` WHERE `id`=" . sql_escape($_REQUEST['confirm']) . " AND `confirm_user_id` IS NULL") > 0) { - $user_angel_type_source = sql_select("SELECT `UserAngelTypes`.*, `User`.`Nick`, `AngelTypes`.`name` FROM `UserAngelTypes` JOIN `User` ON `User`.`UID`=`UserAngelTypes`.`user_id` JOIN `AngelTypes` ON `AngelTypes`.`id`=`UserAngelTypes`.`angeltype_id` WHERE `UserAngelTypes`.`id`=" . sql_escape($_REQUEST['confirm']) . " LIMIT 1"); + $user_angel_type_source = sql_select("SELECT `UserAngelTypes`.*, `User`.`Nick`, `User`.`UID`, `AngelTypes`.`name` FROM `UserAngelTypes` JOIN `User` ON `User`.`UID`=`UserAngelTypes`.`user_id` JOIN `AngelTypes` ON `AngelTypes`.`id`=`UserAngelTypes`.`angeltype_id` WHERE `UserAngelTypes`.`id`=" . sql_escape($_REQUEST['confirm']) . " LIMIT 1"); if(count($user_angel_type_source) > 0) { sql_query("UPDATE `UserAngelTypes` SET `confirm_user_id`=" . sql_escape($_SESSION['uid']) . " WHERE `id`=" . sql_escape($_REQUEST['confirm']) . " LIMIT 1"); - engelsystem_log("Confirmed " . $user_angel_type_source[0]['Nick'] . " as " . $user_angel_type_source[0]['name']); + engelsystem_log("Confirmed " . User_Nick_render($user_angel_type_source[0]) . " as " . $user_angel_type_source[0]['name']); success("Confirmed."); } else error("Entry not found."); @@ -59,10 +59,10 @@ function admin_user_angeltypes() { } if (isset ($_REQUEST['deny']) && test_request_int('deny') && sql_num_query("SELECT * FROM `UserAngelTypes` WHERE `id`=" . sql_escape($_REQUEST['deny']) . " AND `confirm_user_id` IS NULL") > 0) { - $user_angel_type_source = sql_select("SELECT `UserAngelTypes`.*, `User`.`Nick`, `AngelTypes`.`name` FROM `UserAngelTypes` JOIN `User` ON `User`.`UID`=`UserAngelTypes`.`user_id` JOIN `AngelTypes` ON `AngelTypes`.`id`=`UserAngelTypes`.`angeltype_id` WHERE `UserAngelTypes`.`id`=" . sql_escape($_REQUEST['deny']) . " LIMIT 1"); + $user_angel_type_source = sql_select("SELECT `UserAngelTypes`.*, `User`.`Nick`, `User`.`UID`, `AngelTypes`.`name` FROM `UserAngelTypes` JOIN `User` ON `User`.`UID`=`UserAngelTypes`.`user_id` JOIN `AngelTypes` ON `AngelTypes`.`id`=`UserAngelTypes`.`angeltype_id` WHERE `UserAngelTypes`.`id`=" . sql_escape($_REQUEST['deny']) . " LIMIT 1"); if(count($user_angel_type_source) > 0) { sql_query("DELETE FROM `UserAngelTypes` WHERE `id`=" . sql_escape($_REQUEST['deny']) . " LIMIT 1"); - engelsystem_log("Denied " . $user_angel_type_source[0]['Nick'] . " as " . $user_angel_type_source[0]['name']); + engelsystem_log("Denied " . User_Nick_render($user_angel_type_source[0]) . " as " . $user_angel_type_source[0]['name']); success("Denied."); } else error("Entry not found."); @@ -76,15 +76,14 @@ function admin_user_angeltypes() { if(count($user_angel_types_source)) { $users = array (); foreach ($user_angel_types_source as $user) { - if(in_array("admin_user", $privileges)) - $user['Nick'] = '' . $user['Nick'] . ''; + $user['name'] = User_Nick_render($user); $user['actions'] = img_button(page_link_to('admin_user_angeltypes') . '&confirm=' . $user['id'], 'tick', 'confirm'); $user['actions'] .= '  '; $user['actions'] .= img_button(page_link_to('admin_user_angeltypes') . '&deny=' . $user['id'], 'cross', 'deny'); $users[] = $user; } $content[] = '

' . $angel_type['name'] . ' ' . img_button(page_link_to('admin_user_angeltypes') . '&confirm_all=' . $angel_type['id'], 'tick', '', 'confirm all') . ' ' . img_button(page_link_to('admin_user_angeltypes') . '&deny_all=' . $angel_type['id'], 'cross', '', 'deny all') . '

' . table(array ( - 'Nick' => "Nick", + 'name' => "Nick", 'actions' => "" ), $users); } diff --git a/includes/pages/user_messages.php b/includes/pages/user_messages.php index 70ea5c63..922997c1 100644 --- a/includes/pages/user_messages.php +++ b/includes/pages/user_messages.php @@ -46,7 +46,7 @@ function user_messages() { return template_render('../templates/user_messages.html', array ( 'link' => page_link_to("user_messages"), - 'greeting' => Get_Text("Hello") . $user['Nick'] . ",
\n" . Get_Text("pub_messages_text1") . "

\n", + 'greeting' => Get_Text("Hello") . User_Nick_render($user) . ",
\n" . Get_Text("pub_messages_text1") . "

\n", 'messages' => $messages_html, 'new_label' => Get_Text("pub_messages_Neu"), 'date_label' => Get_Text("pub_messages_Datum"), @@ -54,7 +54,7 @@ function user_messages() { 'to_label' => Get_Text("pub_messages_An"), 'text_label' => Get_Text("pub_messages_Text"), 'date' => date("Y-m-d H:i"), - 'from' => $user['Nick'], + 'from' => User_Nick_render($user), 'to_select' => $to_select, 'submit_label' => Get_Text("save") )); diff --git a/includes/pages/user_myshifts.php b/includes/pages/user_myshifts.php index aa4a1e1b..08e8e77f 100644 --- a/includes/pages/user_myshifts.php +++ b/includes/pages/user_myshifts.php @@ -39,13 +39,13 @@ function user_myshifts() { $comment = strip_request_item_nl('comment'); $user_source = User($shift['UID']); sql_query("UPDATE `ShiftEntry` SET `Comment`='" . sql_escape($comment) . "' WHERE `id`=" . sql_escape($id) . " LIMIT 1"); - engelsystem_log("Updated " . $user_source['Nick'] . "'s shift " . $shift['name'] . " from " . date("y-m-d H:i", $shift['start']) . " to " . date("y-m-d H:i", $shift['end']) . " with comment " . $comment); + engelsystem_log("Updated " . User_Nick_render($user_source) . "'s shift " . $shift['name'] . " from " . date("y-m-d H:i", $shift['start']) . " to " . date("y-m-d H:i", $shift['end']) . " with comment " . $comment); success("Schicht gespeichert."); redirect(page_link_to('user_myshifts')); } return template_render('../templates/user_shifts_add.html', array ( - 'angel' => $shifts_user['Nick'], + 'angel' => User_Nick_render($shifts_user), 'date' => date("Y-m-d H:i", $shift['start']) . ', ' . shift_length($shift), 'location' => $shift['Name'], 'title' => $shift['name'], @@ -92,7 +92,7 @@ function user_myshifts() { if($user['UID'] == $user_source['UID']) $shift_entries[] = '' . $user_source['Nick'] . ''; else - $shift_entries[] = $user_source['Nick']; + $shift_entries[] = User_Nick_render($user_source); } $html .= join(", ", $shift_entries); } diff --git a/includes/pages/user_settings.php b/includes/pages/user_settings.php index 62b78751..1cdc2817 100644 --- a/includes/pages/user_settings.php +++ b/includes/pages/user_settings.php @@ -163,7 +163,7 @@ function user_settings() { } return page(array ( - sprintf(Get_Text("Hallo") . "%s,
" . Get_Text(13), $user['Nick']), + sprintf(Get_Text("Hallo") . "%s,
" . Get_Text(13), User_Nick_render($user)), $msg, msg(), form(array ( diff --git a/includes/pages/user_shifts.php b/includes/pages/user_shifts.php index 0464cc54..b3d50a70 100644 --- a/includes/pages/user_shifts.php +++ b/includes/pages/user_shifts.php @@ -14,7 +14,7 @@ function user_shifts() { $shift_entry_source = $shift_entry_source[0]; sql_query("DELETE FROM `ShiftEntry` WHERE `id`=" . sql_escape($entry_id) . " LIMIT 1"); - engelsystem_log("Deleted " . $shift_entry_source['Nick'] . "'s shift: " . $shift_entry_source['name'] . " at " . $shift_entry_source['Name'] . " from " . date("y-m-d H:i", $shift_entry_source['start']) . " to " . date("y-m-d H:i", $shift_entry_source['end']) . " as " . $shift_entry_source['angel_type']); + engelsystem_log("Deleted " . User_Nick_render($shift_entry_source) . "'s shift: " . $shift_entry_source['name'] . " at " . $shift_entry_source['Name'] . " from " . date("y-m-d H:i", $shift_entry_source['start']) . " to " . date("y-m-d H:i", $shift_entry_source['end']) . " as " . $shift_entry_source['angel_type']); success("Der Schicht-Eintrag wurde gelöscht."); } else error("Entry not found."); @@ -244,7 +244,7 @@ function user_shifts() { sql_query("INSERT INTO `UserAngelTypes` (`user_id`, `angeltype_id`) VALUES ('" . sql_escape($user_id) . "', '" . sql_escape($selected_type_id) . "')"); $user_source = User($user_id); - engelsystem_log("User " . $user_source['Nick'] . " signed up for shift " . $shift['name'] . " from " . date("y-m-d H:i", $shift['start']) . " to " . date("y-m-d H:i", $shift['end'])); + engelsystem_log("User " . User_Nick_render($user_source) . " signed up for shift " . $shift['name'] . " from " . date("y-m-d H:i", $shift['start']) . " to " . date("y-m-d H:i", $shift['end'])); success("Du bist eingetragen. Danke!" . ' Meine Schichten »'); redirect(page_link_to('user_shifts')); } @@ -262,7 +262,7 @@ function user_shifts() { $angeltypes[$angeltype['id']] = $angeltype['name']; $angeltyppe_select = html_select_key('angeltype_id', 'angeltype_id', $angeltypes, $type['id']); } else { - $user_text = $user['Nick']; + $user_text = User_Nick_render($user); $angeltyppe_select = $type['name']; } @@ -362,27 +362,27 @@ function view_user_shifts() { $_SESSION['user_shifts']['rooms'] = array(0); $SQL = "SELECT DISTINCT `Shifts`.*, `Room`.`Name` as `room_name`, nat2.`special_needs` > 0 AS 'has_special_needs' - FROM `Shifts` - INNER JOIN `Room` USING (`RID`) - LEFT JOIN (SELECT COUNT(*) AS special_needs , nat3.`shift_id` FROM `NeededAngelTypes` AS nat3 WHERE `shift_id` IS NOT NULL GROUP BY nat3.`shift_id`) AS nat2 ON nat2.`shift_id` = `Shifts`.`SID` - INNER JOIN `NeededAngelTypes` AS nat ON nat.`count` != 0 AND nat.`angel_type_id` IN (" . implode(',', $_SESSION['user_shifts']['types']) . ") AND ((nat2.`special_needs` > 0 AND nat.`shift_id` = `Shifts`.`SID`) OR ((nat2.`special_needs` = 0 OR nat2.`special_needs` IS NULL) AND nat.`room_id` = `RID`)) - LEFT JOIN (SELECT se.`SID`, se.`TID`, COUNT(*) as count FROM `ShiftEntry` AS se GROUP BY se.`SID`, se.`TID`) AS entries ON entries.`SID` = `Shifts`.`SID` AND entries.`TID` = nat.`angel_type_id` - WHERE `Shifts`.`RID` IN (" . implode(',', $_SESSION['user_shifts']['rooms']) . ") - AND `start` BETWEEN " . $starttime . " AND " . $endtime; + FROM `Shifts` + INNER JOIN `Room` USING (`RID`) + LEFT JOIN (SELECT COUNT(*) AS special_needs , nat3.`shift_id` FROM `NeededAngelTypes` AS nat3 WHERE `shift_id` IS NOT NULL GROUP BY nat3.`shift_id`) AS nat2 ON nat2.`shift_id` = `Shifts`.`SID` + INNER JOIN `NeededAngelTypes` AS nat ON nat.`count` != 0 AND nat.`angel_type_id` IN (" . implode(',', $_SESSION['user_shifts']['types']) . ") AND ((nat2.`special_needs` > 0 AND nat.`shift_id` = `Shifts`.`SID`) OR ((nat2.`special_needs` = 0 OR nat2.`special_needs` IS NULL) AND nat.`room_id` = `RID`)) + LEFT JOIN (SELECT se.`SID`, se.`TID`, COUNT(*) as count FROM `ShiftEntry` AS se GROUP BY se.`SID`, se.`TID`) AS entries ON entries.`SID` = `Shifts`.`SID` AND entries.`TID` = nat.`angel_type_id` + WHERE `Shifts`.`RID` IN (" . implode(',', $_SESSION['user_shifts']['rooms']) . ") + AND `start` BETWEEN " . $starttime . " AND " . $endtime; if (count($_SESSION['user_shifts']['filled']) == 1) { if ($_SESSION['user_shifts']['filled'][0] == 0) $SQL .= " - AND (nat.`count` > entries.`count` OR entries.`count` IS NULL) "; + AND (nat.`count` > entries.`count` OR entries.`count` IS NULL) "; elseif ($_SESSION['user_shifts']['filled'][0] == 1) - $SQL .= " - AND (nat.`count` <= entries.`count`) "; + $SQL .= " + AND (nat.`count` <= entries.`count`) "; } $SQL .= " - ORDER BY `start`"; + ORDER BY `start`"; $shifts = sql_select($SQL); $ownshifts_source = sql_select("SELECT `Shifts`.* FROM `Shifts` INNER JOIN `ShiftEntry` ON (`Shifts`.`SID` = `ShiftEntry`.`SID` AND `ShiftEntry`.`UID` = '" . sql_escape($user['UID']) . "') WHERE `Shifts`.`RID` IN (" . implode(',', $_SESSION['user_shifts']['rooms']) . ") - AND `start` BETWEEN " . $starttime . " AND " . $endtime); + AND `start` BETWEEN " . $starttime . " AND " . $endtime); $ownshifts = array(); foreach ($ownshifts_source as $ownshift) $ownshifts[$ownshift['SID']] = $ownshift; @@ -444,269 +444,269 @@ function view_user_shifts() { $colspan = 1; $todo[$rid] = array_fill(0, $maxshow, $colspan); $shifts_table .= " 1)? ' colspan="' . $colspan . '"' : '') . ">${room['name']}\n"; - } - unset($block, $blocks, $firstblock, $colspan, $key, $room); - - $shifts_table.=""; - for($i = 0; $i < $maxshow; $i++) { - $thistime = $first + ($i*15*60); - $shifts_table .= ""; - if($thistime%(24*60*60) == 23*60*60 && $endtime - $starttime > 24*60*60) - $shifts_table .= date('y-m-dH:i', $thistime); - elseif($thistime%(60*60) == 0) - $shifts_table .= date("H:i", $thistime); - $shifts_table .= ""; - foreach($myrooms as $room) { - $rid = $room["id"]; - $empty_collides = false; - foreach($shifts as $shift) { - if($shift["RID"] == $rid) { - if(floor($shift["start"]/(15*60)) == $thistime/(15*60)) { - $blocks = ($shift["end"]-$shift["start"])/(15*60); - if($blocks < 1) - $blocks = 1; - - $collides = in_array($shift['SID'], array_keys($ownshifts)); - if(!$collides) - foreach ($ownshifts as $ownshift) { - if ($ownshift['start'] < $shift['end'] && $ownshift['end'] > $shift['start']) { - $collides = true; - break; - } - } - - // qqqqqq - $is_free = false; - $shifts_row = $shift['name']; - if (in_array('admin_shifts', $privileges)) - $shifts_row .= ' ' . img_button('?p=user_shifts&edit_shift=' . $shift['SID'], 'pencil', 'edit') . img_button('?p=user_shifts&delete_shift=' . $shift['SID'], 'bin', 'delete'); - $shifts_row .= '
'; - $query = "SELECT `NeededAngelTypes`.`count`, `AngelTypes`.`id`, `AngelTypes`.`restricted`, `UserAngelTypes`.`confirm_user_id`, `AngelTypes`.`name`, `UserAngelTypes`.`user_id` - FROM `NeededAngelTypes` - JOIN `AngelTypes` ON (`NeededAngelTypes`.`angel_type_id` = `AngelTypes`.`id`) - LEFT JOIN `UserAngelTypes` ON (`NeededAngelTypes`.`angel_type_id` = `UserAngelTypes`.`angeltype_id`AND `UserAngelTypes`.`user_id`=" . sql_escape($user['UID']) . ") - WHERE - `count` > 0 - AND "; - if ($shift['has_special_needs']) - $query .= "`shift_id` = " . sql_escape($shift['SID']); - else - $query .= "`room_id` = " . sql_escape($shift['RID']); - if (!empty($_SESSION['user_shifts']['types'])) - $query .= " AND `angel_type_id` IN (" . implode(',', $_SESSION['user_shifts']['types']) . ") "; - $query .= " ORDER BY `AngelTypes`.`name`"; - $angeltypes = sql_select($query); - - if (count($angeltypes) > 0) { - foreach ($angeltypes as $angeltype) { - $entries = sql_select("SELECT * FROM `ShiftEntry` JOIN `User` ON (`ShiftEntry`.`UID` = `User`.`UID`) WHERE `SID`=" . sql_escape($shift['SID']) . " AND `TID`=" . sql_escape($angeltype['id']) . " ORDER BY `Nick`"); - $entry_list = array (); - foreach ($entries as $entry) { - if($entry['Gekommen'] == 1) - $style="font-weight:bold;"; - else - $style="font-weight:normal;"; - if (in_array('user_shifts_admin', $privileges)) - $entry_list[] = "" . '' . $entry['Nick'] . ' ' . img_button(page_link_to('user_shifts') . '&entry_id=' . $entry['id'], 'bin', 'delete') . ''; - else - $entry_list[] = "" . $entry['Nick'].""; - } - if ($angeltype['count'] - count($entries) > 0) { - $inner_text = ($angeltype['count'] - count($entries)) . ' ' . Get_Text($angeltype['count'] - count($entries) == 1 ? 'helper' : 'helpers') . ' ' . Get_Text('needed'); - // is the shift still running or alternatively is the user shift admin? - $user_may_join_shift = true; - - // you cannot join if user alread joined a parallel or this shift - $user_may_join_shift &= !$collides; - - // you cannot join if user is not of this angel type - $user_may_join_shift &= isset($angeltype['user_id']); - - // you cannot join if you are not confirmed - if($angeltype['restricted'] == 1 && isset($angeltype['user_id'])) - $user_may_join_shift &= isset($angeltype['confirm_user_id']); - - // you can only join if the shift is in future or running - $user_may_join_shift &= time() < $shift['start']; - - // User shift admins may join anybody in every shift - $user_may_join_shift |= in_array('user_shifts_admin', $privileges); - if ($user_may_join_shift) - $entry_list[] = '' . $inner_text . ' »'; - else { - if(time() > $shift['start']) - $entry_list[] = $inner_text . ' (vorbei)'; - elseif($angeltype['restricted'] == 1 && isset($angeltype['user_id']) && !isset($angeltype['confirm_user_id'])) - $entry_list[] = $inner_text . ' unconfirmed'; - elseif($collides) - $entry_list[] = $inner_text; - else - $entry_list[] = $inner_text . ' (Werde ' . $angeltype['name'] .')'; - } - - unset($inner_text); - $is_free = true; - } - - $shifts_row .= '' . $angeltype['name'] . ': '; - $shifts_row .= join(", ", $entry_list); - $shifts_row .= '
'; - } - if (in_array('user_shifts_admin', $privileges)) { - $shifts_row .= 'Weitere Helfer eintragen »'; - } - } - if ($shift['own'] && !in_array('user_shifts_admin', $privileges)) - $class = 'own'; - elseif ($collides && !in_array('user_shifts_admin', $privileges)) - $class = 'collides'; - elseif ($is_free) - $class = 'free'; - else - $class = 'occupied'; - $shifts_table.=''; - if (($is_free && in_array(0, $_SESSION['user_shifts']['filled'])) || (!$is_free && in_array(1, $_SESSION['user_shifts']['filled']))) { - $shifts_table .= $shifts_row; - } - $shifts_table.=""; - for($j=0; $j < $blocks && $i+$j < $maxshow; $j++) { - $todo[$rid][$i+$j]--; - } - } - } - if ($shift['own'] && !in_array('user_shifts_admin', $privileges)) { - $blocks = ($shift["end"]-$shift["start"]) / (15*60); - $firstblock = floor(($shift["start"]-$first) / (15*60)); - if ($i >= $firstblock && $i < $firstblock + $blocks) - $empty_collides = true; - } - } - // fill up row with empty - while($todo[$rid][$i]-- > 0) - $shifts_table .= ''; - } - $shifts_table .= "\n"; - } - $shifts_table .= ''; - // qqq - } else { - $shifts_table = array(); - foreach ($shifts as $shift) { - $info = array (); - if ($_SESSION['user_shifts']['start_day'] != $_SESSION['user_shifts']['end_day']) - $info[] = date("Y-m-d", $shift['start']); - $info[] = date("H:i", $shift['start']) . ' - ' . date("H:i", $shift['end']); - if (count($_SESSION['user_shifts']['rooms']) > 1) - $info[] = $shift['room_name']; - - $shift_row = array( - 'info' => join('
', $info), - 'entries' => $shift['name'] - ); - - if (in_array('admin_shifts', $privileges)) - $shift_row['info'] .= ' ' . img_button('?p=user_shifts&edit_shift=' . $shift['SID'], 'pencil', 'edit') . img_button('?p=user_shifts&delete_shift=' . $shift['SID'], 'bin', 'delete'); - $shift_row['entries'] .= '
'; - $is_free = false; - $shift_has_special_needs = 0 < sql_num_query("SELECT `id` FROM `NeededAngelTypes` WHERE `shift_id` = " . $shift['SID']); - $query = "SELECT `NeededAngelTypes`.`count`, `AngelTypes`.`id`, `AngelTypes`.`restricted`, `UserAngelTypes`.`confirm_user_id`, `AngelTypes`.`name`, `UserAngelTypes`.`user_id` - FROM `NeededAngelTypes` - JOIN `AngelTypes` ON (`NeededAngelTypes`.`angel_type_id` = `AngelTypes`.`id`) - LEFT JOIN `UserAngelTypes` ON (`NeededAngelTypes`.`angel_type_id` = `UserAngelTypes`.`angeltype_id`AND `UserAngelTypes`.`user_id`=" . sql_escape($user['UID']) . ") - WHERE "; - if ($shift_has_special_needs) - $query .= "`shift_id` = " . sql_escape($shift['SID']); - else - $query .= "`room_id` = " . sql_escape($shift['RID']); - $query .= " AND `count` > 0 "; - if (!empty($_SESSION['user_shifts']['types'])) - $query .= "AND `angel_type_id` IN (" . implode(',', $_SESSION['user_shifts']['types']) . ") "; - $query .= "ORDER BY `AngelTypes`.`name`"; - $angeltypes = sql_select($query); - if (count($angeltypes) > 0) { - $my_shift = sql_num_query("SELECT * FROM `ShiftEntry` WHERE `SID`=" . sql_escape($shift['SID']) . " AND `UID`=" . sql_escape($user['UID']) . " LIMIT 1") > 0; - foreach ($angeltypes as $angeltype) { - $entries = sql_select("SELECT * FROM `ShiftEntry` JOIN `User` ON (`ShiftEntry`.`UID` = `User`.`UID`) WHERE `SID`=" . sql_escape($shift['SID']) . " AND `TID`=" . sql_escape($angeltype['id']) . " ORDER BY `Nick`"); - $entry_list = array (); - foreach ($entries as $entry) { - if (in_array('user_shifts_admin', $privileges)) - $entry_list[] = '' . $entry['Nick'] . ' ' . img_button(page_link_to('user_shifts') . '&entry_id=' . $entry['id'], 'bin', 'delete'); - else - $entry_list[] = $entry['Nick']; - } - // do we need more angles of this type? - if ($angeltype['count'] - count($entries) > 0) { - $inner_text = ($angeltype['count'] - count($entries)) . ' ' . Get_Text($angeltype['count'] - count($entries) == 1 ? 'helper' : 'helpers') . ' ' . Get_Text('needed'); - // is the shift still running or alternatively is the user shift admin? - $user_may_join_shift = true; - - /* you cannot join if user already joined this shift */ - $user_may_join_shift &= !$my_shift; - - // you cannot join if user is not of this angel type - $user_may_join_shift &= isset($angeltype['user_id']); - - // you cannot join if you are not confirmed - if($angeltype['restricted'] == 1 && isset($angeltype['user_id'])) - $user_may_join_shift &= isset($angeltype['confirm_user_id']); - - // you can only join if the shift is in future or running - $user_may_join_shift &= time() < $shift['start']; - - // User shift admins may join anybody in every shift - $user_may_join_shift |= in_array('user_shifts_admin', $privileges); - if ($user_may_join_shift) - $entry_list[] = '' . $inner_text . ' »'; - else { - if(time() > $shift['end']) { - $entry_list[] = $inner_text . ' (vorbei)'; - } elseif($angeltype['restricted'] == 1 && isset($angeltype['user_id']) && !isset($angeltype['confirm_user_id'])) { - $entry_list[] = $inner_text . ' unconfirmed'; - } else { - $entry_list[] = $inner_text . ' (Werde ' . $angeltype['name'] .')'; - } - } - - unset($inner_text); - $is_free = true; - } - - $shift_row['entries'] .= '' . $angeltype['name'] . ': '; - $shift_row['entries'] .= join(", ", $entry_list); - $shift_row['entries'] .= '
'; - } - if (in_array('user_shifts_admin', $privileges)) { - $shift_row['entries'] .= 'Weitere Helfer eintragen »'; - } - if (($is_free && in_array(0, $_SESSION['user_shifts']['filled'])) || (!$is_free && in_array(1, $_SESSION['user_shifts']['filled']))) { - $shifts_table[] = $shift_row; - $ical_shifts[] = $shift; - } - } - } - $shifts_table = table(array( - 'info' => ucfirst(Get_Text("time")) . "/" . ucfirst(Get_Text("room")), - 'entries' => ucfirst(Get_Text("entries")) - ), $shifts_table); } + unset($block, $blocks, $firstblock, $colspan, $key, $room); - if ($user['ical_key'] == "") - user_reset_ical_key($user); + $shifts_table.=""; + for($i = 0; $i < $maxshow; $i++) { + $thistime = $first + ($i*15*60); + $shifts_table .= ""; + if($thistime%(24*60*60) == 23*60*60 && $endtime - $starttime > 24*60*60) + $shifts_table .= date('y-m-dH:i', $thistime); + elseif($thistime%(60*60) == 0) + $shifts_table .= date("H:i", $thistime); + $shifts_table .= ""; + foreach($myrooms as $room) { + $rid = $room["id"]; + $empty_collides = false; + foreach($shifts as $shift) { + if($shift["RID"] == $rid) { + if(floor($shift["start"]/(15*60)) == $thistime/(15*60)) { + $blocks = ($shift["end"]-$shift["start"])/(15*60); + if($blocks < 1) + $blocks = 1; - return msg() . template_render('../templates/user_shifts.html', array ( - 'room_select' => make_select($rooms, $_SESSION['user_shifts']['rooms'], "rooms", ucfirst(Get_Text("rooms"))), - 'start_select' => html_select_key("start_day", "start_day", array_combine($days, $days), $_SESSION['user_shifts']['start_day']), - 'start_time' => $_SESSION['user_shifts']['start_time'], - 'end_select' => html_select_key("end_day", "end_day", array_combine($days, $days), $_SESSION['user_shifts']['end_day']), - 'end_time' => $_SESSION['user_shifts']['end_time'], - 'type_select' => make_select($types, $_SESSION['user_shifts']['types'], "types", ucfirst(Get_Text("tasks")) . '1'), - 'filled_select' => make_select($filled, $_SESSION['user_shifts']['filled'], "filled", ucfirst(Get_Text("occupancy"))), - 'task_notice' => '1' . Get_Text("pub_schichtplan_tasks_notice"), - 'new_style_checkbox' => '', - 'shifts_table' => $shifts_table, - 'ical_text' => sprintf(Get_Text('inc_schicht_ical_text'), htmlspecialchars(make_user_shifts_ical_link($user['ical_key'])), page_link_to('user_myshifts') . '&reset'), - 'filter' => ucfirst(Get_Text("to_filter")), - )); + $collides = in_array($shift['SID'], array_keys($ownshifts)); + if(!$collides) + foreach ($ownshifts as $ownshift) { + if ($ownshift['start'] < $shift['end'] && $ownshift['end'] > $shift['start']) { + $collides = true; + break; + } + } + + // qqqqqq + $is_free = false; + $shifts_row = $shift['name']; + if (in_array('admin_shifts', $privileges)) + $shifts_row .= ' ' . img_button('?p=user_shifts&edit_shift=' . $shift['SID'], 'pencil', 'edit') . img_button('?p=user_shifts&delete_shift=' . $shift['SID'], 'bin', 'delete'); + $shifts_row .= '
'; + $query = "SELECT `NeededAngelTypes`.`count`, `AngelTypes`.`id`, `AngelTypes`.`restricted`, `UserAngelTypes`.`confirm_user_id`, `AngelTypes`.`name`, `UserAngelTypes`.`user_id` + FROM `NeededAngelTypes` + JOIN `AngelTypes` ON (`NeededAngelTypes`.`angel_type_id` = `AngelTypes`.`id`) + LEFT JOIN `UserAngelTypes` ON (`NeededAngelTypes`.`angel_type_id` = `UserAngelTypes`.`angeltype_id`AND `UserAngelTypes`.`user_id`=" . sql_escape($user['UID']) . ") + WHERE + `count` > 0 + AND "; + if ($shift['has_special_needs']) + $query .= "`shift_id` = " . sql_escape($shift['SID']); + else + $query .= "`room_id` = " . sql_escape($shift['RID']); + if (!empty($_SESSION['user_shifts']['types'])) + $query .= " AND `angel_type_id` IN (" . implode(',', $_SESSION['user_shifts']['types']) . ") "; + $query .= " ORDER BY `AngelTypes`.`name`"; + $angeltypes = sql_select($query); + + if (count($angeltypes) > 0) { + foreach ($angeltypes as $angeltype) { + $entries = sql_select("SELECT * FROM `ShiftEntry` JOIN `User` ON (`ShiftEntry`.`UID` = `User`.`UID`) WHERE `SID`=" . sql_escape($shift['SID']) . " AND `TID`=" . sql_escape($angeltype['id']) . " ORDER BY `Nick`"); + $entry_list = array (); + foreach ($entries as $entry) { + if($entry['Gekommen'] == 1) + $style="font-weight:bold;"; + else + $style="font-weight:normal;"; + if (in_array('user_shifts_admin', $privileges)) + $entry_list[] = "" . User_Nick_render($entry) . ' ' . img_button(page_link_to('user_shifts') . '&entry_id=' . $entry['id'], 'bin', 'delete') . ''; + else + $entry_list[] = "" . User_Nick_render($entry) .""; + } + if ($angeltype['count'] - count($entries) > 0) { + $inner_text = ($angeltype['count'] - count($entries)) . ' ' . Get_Text($angeltype['count'] - count($entries) == 1 ? 'helper' : 'helpers') . ' ' . Get_Text('needed'); + // is the shift still running or alternatively is the user shift admin? + $user_may_join_shift = true; + + // you cannot join if user alread joined a parallel or this shift + $user_may_join_shift &= !$collides; + + // you cannot join if user is not of this angel type + $user_may_join_shift &= isset($angeltype['user_id']); + + // you cannot join if you are not confirmed + if($angeltype['restricted'] == 1 && isset($angeltype['user_id'])) + $user_may_join_shift &= isset($angeltype['confirm_user_id']); + + // you can only join if the shift is in future or running + $user_may_join_shift &= time() < $shift['start']; + + // User shift admins may join anybody in every shift + $user_may_join_shift |= in_array('user_shifts_admin', $privileges); + if ($user_may_join_shift) + $entry_list[] = '' . $inner_text . ' »'; + else { + if(time() > $shift['start']) + $entry_list[] = $inner_text . ' (vorbei)'; + elseif($angeltype['restricted'] == 1 && isset($angeltype['user_id']) && !isset($angeltype['confirm_user_id'])) + $entry_list[] = $inner_text . ' unconfirmed'; + elseif($collides) + $entry_list[] = $inner_text; + else + $entry_list[] = $inner_text . ' (Werde ' . $angeltype['name'] .')'; + } + + unset($inner_text); + $is_free = true; + } + + $shifts_row .= '' . $angeltype['name'] . ': '; + $shifts_row .= join(", ", $entry_list); + $shifts_row .= '
'; + } + if (in_array('user_shifts_admin', $privileges)) { + $shifts_row .= 'Weitere Helfer eintragen »'; + } + } + if ($shift['own'] && !in_array('user_shifts_admin', $privileges)) + $class = 'own'; + elseif ($collides && !in_array('user_shifts_admin', $privileges)) + $class = 'collides'; + elseif ($is_free) + $class = 'free'; + else + $class = 'occupied'; + $shifts_table.=''; + if (($is_free && in_array(0, $_SESSION['user_shifts']['filled'])) || (!$is_free && in_array(1, $_SESSION['user_shifts']['filled']))) { + $shifts_table .= $shifts_row; + } + $shifts_table.=""; + for($j=0; $j < $blocks && $i+$j < $maxshow; $j++) { + $todo[$rid][$i+$j]--; + } + } + } + if ($shift['own'] && !in_array('user_shifts_admin', $privileges)) { + $blocks = ($shift["end"]-$shift["start"]) / (15*60); + $firstblock = floor(($shift["start"]-$first) / (15*60)); + if ($i >= $firstblock && $i < $firstblock + $blocks) + $empty_collides = true; + } + } + // fill up row with empty + while($todo[$rid][$i]-- > 0) + $shifts_table .= ''; + } + $shifts_table .= "\n"; + } + $shifts_table .= ''; + // qqq +} else { + $shifts_table = array(); + foreach ($shifts as $shift) { + $info = array (); + if ($_SESSION['user_shifts']['start_day'] != $_SESSION['user_shifts']['end_day']) + $info[] = date("Y-m-d", $shift['start']); + $info[] = date("H:i", $shift['start']) . ' - ' . date("H:i", $shift['end']); + if (count($_SESSION['user_shifts']['rooms']) > 1) + $info[] = $shift['room_name']; + + $shift_row = array( + 'info' => join('
', $info), + 'entries' => $shift['name'] + ); + + if (in_array('admin_shifts', $privileges)) + $shift_row['info'] .= ' ' . img_button('?p=user_shifts&edit_shift=' . $shift['SID'], 'pencil', 'edit') . img_button('?p=user_shifts&delete_shift=' . $shift['SID'], 'bin', 'delete'); + $shift_row['entries'] .= '
'; + $is_free = false; + $shift_has_special_needs = 0 < sql_num_query("SELECT `id` FROM `NeededAngelTypes` WHERE `shift_id` = " . $shift['SID']); + $query = "SELECT `NeededAngelTypes`.`count`, `AngelTypes`.`id`, `AngelTypes`.`restricted`, `UserAngelTypes`.`confirm_user_id`, `AngelTypes`.`name`, `UserAngelTypes`.`user_id` + FROM `NeededAngelTypes` + JOIN `AngelTypes` ON (`NeededAngelTypes`.`angel_type_id` = `AngelTypes`.`id`) + LEFT JOIN `UserAngelTypes` ON (`NeededAngelTypes`.`angel_type_id` = `UserAngelTypes`.`angeltype_id`AND `UserAngelTypes`.`user_id`=" . sql_escape($user['UID']) . ") + WHERE "; + if ($shift_has_special_needs) + $query .= "`shift_id` = " . sql_escape($shift['SID']); + else + $query .= "`room_id` = " . sql_escape($shift['RID']); + $query .= " AND `count` > 0 "; + if (!empty($_SESSION['user_shifts']['types'])) + $query .= "AND `angel_type_id` IN (" . implode(',', $_SESSION['user_shifts']['types']) . ") "; + $query .= "ORDER BY `AngelTypes`.`name`"; + $angeltypes = sql_select($query); + if (count($angeltypes) > 0) { + $my_shift = sql_num_query("SELECT * FROM `ShiftEntry` WHERE `SID`=" . sql_escape($shift['SID']) . " AND `UID`=" . sql_escape($user['UID']) . " LIMIT 1") > 0; + foreach ($angeltypes as $angeltype) { + $entries = sql_select("SELECT * FROM `ShiftEntry` JOIN `User` ON (`ShiftEntry`.`UID` = `User`.`UID`) WHERE `SID`=" . sql_escape($shift['SID']) . " AND `TID`=" . sql_escape($angeltype['id']) . " ORDER BY `Nick`"); + $entry_list = array (); + foreach ($entries as $entry) { + if (in_array('user_shifts_admin', $privileges)) + $entry_list[] = User_Nick_render($entry) . ' ' . img_button(page_link_to('user_shifts') . '&entry_id=' . $entry['id'], 'bin', 'delete'); + else + $entry_list[] = User_Nick_render($entry); + } + // do we need more angles of this type? + if ($angeltype['count'] - count($entries) > 0) { + $inner_text = ($angeltype['count'] - count($entries)) . ' ' . Get_Text($angeltype['count'] - count($entries) == 1 ? 'helper' : 'helpers') . ' ' . Get_Text('needed'); + // is the shift still running or alternatively is the user shift admin? + $user_may_join_shift = true; + + /* you cannot join if user already joined this shift */ + $user_may_join_shift &= !$my_shift; + + // you cannot join if user is not of this angel type + $user_may_join_shift &= isset($angeltype['user_id']); + + // you cannot join if you are not confirmed + if($angeltype['restricted'] == 1 && isset($angeltype['user_id'])) + $user_may_join_shift &= isset($angeltype['confirm_user_id']); + + // you can only join if the shift is in future or running + $user_may_join_shift &= time() < $shift['start']; + + // User shift admins may join anybody in every shift + $user_may_join_shift |= in_array('user_shifts_admin', $privileges); + if ($user_may_join_shift) + $entry_list[] = '' . $inner_text . ' »'; + else { + if(time() > $shift['end']) { + $entry_list[] = $inner_text . ' (vorbei)'; + } elseif($angeltype['restricted'] == 1 && isset($angeltype['user_id']) && !isset($angeltype['confirm_user_id'])) { + $entry_list[] = $inner_text . ' unconfirmed'; + } else { + $entry_list[] = $inner_text . ' (Werde ' . $angeltype['name'] .')'; + } + } + + unset($inner_text); + $is_free = true; + } + + $shift_row['entries'] .= '' . $angeltype['name'] . ': '; + $shift_row['entries'] .= join(", ", $entry_list); + $shift_row['entries'] .= '
'; + } + if (in_array('user_shifts_admin', $privileges)) { + $shift_row['entries'] .= 'Weitere Helfer eintragen »'; + } + if (($is_free && in_array(0, $_SESSION['user_shifts']['filled'])) || (!$is_free && in_array(1, $_SESSION['user_shifts']['filled']))) { + $shifts_table[] = $shift_row; + $ical_shifts[] = $shift; + } + } + } + $shifts_table = table(array( + 'info' => ucfirst(Get_Text("time")) . "/" . ucfirst(Get_Text("room")), + 'entries' => ucfirst(Get_Text("entries")) + ), $shifts_table); +} + +if ($user['ical_key'] == "") + user_reset_ical_key($user); + +return msg() . template_render('../templates/user_shifts.html', array ( + 'room_select' => make_select($rooms, $_SESSION['user_shifts']['rooms'], "rooms", ucfirst(Get_Text("rooms"))), + 'start_select' => html_select_key("start_day", "start_day", array_combine($days, $days), $_SESSION['user_shifts']['start_day']), + 'start_time' => $_SESSION['user_shifts']['start_time'], + 'end_select' => html_select_key("end_day", "end_day", array_combine($days, $days), $_SESSION['user_shifts']['end_day']), + 'end_time' => $_SESSION['user_shifts']['end_time'], + 'type_select' => make_select($types, $_SESSION['user_shifts']['types'], "types", ucfirst(Get_Text("tasks")) . '1'), + 'filled_select' => make_select($filled, $_SESSION['user_shifts']['filled'], "filled", ucfirst(Get_Text("occupancy"))), + 'task_notice' => '1' . Get_Text("pub_schichtplan_tasks_notice"), + 'new_style_checkbox' => '', + 'shifts_table' => $shifts_table, + 'ical_text' => sprintf(Get_Text('inc_schicht_ical_text'), htmlspecialchars(make_user_shifts_ical_link($user['ical_key'])), page_link_to('user_myshifts') . '&reset'), + 'filter' => ucfirst(Get_Text("to_filter")), +)); } function make_user_shifts_ical_link($key) { diff --git a/includes/pages/user_wakeup.php b/includes/pages/user_wakeup.php index fbb47a0d..c897d43e 100644 --- a/includes/pages/user_wakeup.php +++ b/includes/pages/user_wakeup.php @@ -38,7 +38,7 @@ function user_wakeup() { } } - $html .= "

" . Get_Text("Hello") . $user['Nick'] . ",
" + $html .= "

" . Get_Text("Hello") . User_Nick_render($user) . ",
" . Get_Text("pub_wake_beschreibung") . "

\n\n"; $html .= Get_Text("pub_wake_beschreibung2"); $html .= ' diff --git a/includes/sys_user.php b/includes/sys_user.php index 88002706..231b2b62 100644 --- a/includes/sys_user.php +++ b/includes/sys_user.php @@ -1,5 +1,13 @@ ' . htmlspecialchars($user_source['Nick']) . ''; + else + return htmlspecialchars($user_source['Nick']); +} + /** * Available T-Shirt sizes