User Nick function, enhanced log with some links

This commit is contained in:
Philip Häusler 2012-12-30 17:58:23 +01:00
parent b26994f518
commit dd4530d760
13 changed files with 372 additions and 366 deletions

View File

@ -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 .= '<tr>';
$table .= '<td>' . $usr['Nick'] . '</td>';
$table .= '<td>' . User_Nick_render($usr) . '</td>';
$table .= '<td>' . $tshirt_sizes[$usr['Size']] . '</td>';
$table .= '<td>' . $usr['shift_count'] . '</td>';

View File

@ -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 .= '<tr>';
$table .= '<td>' . $usr['Nick'] . '</td>';
$table .= '<td>' . User_Nick_render($usr) . '</td>';
if ($usr['Gekommen'] == 1)
$table .= '<td>yes</td><td><a href="' . page_link_to('admin_arrive') . '&reset=' . $usr['UID'] . '&search=' . $search . '">reset</a></td>';
else

View File

@ -1,65 +1,62 @@
<?php
function admin_free() {
global $privileges;
global $privileges;
$search = "";
if (isset ($_REQUEST['search']))
$search = strip_request_item('search');
$search = "";
if (isset ($_REQUEST['search']))
$search = strip_request_item('search');
$angeltypesearch = "";
if (empty ($_REQUEST['angeltype']))
$_REQUEST['angeltype'] = '';
else {
$angeltypesearch = " INNER JOIN `UserAngelTypes` ON (`UserAngelTypes`.`angeltype_id` = '" . sql_escape($_REQUEST['angeltype']) . "' AND `UserAngelTypes`.`user_id` = `User`.`UID`";
if (isset ($_REQUEST['confirmed_only']))
$angeltypesearch .= " AND `UserAngelTypes`.`confirm_user_id`";
$angeltypesearch .= ") ";
}
$angeltypesearch = "";
if (empty ($_REQUEST['angeltype']))
$_REQUEST['angeltype'] = '';
else {
$angeltypesearch = " INNER JOIN `UserAngelTypes` ON (`UserAngelTypes`.`angeltype_id` = '" . sql_escape($_REQUEST['angeltype']) . "' AND `UserAngelTypes`.`user_id` = `User`.`UID`";
if (isset ($_REQUEST['confirmed_only']))
$angeltypesearch .= " AND `UserAngelTypes`.`confirm_user_id`";
$angeltypesearch .= ") ";
}
$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'];
$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 .= '<tr>';
if (in_array('user_shifts_admin', $privileges))
$table .= '<td><a href="' . page_link_to('user_myshifts') . '&amp;id=' . $usr['UID'] . '">' . $usr['Nick'] . '</a></td>';
else
$table .= '<td>' . $usr['Nick'] . '</td>';
$table .= '<td>' . $usr['DECT'] . '</td>';
$table .= '<td>' . $usr['jabber'] . '</td>';
if (in_array('admin_user', $privileges))
$table .= '<td><a href="' . page_link_to('admin_user') . '&amp;id=' . $usr['UID'] . '">edit</a></td>';
else
$table .= '<td>' . $usr['Nick'] . '</td>';
$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 .= '<tr>';
$table .= '<td>' . User_Nick_render($usr) . '</td>';
$table .= '<td>' . $usr['DECT'] . '</td>';
$table .= '<td>' . $usr['jabber'] . '</td>';
if (in_array('admin_user', $privileges))
$table .= '<td><a href="' . page_link_to('admin_user') . '&amp;id=' . $usr['UID'] . '">edit</a></td>';
else
$table .= '<td>' . User_Nick_render($usr) . '</td>';
$table .= '</tr>';
}
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 .= '</tr>';
}
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')
));
}
?>

View File

@ -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 {

View File

@ -4,7 +4,7 @@ function admin_language() {
$html = "";
if (!isset ($_POST["TextID"])) {
$html .= Get_Text("Hello") . $user['Nick'] . ", <br />\n";
$html .= Get_Text("Hello") . User_Nick_render($user) . ", <br />\n";
$html .= Get_Text("pub_sprache_text1") . "<br /><br />\n";
$html .= "<a href=\"" . page_link_to("admin_language") . "&ShowEntry=y\">" . Get_Text("pub_sprache_ShowEntry") . "</a>";

View File

@ -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 .= "<br>Jabber: " . $angel["jabber"];
return array(
'Nick' => in_array('user_shifts_admin', $privileges)? '<a href="' . page_link_to("user_myshifts") . '&amp;id=' . $angel["UID"] . '">' . htmlspecialchars($angel["Nick"]) . '</a>' : 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' => '<div class="rotate"><a href="' . page_link_to("admin_user") . '&amp;OrderBy=Size">Gr&ouml;&szlig;e</a></div>',
'lastLogIn' => '<a href="' . page_link_to("admin_user") . '&amp;OrderBy=lastLogIn">Last login</a>',
'edit' => ''),
$angels);
$angels);
}
return $html;
}

View File

@ -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'] = '<a href="' . page_link_to('admin_user') . '&id=' . $user['UID'] . '">' . $user['Nick'] . '</a>';
$user['name'] = User_Nick_render($user);
$user['actions'] = img_button(page_link_to('admin_user_angeltypes') . '&confirm=' . $user['id'], 'tick', 'confirm');
$user['actions'] .= '&nbsp;&nbsp;';
$user['actions'] .= img_button(page_link_to('admin_user_angeltypes') . '&deny=' . $user['id'], 'cross', 'deny');
$users[] = $user;
}
$content[] = '<h2>' . $angel_type['name'] . ' <small>' . 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') . '</small></h2>' . table(array (
'Nick' => "Nick",
'name' => "Nick",
'actions' => ""
), $users);
}

View File

@ -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'] . ", <br />\n" . Get_Text("pub_messages_text1") . "<br /><br />\n",
'greeting' => Get_Text("Hello") . User_Nick_render($user) . ", <br />\n" . Get_Text("pub_messages_text1") . "<br /><br />\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")
));

View File

@ -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[] = '<b>' . $user_source['Nick'] . '</b>';
else
$shift_entries[] = $user_source['Nick'];
$shift_entries[] = User_Nick_render($user_source);
}
$html .= join(", ", $shift_entries);
}

View File

@ -163,7 +163,7 @@ function user_settings() {
}
return page(array (
sprintf(Get_Text("Hallo") . "%s,<br />" . Get_Text(13), $user['Nick']),
sprintf(Get_Text("Hallo") . "%s,<br />" . Get_Text(13), User_Nick_render($user)),
$msg,
msg(),
form(array (

View File

@ -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!" . ' <a href="' . page_link_to('user_myshifts') . '">Meine Schichten &raquo;</a>');
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 .= "<th" . (($colspan > 1)? ' colspan="' . $colspan . '"' : '') . ">${room['name']}</th>\n";
}
unset($block, $blocks, $firstblock, $colspan, $key, $room);
$shifts_table.="</tr></thead><tbody>";
for($i = 0; $i < $maxshow; $i++) {
$thistime = $first + ($i*15*60);
$shifts_table .= "<tr><th>";
if($thistime%(24*60*60) == 23*60*60 && $endtime - $starttime > 24*60*60)
$shifts_table .= date('y-m-d<b\r>H:i', $thistime);
elseif($thistime%(60*60) == 0)
$shifts_table .= date("H:i", $thistime);
$shifts_table .= "</th>";
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 .= '<br />';
$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[] = "<span style=\"$style\">" . '<a href="' . page_link_to('user_myshifts') . '&amp;id=' . $entry['UID'] . '">' . $entry['Nick'] . '</a> ' . img_button(page_link_to('user_shifts') . '&entry_id=' . $entry['id'], 'bin', 'delete') . '</span>';
else
$entry_list[] = "<span style=\"$style\">" . $entry['Nick']."</span>";
}
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[] = '<a href="' . page_link_to('user_shifts') . '&amp;shift_id=' . $shift['SID'] . '&amp;type_id=' . $angeltype['id'] . '">' . $inner_text . '&nbsp;&raquo;</a>';
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 . ' <img src="pic/lock.png" alt="unconfirmed" title="Du bist für diesen Engeltyp noch nicht freigeschaltet." />';
elseif($collides)
$entry_list[] = $inner_text;
else
$entry_list[] = $inner_text . ' <a href="' . page_link_to('user_settings') . '#angel_types_anchor">(Werde ' . $angeltype['name'] .')</a>';
}
unset($inner_text);
$is_free = true;
}
$shifts_row .= '<b>' . $angeltype['name'] . ':</b> ';
$shifts_row .= join(", ", $entry_list);
$shifts_row .= '<br />';
}
if (in_array('user_shifts_admin', $privileges)) {
$shifts_row .= '<a href="' . page_link_to('user_shifts') . '&amp;shift_id=' . $shift['SID'] . '&amp;type_id=' . $angeltype['id'] . '">Weitere Helfer eintragen&nbsp;&raquo;</a>';
}
}
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.='<td rowspan="' . $blocks . '" class="' . $class . '">';
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.="</td>";
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 <td>
while($todo[$rid][$i]-- > 0)
$shifts_table .= '<td class="' . ($empty_collides? 'collides ' : '') . 'empty"></td>';
}
$shifts_table .= "</tr>\n";
}
$shifts_table .= '</tbody></table><script type="text/javascript">document.getElementById("shifts").style.maxHeight = (window.innerHeight - 100) + "px";</script>';
// 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('<br />', $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'] .= '<br />';
$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[] = '<a href="' . page_link_to('user_myshifts') . '&amp;id=' . $entry['UID'] . '">' . $entry['Nick'] . '</a> ' . 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[] = '<a href="' . page_link_to('user_shifts') . '&amp;shift_id=' . $shift['SID'] . '&amp;type_id=' . $angeltype['id'] . '">' . $inner_text . ' &raquo;</a>';
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 . ' <img src="pic/lock.png" alt="unconfirmed" title="Du bist für diesen Engeltyp noch nicht freigeschaltet." />';
} else {
$entry_list[] = $inner_text . ' <a href="' . page_link_to('user_settings') . '#angel_types_anchor">(Werde ' . $angeltype['name'] .')</a>';
}
}
unset($inner_text);
$is_free = true;
}
$shift_row['entries'] .= '<b>' . $angeltype['name'] . ':</b> ';
$shift_row['entries'] .= join(", ", $entry_list);
$shift_row['entries'] .= '<br />';
}
if (in_array('user_shifts_admin', $privileges)) {
$shift_row['entries'] .= '<a href="' . page_link_to('user_shifts') . '&amp;shift_id=' . $shift['SID'] . '&amp;type_id=' . $angeltype['id'] . '">Weitere Helfer eintragen &raquo;</a>';
}
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.="</tr></thead><tbody>";
for($i = 0; $i < $maxshow; $i++) {
$thistime = $first + ($i*15*60);
$shifts_table .= "<tr><th>";
if($thistime%(24*60*60) == 23*60*60 && $endtime - $starttime > 24*60*60)
$shifts_table .= date('y-m-d<b\r>H:i', $thistime);
elseif($thistime%(60*60) == 0)
$shifts_table .= date("H:i", $thistime);
$shifts_table .= "</th>";
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")) . '<sup>1</sup>'),
'filled_select' => make_select($filled, $_SESSION['user_shifts']['filled'], "filled", ucfirst(Get_Text("occupancy"))),
'task_notice' => '<sup>1</sup>' . Get_Text("pub_schichtplan_tasks_notice"),
'new_style_checkbox' => '<label><input type="checkbox" name="new_style" value="1" ' . ($_SESSION['user_shifts']['new_style']? ' checked' : '') . '> Use new style if possible</label>',
'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') . '&amp;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 .= '<br />';
$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[] = "<span style=\"$style\">" . User_Nick_render($entry) . ' ' . img_button(page_link_to('user_shifts') . '&entry_id=' . $entry['id'], 'bin', 'delete') . '</span>';
else
$entry_list[] = "<span style=\"$style\">" . User_Nick_render($entry) ."</span>";
}
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[] = '<a href="' . page_link_to('user_shifts') . '&amp;shift_id=' . $shift['SID'] . '&amp;type_id=' . $angeltype['id'] . '">' . $inner_text . '&nbsp;&raquo;</a>';
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 . ' <img src="pic/lock.png" alt="unconfirmed" title="Du bist für diesen Engeltyp noch nicht freigeschaltet." />';
elseif($collides)
$entry_list[] = $inner_text;
else
$entry_list[] = $inner_text . ' <a href="' . page_link_to('user_settings') . '#angel_types_anchor">(Werde ' . $angeltype['name'] .')</a>';
}
unset($inner_text);
$is_free = true;
}
$shifts_row .= '<b>' . $angeltype['name'] . ':</b> ';
$shifts_row .= join(", ", $entry_list);
$shifts_row .= '<br />';
}
if (in_array('user_shifts_admin', $privileges)) {
$shifts_row .= '<a href="' . page_link_to('user_shifts') . '&amp;shift_id=' . $shift['SID'] . '&amp;type_id=' . $angeltype['id'] . '">Weitere Helfer eintragen&nbsp;&raquo;</a>';
}
}
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.='<td rowspan="' . $blocks . '" class="' . $class . '">';
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.="</td>";
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 <td>
while($todo[$rid][$i]-- > 0)
$shifts_table .= '<td class="' . ($empty_collides? 'collides ' : '') . 'empty"></td>';
}
$shifts_table .= "</tr>\n";
}
$shifts_table .= '</tbody></table><script type="text/javascript">document.getElementById("shifts").style.maxHeight = (window.innerHeight - 100) + "px";</script>';
// 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('<br />', $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'] .= '<br />';
$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[] = '<a href="' . page_link_to('user_shifts') . '&amp;shift_id=' . $shift['SID'] . '&amp;type_id=' . $angeltype['id'] . '">' . $inner_text . ' &raquo;</a>';
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 . ' <img src="pic/lock.png" alt="unconfirmed" title="Du bist für diesen Engeltyp noch nicht freigeschaltet." />';
} else {
$entry_list[] = $inner_text . ' <a href="' . page_link_to('user_settings') . '#angel_types_anchor">(Werde ' . $angeltype['name'] .')</a>';
}
}
unset($inner_text);
$is_free = true;
}
$shift_row['entries'] .= '<b>' . $angeltype['name'] . ':</b> ';
$shift_row['entries'] .= join(", ", $entry_list);
$shift_row['entries'] .= '<br />';
}
if (in_array('user_shifts_admin', $privileges)) {
$shift_row['entries'] .= '<a href="' . page_link_to('user_shifts') . '&amp;shift_id=' . $shift['SID'] . '&amp;type_id=' . $angeltype['id'] . '">Weitere Helfer eintragen &raquo;</a>';
}
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")) . '<sup>1</sup>'),
'filled_select' => make_select($filled, $_SESSION['user_shifts']['filled'], "filled", ucfirst(Get_Text("occupancy"))),
'task_notice' => '<sup>1</sup>' . Get_Text("pub_schichtplan_tasks_notice"),
'new_style_checkbox' => '<label><input type="checkbox" name="new_style" value="1" ' . ($_SESSION['user_shifts']['new_style']? ' checked' : '') . '> Use new style if possible</label>',
'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') . '&amp;reset'),
'filter' => ucfirst(Get_Text("to_filter")),
));
}
function make_user_shifts_ical_link($key) {

View File

@ -38,7 +38,7 @@ function user_wakeup() {
}
}
$html .= "<p>" . Get_Text("Hello") . $user['Nick'] . ",<br />"
$html .= "<p>" . Get_Text("Hello") . User_Nick_render($user) . ",<br />"
. Get_Text("pub_wake_beschreibung") . "</p>\n\n";
$html .= Get_Text("pub_wake_beschreibung2");
$html .= '

View File

@ -1,5 +1,13 @@
<?php
function User_Nick_render($user_source) {
global $user, $privileges;
if($user['UID'] == $user_source['UID'] || in_array('user_shifts_admin', $privileges))
return '<a href="' . page_link_to('user_myshifts') . '&amp;id=' . $user_source['UID'] . '">' . htmlspecialchars($user_source['Nick']) . '</a>';
else
return htmlspecialchars($user_source['Nick']);
}
/**
* Available T-Shirt sizes