2011-07-15 17:50:57 +02:00
< ? php
2014-09-28 15:01:02 +02:00
2013-11-25 21:04:58 +01:00
function myshifts_title () {
return _ ( " My shifts " );
}
2011-07-19 19:12:36 +02:00
2011-10-11 19:47:49 +02:00
// Zeigt die Schichten an, die ein Benutzer belegt
2011-07-15 17:50:57 +02:00
function user_myshifts () {
2012-12-26 19:53:27 +01:00
global $LETZTES_AUSTRAGEN ;
global $user , $privileges ;
2014-12-27 23:38:23 +01:00
2014-12-28 13:44:56 +01:00
if ( isset ( $_REQUEST [ 'id' ]) && in_array ( " user_shifts_admin " , $privileges ) && preg_match ( " /^[0-9] { 1,} $ / " , $_REQUEST [ 'id' ]) && sql_num_query ( " SELECT * FROM `User` WHERE `UID`=' " . sql_escape ( $_REQUEST [ 'id' ]) . " ' " ) > 0 ) {
2012-12-26 19:53:27 +01:00
$id = $_REQUEST [ 'id' ];
} else {
$id = $user [ 'UID' ];
}
2014-12-27 23:38:23 +01:00
2014-12-28 13:44:56 +01:00
list ( $shifts_user ) = sql_select ( " SELECT * FROM `User` WHERE `UID`=' " . sql_escape ( $id ) . " ' LIMIT 1 " );
2014-12-27 23:38:23 +01:00
2013-11-25 21:56:56 +01:00
if ( isset ( $_REQUEST [ 'reset' ])) {
2012-12-26 19:53:27 +01:00
if ( $_REQUEST [ 'reset' ] == " ack " ) {
2013-09-10 14:27:31 +02:00
User_reset_api_key ( $user );
2013-11-28 22:40:48 +01:00
success ( _ ( " Key changed. " ));
2015-12-28 17:47:02 +01:00
redirect ( page_link_to ( 'users' ) . '&action=view&user_id=' . $shifts_user [ 'UID' ]);
2012-12-26 19:53:27 +01:00
}
2016-09-29 10:53:17 +02:00
return page_with_title ( _ ( " Reset API key " ), [
2014-08-23 17:24:11 +02:00
error ( _ ( " If you reset the key, the url to your iCal- and JSON-export and your atom feed changes! You have to update it in every application using one of these exports. " ), true ),
2014-12-27 23:38:23 +01:00
button ( page_link_to ( 'user_myshifts' ) . '&reset=ack' , _ ( " Continue " ), 'btn-danger' )
2016-09-29 10:53:17 +02:00
]);
2013-11-25 21:56:56 +01:00
} elseif ( isset ( $_REQUEST [ 'edit' ]) && preg_match ( " /^[0-9]* $ / " , $_REQUEST [ 'edit' ])) {
2012-12-26 19:53:27 +01:00
$id = $_REQUEST [ 'edit' ];
2014-12-12 23:40:13 +01:00
$shift = sql_select ( " SELECT
`ShiftEntry` . `freeloaded` ,
`ShiftEntry` . `freeload_comment` ,
`ShiftEntry` . `Comment` ,
`ShiftEntry` . `UID` ,
2014-12-17 17:22:35 +01:00
`ShiftTypes` . `name` ,
2014-12-12 23:40:13 +01:00
`Shifts` .* ,
`Room` . `Name` ,
`AngelTypes` . `name` as `angel_type`
FROM `ShiftEntry`
JOIN `AngelTypes` ON ( `ShiftEntry` . `TID` = `AngelTypes` . `id` )
JOIN `Shifts` ON ( `ShiftEntry` . `SID` = `Shifts` . `SID` )
2014-12-17 17:22:35 +01:00
JOIN `ShiftTypes` ON ( `ShiftTypes` . `id` = `Shifts` . `shifttype_id` )
2014-12-12 23:40:13 +01:00
JOIN `Room` ON ( `Shifts` . `RID` = `Room` . `RID` )
2014-12-28 13:44:56 +01:00
WHERE `ShiftEntry` . `id` = '" . sql_escape($id) . "'
AND `UID` = '" . sql_escape($shifts_user[' UID ']) . "' LIMIT 1 " );
2012-12-26 19:53:27 +01:00
if ( count ( $shift ) > 0 ) {
$shift = $shift [ 0 ];
2015-12-29 17:57:16 +01:00
$freeloaded = $shift [ 'freeloaded' ];
$freeload_comment = $shift [ 'freeload_comment' ];
2014-12-27 23:38:23 +01:00
2013-11-25 21:56:56 +01:00
if ( isset ( $_REQUEST [ 'submit' ])) {
2016-09-29 12:08:12 +02:00
$valid = true ;
2013-12-27 18:45:27 +01:00
if ( in_array ( " user_shifts_admin " , $privileges )) {
$freeloaded = isset ( $_REQUEST [ 'freeloaded' ]);
$freeload_comment = strip_request_item_nl ( 'freeload_comment' );
2015-12-29 17:57:16 +01:00
if ( $freeloaded && $freeload_comment == '' ) {
2016-09-29 12:08:12 +02:00
$valid = false ;
2015-12-29 17:57:16 +01:00
error ( _ ( " Please enter a freeload comment! " ));
}
2013-12-27 18:45:27 +01:00
}
2014-12-27 23:38:23 +01:00
2012-12-26 19:53:27 +01:00
$comment = strip_request_item_nl ( 'comment' );
$user_source = User ( $shift [ 'UID' ]);
2014-12-27 23:38:23 +01:00
2016-09-29 12:08:12 +02:00
if ( $valid ) {
2016-09-29 10:53:17 +02:00
$result = ShiftEntry_update ([
2015-12-29 17:57:16 +01:00
'id' => $id ,
'Comment' => $comment ,
'freeloaded' => $freeloaded ,
'freeload_comment' => $freeload_comment
2016-09-29 10:53:17 +02:00
]);
if ( $result === false ) {
2015-12-29 17:57:16 +01:00
engelsystem_error ( 'Unable to update shift entry.' );
2016-09-29 10:53:17 +02:00
}
2015-12-29 17:57:16 +01:00
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 . " . Freeloaded: " . ( $freeloaded ? " YES Comment: " . $freeload_comment : " NO " ));
success ( _ ( " Shift saved. " ));
redirect ( page_link_to ( 'users' ) . '&action=view&user_id=' . $shifts_user [ 'UID' ]);
}
2012-12-26 19:53:27 +01:00
}
2014-12-27 23:38:23 +01:00
2013-12-27 18:45:27 +01:00
return ShiftEntry_edit_view ( User_Nick_render ( $shifts_user ), date ( " Y-m-d H:i " , $shift [ 'start' ]) . ', ' . shift_length ( $shift ), $shift [ 'Name' ], $shift [ 'name' ], $shift [ 'angel_type' ], $shift [ 'Comment' ], $shift [ 'freeloaded' ], $shift [ 'freeload_comment' ], in_array ( " user_shifts_admin " , $privileges ));
2012-12-26 19:53:27 +01:00
} else
redirect ( page_link_to ( 'user_myshifts' ));
2013-11-25 21:56:56 +01:00
} elseif ( isset ( $_REQUEST [ 'cancel' ]) && preg_match ( " /^[0-9]* $ / " , $_REQUEST [ 'cancel' ])) {
2012-12-26 19:53:27 +01:00
$id = $_REQUEST [ 'cancel' ];
2014-12-17 17:22:35 +01:00
$shift = sql_select ( "
2015-08-14 09:28:32 +02:00
SELECT *
2014-12-17 17:22:35 +01:00
FROM `Shifts`
INNER JOIN `ShiftEntry` USING ( `SID` )
2014-12-28 13:44:56 +01:00
WHERE `ShiftEntry` . `id` = '" . sql_escape($id) . "' AND `UID` = '" . sql_escape($shifts_user[' UID ']) . "' " );
2012-12-26 19:53:27 +01:00
if ( count ( $shift ) > 0 ) {
$shift = $shift [ 0 ];
2012-12-29 15:38:55 +01:00
if (( $shift [ 'start' ] > time () + $LETZTES_AUSTRAGEN * 3600 ) || in_array ( 'user_shifts_admin' , $privileges )) {
2014-12-07 17:07:19 +01:00
$result = ShiftEntry_delete ( $id );
2016-09-29 10:53:17 +02:00
if ( $result === false ) {
2014-12-07 17:07:19 +01:00
engelsystem_error ( 'Unable to delete shift entry.' );
2016-09-29 10:53:17 +02:00
}
2015-08-14 09:28:32 +02:00
$room = Room ( $shift [ 'RID' ]);
$angeltype = AngelType ( $shift [ 'TID' ]);
$shifttype = ShiftType ( $shift [ 'shifttype_id' ]);
2015-08-26 15:00:10 +02:00
engelsystem_log ( " Deleted own shift: " . $shifttype [ 'name' ] . " at " . $room [ 'Name' ] . " from " . date ( " Y-m-d H:i " , $shift [ 'start' ]) . " to " . date ( " Y-m-d H:i " , $shift [ 'end' ]) . " as " . $angeltype [ 'name' ]);
2015-12-28 17:47:02 +01:00
success ( _ ( " Shift canceled. " ));
2016-09-29 10:53:17 +02:00
} else {
2014-12-07 17:07:19 +01:00
error ( _ ( " It's too late to sign yourself off the shift. If neccessary, ask the dispatcher to do so. " ));
2016-09-29 10:53:17 +02:00
}
} else {
2014-12-27 23:38:23 +01:00
redirect ( user_link ( $shifts_user ));
2016-09-29 10:53:17 +02:00
}
2012-12-26 19:53:27 +01:00
}
2014-12-27 23:38:23 +01:00
2015-12-28 17:42:29 +01:00
redirect ( page_link_to ( 'users' ) . '&action=view&user_id=' . $shifts_user [ 'UID' ]);
2011-07-19 19:12:36 +02:00
}
2012-12-12 00:22:30 +01:00
?>