2013-09-18 01:38:36 +02:00
< ? php
2014-08-23 02:47:06 +02:00
/**
* Available T - Shirt sizes
*/
2016-09-29 11:18:17 +02:00
$tshirt_sizes = [
2014-08-23 02:47:06 +02:00
'' => _ ( " Please select... " ),
'S' => " S " ,
'M' => " M " ,
'L' => " L " ,
'XL' => " XL " ,
'2XL' => " 2XL " ,
'3XL' => " 3XL " ,
'4XL' => " 4XL " ,
'5XL' => " 5XL " ,
'S-G' => " S Girl " ,
'M-G' => " M Girl " ,
'L-G' => " L Girl " ,
2014-12-19 22:41:55 +01:00
'XL-G' => " XL Girl "
2016-09-29 11:18:17 +02:00
];
2014-08-23 02:47:06 +02:00
2016-11-11 16:34:23 +01:00
/**
* Renders user settings page
*
* @ param User $user_source
* The user
* @ param array < String > $locales
* Available languages
* @ param array < String > $themes
* Available themes
*/
function User_settings_view ( $user_source , $locales , $themes , $buildup_start_date , $teardown_end_date , $enable_tshirt_size , $tshirt_sizes ) {
return page_with_title ( settings_title (), [
msg (),
div ( 'row' , [
div ( 'col-md-6' , [
form ([
form_info ( '' , _ ( " Here you can change your user details. " )),
form_info ( entry_required () . ' = ' . _ ( " Entry required! " )),
form_text ( 'nick' , _ ( " Nick " ), $user_source [ 'Nick' ], true ),
form_text ( 'lastname' , _ ( " Last name " ), $user_source [ 'Name' ]),
form_text ( 'prename' , _ ( " First name " ), $user_source [ 'Vorname' ]),
form_date ( 'planned_arrival_date' , _ ( " Planned date of arrival " ) . ' ' . entry_required (), $user_source [ 'planned_arrival_date' ], $buildup_start_date , $teardown_end_date ),
form_date ( 'planned_departure_date' , _ ( " Planned date of departure " ), $user_source [ 'planned_departure_date' ], $buildup_start_date , $teardown_end_date ),
form_text ( 'age' , _ ( " Age " ), $user_source [ 'Alter' ]),
form_text ( 'tel' , _ ( " Phone " ), $user_source [ 'Telefon' ]),
form_text ( 'dect' , _ ( " DECT " ), $user_source [ 'DECT' ]),
form_text ( 'mobile' , _ ( " Mobile " ), $user_source [ 'Handy' ]),
form_text ( 'mail' , _ ( " E-Mail " ) . ' ' . entry_required (), $user_source [ 'email' ]),
form_checkbox ( 'email_shiftinfo' , _ ( " The engelsystem is allowed to send me an email (e.g. when my shifts change) " ), $user_source [ 'email_shiftinfo' ]),
form_checkbox ( 'email_by_human_allowed' , _ ( " Humans are allowed to send me an email (e.g. for ticket vouchers) " ), $user_source [ 'email_by_human_allowed' ]),
form_text ( 'jabber' , _ ( " Jabber " ), $user_source [ 'jabber' ]),
form_text ( 'hometown' , _ ( " Hometown " ), $user_source [ 'Hometown' ]),
$enable_tshirt_size ? form_select ( 'tshirt_size' , _ ( " Shirt size " ), $tshirt_sizes , $user_source [ 'Size' ]) : '' ,
form_info ( '' , _ ( 'Please visit the angeltypes page to manage your angeltypes.' )),
form_submit ( 'submit' , _ ( " Save " ))
])
]),
div ( 'col-md-6' , [
form ([
form_info ( _ ( " Here you can change your password. " )),
form_password ( 'password' , _ ( " Old password: " )),
form_password ( 'new_password' , _ ( " New password: " )),
form_password ( 'new_password2' , _ ( " Password confirmation: " )),
form_submit ( 'submit_password' , _ ( " Save " ))
]),
form ([
form_info ( _ ( " Here you can choose your color settings: " )),
form_select ( 'theme' , _ ( " Color settings: " ), $themes , $user_source [ 'color' ]),
form_submit ( 'submit_theme' , _ ( " Save " ))
]),
form ([
form_info ( _ ( " Here you can choose your language: " )),
form_select ( 'language' , _ ( " Language: " ), $locales , $user_source [ 'Sprache' ]),
form_submit ( 'submit_language' , _ ( " Save " ))
])
])
])
]);
}
2016-09-27 18:42:10 +02:00
/**
* Displays the welcome message to the user and shows a login form .
*/
function User_registration_success_view ( $event_welcome_message ) {
$parsedown = new Parsedown ();
$event_welcome_message = $parsedown -> text ( $event_welcome_message );
2016-09-28 07:28:51 +02:00
return page_with_title ( _ ( " Registration successful " ), [
msg (),
div ( 'row' , [
div ( 'col-md-4' , [
$event_welcome_message
]),
div ( 'col-md-4' , [
'<h2>' . _ ( " Login " ) . '</h2>' ,
form ([
form_text ( 'nick' , _ ( " Nick " ), " " ),
form_password ( 'password' , _ ( " Password " )),
form_submit ( 'submit' , _ ( " Login " )),
buttons ([
button ( page_link_to ( 'user_password_recovery' ), _ ( " I forgot my password " ))
]),
info ( _ ( " Please note: You have to activate cookies! " ), true )
], page_link_to ( 'login' ))
]),
div ( 'col-md-4' , [
'<h2>' . _ ( " What can I do? " ) . '</h2>' ,
'<p>' . _ ( " Please read about the jobs you can do to help us. " ) . '</p>' ,
buttons ([
button ( page_link_to ( 'angeltypes' ) . '&action=about' , _ ( " Teams/Job description " ) . ' »' )
])
])
])
2016-09-27 18:42:10 +02:00
]);
}
2015-12-30 15:48:41 +01:00
/**
* Gui for deleting user with password field .
*/
function User_delete_view ( $user ) {
return page_with_title ( sprintf ( _ ( " Delete %s " ), User_Nick_render ( $user )), [
msg (),
buttons ([
button ( user_edit_link ( $user ), glyph ( 'chevron-left' ) . _ ( " back " ))
]),
error ( _ ( " Do you really want to delete the user including all his shifts and every other piece of his data? " ), true ),
form ([
form_password ( 'password' , _ ( " Your password " )),
form_submit ( 'submit' , _ ( " Delete " ))
])
]);
}
2015-08-12 23:44:39 +02:00
/**
* View for editing the number of given vouchers
*/
function User_edit_vouchers_view ( $user ) {
return page_with_title ( sprintf ( _ ( " %s's vouchers " ), User_Nick_render ( $user )), [
msg (),
buttons ([
button ( user_link ( $user ), glyph ( 'chevron-left' ) . _ ( " back " ))
]),
2016-03-22 14:51:30 +01:00
info ( sprintf ( _ ( " Angel should receive at least %d vouchers. " ), User_get_eligable_voucher_count ( $user )), true ),
2015-08-12 23:44:39 +02:00
form ([
2016-02-05 22:57:57 +01:00
form_spinner ( 'vouchers' , _ ( " Number of vouchers given out " ), $user [ 'got_voucher' ]),
2015-08-12 23:44:39 +02:00
form_submit ( 'submit' , _ ( " Save " ))
], page_link_to ( 'users' ) . '&action=edit_vouchers&user_id=' . $user [ 'UID' ])
]);
}
2014-12-26 01:49:59 +01:00
function Users_view ( $users , $order_by , $arrived_count , $active_count , $force_active_count , $freeloads_count , $tshirts_count , $voucher_count ) {
2014-09-28 14:50:08 +02:00
foreach ( $users as & $user ) {
2014-09-28 15:01:02 +02:00
$user [ 'Nick' ] = User_Nick_render ( $user );
2014-09-28 14:50:08 +02:00
$user [ 'Gekommen' ] = glyph_bool ( $user [ 'Gekommen' ]);
2015-08-12 23:47:06 +02:00
$user [ 'got_voucher' ] = $user [ 'got_voucher' ];
2014-09-28 14:50:08 +02:00
$user [ 'Aktiv' ] = glyph_bool ( $user [ 'Aktiv' ]);
$user [ 'force_active' ] = glyph_bool ( $user [ 'force_active' ]);
$user [ 'Tshirt' ] = glyph_bool ( $user [ 'Tshirt' ]);
$user [ 'lastLogIn' ] = date ( _ ( 'm/d/Y h:i a' ), $user [ 'lastLogIn' ]);
2016-09-30 17:08:20 +02:00
$user [ 'actions' ] = table_buttons ([
2014-12-19 22:41:55 +01:00
button_glyph ( page_link_to ( 'admin_user' ) . '&id=' . $user [ 'UID' ], 'edit' , 'btn-xs' )
2016-09-30 17:08:20 +02:00
]);
2014-09-28 14:50:08 +02:00
}
2016-09-30 17:08:20 +02:00
$users [] = [
2014-09-28 14:50:08 +02:00
'Nick' => '<strong>' . _ ( 'Sum' ) . '</strong>' ,
'Gekommen' => $arrived_count ,
2014-12-26 01:49:59 +01:00
'got_voucher' => $voucher_count ,
2014-09-28 14:50:08 +02:00
'Aktiv' => $active_count ,
'force_active' => $force_active_count ,
'freeloads' => $freeloads_count ,
'Tshirt' => $tshirts_count ,
2014-12-19 22:41:55 +01:00
'actions' => '<strong>' . count ( $users ) . '</strong>'
2016-09-30 17:08:20 +02:00
];
2014-12-19 22:41:55 +01:00
2016-11-11 16:34:23 +01:00
return page_with_title ( _ ( " All users " ), [
2014-09-28 14:50:08 +02:00
msg (),
2016-09-29 11:18:17 +02:00
buttons ([
2016-11-11 16:34:23 +01:00
button ( page_link_to ( 'register' ), glyph ( 'plus' ) . _ ( " New user " ))
2016-09-29 11:18:17 +02:00
]),
table ([
2016-11-11 16:34:23 +01:00
'Nick' => Users_table_header_link ( 'Nick' , _ ( " Nick " ), $order_by ),
'Vorname' => Users_table_header_link ( 'Vorname' , _ ( " Prename " ), $order_by ),
'Name' => Users_table_header_link ( 'Name' , _ ( " Name " ), $order_by ),
'DECT' => Users_table_header_link ( 'DECT' , _ ( " DECT " ), $order_by ),
'Gekommen' => Users_table_header_link ( 'Gekommen' , _ ( " Arrived " ), $order_by ),
'got_voucher' => Users_table_header_link ( 'got_voucher' , _ ( " Voucher " ), $order_by ),
2014-09-28 14:50:08 +02:00
'freeloads' => _ ( 'Freeloads' ),
2016-11-11 16:34:23 +01:00
'Aktiv' => Users_table_header_link ( 'Aktiv' , _ ( " Active " ), $order_by ),
'force_active' => Users_table_header_link ( 'force_active' , _ ( " Forced " ), $order_by ),
'Tshirt' => Users_table_header_link ( 'Tshirt' , _ ( " T-Shirt " ), $order_by ),
'Size' => Users_table_header_link ( 'Size' , _ ( " Size " ), $order_by ),
'lastLogIn' => Users_table_header_link ( 'lastLogIn' , _ ( " Last login " ), $order_by ),
2014-12-19 22:41:55 +01:00
'actions' => ''
2016-09-29 11:18:17 +02:00
], $users )
]);
2014-09-28 14:50:08 +02:00
}
function Users_table_header_link ( $column , $label , $order_by ) {
return '<a href="' . page_link_to ( 'users' ) . '&OrderBy=' . $column . '">' . $label . ( $order_by == $column ? ' <span class="caret"></span>' : '' ) . '</a>' ;
}
2014-08-24 15:49:46 +02:00
function User_shift_state_render ( $user ) {
2014-08-24 16:08:12 +02:00
$upcoming_shifts = ShiftEntries_upcoming_for_user ( $user );
2016-09-29 11:18:17 +02:00
if ( $upcoming_shifts === false ) {
2014-08-24 16:08:12 +02:00
return false ;
2016-09-29 11:18:17 +02:00
}
2014-12-19 22:41:55 +01:00
2016-09-29 11:18:17 +02:00
if ( count ( $upcoming_shifts ) == 0 ) {
2014-08-23 01:55:18 +02:00
return '<span class="text-success">' . _ ( " Free " ) . '</span>' ;
2016-09-29 11:18:17 +02:00
}
2014-12-19 22:41:55 +01:00
2016-09-29 11:18:17 +02:00
if ( $upcoming_shifts [ 0 ][ 'start' ] > time ()) {
if ( $upcoming_shifts [ 0 ][ 'start' ] - time () > 3600 ) {
2014-08-24 16:22:43 +02:00
return '<span class="text-success moment-countdown" data-timestamp="' . $upcoming_shifts [ 0 ][ 'start' ] . '">' . _ ( " Next shift %c " ) . '</span>' ;
2016-09-29 11:18:17 +02:00
}
2016-10-01 10:48:19 +02:00
return '<span class="text-warning moment-countdown" data-timestamp="' . $upcoming_shifts [ 0 ][ 'start' ] . '">' . _ ( " Next shift %c " ) . '</span>' ;
2016-09-29 11:18:17 +02:00
}
2014-08-24 16:08:12 +02:00
$halfway = ( $upcoming_shifts [ 0 ][ 'start' ] + $upcoming_shifts [ 0 ][ 'end' ]) / 2 ;
2014-12-19 22:41:55 +01:00
2016-09-29 11:18:17 +02:00
if ( time () < $halfway ) {
2014-08-24 16:48:12 +02:00
return '<span class="text-danger moment-countdown" data-timestamp="' . $upcoming_shifts [ 0 ][ 'start' ] . '">' . _ ( " Shift starts %c " ) . '</span>' ;
2016-09-29 11:18:17 +02:00
}
2016-10-01 10:48:19 +02:00
return '<span class="text-danger moment-countdown" data-timestamp="' . $upcoming_shifts [ 0 ][ 'end' ] . '">' . _ ( " Shift ends %c " ) . '</span>' ;
2014-08-23 01:55:18 +02:00
}
2016-11-18 08:47:52 +01:00
function User_view_shiftentries ( $needed_angel_type ) {
$shift_info = '<br><b>' . $needed_angel_type [ 'name' ] . ':</b> ' ;
$shift_entries = [];
foreach ( $needed_angel_type [ 'users' ] as $user_shift ) {
$member = User_Nick_render ( $user_shift );
if ( $user_shift [ 'freeloaded' ]) {
$member = '<strike>' . $member . '</strike>' ;
}
$shift_entries [] = $member ;
}
$shift_info .= join ( " , " , $shift_entries );
return $shift_info ;
}
/**
* Helper that renders a shift line for user view
*/
function User_view_myshift ( $shift , $user_source , $its_me ) {
2014-08-23 01:55:18 +02:00
global $LETZTES_AUSTRAGEN , $privileges ;
2014-12-19 22:41:55 +01:00
2016-11-18 08:47:52 +01:00
$shift_info = '<a href="' . shift_link ( $shift ) . '">' . $shift [ 'name' ] . '</a>' ;
if ( $shift [ 'title' ]) {
$shift_info .= '<br /><a href="' . shift_link ( $shift ) . '">' . $shift [ 'title' ] . '</a>' ;
}
foreach ( $shift [ 'needed_angeltypes' ] as $needed_angel_type ) {
$shift_info .= User_view_shiftentries ( $needed_angel_type );
}
$myshift = [
'date' => date ( " Y-m-d " , $shift [ 'start' ]),
'time' => date ( " H:i " , $shift [ 'start' ]) . ' - ' . date ( " H:i " , $shift [ 'end' ]),
'room' => $shift [ 'Name' ],
'shift_info' => $shift_info ,
'comment' => $shift [ 'Comment' ]
];
if ( $shift [ 'freeloaded' ]) {
if ( in_array ( " user_shifts_admin " , $privileges )) {
$myshift [ 'comment' ] .= '<br /><p class="error">' . _ ( " Freeloaded " ) . ': ' . $shift [ 'freeload_comment' ] . '</p>' ;
} else {
$myshift [ 'comment' ] .= '<br /><p class="error">' . _ ( " Freeloaded " ) . '</p>' ;
}
}
$myshift [ 'actions' ] = [
button ( shift_link ( $shift ), glyph ( 'eye-open' ) . _ ( 'view' ), 'btn-xs' )
];
if ( $its_me || in_array ( 'user_shifts_admin' , $privileges )) {
$myshift [ 'actions' ][] = button ( page_link_to ( 'user_myshifts' ) . '&edit=' . $shift [ 'id' ] . '&id=' . $user_source [ 'UID' ], glyph ( 'edit' ) . _ ( 'edit' ), 'btn-xs' );
}
if (( $shift [ 'start' ] > time () + $LETZTES_AUSTRAGEN * 3600 ) || in_array ( 'user_shifts_admin' , $privileges )) {
$myshift [ 'actions' ][] = button ( page_link_to ( 'user_myshifts' ) . (( ! $its_me ) ? '&id=' . $user_source [ 'UID' ] : '' ) . '&cancel=' . $shift [ 'id' ], glyph ( 'trash' ) . _ ( 'sign off' ), 'btn-xs' );
}
$myshift [ 'actions' ] = table_buttons ( $myshift [ 'actions' ]);
2014-12-19 22:41:55 +01:00
2016-11-18 08:47:52 +01:00
return $myshift ;
}
/**
* Helper that prepares the shift table for user view
*/
function User_view_myshifts ( $shifts , $user_source , $its_me ) {
2016-09-29 11:18:17 +02:00
$myshifts_table = [];
2014-08-23 01:55:18 +02:00
$timesum = 0 ;
foreach ( $shifts as $shift ) {
2016-11-18 08:47:52 +01:00
$myshifts_table [] = User_view_myshift ( $shift , $user_source , $its_me );
2014-12-19 22:41:55 +01:00
2016-09-29 11:18:17 +02:00
if ( $shift [ 'freeloaded' ]) {
2015-08-13 22:57:40 +02:00
$timesum += ( - 2 * ( $shift [ 'end' ] - $shift [ 'start' ]));
2016-09-29 11:18:17 +02:00
} else {
2015-08-13 22:57:40 +02:00
$timesum += ( $shift [ 'end' ] - $shift [ 'start' ]);
2016-09-29 11:18:17 +02:00
}
2014-08-23 01:55:18 +02:00
}
2016-11-18 08:47:52 +01:00
2016-09-29 11:18:17 +02:00
if ( count ( $myshifts_table ) > 0 ) {
$myshifts_table [] = [
2014-08-23 01:55:18 +02:00
'date' => '<b>' . _ ( " Sum: " ) . '</b>' ,
2015-08-13 22:57:40 +02:00
'time' => " <b> " . round ( $timesum / 3600 , 1 ) . " h</b> " ,
2014-08-23 01:55:18 +02:00
'room' => " " ,
'shift_info' => " " ,
'comment' => " " ,
2014-12-19 22:41:55 +01:00
'actions' => " "
2016-09-29 11:18:17 +02:00
];
}
2016-11-18 08:47:52 +01:00
return $myshifts_table ;
}
/**
* Renders view for a single user
*/
function User_view ( $user_source , $admin_user_privilege , $freeloader , $user_angeltypes , $user_groups , $shifts , $its_me ) {
$user_name = htmlspecialchars ( $user_source [ 'Vorname' ]) . " " . htmlspecialchars ( $user_source [ 'Name' ]);
$myshifts_table = User_view_myshifts ( $shifts , $user_source , $its_me );
2014-12-19 22:41:55 +01:00
2016-09-29 11:18:17 +02:00
return page_with_title ( '<span class="icon-icon_angel"></span> ' . htmlspecialchars ( $user_source [ 'Nick' ]) . ' <small>' . $user_name . '</small>' , [
2014-08-23 01:55:18 +02:00
msg (),
2016-11-15 21:33:54 +01:00
div ( 'row space-top' , [
div ( 'col-md-12' , [
buttons ([
$admin_user_privilege ? button ( page_link_to ( 'admin_user' ) . '&id=' . $user_source [ 'UID' ], glyph ( " edit " ) . _ ( " edit " )) : '' ,
$admin_user_privilege ? button ( user_driver_license_edit_link ( $user_source ), glyph ( " road " ) . _ ( " driving license " )) : '' ,
( $admin_user_privilege && ! $user_source [ 'Gekommen' ]) ? button ( page_link_to ( 'admin_arrive' ) . '&arrived=' . $user_source [ 'UID' ], _ ( " arrived " )) : '' ,
$admin_user_privilege ? button ( page_link_to ( 'users' ) . '&action=edit_vouchers&user_id=' . $user_source [ 'UID' ], glyph ( 'cutlery' ) . _ ( 'Edit vouchers' )) : '' ,
$its_me ? button ( page_link_to ( 'user_settings' ), glyph ( 'list-alt' ) . _ ( " Settings " )) : '' ,
$its_me ? button ( page_link_to ( 'ical' ) . '&key=' . $user_source [ 'api_key' ], glyph ( 'calendar' ) . _ ( " iCal Export " )) : '' ,
$its_me ? button ( page_link_to ( 'shifts_json_export' ) . '&key=' . $user_source [ 'api_key' ], glyph ( 'export' ) . _ ( " JSON Export " )) : '' ,
$its_me ? button ( page_link_to ( 'user_myshifts' ) . '&reset' , glyph ( 'repeat' ) . _ ( 'Reset API key' )) : ''
])
])
]),
2016-09-29 11:18:17 +02:00
div ( 'row' , [
div ( 'col-md-3' , [
2014-08-23 01:55:18 +02:00
'<h1>' ,
'<span class="glyphicon glyphicon-phone"></span>' ,
$user_source [ 'DECT' ],
2014-12-19 22:41:55 +01:00
'</h1>'
2016-09-29 11:18:17 +02:00
]),
div ( 'col-md-3' , [
2014-08-23 01:55:18 +02:00
'<h4>' . _ ( " User state " ) . '</h4>' ,
( $admin_user_privilege && $freeloader ) ? '<span class="text-danger"><span class="glyphicon glyphicon-exclamation-sign"></span> ' . _ ( " Freeloader " ) . '</span><br />' : '' ,
2014-08-24 15:49:46 +02:00
$user_source [ 'Gekommen' ] ? User_shift_state_render ( $user_source ) . '<br />' : '' ,
2015-08-12 23:44:39 +02:00
$admin_user_privilege || $its_me ? ( $user_source [ 'Gekommen' ] ? '<span class="text-success"><span class="glyphicon glyphicon-home"></span> ' . sprintf ( _ ( " Arrived at %s " ), date ( 'Y-m-d' , $user_source [ 'arrival_date' ])) . '</span>' : '<span class="text-danger">' . sprintf ( _ ( " Not arrived (Planned: %s) " ), date ( 'Y-m-d' , $user_source [ 'planned_arrival_date' ])) . '</span>' ) : ( $user_source [ 'Gekommen' ] ? '<span class="text-success"><span class="glyphicon glyphicon-home"></span> ' . _ ( " Arrived " ) . '</span>' : '<span class="text-danger">' . _ ( " Not arrived " ) . '</span>' ),
2015-08-14 13:20:24 +02:00
$admin_user_privilege ? ( $user_source [ 'got_voucher' ] > 0 ? '<br /><span class="text-success">' . glyph ( 'cutlery' ) . sprintf ( ngettext ( " Got %s voucher " , " Got %s vouchers " , $user_source [ 'got_voucher' ]), $user_source [ 'got_voucher' ]) . '</span><br />' : '<br /><span class="text-danger">' . _ ( " Got no vouchers " ) . '</span><br />' ) : '' ,
2014-08-23 01:55:18 +02:00
( $user_source [ 'Gekommen' ] && $admin_user_privilege && $user_source [ 'Aktiv' ]) ? ' <span class="text-success">' . _ ( " Active " ) . '</span>' : '' ,
2014-12-19 22:41:55 +01:00
( $user_source [ 'Gekommen' ] && $admin_user_privilege && $user_source [ 'Tshirt' ]) ? ' <span class="text-success">' . _ ( " T-Shirt " ) . '</span>' : ''
2016-09-29 11:18:17 +02:00
]),
div ( 'col-md-3' , [
2014-08-23 01:55:18 +02:00
'<h4>' . _ ( " Angeltypes " ) . '</h4>' ,
2014-12-19 22:41:55 +01:00
User_angeltypes_render ( $user_angeltypes )
2016-09-29 11:18:17 +02:00
]),
div ( 'col-md-3' , [
2014-08-23 01:55:18 +02:00
'<h4>' . _ ( " Rights " ) . '</h4>' ,
2014-12-19 22:41:55 +01:00
User_groups_render ( $user_groups )
2016-09-29 11:18:17 +02:00
])
]),
2014-08-23 01:55:18 +02:00
( $its_me || $admin_user_privilege ) ? '<h2>' . _ ( " Shifts " ) . '</h2>' : '' ,
2016-09-29 11:18:17 +02:00
( $its_me || $admin_user_privilege ) ? table ([
2014-08-23 01:55:18 +02:00
'date' => _ ( " Day " ),
'time' => _ ( " Time " ),
'room' => _ ( " Location " ),
'shift_info' => _ ( " Name & workmates " ),
'comment' => _ ( " Comment " ),
2014-12-19 22:41:55 +01:00
'actions' => _ ( " Action " )
2016-09-29 11:18:17 +02:00
], $myshifts_table ) : '' ,
2015-08-14 12:32:54 +02:00
$its_me ? info ( glyph ( 'info-sign' ) . _ ( " Your night shifts between 2 and 8 am count twice. " ), true ) : '' ,
2014-12-19 22:41:55 +01:00
$its_me && count ( $shifts ) == 0 ? error ( sprintf ( _ ( " Go to the <a href= \" %s \" >shifts table</a> to sign yourself up for some shifts. " ), page_link_to ( 'user_shifts' )), true ) : ''
2016-09-29 11:18:17 +02:00
]);
2014-08-22 22:34:13 +02:00
}
2013-12-26 13:34:48 +01:00
/**
* View for password recovery step 1 : E - Mail
*/
function User_password_recovery_view () {
2016-09-29 11:18:17 +02:00
return page_with_title ( user_password_recovery_title (), [
2013-12-26 13:34:48 +01:00
msg (),
_ ( " We will send you an e-mail with a password recovery link. Please use the email address you used for registration. " ),
2016-09-29 11:18:17 +02:00
form ([
2013-12-26 13:34:48 +01:00
form_text ( 'email' , _ ( " E-Mail " ), " " ),
2014-12-19 22:41:55 +01:00
form_submit ( 'submit' , _ ( " Recover " ))
2016-09-29 11:18:17 +02:00
])
]);
2013-12-26 13:34:48 +01:00
}
/**
* View for password recovery step 2 : New password
*/
function User_password_set_view () {
2016-09-29 11:18:17 +02:00
return page_with_title ( user_password_recovery_title (), [
2013-12-26 13:34:48 +01:00
msg (),
_ ( " Please enter a new password. " ),
2016-09-29 11:18:17 +02:00
form ([
2013-12-26 13:34:48 +01:00
form_password ( 'password' , _ ( " Password " )),
form_password ( 'password2' , _ ( " Confirm password " )),
2014-12-19 22:41:55 +01:00
form_submit ( 'submit' , _ ( " Save " ))
2016-09-29 11:18:17 +02:00
])
]);
2013-12-26 13:34:48 +01:00
}
2014-08-23 01:55:18 +02:00
function User_angeltypes_render ( $user_angeltypes ) {
2016-09-29 11:18:17 +02:00
$output = [];
2014-08-23 01:55:18 +02:00
foreach ( $user_angeltypes as $angeltype ) {
$class = " " ;
2016-09-29 11:18:17 +02:00
if ( $angeltype [ 'restricted' ] == 1 ) {
if ( $angeltype [ 'confirm_user_id' ] != null ) {
2014-08-23 01:55:18 +02:00
$class = 'text-success' ;
2016-09-29 11:18:17 +02:00
} else {
2014-08-23 01:55:18 +02:00
$class = 'text-warning' ;
2016-09-29 11:18:17 +02:00
}
} else {
2014-08-23 01:55:18 +02:00
$class = 'text-success' ;
2016-09-29 11:18:17 +02:00
}
2016-11-11 14:59:25 +01:00
$output [] = '<a href="' . angeltype_link ( $angeltype [ 'id' ]) . '" class="' . $class . '">' . ( $angeltype [ 'supporter' ] ? glyph ( 'education' ) : '' ) . $angeltype [ 'name' ] . '</a>' ;
2014-08-23 01:55:18 +02:00
}
return join ( '<br />' , $output );
}
function User_groups_render ( $user_groups ) {
2016-10-01 10:48:19 +02:00
$output = [];
2014-08-23 01:55:18 +02:00
foreach ( $user_groups as $group ) {
$output [] = substr ( $group [ 'Name' ], 2 );
}
return join ( '<br />' , $output );
}
2013-09-18 01:38:36 +02:00
/**
* Render a user nickname .
2013-12-26 13:34:48 +01:00
*
2014-12-19 22:41:55 +01:00
* @ param User $user_source
2013-09-18 01:38:36 +02:00
* @ return string
*/
function User_Nick_render ( $user_source ) {
2014-12-26 18:59:32 +01:00
return '<a class="' . ( $user_source [ 'Gekommen' ] ? '' : 'text-muted' ) . '" href="' . page_link_to ( 'users' ) . '&action=view&user_id=' . $user_source [ 'UID' ] . '"><span class="icon-icon_angel"></span> ' . htmlspecialchars ( $user_source [ 'Nick' ]) . '</a>' ;
2013-09-18 01:38:36 +02:00
}
2016-11-15 16:28:20 +01:00
function render_user_departure_date_hint () {
global $user ;
if ( ! isset ( $user [ 'planned_departure_date' ]) || $user [ 'planned_departure_date' ] == null ) {
2016-11-15 16:31:55 +01:00
return _ ( " Please enter your planned date of departure on your settings page to give us a feeling for teardown capacities. " );
2016-11-15 16:28:20 +01:00
}
return null ;
}
function render_user_freeloader_hint () {
2016-11-15 16:58:12 +01:00
global $user , $max_freeloadable_shifts ;
2016-11-15 16:28:20 +01:00
if ( User_is_freeloader ( $user )) {
2016-11-15 16:31:55 +01:00
return sprintf ( _ ( " You freeloaded at least %s shifts. Shift signup is locked. Please go to heavens desk to be unlocked again. " ), $max_freeloadable_shifts );
2016-11-15 16:28:20 +01:00
}
return null ;
}
// Hinweis für Engel, die noch nicht angekommen sind
function render_user_arrived_hint () {
global $user ;
if ( $user [ 'Gekommen' ] == 0 ) {
2016-11-15 16:31:55 +01:00
return _ ( " You are not marked as arrived. Please go to heaven's desk, get your angel badge and/or tell them that you arrived already. " );
2016-11-15 16:28:20 +01:00
}
return null ;
}
function render_user_tshirt_hint () {
global $enable_tshirt_size , $user ;
if ( $enable_tshirt_size && $user [ 'Size' ] == " " ) {
2016-11-15 16:31:55 +01:00
return _ ( " You need to specify a tshirt size in your settings! " );
2016-11-15 16:28:20 +01:00
}
return null ;
}
function render_user_dect_hint () {
global $user ;
if ( $user [ 'DECT' ] == " " ) {
2016-11-15 16:31:55 +01:00
return _ ( " You need to specify a DECT phone number in your settings! If you don't have a DECT phone, just enter \" - \" . " );
2016-11-15 16:28:20 +01:00
}
return null ;
}
2014-11-25 17:30:17 +01:00
?>