2011-07-15 17:50:57 +02:00
< ? php
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 () {
2011-07-19 19:12:36 +02:00
global $LETZTES_AUSTRAGEN ;
global $user , $privileges ;
$msg = " " ;
2011-07-15 17:50:57 +02:00
2011-11-09 08:47:58 +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 ) {
$id = $_REQUEST [ 'id' ];
} else {
$id = $user [ 'UID' ];
}
list ( $shifts_user ) = sql_select ( " SELECT * FROM `User` WHERE `UID`= " . sql_escape ( $id ) . " LIMIT 1 " );
if ( $id != $user [ 'UID' ])
$msg .= error ( " Du betrachtest die Schichten von " . $shifts_user [ 'Nick' ] . " . " );
2011-10-11 22:24:33 +02:00
if ( isset ( $_REQUEST [ 'reset' ])) {
if ( $_REQUEST [ 'reset' ] == " ack " ) {
user_reset_ical_key ();
return success ( " Key geändert. " );
}
return template_render ( '../templates/user_myshifts_reset.html' , array ());
}
elseif ( isset ( $_REQUEST [ 'edit' ]) && preg_match ( " /^[0-9]* $ / " , $_REQUEST [ 'edit' ])) {
2011-07-19 19:56:15 +02:00
$id = $_REQUEST [ 'edit' ];
2011-11-09 08:47:58 +01:00
$shift = sql_select ( " SELECT `ShiftEntry`.`Comment`, `Shifts`.*, `Room`.`Name`, `AngelTypes`.`Name` as `angel_type` FROM `ShiftEntry` JOIN `AngelTypes` ON (`ShiftEntry`.`TID` = `AngelTypes`.`TID`) JOIN `Shifts` ON (`ShiftEntry`.`SID` = `Shifts`.`SID`) JOIN `Room` ON (`Shifts`.`RID` = `Room`.`RID`) WHERE `id`= " . sql_escape ( $id ) . " AND `UID`= " . sql_escape ( $shifts_user [ 'UID' ]) . " LIMIT 1 " );
2011-07-19 19:56:15 +02:00
if ( count ( $shift ) > 0 ) {
$shift = $shift [ 0 ];
if ( isset ( $_REQUEST [ 'submit' ])) {
$comment = strip_request_item_nl ( 'comment' );
sql_query ( " UPDATE `ShiftEntry` SET `Comment`=' " . sql_escape ( $comment ) . " ' WHERE `id`= " . sql_escape ( $id ) . " LIMIT 1 " );
header ( " Location: " . page_link_to ( 'user_myshifts' ));
}
return template_render ( '../templates/user_shifts_add.html' , array (
2011-11-09 08:47:58 +01:00
'angel' => $shifts_user [ 'Nick' ],
2011-09-29 14:38:23 +02:00
'date' => date ( " Y-m-d H:i " , $shift [ 'start' ]) . ', ' . shift_length ( $shift ),
2011-07-19 19:56:15 +02:00
'location' => $shift [ 'Name' ],
'title' => $shift [ 'name' ],
'type' => $shift [ 'angel_type' ],
'comment' => $shift [ 'Comment' ]
));
} else
header ( " Location: " . page_link_to ( 'user_myshifts' ));
}
elseif ( isset ( $_REQUEST [ 'cancel' ]) && preg_match ( " /^[0-9]* $ / " , $_REQUEST [ 'cancel' ])) {
2011-07-19 19:12:36 +02:00
$id = $_REQUEST [ 'cancel' ];
2011-11-09 08:47:58 +01:00
$shift = sql_select ( " SELECT * FROM `ShiftEntry` WHERE `id`= " . sql_escape ( $id ) . " AND `UID`= " . sql_escape ( $shifts_user [ 'UID' ]) . " LIMIT 1 " );
2011-07-19 19:12:36 +02:00
if ( count ( $shift ) > 0 ) {
$shift = $shift [ 0 ];
if (( $shift [ 'start' ] - time () < $LETZTES_AUSTRAGEN * 60 ) || in_array ( 'user_shifts_admin' , $privileges )) {
sql_query ( " DELETE FROM `ShiftEntry` WHERE `id`= " . sql_escape ( $id ) . " LIMIT 1 " );
2011-11-09 08:47:58 +01:00
$msg .= success ( " Du wurdest aus der Schicht ausgetragen. " );
2011-07-19 19:12:36 +02:00
} else
2011-11-09 08:47:58 +01:00
$msg .= error ( " Es ist zu spät um sich aus der Schicht auszutragen. Frage ggf. einen Orga.' " );
2011-07-19 19:12:36 +02:00
} else
header ( " Location: " . page_link_to ( 'user_myshifts' ));
}
2011-11-09 08:47:58 +01:00
$shifts = sql_select ( " SELECT * FROM `ShiftEntry` JOIN `Shifts` ON (`ShiftEntry`.`SID` = `Shifts`.`SID`) JOIN `Room` ON (`Shifts`.`RID` = `Room`.`RID`) WHERE `UID`= " . sql_escape ( $shifts_user [ 'UID' ]) . " ORDER BY `start` " );
2011-10-11 22:18:36 +02:00
2011-07-19 19:12:36 +02:00
$html = " " ;
foreach ( $shifts as $shift ) {
if ( time () > $shift [ 'end' ])
$html .= '<tr class="done">' ;
else
$html .= '<tr>' ;
$html .= '<td>' . date ( " Y-m-d " , $shift [ 'start' ]) . '</td>' ;
$html .= '<td>' . date ( " H:i " , $shift [ 'start' ]) . ' - ' . date ( " H:i " , $shift [ 'end' ]) . '</td>' ;
$html .= '<td>' . $shift [ 'Name' ] . '</td>' ;
$html .= '<td>' . $shift [ 'name' ] . '</td>' ;
$html .= '<td>' . $shift [ 'Comment' ] . '</td>' ;
2011-07-19 19:56:15 +02:00
$html .= '<td>' ;
2011-09-14 22:32:13 +02:00
$html .= '<a href="' . page_link_to ( 'user_myshifts' ) . '&edit=' . $shift [ 'id' ] . '">bearbeiten</a>' ;
2011-07-19 19:12:36 +02:00
if ( $shift [ 'start' ] - time () > $LETZTES_AUSTRAGEN * 60 )
2011-09-14 22:32:13 +02:00
$html .= ' | <a href="' . page_link_to ( 'user_myshifts' ) . '&cancel=' . $shift [ 'id' ] . '">austragen</a>' ;
2011-07-19 19:56:15 +02:00
$html .= '</td>' ;
2011-07-19 19:12:36 +02:00
$html .= '</tr>' ;
}
if ( $html == " " )
2011-09-14 22:32:13 +02:00
$html = '<tr><td>Keine...</td><td></td><td></td><td></td><td></td><td>Gehe zum <a href="' . page_link_to ( 'user_shifts' ) . '">Schichtplan</a> um Dich für Schichten einzutragen.</td></tr>' ;
2011-07-19 19:12:36 +02:00
2011-11-09 08:47:58 +01:00
if ( $shifts_user [ 'ical_key' ] == " " )
user_reset_ical_key ( $shifts_user );
2011-10-11 22:18:36 +02:00
2011-07-19 19:12:36 +02:00
return template_render ( '../templates/user_myshifts.html' , array (
'h' => $LETZTES_AUSTRAGEN ,
'shifts' => $html ,
2011-10-11 22:18:36 +02:00
'msg' => $msg ,
2011-11-09 08:47:58 +01:00
'ical_link' => page_link_to_absolute ( 'ical' ) . '&key=' . $shifts_user [ 'ical_key' ],
2011-10-11 22:18:36 +02:00
'reset_link' => page_link_to ( 'user_myshifts' ) . '&reset'
2011-07-19 19:12:36 +02:00
));
}
2011-10-11 22:24:33 +02:00
2011-11-09 08:47:58 +01:00
function user_reset_ical_key ( $user ) {
2011-10-11 22:24:33 +02:00
$user [ 'ical_key' ] = md5 ( $user [ 'Nick' ] . time () . rand ());
sql_query ( " UPDATE `User` SET `ical_key`=' " . sql_escape ( $user [ 'ical_key' ]) . " ' WHERE `UID`=' " . sql_escape ( $user [ 'UID' ]) . " ' LIMIT 1 " );
}
2011-07-15 17:50:57 +02:00
?>