2011-07-15 17:50:57 +02:00
< ? php
2014-09-28 15:01:02 +02:00
2023-01-18 13:02:11 +01:00
use Engelsystem\Models\Shifts\ShiftEntry ;
2018-10-09 21:47:31 +02:00
use Engelsystem\Models\User\User ;
2017-01-21 13:58:53 +01:00
2017-01-03 03:22:48 +01:00
/**
* @ return string
*/
2017-01-02 03:57:23 +01:00
function myshifts_title ()
{
2018-08-29 21:55:32 +02:00
return __ ( 'My shifts' );
2013-11-25 21:04:58 +01:00
}
2011-07-19 19:12:36 +02:00
2017-01-03 03:22:48 +01:00
/**
* Zeigt die Schichten an , die ein Benutzer belegt
*
* @ return string
*/
2017-01-02 03:57:23 +01:00
function user_myshifts ()
{
2018-10-10 03:10:28 +02:00
$user = auth () -> user ();
2017-07-18 21:38:53 +02:00
$request = request ();
2017-01-02 15:43:36 +01:00
if (
2017-07-18 21:38:53 +02:00
$request -> has ( 'id' )
2018-11-12 14:41:23 +01:00
&& auth () -> can ( 'user_shifts_admin' )
2022-06-16 23:00:56 +02:00
&& preg_match ( '/^\d+$/' , $request -> input ( 'id' ))
2018-10-14 18:24:42 +02:00
&& User :: find ( $request -> input ( 'id' ))
2017-01-02 15:43:36 +01:00
) {
2017-12-19 20:58:01 +01:00
$shift_entry_id = $request -> input ( 'id' );
2017-01-02 03:57:23 +01:00
} else {
2018-10-10 03:10:28 +02:00
$shift_entry_id = $user -> id ;
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2018-10-09 21:47:31 +02:00
$shifts_user = User :: find ( $shift_entry_id );
2017-07-18 21:38:53 +02:00
if ( $request -> has ( 'reset' )) {
if ( $request -> input ( 'reset' ) == 'ack' ) {
2017-01-02 03:57:23 +01:00
User_reset_api_key ( $user );
2018-08-29 21:55:32 +02:00
success ( __ ( 'Key changed.' ));
2019-09-08 02:25:49 +02:00
throw_redirect ( page_link_to ( 'users' , [ 'action' => 'view' , 'user_id' => $shifts_user -> id ]));
2017-01-02 03:57:23 +01:00
}
2018-08-29 21:55:32 +02:00
return page_with_title ( __ ( 'Reset API key' ), [
2017-01-02 15:43:36 +01:00
error (
2023-01-28 17:08:15 +01:00
__ ( 'If you reset the key, the url to your iCal- and JSON-export and your atom/rss feed changes! You have to update it in every application using one of these exports.' ),
2017-01-02 15:43:36 +01:00
true
),
2023-02-05 18:03:00 +01:00
button ( page_link_to ( 'user_myshifts' , [ 'reset' => 'ack' ]), __ ( 'Continue' ), 'btn-danger' ),
2017-01-02 15:43:36 +01:00
]);
2017-08-30 14:59:27 +02:00
} elseif ( $request -> has ( 'edit' ) && preg_match ( '/^\d+$/' , $request -> input ( 'edit' ))) {
2017-12-19 20:58:01 +01:00
$shift_entry_id = $request -> input ( 'edit' );
2023-01-18 13:02:11 +01:00
/** @var ShiftEntry $shiftEntry */
$shiftEntry = ShiftEntry :: where ( 'id' , $shift_entry_id )
-> where ( 'user_id' , $shifts_user -> id )
-> with ([ 'shift' , 'shift.shiftType' , 'shift.room' , 'user' ])
-> first ();
if ( ! empty ( $shiftEntry )) {
$shift = $shiftEntry -> shift ;
$freeloaded = $shiftEntry -> freeloaded ;
$freeloaded_comment = $shiftEntry -> freeloaded_comment ;
2017-01-02 15:43:36 +01:00
2018-11-20 16:02:03 +01:00
if ( $request -> hasPostData ( 'submit' )) {
2017-01-02 03:57:23 +01:00
$valid = true ;
2018-11-12 14:41:23 +01:00
if ( auth () -> can ( 'user_shifts_admin' )) {
2017-07-18 21:38:53 +02:00
$freeloaded = $request -> has ( 'freeloaded' );
2023-01-18 13:02:11 +01:00
$freeloaded_comment = strip_request_item_nl ( 'freeloaded_comment' );
if ( $freeloaded && $freeloaded_comment == '' ) {
2017-01-02 03:57:23 +01:00
$valid = false ;
2018-08-29 21:55:32 +02:00
error ( __ ( 'Please enter a freeload comment!' ));
2017-01-02 03:57:23 +01:00
}
}
2017-01-02 15:43:36 +01:00
2023-01-18 13:02:11 +01:00
$comment = $shiftEntry -> user_comment ;
$user_source = $shiftEntry -> user ;
2019-06-04 20:51:26 +02:00
if ( auth () -> user () -> id == $user_source -> id ) {
$comment = strip_request_item_nl ( 'comment' );
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( $valid ) {
2023-01-18 13:02:11 +01:00
$shiftEntry -> user_comment = $comment ;
$shiftEntry -> freeloaded = $freeloaded ;
$shiftEntry -> freeloaded_comment = $freeloaded_comment ;
$shiftEntry -> save ();
2017-01-02 15:43:36 +01:00
engelsystem_log (
2023-01-03 22:19:03 +01:00
'Updated ' . User_Nick_render ( $user_source , true ) . '\'s shift '
. $shift -> title . ' / ' . $shift -> shiftType -> name
. ' from ' . $shift -> start -> format ( 'Y-m-d H:i' )
. ' to ' . $shift -> end -> format ( 'Y-m-d H:i' )
2017-01-03 14:12:17 +01:00
. ' with comment ' . $comment
2023-01-18 13:02:11 +01:00
. '. Freeloaded: ' . ( $freeloaded ? 'YES Comment: ' . $freeloaded_comment : 'NO' )
2017-01-02 15:43:36 +01:00
);
2018-08-29 21:55:32 +02:00
success ( __ ( 'Shift saved.' ));
2019-09-08 02:25:49 +02:00
throw_redirect ( page_link_to ( 'users' , [ 'action' => 'view' , 'user_id' => $shifts_user -> id ]));
2017-01-02 03:57:23 +01:00
}
}
2017-01-02 15:43:36 +01:00
return ShiftEntry_edit_view (
2019-06-04 20:51:26 +02:00
$shifts_user ,
2023-02-04 02:43:47 +01:00
$shift -> start -> format ( __ ( 'Y-m-d H:i' )) . ', ' . shift_length ( $shift ),
2023-01-03 22:19:03 +01:00
$shift -> room -> name ,
$shift -> shiftType -> name ,
2023-01-18 13:02:11 +01:00
$shiftEntry -> angelType -> name ,
$shiftEntry -> user_comment ,
$shiftEntry -> freeloaded ,
$shiftEntry -> freeloaded_comment ,
2018-11-12 14:41:23 +01:00
auth () -> can ( 'user_shifts_admin' )
2017-01-02 15:43:36 +01:00
);
2017-01-02 03:57:23 +01:00
} else {
2019-09-08 02:25:49 +02:00
throw_redirect ( page_link_to ( 'user_myshifts' ));
2017-01-02 03:57:23 +01:00
}
2016-09-29 10:53:17 +02:00
}
2017-01-02 15:43:36 +01:00
2019-09-08 02:25:49 +02:00
throw_redirect ( page_link_to ( 'users' , [ 'action' => 'view' , 'user_id' => $shifts_user -> id ]));
2017-01-03 03:22:48 +01:00
return '' ;
2011-07-19 19:12:36 +02:00
}