better shift sign up restriction
This commit is contained in:
parent
a470a5f5d3
commit
739eddefd5
|
@ -237,34 +237,6 @@ function user_shifts() {
|
||||||
else
|
else
|
||||||
redirect(page_link_to('user_shifts'));
|
redirect(page_link_to('user_shifts'));
|
||||||
|
|
||||||
// Schicht läuft schon, Eintragen für Engel nicht mehr möglich
|
|
||||||
if (! in_array('user_shifts_admin', $privileges) && time() > $shift['start']) {
|
|
||||||
error(_("This shift is running now or ended already. Please contact a dispatcher to join the shift."));
|
|
||||||
redirect(shift_link($shift));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Another shift the user is signed up for collides with this one
|
|
||||||
if (! in_array('user_shifts_admin', $privileges) && sql_num_query("
|
|
||||||
SELECT `Shifts`.`SID`
|
|
||||||
FROM `Shifts`
|
|
||||||
INNER JOIN `ShiftEntry` ON (`Shifts`.`SID` = `ShiftEntry`.`SID` AND `ShiftEntry`.`UID` = '" . sql_escape($user['UID']) . "')
|
|
||||||
WHERE `start` < '" . sql_escape($shift['end']) . "' AND `end` > '" . sql_escape($shift['start']) . "'") > 0) {
|
|
||||||
error(_("You already subscribed to shift in the same timeslot. Please contact a dispatcher to join the shift."));
|
|
||||||
redirect(shift_link($shift));
|
|
||||||
|
|
||||||
$needed_angeltypes = NeededAngelTypes_by_shift($shift['SID']);
|
|
||||||
if ($needed_angeltypes === false)
|
|
||||||
engelsystem_error('Unable to load needed angel types.');
|
|
||||||
|
|
||||||
// you canot join if shift is full
|
|
||||||
foreach ($needed_angeltypes as $needed_angeltype)
|
|
||||||
if ($needed_angeltype['angel_type_id'] == $type_id)
|
|
||||||
if ($needed_angeltype['taken'] >= $needed_angeltype['count']) {
|
|
||||||
error(_("The shift is already full."));
|
|
||||||
redirect(shift_link($shift));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (in_array('user_shifts_admin', $privileges))
|
if (in_array('user_shifts_admin', $privileges))
|
||||||
$type = sql_select("SELECT * FROM `AngelTypes` WHERE `id`='" . sql_escape($type_id) . "' LIMIT 1");
|
$type = sql_select("SELECT * FROM `AngelTypes` WHERE `id`='" . sql_escape($type_id) . "' LIMIT 1");
|
||||||
else
|
else
|
||||||
|
@ -274,6 +246,11 @@ function user_shifts() {
|
||||||
redirect(page_link_to('user_shifts'));
|
redirect(page_link_to('user_shifts'));
|
||||||
$type = $type[0];
|
$type = $type[0];
|
||||||
|
|
||||||
|
if (! Shift_signup_allowed($shift, $type)) {
|
||||||
|
error(_('You are not allowed to sign up for this shift. Maybe shift is full or already running.'));
|
||||||
|
redirect(shift_link($shift));
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($_REQUEST['submit'])) {
|
if (isset($_REQUEST['submit'])) {
|
||||||
$selected_type_id = $type_id;
|
$selected_type_id = $type_id;
|
||||||
if (in_array('user_shifts_admin', $privileges)) {
|
if (in_array('user_shifts_admin', $privileges)) {
|
||||||
|
|
Loading…
Reference in New Issue