User Nick function, enhanced log with some links
This commit is contained in:
parent
b26994f518
commit
dd4530d760
|
@ -28,7 +28,7 @@ function admin_active() {
|
||||||
$user_nicks = array();
|
$user_nicks = array();
|
||||||
foreach ($users as $usr) {
|
foreach ($users as $usr) {
|
||||||
sql_query("UPDATE `User` SET `Aktiv` = 1 WHERE `UID`=" . sql_escape($usr['UID']));
|
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));
|
engelsystem_log("These angels are active now: " . join(", ", $user_nicks));
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ function admin_active() {
|
||||||
$user_source = User($id);
|
$user_source = User($id);
|
||||||
if($user_source != null) {
|
if($user_source != null) {
|
||||||
sql_query("UPDATE `User` SET `Aktiv`=1 WHERE `UID`=" . sql_escape($id) . " LIMIT 1");
|
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);
|
$msg = success("Angel has been marked as active.", true);
|
||||||
}
|
}
|
||||||
else $msg = error("Angel not found.", true);
|
else $msg = error("Angel not found.", true);
|
||||||
|
@ -54,7 +54,7 @@ function admin_active() {
|
||||||
$user_source = User($id);
|
$user_source = User($id);
|
||||||
if($user_source != null) {
|
if($user_source != null) {
|
||||||
sql_query("UPDATE `User` SET `Aktiv`=0 WHERE `UID`=" . sql_escape($id) . " LIMIT 1");
|
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);
|
$msg = success("Angel has been marked as not active.", true);
|
||||||
}
|
}
|
||||||
else $msg = error("Angel not found.", true);
|
else $msg = error("Angel not found.", true);
|
||||||
|
@ -64,7 +64,7 @@ function admin_active() {
|
||||||
$user_source = User($id);
|
$user_source = User($id);
|
||||||
if($user_source != null) {
|
if($user_source != null) {
|
||||||
sql_query("UPDATE `User` SET `Tshirt`=1 WHERE `UID`=" . sql_escape($id) . " LIMIT 1");
|
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);
|
$msg = success("Angel has got a t-shirt.", true);
|
||||||
}
|
}
|
||||||
else $msg = error("Angel not found.", true);
|
else $msg = error("Angel not found.", true);
|
||||||
|
@ -74,7 +74,7 @@ function admin_active() {
|
||||||
$user_source = User($id);
|
$user_source = User($id);
|
||||||
if($user_source != null) {
|
if($user_source != null) {
|
||||||
sql_query("UPDATE `User` SET `Tshirt`=0 WHERE `UID`=" . sql_escape($id) . " LIMIT 1");
|
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);
|
$msg = success("Angel has got no t-shirt.", true);
|
||||||
}
|
}
|
||||||
else $msg = error("Angel not found.", true);
|
else $msg = error("Angel not found.", true);
|
||||||
|
@ -100,7 +100,7 @@ function admin_active() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$table .= '<tr>';
|
$table .= '<tr>';
|
||||||
$table .= '<td>' . $usr['Nick'] . '</td>';
|
$table .= '<td>' . User_Nick_render($usr) . '</td>';
|
||||||
$table .= '<td>' . $tshirt_sizes[$usr['Size']] . '</td>';
|
$table .= '<td>' . $tshirt_sizes[$usr['Size']] . '</td>';
|
||||||
$table .= '<td>' . $usr['shift_count'] . '</td>';
|
$table .= '<td>' . $usr['shift_count'] . '</td>';
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ function admin_arrive() {
|
||||||
$user_source = User($id);
|
$user_source = User($id);
|
||||||
if($user_source != null) {
|
if($user_source != null) {
|
||||||
sql_query("UPDATE `User` SET `Gekommen`=0 WHERE `UID`=" . sql_escape($id) . " LIMIT 1");
|
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);
|
$msg = success("Reset done. Angel has not arrived.", true);
|
||||||
} else $msg = error("Angel not found.", true);
|
} else $msg = error("Angel not found.", true);
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ function admin_arrive() {
|
||||||
$user_source = User($id);
|
$user_source = User($id);
|
||||||
if($user_source != null) {
|
if($user_source != null) {
|
||||||
sql_query("UPDATE `User` SET `Gekommen`=1 WHERE `UID`=" . sql_escape($id) . " LIMIT 1");
|
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);
|
$msg = success("Angel has been marked as arrived.", true);
|
||||||
} else $msg = error("Angel not found.", true);
|
} else $msg = error("Angel not found.", true);
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ function admin_arrive() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$table .= '<tr>';
|
$table .= '<tr>';
|
||||||
$table .= '<td>' . $usr['Nick'] . '</td>';
|
$table .= '<td>' . User_Nick_render($usr) . '</td>';
|
||||||
if ($usr['Gekommen'] == 1)
|
if ($usr['Gekommen'] == 1)
|
||||||
$table .= '<td>yes</td><td><a href="' . page_link_to('admin_arrive') . '&reset=' . $usr['UID'] . '&search=' . $search . '">reset</a></td>';
|
$table .= '<td>yes</td><td><a href="' . page_link_to('admin_arrive') . '&reset=' . $usr['UID'] . '&search=' . $search . '">reset</a></td>';
|
||||||
else
|
else
|
||||||
|
|
|
@ -1,65 +1,62 @@
|
||||||
<?php
|
<?php
|
||||||
function admin_free() {
|
function admin_free() {
|
||||||
global $privileges;
|
global $privileges;
|
||||||
|
|
||||||
$search = "";
|
$search = "";
|
||||||
if (isset ($_REQUEST['search']))
|
if (isset ($_REQUEST['search']))
|
||||||
$search = strip_request_item('search');
|
$search = strip_request_item('search');
|
||||||
|
|
||||||
$angeltypesearch = "";
|
$angeltypesearch = "";
|
||||||
if (empty ($_REQUEST['angeltype']))
|
if (empty ($_REQUEST['angeltype']))
|
||||||
$_REQUEST['angeltype'] = '';
|
$_REQUEST['angeltype'] = '';
|
||||||
else {
|
else {
|
||||||
$angeltypesearch = " INNER JOIN `UserAngelTypes` ON (`UserAngelTypes`.`angeltype_id` = '" . sql_escape($_REQUEST['angeltype']) . "' AND `UserAngelTypes`.`user_id` = `User`.`UID`";
|
$angeltypesearch = " INNER JOIN `UserAngelTypes` ON (`UserAngelTypes`.`angeltype_id` = '" . sql_escape($_REQUEST['angeltype']) . "' AND `UserAngelTypes`.`user_id` = `User`.`UID`";
|
||||||
if (isset ($_REQUEST['confirmed_only']))
|
if (isset ($_REQUEST['confirmed_only']))
|
||||||
$angeltypesearch .= " AND `UserAngelTypes`.`confirm_user_id`";
|
$angeltypesearch .= " AND `UserAngelTypes`.`confirm_user_id`";
|
||||||
$angeltypesearch .= ") ";
|
$angeltypesearch .= ") ";
|
||||||
}
|
}
|
||||||
|
|
||||||
$angel_types_source = sql_select("SELECT `id`, `name` FROM `AngelTypes` ORDER BY `name`");
|
$angel_types_source = sql_select("SELECT `id`, `name` FROM `AngelTypes` ORDER BY `name`");
|
||||||
$angel_types = array('' => 'alle Typen');
|
$angel_types = array('' => 'alle Typen');
|
||||||
foreach ($angel_types_source as $angel_type)
|
foreach ($angel_types_source as $angel_type)
|
||||||
$angel_types[$angel_type['id']] = $angel_type['name'];
|
$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 = "";
|
$table = "";
|
||||||
if ($search == "")
|
if ($search == "")
|
||||||
$tokens = array ();
|
$tokens = array ();
|
||||||
else
|
else
|
||||||
$tokens = explode(" ", $search);
|
$tokens = explode(" ", $search);
|
||||||
foreach ($users as $usr) {
|
foreach ($users as $usr) {
|
||||||
if (count($tokens) > 0) {
|
if (count($tokens) > 0) {
|
||||||
$match = false;
|
$match = false;
|
||||||
$index = join("", $usr);
|
$index = join("", $usr);
|
||||||
foreach ($tokens as $t)
|
foreach ($tokens as $t)
|
||||||
if (stristr($index, trim($t))) {
|
if (stristr($index, trim($t))) {
|
||||||
$match = true;
|
$match = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!$match)
|
if (!$match)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$table .= '<tr>';
|
$table .= '<tr>';
|
||||||
if (in_array('user_shifts_admin', $privileges))
|
$table .= '<td>' . User_Nick_render($usr) . '</td>';
|
||||||
$table .= '<td><a href="' . page_link_to('user_myshifts') . '&id=' . $usr['UID'] . '">' . $usr['Nick'] . '</a></td>';
|
$table .= '<td>' . $usr['DECT'] . '</td>';
|
||||||
else
|
$table .= '<td>' . $usr['jabber'] . '</td>';
|
||||||
$table .= '<td>' . $usr['Nick'] . '</td>';
|
if (in_array('admin_user', $privileges))
|
||||||
$table .= '<td>' . $usr['DECT'] . '</td>';
|
$table .= '<td><a href="' . page_link_to('admin_user') . '&id=' . $usr['UID'] . '">edit</a></td>';
|
||||||
$table .= '<td>' . $usr['jabber'] . '</td>';
|
else
|
||||||
if (in_array('admin_user', $privileges))
|
$table .= '<td>' . User_Nick_render($usr) . '</td>';
|
||||||
$table .= '<td><a href="' . page_link_to('admin_user') . '&id=' . $usr['UID'] . '">edit</a></td>';
|
|
||||||
else
|
|
||||||
$table .= '<td>' . $usr['Nick'] . '</td>';
|
|
||||||
|
|
||||||
$table .= '</tr>';
|
$table .= '</tr>';
|
||||||
}
|
}
|
||||||
return template_render('../templates/admin_free.html', array (
|
return template_render('../templates/admin_free.html', array (
|
||||||
'search' => $search,
|
'search' => $search,
|
||||||
'angeltypes' => html_select_key('angeltype', 'angeltype', $angel_types, $_REQUEST['angeltype']),
|
'angeltypes' => html_select_key('angeltype', 'angeltype', $angel_types, $_REQUEST['angeltype']),
|
||||||
'confirmed_only' => isset($_REQUEST['confirmed_only'])? 'checked' : '',
|
'confirmed_only' => isset($_REQUEST['confirmed_only'])? 'checked' : '',
|
||||||
'table' => $table,
|
'table' => $table,
|
||||||
'link' => page_link_to('admin_free')
|
'link' => page_link_to('admin_free')
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -27,7 +27,7 @@ function admin_groups() {
|
||||||
}
|
}
|
||||||
|
|
||||||
return template_render('../templates/admin_groups.html', array (
|
return template_render('../templates/admin_groups.html', array (
|
||||||
'nick' => $user['Nick'],
|
'nick' => User_Nick_render($user),
|
||||||
'groups' => $groups_html
|
'groups' => $groups_html
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -4,7 +4,7 @@ function admin_language() {
|
||||||
|
|
||||||
$html = "";
|
$html = "";
|
||||||
if (!isset ($_POST["TextID"])) {
|
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 .= Get_Text("pub_sprache_text1") . "<br /><br />\n";
|
||||||
|
|
||||||
$html .= "<a href=\"" . page_link_to("admin_language") . "&ShowEntry=y\">" . Get_Text("pub_sprache_ShowEntry") . "</a>";
|
$html .= "<a href=\"" . page_link_to("admin_language") . "&ShowEntry=y\">" . Get_Text("pub_sprache_ShowEntry") . "</a>";
|
||||||
|
|
|
@ -103,11 +103,11 @@ function admin_user() {
|
||||||
|
|
||||||
if (isset ($_REQUEST['submit_user_angeltypes'])) {
|
if (isset ($_REQUEST['submit_user_angeltypes'])) {
|
||||||
$selected_angel_types = isset($_REQUEST['selected_angel_types']) && is_array($_REQUEST['selected_angel_types'])?
|
$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_intersect($_REQUEST['selected_angel_types'], array_keys($angel_types))
|
||||||
: array();
|
: array();
|
||||||
$accepted_angel_types = isset($_REQUEST['accepted_angel_types']) && is_array($_REQUEST['accepted_angel_types'])?
|
$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_unique(array_diff(array_intersect($_REQUEST['accepted_angel_types'], array_keys($angel_types)), $nonrestricted_angel_types))
|
||||||
: array();
|
: array();
|
||||||
if (in_array("admin_user_angeltypes", $privileges))
|
if (in_array("admin_user_angeltypes", $privileges))
|
||||||
$selected_angel_types = array_merge((array) $selected_angel_types, $accepted_angel_types);
|
$selected_angel_types = array_merge((array) $selected_angel_types, $accepted_angel_types);
|
||||||
$selected_angel_types = array_unique($selected_angel_types);
|
$selected_angel_types = array_unique($selected_angel_types);
|
||||||
|
@ -133,7 +133,7 @@ function admin_user() {
|
||||||
}
|
}
|
||||||
sql_stop_transaction();
|
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.");
|
success("Angeltypes saved.");
|
||||||
redirect(page_link_to('admin_user') . '&id=' . $user_source['UID']);
|
redirect(page_link_to('admin_user') . '&id=' . $user_source['UID']);
|
||||||
}
|
}
|
||||||
|
@ -220,7 +220,8 @@ function admin_user() {
|
||||||
$user_groups_info[] = $groups[$group]['Name'];
|
$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);
|
$html .= success("Benutzergruppen gespeichert.", true);
|
||||||
} else {
|
} else {
|
||||||
$html .= error("Du kannst keine Engel mit mehr Rechten bearbeiten.", true);
|
$html .= error("Du kannst keine Engel mit mehr Rechten bearbeiten.", true);
|
||||||
|
@ -232,11 +233,11 @@ function admin_user() {
|
||||||
|
|
||||||
case 'delete' :
|
case 'delete' :
|
||||||
if ($user['UID'] != $id) {
|
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 `User` WHERE `UID`=" . sql_escape($id) . " LIMIT 1");
|
||||||
sql_query("DELETE FROM `UserGroups` WHERE `uid`=" . sql_escape($id));
|
sql_query("DELETE FROM `UserGroups` WHERE `uid`=" . sql_escape($id));
|
||||||
sql_query("UPDATE `ShiftEntry` SET `UID`=0, `Comment`=NULL 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);
|
$html .= success("Benutzer gelöscht!", true);
|
||||||
} else {
|
} else {
|
||||||
$html .= error("Du kannst Dich nicht selber löschen!", true);
|
$html .= error("Du kannst Dich nicht selber löschen!", true);
|
||||||
|
@ -269,7 +270,8 @@ function admin_user() {
|
||||||
case 'change_pw' :
|
case 'change_pw' :
|
||||||
if ($_REQUEST['new_pw'] != "" && $_REQUEST['new_pw'] == $_REQUEST['new_pw2']) {
|
if ($_REQUEST['new_pw'] != "" && $_REQUEST['new_pw'] == $_REQUEST['new_pw2']) {
|
||||||
set_password($id, $_REQUEST['new_pw']);
|
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);
|
$html .= success("Passwort neu gesetzt.", true);
|
||||||
} else {
|
} else {
|
||||||
$html .= error("Die Eingaben müssen übereinstimmen und dürfen nicht leer sein!", true);
|
$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)
|
if (strlen($angel["jabber"]) > 0)
|
||||||
$popup .= "<br>Jabber: " . $angel["jabber"];
|
$popup .= "<br>Jabber: " . $angel["jabber"];
|
||||||
return array(
|
return array(
|
||||||
'Nick' => in_array('user_shifts_admin', $privileges)? '<a href="' . page_link_to("user_myshifts") . '&id=' . $angel["UID"] . '">' . htmlspecialchars($angel["Nick"]) . '</a>' : htmlspecialchars($angel['Nick']),
|
'Nick' => User_Nick_render($angel),
|
||||||
'Name' => htmlspecialchars($angel['Vorname'] . ' ' . $angel['Name']),
|
'Name' => htmlspecialchars($angel['Vorname'] . ' ' . $angel['Name']),
|
||||||
'DECT' => htmlspecialchars($angel['DECT']),
|
'DECT' => htmlspecialchars($angel['DECT']),
|
||||||
'Alter' => htmlspecialchars($angel['Alter']),
|
'Alter' => htmlspecialchars($angel['Alter']),
|
||||||
|
@ -343,7 +345,7 @@ function admin_user() {
|
||||||
'Size' => '<div class="rotate"><a href="' . page_link_to("admin_user") . '&OrderBy=Size">Größe</a></div>',
|
'Size' => '<div class="rotate"><a href="' . page_link_to("admin_user") . '&OrderBy=Size">Größe</a></div>',
|
||||||
'lastLogIn' => '<a href="' . page_link_to("admin_user") . '&OrderBy=lastLogIn">Last login</a>',
|
'lastLogIn' => '<a href="' . page_link_to("admin_user") . '&OrderBy=lastLogIn">Last login</a>',
|
||||||
'edit' => ''),
|
'edit' => ''),
|
||||||
$angels);
|
$angels);
|
||||||
}
|
}
|
||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
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) {
|
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");
|
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.");
|
success("Confirmed.");
|
||||||
}
|
}
|
||||||
else error("Entry not found.");
|
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) {
|
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) {
|
if(count($user_angel_type_source) > 0) {
|
||||||
sql_query("DELETE FROM `UserAngelTypes` WHERE `id`=" . sql_escape($_REQUEST['deny']) . " LIMIT 1");
|
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.");
|
success("Denied.");
|
||||||
}
|
}
|
||||||
else error("Entry not found.");
|
else error("Entry not found.");
|
||||||
|
@ -76,15 +76,14 @@ function admin_user_angeltypes() {
|
||||||
if(count($user_angel_types_source)) {
|
if(count($user_angel_types_source)) {
|
||||||
$users = array ();
|
$users = array ();
|
||||||
foreach ($user_angel_types_source as $user) {
|
foreach ($user_angel_types_source as $user) {
|
||||||
if(in_array("admin_user", $privileges))
|
$user['name'] = User_Nick_render($user);
|
||||||
$user['Nick'] = '<a href="' . page_link_to('admin_user') . '&id=' . $user['UID'] . '">' . $user['Nick'] . '</a>';
|
|
||||||
$user['actions'] = img_button(page_link_to('admin_user_angeltypes') . '&confirm=' . $user['id'], 'tick', 'confirm');
|
$user['actions'] = img_button(page_link_to('admin_user_angeltypes') . '&confirm=' . $user['id'], 'tick', 'confirm');
|
||||||
$user['actions'] .= ' ';
|
$user['actions'] .= ' ';
|
||||||
$user['actions'] .= img_button(page_link_to('admin_user_angeltypes') . '&deny=' . $user['id'], 'cross', 'deny');
|
$user['actions'] .= img_button(page_link_to('admin_user_angeltypes') . '&deny=' . $user['id'], 'cross', 'deny');
|
||||||
$users[] = $user;
|
$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 (
|
$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' => ""
|
'actions' => ""
|
||||||
), $users);
|
), $users);
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ function user_messages() {
|
||||||
|
|
||||||
return template_render('../templates/user_messages.html', array (
|
return template_render('../templates/user_messages.html', array (
|
||||||
'link' => page_link_to("user_messages"),
|
'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,
|
'messages' => $messages_html,
|
||||||
'new_label' => Get_Text("pub_messages_Neu"),
|
'new_label' => Get_Text("pub_messages_Neu"),
|
||||||
'date_label' => Get_Text("pub_messages_Datum"),
|
'date_label' => Get_Text("pub_messages_Datum"),
|
||||||
|
@ -54,7 +54,7 @@ function user_messages() {
|
||||||
'to_label' => Get_Text("pub_messages_An"),
|
'to_label' => Get_Text("pub_messages_An"),
|
||||||
'text_label' => Get_Text("pub_messages_Text"),
|
'text_label' => Get_Text("pub_messages_Text"),
|
||||||
'date' => date("Y-m-d H:i"),
|
'date' => date("Y-m-d H:i"),
|
||||||
'from' => $user['Nick'],
|
'from' => User_Nick_render($user),
|
||||||
'to_select' => $to_select,
|
'to_select' => $to_select,
|
||||||
'submit_label' => Get_Text("save")
|
'submit_label' => Get_Text("save")
|
||||||
));
|
));
|
||||||
|
|
|
@ -39,13 +39,13 @@ function user_myshifts() {
|
||||||
$comment = strip_request_item_nl('comment');
|
$comment = strip_request_item_nl('comment');
|
||||||
$user_source = User($shift['UID']);
|
$user_source = User($shift['UID']);
|
||||||
sql_query("UPDATE `ShiftEntry` SET `Comment`='" . sql_escape($comment) . "' WHERE `id`=" . sql_escape($id) . " LIMIT 1");
|
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.");
|
success("Schicht gespeichert.");
|
||||||
redirect(page_link_to('user_myshifts'));
|
redirect(page_link_to('user_myshifts'));
|
||||||
}
|
}
|
||||||
|
|
||||||
return template_render('../templates/user_shifts_add.html', array (
|
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),
|
'date' => date("Y-m-d H:i", $shift['start']) . ', ' . shift_length($shift),
|
||||||
'location' => $shift['Name'],
|
'location' => $shift['Name'],
|
||||||
'title' => $shift['name'],
|
'title' => $shift['name'],
|
||||||
|
@ -92,7 +92,7 @@ function user_myshifts() {
|
||||||
if($user['UID'] == $user_source['UID'])
|
if($user['UID'] == $user_source['UID'])
|
||||||
$shift_entries[] = '<b>' . $user_source['Nick'] . '</b>';
|
$shift_entries[] = '<b>' . $user_source['Nick'] . '</b>';
|
||||||
else
|
else
|
||||||
$shift_entries[] = $user_source['Nick'];
|
$shift_entries[] = User_Nick_render($user_source);
|
||||||
}
|
}
|
||||||
$html .= join(", ", $shift_entries);
|
$html .= join(", ", $shift_entries);
|
||||||
}
|
}
|
||||||
|
|
|
@ -163,7 +163,7 @@ function user_settings() {
|
||||||
}
|
}
|
||||||
|
|
||||||
return page(array (
|
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,
|
||||||
msg(),
|
msg(),
|
||||||
form(array (
|
form(array (
|
||||||
|
|
|
@ -14,7 +14,7 @@ function user_shifts() {
|
||||||
$shift_entry_source = $shift_entry_source[0];
|
$shift_entry_source = $shift_entry_source[0];
|
||||||
sql_query("DELETE FROM `ShiftEntry` WHERE `id`=" . sql_escape($entry_id) . " LIMIT 1");
|
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.");
|
success("Der Schicht-Eintrag wurde gelöscht.");
|
||||||
}
|
}
|
||||||
else error("Entry not found.");
|
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) . "')");
|
sql_query("INSERT INTO `UserAngelTypes` (`user_id`, `angeltype_id`) VALUES ('" . sql_escape($user_id) . "', '" . sql_escape($selected_type_id) . "')");
|
||||||
|
|
||||||
$user_source = User($user_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 »</a>');
|
success("Du bist eingetragen. Danke!" . ' <a href="' . page_link_to('user_myshifts') . '">Meine Schichten »</a>');
|
||||||
redirect(page_link_to('user_shifts'));
|
redirect(page_link_to('user_shifts'));
|
||||||
}
|
}
|
||||||
|
@ -262,7 +262,7 @@ function user_shifts() {
|
||||||
$angeltypes[$angeltype['id']] = $angeltype['name'];
|
$angeltypes[$angeltype['id']] = $angeltype['name'];
|
||||||
$angeltyppe_select = html_select_key('angeltype_id', 'angeltype_id', $angeltypes, $type['id']);
|
$angeltyppe_select = html_select_key('angeltype_id', 'angeltype_id', $angeltypes, $type['id']);
|
||||||
} else {
|
} else {
|
||||||
$user_text = $user['Nick'];
|
$user_text = User_Nick_render($user);
|
||||||
$angeltyppe_select = $type['name'];
|
$angeltyppe_select = $type['name'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,27 +362,27 @@ function view_user_shifts() {
|
||||||
$_SESSION['user_shifts']['rooms'] = array(0);
|
$_SESSION['user_shifts']['rooms'] = array(0);
|
||||||
|
|
||||||
$SQL = "SELECT DISTINCT `Shifts`.*, `Room`.`Name` as `room_name`, nat2.`special_needs` > 0 AS 'has_special_needs'
|
$SQL = "SELECT DISTINCT `Shifts`.*, `Room`.`Name` as `room_name`, nat2.`special_needs` > 0 AS 'has_special_needs'
|
||||||
FROM `Shifts`
|
FROM `Shifts`
|
||||||
INNER JOIN `Room` USING (`RID`)
|
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`
|
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`))
|
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`
|
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']) . ")
|
WHERE `Shifts`.`RID` IN (" . implode(',', $_SESSION['user_shifts']['rooms']) . ")
|
||||||
AND `start` BETWEEN " . $starttime . " AND " . $endtime;
|
AND `start` BETWEEN " . $starttime . " AND " . $endtime;
|
||||||
if (count($_SESSION['user_shifts']['filled']) == 1) {
|
if (count($_SESSION['user_shifts']['filled']) == 1) {
|
||||||
if ($_SESSION['user_shifts']['filled'][0] == 0)
|
if ($_SESSION['user_shifts']['filled'][0] == 0)
|
||||||
$SQL .= "
|
$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)
|
elseif ($_SESSION['user_shifts']['filled'][0] == 1)
|
||||||
$SQL .= "
|
$SQL .= "
|
||||||
AND (nat.`count` <= entries.`count`) ";
|
AND (nat.`count` <= entries.`count`) ";
|
||||||
}
|
}
|
||||||
$SQL .= "
|
$SQL .= "
|
||||||
ORDER BY `start`";
|
ORDER BY `start`";
|
||||||
$shifts = sql_select($SQL);
|
$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']) . "')
|
$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']) . ")
|
WHERE `Shifts`.`RID` IN (" . implode(',', $_SESSION['user_shifts']['rooms']) . ")
|
||||||
AND `start` BETWEEN " . $starttime . " AND " . $endtime);
|
AND `start` BETWEEN " . $starttime . " AND " . $endtime);
|
||||||
$ownshifts = array();
|
$ownshifts = array();
|
||||||
foreach ($ownshifts_source as $ownshift)
|
foreach ($ownshifts_source as $ownshift)
|
||||||
$ownshifts[$ownshift['SID']] = $ownshift;
|
$ownshifts[$ownshift['SID']] = $ownshift;
|
||||||
|
@ -444,269 +444,269 @@ function view_user_shifts() {
|
||||||
$colspan = 1;
|
$colspan = 1;
|
||||||
$todo[$rid] = array_fill(0, $maxshow, $colspan);
|
$todo[$rid] = array_fill(0, $maxshow, $colspan);
|
||||||
$shifts_table .= "<th" . (($colspan > 1)? ' colspan="' . $colspan . '"' : '') . ">${room['name']}</th>\n";
|
$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') . '&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') . '&shift_id=' . $shift['SID'] . '&type_id=' . $angeltype['id'] . '">' . $inner_text . ' »</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') . '&shift_id=' . $shift['SID'] . '&type_id=' . $angeltype['id'] . '">Weitere Helfer eintragen »</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') . '&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') . '&shift_id=' . $shift['SID'] . '&type_id=' . $angeltype['id'] . '">' . $inner_text . ' »</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') . '&shift_id=' . $shift['SID'] . '&type_id=' . $angeltype['id'] . '">Weitere Helfer eintragen »</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'] == "")
|
$shifts_table.="</tr></thead><tbody>";
|
||||||
user_reset_ical_key($user);
|
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 (
|
$collides = in_array($shift['SID'], array_keys($ownshifts));
|
||||||
'room_select' => make_select($rooms, $_SESSION['user_shifts']['rooms'], "rooms", ucfirst(Get_Text("rooms"))),
|
if(!$collides)
|
||||||
'start_select' => html_select_key("start_day", "start_day", array_combine($days, $days), $_SESSION['user_shifts']['start_day']),
|
foreach ($ownshifts as $ownshift) {
|
||||||
'start_time' => $_SESSION['user_shifts']['start_time'],
|
if ($ownshift['start'] < $shift['end'] && $ownshift['end'] > $shift['start']) {
|
||||||
'end_select' => html_select_key("end_day", "end_day", array_combine($days, $days), $_SESSION['user_shifts']['end_day']),
|
$collides = true;
|
||||||
'end_time' => $_SESSION['user_shifts']['end_time'],
|
break;
|
||||||
'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>',
|
// qqqqqq
|
||||||
'shifts_table' => $shifts_table,
|
$is_free = false;
|
||||||
'ical_text' => sprintf(Get_Text('inc_schicht_ical_text'), htmlspecialchars(make_user_shifts_ical_link($user['ical_key'])), page_link_to('user_myshifts') . '&reset'),
|
$shifts_row = $shift['name'];
|
||||||
'filter' => ucfirst(Get_Text("to_filter")),
|
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') . '&shift_id=' . $shift['SID'] . '&type_id=' . $angeltype['id'] . '">' . $inner_text . ' »</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') . '&shift_id=' . $shift['SID'] . '&type_id=' . $angeltype['id'] . '">Weitere Helfer eintragen »</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') . '&shift_id=' . $shift['SID'] . '&type_id=' . $angeltype['id'] . '">' . $inner_text . ' »</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') . '&shift_id=' . $shift['SID'] . '&type_id=' . $angeltype['id'] . '">Weitere Helfer eintragen »</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') . '&reset'),
|
||||||
|
'filter' => ucfirst(Get_Text("to_filter")),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
function make_user_shifts_ical_link($key) {
|
function make_user_shifts_ical_link($key) {
|
||||||
|
|
|
@ -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";
|
. Get_Text("pub_wake_beschreibung") . "</p>\n\n";
|
||||||
$html .= Get_Text("pub_wake_beschreibung2");
|
$html .= Get_Text("pub_wake_beschreibung2");
|
||||||
$html .= '
|
$html .= '
|
||||||
|
|
|
@ -1,5 +1,13 @@
|
||||||
<?php
|
<?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') . '&id=' . $user_source['UID'] . '">' . htmlspecialchars($user_source['Nick']) . '</a>';
|
||||||
|
else
|
||||||
|
return htmlspecialchars($user_source['Nick']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Available T-Shirt sizes
|
* Available T-Shirt sizes
|
||||||
|
|
Loading…
Reference in New Issue