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 .= 'yes | reset | ';
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' => '',
'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;
- }
- }
+ }
+ 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') . '';
+ // 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 . ' ';
+ elseif($collides)
+ $entry_list[] = $inner_text;
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 . ' ';
- elseif($collides)
- $entry_list[] = $inner_text;
- else
- $entry_list[] = $inner_text . ' (Werde ' . $angeltype['name'] .')';
- }
-
- unset($inner_text);
- $is_free = true;
+ $entry_list[] = $inner_text . ' (Werde ' . $angeltype['name'] .')';
}
- $shifts_row .= '' . $angeltype['name'] . ': ';
- $shifts_row .= join(", ", $entry_list);
- $shifts_row .= '
';
+ unset($inner_text);
+ $is_free = true;
}
- 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_row .= '' . $angeltype['name'] . ': ';
+ $shifts_row .= join(", ", $entry_list);
+ $shifts_row .= ' ';
}
- $shifts_table.=" | ";
- for($j=0; $j < $blocks && $i+$j < $maxshow; $j++) {
- $todo[$rid][$i+$j]--;
+ if (in_array('user_shifts_admin', $privileges)) {
+ $shifts_row .= 'Weitere Helfer eintragen »';
}
}
- }
- 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;
+ 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]--;
+ }
}
}
- // fill up row with empty
- while($todo[$rid][$i]-- > 0)
- $shifts_table .= ' | | ';
+ 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;
+ }
}
- $shifts_table .= "
\n";
+ // fill up row with empty
+ while($todo[$rid][$i]-- > 0)
+ $shifts_table .= ' | | ';
}
- $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 . ' ';
- } else {
- $entry_list[] = $inner_text . ' (Werde ' . $angeltype['name'] .')';
- }
- }
+ $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']
+ );
- unset($inner_text);
- $is_free = true;
+ 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 . ' ';
+ } else {
+ $entry_list[] = $inner_text . ' (Werde ' . $angeltype['name'] .')';
+ }
}
- $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;
+ 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);
}
+ $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")),
- ));
+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