2011-06-02 00:48:29 +02:00
< ? php
2014-09-28 14:14:04 +02:00
2018-09-25 17:33:31 +02:00
use Carbon\Carbon ;
2017-01-21 13:58:53 +01:00
use Engelsystem\Database\DB ;
2018-10-14 18:24:42 +02:00
use Engelsystem\Models\User\Contact ;
use Engelsystem\Models\User\PersonalData ;
use Engelsystem\Models\User\Settings ;
use Engelsystem\Models\User\State ;
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 login_title ()
{
2018-08-29 21:55:32 +02:00
return __ ( 'Login' );
2013-11-25 21:56:56 +01:00
}
2017-01-03 03:22:48 +01:00
/**
* @ return string
*/
2017-01-02 03:57:23 +01:00
function register_title ()
{
2018-08-29 21:55:32 +02:00
return __ ( 'Register' );
2013-11-25 21:56:56 +01:00
}
2017-01-03 03:22:48 +01:00
/**
* @ return string
*/
2017-01-02 03:57:23 +01:00
function logout_title ()
{
2018-08-29 21:55:32 +02:00
return __ ( 'Logout' );
2013-11-25 21:56:56 +01:00
}
2011-06-02 00:48:29 +02:00
2017-01-03 03:22:48 +01:00
/**
* Engel registrieren
*
* @ return string
*/
2017-01-02 03:57:23 +01:00
function guest_register ()
{
2018-10-31 12:48:22 +01:00
$authUser = auth () -> user ();
2017-01-21 23:07:20 +01:00
$tshirt_sizes = config ( 'tshirt_sizes' );
$enable_tshirt_size = config ( 'enable_tshirt_size' );
2019-04-23 12:42:01 +02:00
$enable_dect = config ( 'enable_dect' );
2019-04-23 12:23:35 +02:00
$enable_planned_arrival = config ( 'enable_planned_arrival' );
2017-01-21 23:07:20 +01:00
$min_password_length = config ( 'min_password_length' );
2018-09-25 17:33:31 +02:00
$config = config ();
2017-07-18 21:38:53 +02:00
$request = request ();
2017-08-30 19:57:01 +02:00
$session = session ();
2017-01-02 15:43:36 +01:00
2017-01-03 14:12:17 +01:00
$msg = '' ;
$nick = '' ;
2017-01-21 13:58:53 +01:00
$lastName = '' ;
$preName = '' ;
2017-01-03 14:12:17 +01:00
$dect = '' ;
$mobile = '' ;
$mail = '' ;
2017-01-02 03:57:23 +01:00
$email_shiftinfo = false ;
$email_by_human_allowed = false ;
$tshirt_size = '' ;
2017-01-03 14:12:17 +01:00
$password_hash = '' ;
2017-01-02 03:57:23 +01:00
$selected_angel_types = [];
$planned_arrival_date = null ;
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$angel_types_source = AngelTypes ();
$angel_types = [];
foreach ( $angel_types_source as $angel_type ) {
2017-01-03 14:12:17 +01:00
$angel_types [ $angel_type [ 'id' ]] = $angel_type [ 'name' ] . ( $angel_type [ 'restricted' ] ? ' (restricted)' : '' );
2017-01-02 15:43:36 +01:00
if ( ! $angel_type [ 'restricted' ]) {
2017-01-02 03:57:23 +01:00
$selected_angel_types [] = $angel_type [ 'id' ];
}
2016-09-29 10:53:17 +02:00
}
2017-01-02 15:43:36 +01:00
2018-11-12 14:41:23 +01:00
if ( ! auth () -> can ( 'register' ) || ( ! $authUser && ! config ( 'registration_enabled' ))) {
2018-08-29 21:55:32 +02:00
error ( __ ( 'Registration is disabled.' ));
2017-09-20 12:18:08 +02:00
return page_with_title ( register_title (), [
msg (),
]);
}
2018-11-20 16:02:03 +01:00
if ( $request -> hasPostData ( 'submit' )) {
2017-01-02 03:57:23 +01:00
$valid = true ;
2017-01-02 15:43:36 +01:00
2019-04-28 14:34:04 +02:00
if ( $request -> has ( 'nick' )) {
$nickValidation = User_validate_Nick ( $request -> input ( 'nick' ));
$nick = $nickValidation -> getValue ();
if ( ! $nickValidation -> isValid ()) {
$valid = false ;
$msg .= error ( sprintf ( __ ( 'Please enter a valid nick.' ) . ' ' . __ ( 'Use up to 23 letters, numbers, connecting punctuations or spaces for your nickname.' ), $nick ), true );
}
2018-10-14 18:24:42 +02:00
if ( User :: whereName ( $nick ) -> count () > 0 ) {
2017-01-02 03:57:23 +01:00
$valid = false ;
2018-08-29 21:55:32 +02:00
$msg .= error ( sprintf ( __ ( 'Your nick "%s" already exists.' ), $nick ), true );
2017-01-02 03:57:23 +01:00
}
} else {
$valid = false ;
2019-04-28 14:34:04 +02:00
$msg .= error ( __ ( 'Please enter a nickname.' ), true );
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2017-07-18 21:38:53 +02:00
if ( $request -> has ( 'mail' ) && strlen ( strip_request_item ( 'mail' )) > 0 ) {
2017-01-02 03:57:23 +01:00
$mail = strip_request_item ( 'mail' );
2017-01-02 15:43:36 +01:00
if ( ! check_email ( $mail )) {
2017-01-02 03:57:23 +01:00
$valid = false ;
2018-08-29 21:55:32 +02:00
$msg .= error ( __ ( 'E-mail address is not correct.' ), true );
2017-01-02 03:57:23 +01:00
}
2018-11-18 12:13:00 +01:00
if ( User :: whereEmail ( $mail ) -> first ()) {
$valid = false ;
$msg .= error ( __ ( 'E-mail address is already used by another user.' ), true );
}
2017-01-02 03:57:23 +01:00
} else {
$valid = false ;
2018-08-29 21:55:32 +02:00
$msg .= error ( __ ( 'Please enter your e-mail.' ), true );
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2017-07-18 21:38:53 +02:00
if ( $request -> has ( 'email_shiftinfo' )) {
2017-01-02 03:57:23 +01:00
$email_shiftinfo = true ;
}
2017-01-02 15:43:36 +01:00
2017-07-18 21:38:53 +02:00
if ( $request -> has ( 'email_by_human_allowed' )) {
2017-01-02 03:57:23 +01:00
$email_by_human_allowed = true ;
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( $enable_tshirt_size ) {
2017-07-18 21:38:53 +02:00
if ( $request -> has ( 'tshirt_size' ) && isset ( $tshirt_sizes [ $request -> input ( 'tshirt_size' )])) {
$tshirt_size = $request -> input ( 'tshirt_size' );
2017-01-02 03:57:23 +01:00
} else {
$valid = false ;
2018-08-29 21:55:32 +02:00
$msg .= error ( __ ( 'Please select your shirt size.' ), true );
2017-01-02 03:57:23 +01:00
}
}
2017-01-02 15:43:36 +01:00
2017-08-29 16:21:25 +02:00
if ( $request -> has ( 'password' ) && strlen ( $request -> postData ( 'password' )) >= $min_password_length ) {
if ( $request -> postData ( 'password' ) != $request -> postData ( 'password2' )) {
2017-01-02 03:57:23 +01:00
$valid = false ;
2018-08-29 21:55:32 +02:00
$msg .= error ( __ ( 'Your passwords don\'t match.' ), true );
2017-01-02 03:57:23 +01:00
}
} else {
$valid = false ;
2017-01-02 15:43:36 +01:00
$msg .= error ( sprintf (
2018-08-29 21:55:32 +02:00
__ ( 'Your password is too short (please use at least %s characters).' ),
2017-01-02 15:43:36 +01:00
$min_password_length
), true );
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2019-04-23 12:23:35 +02:00
if ( $request -> has ( 'planned_arrival_date' ) && $enable_planned_arrival ) {
2017-07-18 21:38:53 +02:00
$tmp = parse_date ( 'Y-m-d H:i' , $request -> input ( 'planned_arrival_date' ) . ' 00:00' );
2017-01-02 03:57:23 +01:00
$result = User_validate_planned_arrival_date ( $tmp );
$planned_arrival_date = $result -> getValue ();
2017-01-02 15:43:36 +01:00
if ( ! $result -> isValid ()) {
2017-01-02 03:57:23 +01:00
$valid = false ;
2018-08-29 21:55:32 +02:00
error ( __ ( 'Please enter your planned date of arrival. It should be after the buildup start date and before teardown end date.' ));
2017-01-02 03:57:23 +01:00
}
2019-04-24 11:01:37 +02:00
} elseif ( $enable_planned_arrival ) {
2017-11-19 11:58:19 +01:00
$valid = false ;
2018-08-29 21:55:32 +02:00
error ( __ ( 'Please enter your planned date of arrival. It should be after the buildup start date and before teardown end date.' ));
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$selected_angel_types = [];
foreach ( array_keys ( $angel_types ) as $angel_type_id ) {
2017-07-18 21:38:53 +02:00
if ( $request -> has ( 'angel_types_' . $angel_type_id )) {
2017-01-02 03:57:23 +01:00
$selected_angel_types [] = $angel_type_id ;
}
}
2017-01-02 15:43:36 +01:00
// Trivia
2017-07-18 21:38:53 +02:00
if ( $request -> has ( 'lastname' )) {
2017-01-21 13:58:53 +01:00
$lastName = strip_request_item ( 'lastname' );
2017-01-02 15:43:36 +01:00
}
2017-07-18 21:38:53 +02:00
if ( $request -> has ( 'prename' )) {
2017-01-21 13:58:53 +01:00
$preName = strip_request_item ( 'prename' );
2017-01-02 03:57:23 +01:00
}
2019-04-23 12:42:01 +02:00
if ( $enable_dect && $request -> has ( 'dect' )) {
2018-12-22 00:12:46 +01:00
if ( strlen ( strip_request_item ( 'dect' )) <= 40 ) {
2017-11-21 19:00:42 +01:00
$dect = strip_request_item ( 'dect' );
} else {
$valid = false ;
2018-12-22 00:12:46 +01:00
error ( __ ( 'For dect numbers are only 40 digits allowed.' ));
2017-11-21 19:00:42 +01:00
}
2017-01-02 03:57:23 +01:00
}
2017-07-18 21:38:53 +02:00
if ( $request -> has ( 'mobile' )) {
2017-01-02 03:57:23 +01:00
$mobile = strip_request_item ( 'mobile' );
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( $valid ) {
2018-10-14 18:24:42 +02:00
$user = new User ([
'name' => $nick ,
'password' => $password_hash ,
'email' => $mail ,
'api_key' => '' ,
'last_login_at' => null ,
]);
$user -> save ();
$contact = new Contact ([
'dect' => $dect ,
'mobile' => $mobile ,
]);
$contact -> user ()
-> associate ( $user )
-> save ();
$personalData = new PersonalData ([
'first_name' => $preName ,
'last_name' => $lastName ,
'shirt_size' => $tshirt_size ,
2019-04-25 17:30:51 +02:00
'planned_arrival_date' => $enable_planned_arrival ? Carbon :: createFromTimestamp ( $planned_arrival_date ) : null ,
2018-10-14 18:24:42 +02:00
]);
$personalData -> user ()
-> associate ( $user )
-> save ();
$settings = new Settings ([
'language' => $session -> get ( 'locale' ),
'theme' => config ( 'theme' ),
'email_human' => $email_by_human_allowed ,
'email_shiftinfo' => $email_shiftinfo ,
]);
$settings -> user ()
-> associate ( $user )
-> save ();
2019-03-06 19:28:07 +01:00
$state = new State ([]);
if ( config ( 'autoarrive' )) {
$state -> arrived = true ;
$state -> arrival_date = new Carbon ();
}
$state -> user ()
2018-10-14 18:24:42 +02:00
-> associate ( $user )
-> save ();
2017-01-02 15:43:36 +01:00
// Assign user-group and set password
2018-10-14 18:24:42 +02:00
DB :: insert ( 'INSERT INTO `UserGroups` (`uid`, `group_id`) VALUES (?, -20)' , [ $user -> id ]);
set_password ( $user -> id , $request -> postData ( 'password' ));
2017-01-02 15:43:36 +01:00
// Assign angel-types
$user_angel_types_info = [];
2017-01-02 03:57:23 +01:00
foreach ( $selected_angel_types as $selected_angel_type_id ) {
2017-01-21 13:58:53 +01:00
DB :: insert (
2017-11-19 12:03:29 +01:00
'INSERT INTO `UserAngelTypes` (`user_id`, `angeltype_id`, `supporter`) VALUES (?, ?, FALSE)' ,
2018-10-14 18:24:42 +02:00
[ $user -> id , $selected_angel_type_id ]
2017-01-21 13:58:53 +01:00
);
2017-01-02 03:57:23 +01:00
$user_angel_types_info [] = $angel_types [ $selected_angel_type_id ];
}
2017-01-02 15:43:36 +01:00
engelsystem_log (
2018-10-14 18:24:42 +02:00
'User ' . User_Nick_render ( $user )
2017-01-03 14:12:17 +01:00
. ' signed up as: ' . join ( ', ' , $user_angel_types_info )
2017-01-02 15:43:36 +01:00
);
2018-08-29 21:55:32 +02:00
success ( __ ( 'Angel registration successful!' ));
2017-01-02 15:43:36 +01:00
// User is already logged in - that means a supporter has registered an angel. Return to register page.
2018-10-14 18:24:42 +02:00
if ( $authUser ) {
2017-01-02 15:43:36 +01:00
redirect ( page_link_to ( 'register' ));
}
// If a welcome message is present, display registration success page.
2018-09-25 17:33:31 +02:00
if ( $message = $config -> get ( 'welcome_msg' )) {
return User_registration_success_view ( $message );
2017-01-02 15:43:36 +01:00
}
2017-11-19 10:45:08 +01:00
redirect ( page_link_to ( '/' ));
2017-01-02 03:57:23 +01:00
}
2012-12-01 11:39:03 +01:00
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$buildup_start_date = time ();
$teardown_end_date = null ;
2018-09-25 17:33:31 +02:00
if ( $buildup = $config -> get ( 'buildup_start' )) {
/** @var Carbon $buildup */
$buildup_start_date = $buildup -> getTimestamp ();
}
if ( $teardown = $config -> get ( 'teardown_end' )) {
/** @var Carbon $teardown */
$teardown_end_date = $teardown -> getTimestamp ();
2016-12-23 16:22:46 +01:00
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
return page_with_title ( register_title (), [
2018-08-29 21:55:32 +02:00
__ ( 'By completing this form you\'re registering as a Chaos-Angel. This script will create you an account in the angel task scheduler.' ),
2017-01-02 15:43:36 +01:00
$msg ,
msg (),
form ([
div ( 'row' , [
div ( 'col-md-6' , [
div ( 'row' , [
div ( 'col-sm-4' , [
2019-04-28 14:34:04 +02:00
form_text ( 'nick' , __ ( 'Nick' ) . ' ' . entry_required (), $nick ),
form_info ( '' , __ ( 'Use up to 23 letters, numbers, connecting punctuations or spaces for your nickname.' ))
2017-01-02 15:43:36 +01:00
]),
div ( 'col-sm-8' , [
2018-08-29 21:55:32 +02:00
form_email ( 'mail' , __ ( 'E-Mail' ) . ' ' . entry_required (), $mail ),
2017-01-02 15:43:36 +01:00
form_checkbox (
'email_shiftinfo' ,
2018-10-05 15:35:14 +02:00
__ (
'The %s is allowed to send me an email (e.g. when my shifts change)' ,
[ config ( 'app_name' )]
),
2017-01-02 15:43:36 +01:00
$email_shiftinfo
),
form_checkbox (
'email_by_human_allowed' ,
2018-08-29 21:55:32 +02:00
__ ( 'Humans are allowed to send me an email (e.g. for ticket vouchers)' ),
2017-01-02 15:43:36 +01:00
$email_by_human_allowed
)
])
]),
div ( 'row' , [
2019-04-25 17:30:51 +02:00
$enable_planned_arrival ? div ( 'col-sm-6' , [
form_date (
2017-01-02 15:43:36 +01:00
'planned_arrival_date' ,
2018-08-29 21:55:32 +02:00
__ ( 'Planned date of arrival' ) . ' ' . entry_required (),
2017-01-02 15:43:36 +01:00
$planned_arrival_date , $buildup_start_date , $teardown_end_date
2019-04-25 17:30:51 +02:00
)
]) : '' ,
2017-01-02 15:43:36 +01:00
div ( 'col-sm-6' , [
$enable_tshirt_size ? form_select ( 'tshirt_size' ,
2018-08-29 21:55:32 +02:00
__ ( 'Shirt size' ) . ' ' . entry_required (),
$tshirt_sizes , $tshirt_size , __ ( 'Please select...' )) : ''
2017-01-02 15:43:36 +01:00
])
]),
div ( 'row' , [
div ( 'col-sm-6' , [
2018-08-29 21:55:32 +02:00
form_password ( 'password' , __ ( 'Password' ) . ' ' . entry_required ())
2017-01-02 15:43:36 +01:00
]),
div ( 'col-sm-6' , [
2018-08-29 21:55:32 +02:00
form_password ( 'password2' , __ ( 'Confirm password' ) . ' ' . entry_required ())
2017-01-02 15:43:36 +01:00
])
]),
form_checkboxes (
'angel_types' ,
2018-08-29 21:55:32 +02:00
__ ( 'What do you want to do?' ) . sprintf (
2017-01-21 19:37:42 +01:00
' (<a href="%s">%s</a>)' ,
2017-08-28 16:21:10 +02:00
page_link_to ( 'angeltypes' , [ 'action' => 'about' ]),
2018-08-29 21:55:32 +02:00
__ ( 'Description of job types' )
2017-01-02 15:43:36 +01:00
),
$angel_types ,
$selected_angel_types
),
form_info (
2017-01-03 14:12:17 +01:00
'' ,
2018-08-29 21:55:32 +02:00
__ ( 'Restricted angel types need will be confirmed later by a supporter. You can change your selection in the options section.' )
2017-01-02 15:43:36 +01:00
)
]),
div ( 'col-md-6' , [
div ( 'row' , [
2019-04-23 12:42:01 +02:00
$enable_dect ? div ( 'col-sm-4' , [
2018-08-29 21:55:32 +02:00
form_text ( 'dect' , __ ( 'DECT' ), $dect )
2019-04-23 12:42:01 +02:00
]) : '' ,
div ( $enable_dect ? 'col-sm-4' : 'col-sm-12' , [
2018-08-29 21:55:32 +02:00
form_text ( 'mobile' , __ ( 'Mobile' ), $mobile )
2017-01-02 15:43:36 +01:00
]),
]),
div ( 'row' , [
div ( 'col-sm-6' , [
2018-08-29 21:55:32 +02:00
form_text ( 'prename' , __ ( 'First name' ), $preName )
2017-01-02 15:43:36 +01:00
]),
div ( 'col-sm-6' , [
2018-08-29 21:55:32 +02:00
form_text ( 'lastname' , __ ( 'Last name' ), $lastName )
2017-01-02 15:43:36 +01:00
])
]),
2018-08-29 21:55:32 +02:00
form_info ( entry_required () . ' = ' . __ ( 'Entry required!' ))
2017-01-02 15:43:36 +01:00
])
]),
2018-08-29 21:55:32 +02:00
form_submit ( 'submit' , __ ( 'Register' ))
2017-01-02 15:43:36 +01:00
])
]);
2011-06-02 00:48:29 +02:00
}
2017-08-30 19:57:01 +02:00
/**
* @ return string
*/
2017-01-02 03:57:23 +01:00
function entry_required ()
{
return '<span class="text-info glyphicon glyphicon-warning-sign"></span>' ;
2014-08-23 15:35:25 +02:00
}
2017-08-30 19:57:01 +02:00
/**
* @ return bool
*/
2017-01-02 03:57:23 +01:00
function guest_logout ()
{
2017-08-30 19:57:01 +02:00
session () -> invalidate ();
2017-01-03 14:12:17 +01:00
redirect ( page_link_to ( 'start' ));
2017-01-03 03:22:48 +01:00
return true ;
2011-06-02 00:48:29 +02:00
}
2017-08-30 19:57:01 +02:00
/**
* @ return string
*/
2017-01-02 03:57:23 +01:00
function guest_login ()
{
2017-01-03 14:12:17 +01:00
$nick = '' ;
2017-07-18 21:38:53 +02:00
$request = request ();
2017-08-30 19:57:01 +02:00
$session = session ();
2017-01-02 03:57:23 +01:00
$valid = true ;
2017-01-02 15:43:36 +01:00
2017-08-30 19:57:01 +02:00
$session -> remove ( 'uid' );
2018-11-20 16:02:03 +01:00
if ( $request -> hasPostData ( 'submit' )) {
2019-04-28 14:34:04 +02:00
if ( $request -> has ( 'nick' ) && ! empty ( $request -> input ( 'nick' ))) {
$nickValidation = User_validate_Nick ( $request -> input ( 'nick' ));
$nick = $nickValidation -> getValue ();
$login_user = User :: whereName ( $nickValidation -> getValue ()) -> first ();
2018-10-09 21:47:31 +02:00
if ( $login_user ) {
2017-07-18 21:38:53 +02:00
if ( $request -> has ( 'password' )) {
2018-10-09 21:47:31 +02:00
if ( ! verify_password ( $request -> postData ( 'password' ), $login_user -> password , $login_user -> id )) {
2017-01-02 03:57:23 +01:00
$valid = false ;
2018-08-29 21:55:32 +02:00
error ( __ ( 'Your password is incorrect. Please try it again.' ));
2017-01-02 03:57:23 +01:00
}
} else {
$valid = false ;
2018-08-29 21:55:32 +02:00
error ( __ ( 'Please enter a password.' ));
2017-01-02 03:57:23 +01:00
}
} else {
$valid = false ;
2018-08-29 21:55:32 +02:00
error ( __ ( 'No user was found with that Nickname. Please try again. If you are still having problems, ask a Dispatcher.' ));
2017-01-02 03:57:23 +01:00
}
2012-12-01 11:39:03 +01:00
} else {
2017-01-02 03:57:23 +01:00
$valid = false ;
2018-08-29 21:55:32 +02:00
error ( __ ( 'Please enter a nickname.' ));
2012-12-01 11:39:03 +01:00
}
2017-01-02 15:43:36 +01:00
2018-10-09 21:47:31 +02:00
if ( $valid && $login_user ) {
$session -> set ( 'uid' , $login_user -> id );
$session -> set ( 'locale' , $login_user -> settings -> language );
2017-01-02 15:43:36 +01:00
2019-03-07 13:01:52 +01:00
redirect ( page_link_to ( config ( 'home_site' )));
2017-01-02 03:57:23 +01:00
}
2012-12-01 11:39:03 +01:00
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
return page ([
2017-01-02 15:43:36 +01:00
div ( 'col-md-12' , [
div ( 'row' , [
2018-09-25 17:33:31 +02:00
EventConfig_countdown_page ()
2017-01-02 15:43:36 +01:00
]),
div ( 'row' , [
div ( 'col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4' , [
div ( 'panel panel-primary first' , [
div ( 'panel-heading' , [
2018-08-29 21:55:32 +02:00
'<span class="icon-icon_angel"></span> ' . __ ( 'Login' )
2017-01-02 15:43:36 +01:00
]),
div ( 'panel-body' , [
msg (),
form ([
2018-08-29 21:55:32 +02:00
form_text_placeholder ( 'nick' , __ ( 'Nick' ), $nick ),
form_password_placeholder ( 'password' , __ ( 'Password' )),
form_submit ( 'submit' , __ ( 'Login' )),
2017-01-02 15:43:36 +01:00
! $valid ? buttons ([
2018-08-29 21:55:32 +02:00
button ( page_link_to ( 'user_password_recovery' ), __ ( 'I forgot my password' ))
2017-01-02 15:43:36 +01:00
]) : ''
])
]),
div ( 'panel-footer' , [
2018-08-29 21:55:32 +02:00
glyph ( 'info-sign' ) . __ ( 'Please note: You have to activate cookies!' )
2017-01-02 15:43:36 +01:00
])
])
])
]),
div ( 'row' , [
div ( 'col-sm-6 text-center' , [
heading ( register_title (), 2 ),
get_register_hint ()
]),
div ( 'col-sm-6 text-center' , [
2018-08-29 21:55:32 +02:00
heading ( __ ( 'What can I do?' ), 2 ),
'<p>' . __ ( 'Please read about the jobs you can do to help us.' ) . '</p>' ,
2017-01-02 15:43:36 +01:00
buttons ([
2017-08-28 16:21:10 +02:00
button (
page_link_to ( 'angeltypes' , [ 'action' => 'about' ]),
2018-08-29 21:55:32 +02:00
__ ( 'Teams/Job description' ) . ' »'
2017-08-28 16:21:10 +02:00
)
2017-01-02 15:43:36 +01:00
])
])
])
])
]);
2016-09-28 07:28:51 +02:00
}
2017-08-30 19:57:01 +02:00
/**
* @ return string
*/
2017-01-02 03:57:23 +01:00
function get_register_hint ()
{
2018-11-12 14:41:23 +01:00
if ( auth () -> can ( 'register' ) && config ( 'registration_enabled' )) {
2017-01-02 03:57:23 +01:00
return join ( '' , [
2018-08-29 21:55:32 +02:00
'<p>' . __ ( 'Please sign up, if you want to help us!' ) . '</p>' ,
2017-01-02 15:43:36 +01:00
buttons ([
button ( page_link_to ( 'register' ), register_title () . ' »' )
])
]);
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2018-08-29 21:55:32 +02:00
return error ( __ ( 'Registration is disabled.' ), true );
2011-06-02 00:48:29 +02:00
}