2011-06-02 00:48:29 +02:00
< ? php
2014-09-28 14:14:04 +02:00
2013-11-25 21:56:56 +01:00
function login_title () {
return _ ( " Login " );
}
function register_title () {
return _ ( " Register " );
}
function logout_title () {
return _ ( " Logout " );
}
2011-06-02 00:48:29 +02:00
// Engel registrieren
function guest_register () {
2016-09-28 07:28:51 +02:00
global $tshirt_sizes , $enable_tshirt_size , $default_theme , $user ;
2013-11-25 21:04:58 +01:00
2016-09-27 18:42:10 +02:00
$event_config = EventConfig ();
2012-12-01 11:39:03 +01:00
$msg = " " ;
$nick = " " ;
$lastname = " " ;
$prename = " " ;
2013-11-25 19:12:19 +01:00
$age = " " ;
2012-12-01 11:39:03 +01:00
$tel = " " ;
$dect = " " ;
$mobile = " " ;
$mail = " " ;
2014-12-06 18:37:34 +01:00
$email_shiftinfo = false ;
2016-11-11 15:24:51 +01:00
$email_by_human_allowed = false ;
2012-12-01 11:39:03 +01:00
$jabber = " " ;
$hometown = " " ;
$comment = " " ;
$tshirt_size = '' ;
$password_hash = " " ;
2016-09-29 10:53:17 +02:00
$selected_angel_types = [];
2015-07-12 14:45:58 +02:00
$planned_arrival_date = null ;
2013-11-25 21:04:58 +01:00
2016-11-11 15:24:51 +01:00
$angel_types_source = AngelTypes ();
2016-09-29 10:53:17 +02:00
$angel_types = [];
2014-08-23 15:47:06 +02:00
foreach ( $angel_types_source as $angel_type ) {
2012-12-01 11:39:03 +01:00
$angel_types [ $angel_type [ 'id' ]] = $angel_type [ 'name' ] . ( $angel_type [ 'restricted' ] ? " (restricted) " : " " );
2016-09-29 10:53:17 +02:00
if ( ! $angel_type [ 'restricted' ]) {
2014-08-23 15:47:06 +02:00
$selected_angel_types [] = $angel_type [ 'id' ];
2016-09-29 10:53:17 +02:00
}
2014-08-23 15:47:06 +02:00
}
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'submit' ])) {
2016-09-29 12:08:12 +02:00
$valid = true ;
2013-11-25 21:04:58 +01:00
2013-12-27 19:45:50 +01:00
if ( isset ( $_REQUEST [ 'nick' ]) && strlen ( User_validate_Nick ( $_REQUEST [ 'nick' ])) > 1 ) {
$nick = User_validate_Nick ( $_REQUEST [ 'nick' ]);
2012-12-01 11:39:03 +01:00
if ( sql_num_query ( " SELECT * FROM `User` WHERE `Nick`=' " . sql_escape ( $nick ) . " ' LIMIT 1 " ) > 0 ) {
2016-09-29 12:08:12 +02:00
$valid = false ;
2013-11-25 21:04:58 +01:00
$msg .= error ( sprintf ( _ ( " Your nick "%s" already exists. " ), $nick ), true );
2012-12-01 11:39:03 +01:00
}
} else {
2016-09-29 12:08:12 +02:00
$valid = false ;
2013-12-28 02:14:49 +01:00
$msg .= error ( sprintf ( _ ( " Your nick "%s" is too short (min. 2 characters). " ), User_validate_Nick ( $_REQUEST [ 'nick' ])), true );
2012-12-01 11:39:03 +01:00
}
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'mail' ]) && strlen ( strip_request_item ( 'mail' )) > 0 ) {
2012-12-01 11:39:03 +01:00
$mail = strip_request_item ( 'mail' );
2013-11-25 21:04:58 +01:00
if ( ! check_email ( $mail )) {
2016-09-29 12:08:12 +02:00
$valid = false ;
2013-11-25 21:04:58 +01:00
$msg .= error ( _ ( " E-mail address is not correct. " ), true );
2012-12-01 11:39:03 +01:00
}
} else {
2016-09-29 12:08:12 +02:00
$valid = false ;
2013-11-25 21:04:58 +01:00
$msg .= error ( _ ( " Please enter your e-mail. " ), true );
2012-12-01 11:39:03 +01:00
}
2013-11-25 21:04:58 +01:00
2016-09-29 10:53:17 +02:00
if ( isset ( $_REQUEST [ 'email_shiftinfo' ])) {
2014-12-06 18:37:34 +01:00
$email_shiftinfo = true ;
2016-09-29 10:53:17 +02:00
}
2014-12-06 18:37:34 +01:00
2016-11-11 15:24:51 +01:00
if ( isset ( $_REQUEST [ 'email_by_human_allowed' ])) {
$email_by_human_allowed = true ;
}
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'jabber' ]) && strlen ( strip_request_item ( 'jabber' )) > 0 ) {
2012-12-01 11:39:03 +01:00
$jabber = strip_request_item ( 'jabber' );
2013-11-25 21:04:58 +01:00
if ( ! check_email ( $jabber )) {
2016-09-29 12:08:12 +02:00
$valid = false ;
2013-11-25 21:04:58 +01:00
$msg .= error ( _ ( " Please check your jabber account information. " ), true );
2012-12-01 11:39:03 +01:00
}
}
2013-11-25 21:04:58 +01:00
2012-12-01 11:39:03 +01:00
if ( $enable_tshirt_size ) {
2016-09-29 10:53:17 +02:00
if ( isset ( $_REQUEST [ 'tshirt_size' ]) && isset ( $tshirt_sizes [ $_REQUEST [ 'tshirt_size' ]]) && $_REQUEST [ 'tshirt_size' ] != '' ) {
2012-12-01 11:39:03 +01:00
$tshirt_size = $_REQUEST [ 'tshirt_size' ];
2016-09-29 10:53:17 +02:00
} else {
2016-09-29 12:08:12 +02:00
$valid = false ;
2013-11-25 21:04:58 +01:00
$msg .= error ( _ ( " Please select your shirt size. " ), true );
2012-12-01 11:39:03 +01:00
}
}
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'password' ]) && strlen ( $_REQUEST [ 'password' ]) >= MIN_PASSWORD_LENGTH ) {
2012-12-12 02:31:54 +01:00
if ( $_REQUEST [ 'password' ] != $_REQUEST [ 'password2' ]) {
2016-09-29 12:08:12 +02:00
$valid = false ;
2013-11-25 21:04:58 +01:00
$msg .= error ( _ ( " Your passwords don't match. " ), true );
2012-12-01 11:39:03 +01:00
}
} else {
2016-09-29 12:08:12 +02:00
$valid = false ;
2014-07-29 20:50:54 +02:00
$msg .= error ( sprintf ( _ ( " Your password is too short (please use at least %s characters). " ), MIN_PASSWORD_LENGTH ), true );
2012-12-01 11:39:03 +01:00
}
2013-11-25 21:04:58 +01:00
2016-11-24 09:25:17 +01:00
if ( isset ( $_REQUEST [ 'planned_arrival_date' ]) && $tmp = parse_date ( " Y-m-d H:i " , $_REQUEST [ 'planned_arrival_date' ] . " 00:00 " )) {
2016-10-04 17:58:56 +02:00
$planned_arrival_date = $tmp ;
2015-07-12 14:45:58 +02:00
} else {
2016-09-29 12:08:12 +02:00
$valid = false ;
2015-07-12 14:45:58 +02:00
$msg .= error ( _ ( " Please enter your planned date of arrival. " ), true );
}
2016-09-29 10:53:17 +02:00
$selected_angel_types = [];
foreach ( array_keys ( $angel_types ) as $angel_type_id ) {
if ( isset ( $_REQUEST [ 'angel_types_' . $angel_type_id ])) {
2013-11-25 21:04:58 +01:00
$selected_angel_types [] = $angel_type_id ;
2016-09-29 10:53:17 +02:00
}
}
// Trivia
if ( isset ( $_REQUEST [ 'lastname' ])) {
2012-12-01 11:39:03 +01:00
$lastname = strip_request_item ( 'lastname' );
2016-09-29 10:53:17 +02:00
}
if ( isset ( $_REQUEST [ 'prename' ])) {
2012-12-01 11:39:03 +01:00
$prename = strip_request_item ( 'prename' );
2016-09-29 10:53:17 +02:00
}
if ( isset ( $_REQUEST [ 'age' ]) && preg_match ( " /^[0-9] { 0,4} $ / " , $_REQUEST [ 'age' ])) {
2012-12-01 11:39:03 +01:00
$age = strip_request_item ( 'age' );
2016-09-29 10:53:17 +02:00
}
if ( isset ( $_REQUEST [ 'tel' ])) {
2012-12-01 11:39:03 +01:00
$tel = strip_request_item ( 'tel' );
2016-09-29 10:53:17 +02:00
}
if ( isset ( $_REQUEST [ 'dect' ])) {
2012-12-01 11:39:03 +01:00
$dect = strip_request_item ( 'dect' );
2016-09-29 10:53:17 +02:00
}
if ( isset ( $_REQUEST [ 'mobile' ])) {
2012-12-01 11:39:03 +01:00
$mobile = strip_request_item ( 'mobile' );
2016-09-29 10:53:17 +02:00
}
if ( isset ( $_REQUEST [ 'hometown' ])) {
2012-12-01 11:39:03 +01:00
$hometown = strip_request_item ( 'hometown' );
2016-09-29 10:53:17 +02:00
}
if ( isset ( $_REQUEST [ 'comment' ])) {
2012-12-01 11:39:03 +01:00
$comment = strip_request_item_nl ( 'comment' );
2016-09-29 10:53:17 +02:00
}
2013-11-25 21:04:58 +01:00
2016-09-29 12:08:12 +02:00
if ( $valid ) {
2014-12-06 18:37:34 +01:00
sql_query ( "
INSERT INTO `User` SET
2014-12-28 13:44:56 +01:00
`color` = '" . sql_escape($default_theme) . "' ,
2014-12-06 18:37:34 +01:00
`Nick` = '" . sql_escape($nick) . "' ,
`Vorname` = '" . sql_escape($prename) . "' ,
`Name` = '" . sql_escape($lastname) . "' ,
`Alter` = '" . sql_escape($age) . "' ,
`Telefon` = '" . sql_escape($tel) . "' ,
`DECT` = '" . sql_escape($dect) . "' ,
`Handy` = '" . sql_escape($mobile) . "' ,
`email` = '" . sql_escape($mail) . "' ,
2015-08-13 10:48:39 +02:00
`email_shiftinfo` = " . sql_bool( $email_shiftinfo ) . " ,
2016-11-11 15:24:51 +01:00
`email_by_human_allowed` = " . sql_bool( $email_by_human_allowed ) . " ,
2014-12-06 18:37:34 +01:00
`jabber` = '" . sql_escape($jabber) . "' ,
`Size` = '" . sql_escape($tshirt_size) . "' ,
`Passwort` = '" . sql_escape($password_hash) . "' ,
`kommentar` = '" . sql_escape($comment) . "' ,
`Hometown` = '" . sql_escape($hometown) . "' ,
`CreateDate` = NOW (),
2015-07-12 14:45:58 +02:00
`Sprache` = '" . sql_escape($_SESSION["locale"]) . "' ,
`arrival_date` = NULL ,
`planned_arrival_date` = '" . sql_escape($planned_arrival_date) . "' " );
2013-11-25 21:04:58 +01:00
2012-12-12 02:31:54 +01:00
// Assign user-group and set password
2012-12-01 11:39:03 +01:00
$user_id = sql_id ();
2014-12-28 13:44:56 +01:00
sql_query ( " INSERT INTO `UserGroups` SET `uid`=' " . sql_escape ( $user_id ) . " ', `group_id`=-2 " );
2012-12-12 02:31:54 +01:00
set_password ( $user_id , $_REQUEST [ 'password' ]);
2013-11-25 21:04:58 +01:00
2012-12-01 11:39:03 +01:00
// Assign angel-types
2016-09-29 10:53:17 +02:00
$user_angel_types_info = [];
2012-12-26 19:53:27 +01:00
foreach ( $selected_angel_types as $selected_angel_type_id ) {
2014-12-28 13:44:56 +01:00
sql_query ( " INSERT INTO `UserAngelTypes` SET `user_id`=' " . sql_escape ( $user_id ) . " ', `angeltype_id`=' " . sql_escape ( $selected_angel_type_id ) . " ' " );
2012-12-27 03:32:15 +01:00
$user_angel_types_info [] = $angel_types [ $selected_angel_type_id ];
2012-12-26 19:53:27 +01:00
}
2015-12-12 19:39:30 +01:00
engelsystem_log ( " User " . User_Nick_render ( User ( $user_id )) . " signed up as: " . join ( " , " , $user_angel_types_info ));
2013-11-25 21:04:58 +01:00
success ( _ ( " Angel registration successful! " ));
2016-11-11 14:59:25 +01:00
// User is already logged in - that means a supporter has registered an angel. Return to register page.
2016-09-28 07:28:51 +02:00
if ( isset ( $user )) {
redirect ( page_link_to ( 'register' ));
}
// If a welcome message is present, display registration success page.
if ( $event_config != null && $event_config [ 'event_welcome_msg' ] != null ) {
return User_registration_success_view ( $event_config [ 'event_welcome_msg' ]);
}
2014-05-13 14:44:04 +02:00
redirect ( '?' );
2012-12-01 11:39:03 +01:00
}
}
2013-11-25 21:04:58 +01:00
2016-09-29 10:53:17 +02:00
return page_with_title ( register_title (), [
2016-11-07 20:24:01 +01:00
_ ( " By completing this form you're registering as a Chaos-Angel. This script will create you an account in the angel task scheduler. " ),
2013-11-25 21:04:58 +01:00
$msg ,
msg (),
2016-09-29 10:53:17 +02:00
form ([
div ( 'row' , [
div ( 'col-md-6' , [
div ( 'row' , [
div ( 'col-sm-4' , [
2014-08-23 15:35:25 +02:00
form_text ( 'nick' , _ ( " Nick " ) . ' ' . entry_required (), $nick )
2016-09-29 10:53:17 +02:00
]),
div ( 'col-sm-8' , [
2015-08-16 20:38:41 +02:00
form_email ( 'mail' , _ ( " E-Mail " ) . ' ' . entry_required (), $mail ),
2016-11-18 15:36:02 +01:00
form_checkbox ( 'email_shiftinfo' , _ ( " The engelsystem is allowed to send me an email (e.g. when my shifts change) " ), $email_shiftinfo ),
2016-11-11 15:24:51 +01:00
form_checkbox ( 'email_by_human_allowed' , _ ( " Humans are allowed to send me an email (e.g. for ticket vouchers) " ), $email_by_human_allowed )
2016-09-29 10:53:17 +02:00
])
]),
div ( 'row' , [
div ( 'col-sm-6' , [
2015-07-12 14:45:58 +02:00
form_date ( 'planned_arrival_date' , _ ( " Planned date of arrival " ) . ' ' . entry_required (), $planned_arrival_date , time ())
2016-09-29 10:53:17 +02:00
]),
div ( 'col-sm-6' , [
2015-07-12 14:45:58 +02:00
$enable_tshirt_size ? form_select ( 'tshirt_size' , _ ( " Shirt size " ) . ' ' . entry_required (), $tshirt_sizes , $tshirt_size ) : ''
2016-09-29 10:53:17 +02:00
])
]),
div ( 'row' , [
div ( 'col-sm-6' , [
2014-08-23 15:35:25 +02:00
form_password ( 'password' , _ ( " Password " ) . ' ' . entry_required ())
2016-09-29 10:53:17 +02:00
]),
div ( 'col-sm-6' , [
2014-08-23 15:35:25 +02:00
form_password ( 'password2' , _ ( " Confirm password " ) . ' ' . entry_required ())
2016-09-29 10:53:17 +02:00
])
]),
2014-08-23 15:35:25 +02:00
form_checkboxes ( 'angel_types' , _ ( " What do you want to do? " ) . sprintf ( " (<a href= \" %s \" >%s</a>) " , page_link_to ( 'angeltypes' ) . '&action=about' , _ ( " Description of job types " )), $angel_types , $selected_angel_types ),
2016-11-24 22:47:32 +01:00
form_info ( " " , _ ( " Restricted angel types need will be confirmed later by a supporter. You can change your selection in the options section. " ))
2016-09-29 10:53:17 +02:00
]),
div ( 'col-md-6' , [
div ( 'row' , [
div ( 'col-sm-4' , [
2014-08-23 15:35:25 +02:00
form_text ( 'dect' , _ ( " DECT " ), $dect )
2016-09-29 10:53:17 +02:00
]),
div ( 'col-sm-4' , [
2014-08-23 15:35:25 +02:00
form_text ( 'mobile' , _ ( " Mobile " ), $mobile )
2016-09-29 10:53:17 +02:00
]),
div ( 'col-sm-4' , [
2014-08-23 15:35:25 +02:00
form_text ( 'tel' , _ ( " Phone " ), $tel )
2016-09-29 10:53:17 +02:00
])
]),
2014-08-23 15:35:25 +02:00
form_text ( 'jabber' , _ ( " Jabber " ), $jabber ),
2016-09-29 10:53:17 +02:00
div ( 'row' , [
div ( 'col-sm-6' , [
2014-08-23 15:35:25 +02:00
form_text ( 'prename' , _ ( " First name " ), $prename )
2016-09-29 10:53:17 +02:00
]),
div ( 'col-sm-6' , [
2014-08-23 15:35:25 +02:00
form_text ( 'lastname' , _ ( " Last name " ), $lastname )
2016-09-29 10:53:17 +02:00
])
]),
div ( 'row' , [
div ( 'col-sm-3' , [
2014-08-23 15:35:25 +02:00
form_text ( 'age' , _ ( " Age " ), $age )
2016-09-29 10:53:17 +02:00
]),
div ( 'col-sm-9' , [
2014-08-23 15:35:25 +02:00
form_text ( 'hometown' , _ ( " Hometown " ), $hometown )
2016-09-29 10:53:17 +02:00
])
]),
2014-08-23 15:35:25 +02:00
form_info ( entry_required () . ' = ' . _ ( " Entry required! " ))
2016-09-29 10:53:17 +02:00
])
]),
2013-11-28 22:40:48 +01:00
// form_textarea('comment', _("Did you help at former CCC events and which tasks have you performed then?"), $comment),
2013-11-25 21:04:58 +01:00
form_submit ( 'submit' , _ ( " Register " ))
2016-09-29 10:53:17 +02:00
])
]);
2011-06-02 00:48:29 +02:00
}
2014-08-23 15:35:25 +02:00
function entry_required () {
return '<span class="text-info glyphicon glyphicon-warning-sign"></span>' ;
}
2011-06-02 00:48:29 +02:00
function guest_logout () {
2012-12-01 11:39:03 +01:00
session_destroy ();
2012-12-30 18:27:45 +01:00
redirect ( page_link_to ( " start " ));
2011-06-02 00:48:29 +02:00
}
function guest_login () {
2012-12-01 11:39:03 +01:00
$nick = " " ;
2013-11-25 21:04:58 +01:00
unset ( $_SESSION [ 'uid' ]);
2016-11-18 15:36:02 +01:00
$valid = true ;
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'submit' ])) {
2013-12-27 19:45:50 +01:00
if ( isset ( $_REQUEST [ 'nick' ]) && strlen ( User_validate_Nick ( $_REQUEST [ 'nick' ])) > 0 ) {
$nick = User_validate_Nick ( $_REQUEST [ 'nick' ]);
2012-12-01 11:39:03 +01:00
$login_user = sql_select ( " SELECT * FROM `User` WHERE `Nick`=' " . sql_escape ( $nick ) . " ' " );
if ( count ( $login_user ) > 0 ) {
$login_user = $login_user [ 0 ];
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'password' ])) {
if ( ! verify_password ( $_REQUEST [ 'password' ], $login_user [ 'Passwort' ], $login_user [ 'UID' ])) {
2016-09-29 12:08:12 +02:00
$valid = false ;
2013-11-28 22:40:48 +01:00
error ( _ ( " Your password is incorrect. Please try it again. " ));
2012-12-01 11:39:03 +01:00
}
} else {
2016-09-29 12:08:12 +02:00
$valid = false ;
2013-11-28 22:40:48 +01:00
error ( _ ( " Please enter a password. " ));
2012-12-01 11:39:03 +01:00
}
} else {
2016-09-29 12:08:12 +02:00
$valid = false ;
2016-11-24 12:22:18 +01:00
error ( _ ( " No user was found with that Nickname. Please try again. If you are still having problems, ask a Dispatcher. " ));
2012-12-01 11:39:03 +01:00
}
} else {
2016-09-29 12:08:12 +02:00
$valid = false ;
2013-11-28 22:40:48 +01:00
error ( _ ( " Please enter a nickname. " ));
2012-12-01 11:39:03 +01:00
}
2013-11-25 21:04:58 +01:00
2016-09-29 12:08:12 +02:00
if ( $valid ) {
2012-12-01 11:39:03 +01:00
$_SESSION [ 'uid' ] = $login_user [ 'UID' ];
2013-11-25 21:04:58 +01:00
$_SESSION [ 'locale' ] = $login_user [ 'Sprache' ];
2015-06-07 13:33:59 +02:00
2012-12-01 11:39:03 +01:00
redirect ( page_link_to ( 'news' ));
}
}
2013-11-25 21:04:58 +01:00
2016-09-29 09:25:06 +02:00
$event_config = EventConfig ();
return page ([
div ( 'col-md-12' , [
div ( 'row' , [
2016-11-18 15:36:02 +01:00
EventConfig_countdown_page ( $event_config )
]),
div ( 'row' , [
2016-11-20 17:54:16 +01:00
div ( 'col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4' , [
2016-11-18 15:36:02 +01:00
div ( 'panel panel-primary first' , [
div ( 'panel-heading' , [
'<span class="icon-icon_angel"></span> ' . _ ( " Login " )
2016-09-29 09:25:06 +02:00
]),
2016-11-18 15:36:02 +01:00
div ( 'panel-body' , [
msg (),
form ([
form_text_placeholder ( 'nick' , _ ( " Nick " ), $nick ),
form_password_placeholder ( 'password' , _ ( " Password " )),
form_submit ( 'submit' , _ ( " Login " )),
! $valid ? buttons ([
button ( page_link_to ( 'user_password_recovery' ), _ ( " I forgot my password " ))
]) : ''
])
]),
div ( 'panel-footer' , [
glyph ( 'info-sign' ) . _ ( " Please note: You have to activate cookies! " )
])
2016-09-29 09:25:06 +02:00
])
2016-11-20 17:54:16 +01:00
])
]),
div ( 'row' , [
div ( 'col-sm-6 text-center' , [
heading ( register_title (), 2 ),
get_register_hint ()
2016-09-29 09:25:06 +02:00
]),
2016-11-20 17:54:16 +01:00
div ( 'col-sm-6 text-center' , [
2016-09-29 09:25:06 +02:00
heading ( _ ( " What can I do? " ), 2 ),
'<p>' . _ ( " Please read about the jobs you can do to help us. " ) . '</p>' ,
2016-09-28 07:28:51 +02:00
buttons ([
2016-09-29 09:25:06 +02:00
button ( page_link_to ( 'angeltypes' ) . '&action=about' , _ ( " Teams/Job description " ) . ' »' )
])
2016-09-28 07:28:51 +02:00
])
])
])
]);
}
function get_register_hint () {
global $privileges ;
2014-09-28 14:14:04 +02:00
if ( in_array ( 'register' , $privileges )) {
2016-09-28 07:28:51 +02:00
return join ( '' , [
2014-09-28 14:14:04 +02:00
'<p>' . _ ( " Please sign up, if you want to help us! " ) . '</p>' ,
2016-09-28 07:28:51 +02:00
buttons ([
2014-09-28 14:14:04 +02:00
button ( page_link_to ( 'register' ), register_title () . ' »' )
2016-09-28 07:28:51 +02:00
])
]);
2014-09-28 14:14:04 +02:00
}
2016-09-28 07:28:51 +02:00
return error ( _ ( " Registration is disabled. " ), true );
2011-06-02 00:48:29 +02:00
}
2011-06-03 11:34:54 +02:00
?>