2011-06-02 20:18:01 +02:00
< ? php
2013-11-25 21:56:56 +01:00
function settings_title () {
return _ ( " Settings " );
}
2011-06-02 20:18:01 +02:00
function user_settings () {
2013-11-25 21:04:58 +01:00
global $enable_tshirt_size , $tshirt_sizes , $themes , $locales ;
2012-12-26 19:53:27 +01:00
global $user ;
2013-11-25 21:04:58 +01:00
2012-12-26 19:53:27 +01:00
$msg = " " ;
$nick = $user [ 'Nick' ];
$lastname = $user [ 'Name' ];
$prename = $user [ 'Vorname' ];
$age = $user [ 'Alter' ];
$tel = $user [ 'Telefon' ];
$dect = $user [ 'DECT' ];
$mobile = $user [ 'Handy' ];
$mail = $user [ 'email' ];
$icq = $user [ 'ICQ' ];
$jabber = $user [ 'jabber' ];
$hometown = $user [ 'Hometown' ];
$tshirt_size = $user [ 'Size' ];
$password_hash = " " ;
$selected_theme = $user [ 'color' ];
$selected_language = $user [ 'Sprache' ];
2013-11-25 21:04:58 +01:00
2012-12-26 19:53:27 +01:00
$selected_angel_types_source = sql_select ( " SELECT * FROM `UserAngelTypes` WHERE `user_id`= " . sql_escape ( $user [ 'UID' ]));
2013-11-25 21:04:58 +01:00
$selected_angel_types = array ();
2012-12-26 19:53:27 +01:00
foreach ( $selected_angel_types_source as $selected_angel_type )
$selected_angel_types [] = $selected_angel_type [ 'angeltype_id' ];
2013-11-25 21:04:58 +01:00
2012-12-26 19:53:27 +01:00
$angel_types_source = sql_select ( " SELECT * FROM `AngelTypes` ORDER BY `name` " );
2013-11-25 21:04:58 +01:00
$angel_types = array ();
2012-12-26 19:53:27 +01:00
foreach ( $angel_types_source as $angel_type )
$angel_types [ $angel_type [ 'id' ]] = $angel_type [ 'name' ] . ( $angel_type [ 'restricted' ] ? " (restricted) " : " " );
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'submit' ])) {
2012-12-26 19:53:27 +01:00
$ok = true ;
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'nick' ]) && strlen ( strip_request_item ( 'nick' )) > 1 ) {
2012-12-26 19:53:27 +01:00
$nick = strip_request_item ( 'nick' );
if ( sql_num_query ( " SELECT * FROM `User` WHERE `Nick`=' " . sql_escape ( $nick ) . " ' AND NOT `UID`= " . sql_escape ( $user [ 'UID' ]) . " LIMIT 1 " ) > 0 ) {
$ok = false ;
2013-11-25 21:04:58 +01:00
$msg .= error ( sprintf ( _ ( " Your nick "%s" already exists. " ), $nick ), true );
2012-12-26 19:53:27 +01:00
}
} else {
$ok = false ;
2013-11-25 21:04:58 +01:00
$msg .= error ( sprintf ( _ ( " Your nick "%s" is too short (min. 2 characters). " ), strip_request_item ( 'nick' )), true );
2012-12-26 19:53:27 +01:00
}
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'mail' ]) && strlen ( strip_request_item ( 'mail' )) > 0 ) {
2012-12-26 19:53:27 +01:00
$mail = strip_request_item ( 'mail' );
2013-11-25 21:04:58 +01:00
if ( ! check_email ( $mail )) {
2012-12-26 19:53:27 +01:00
$ok = false ;
2013-11-25 21:04:58 +01:00
$msg .= error ( _ ( " E-mail address is not correct. " ), true );
2012-12-26 19:53:27 +01:00
}
} else {
$ok = false ;
2013-11-25 21:04:58 +01:00
$msg .= error ( _ ( " Please enter your e-mail. " ), true );
2012-12-26 19:53:27 +01:00
}
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'icq' ]))
2012-12-26 19:53:27 +01:00
$icq = strip_request_item ( 'icq' );
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'jabber' ]) && strlen ( strip_request_item ( 'jabber' )) > 0 ) {
2012-12-26 19:53:27 +01:00
$jabber = strip_request_item ( 'jabber' );
2013-11-25 21:04:58 +01:00
if ( ! check_email ( $jabber )) {
2012-12-26 19:53:27 +01:00
$ok = false ;
2013-11-25 21:04:58 +01:00
$msg .= error ( _ ( " Please check your jabber account information. " ), true );
2012-12-26 19:53:27 +01:00
}
}
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'tshirt_size' ]) && isset ( $tshirt_sizes [ $_REQUEST [ 'tshirt_size' ]]))
2012-12-26 19:53:27 +01:00
$tshirt_size = $_REQUEST [ 'tshirt_size' ];
2013-11-25 21:04:58 +01:00
elseif ( $enable_tshirt_size ) {
2012-12-26 19:53:27 +01:00
$ok = false ;
}
2013-11-25 21:04:58 +01:00
$selected_angel_types = array ();
2012-12-26 19:53:27 +01:00
foreach ( $angel_types as $angel_type_id => $angel_type_name )
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'angel_types_' . $angel_type_id ]))
$selected_angel_types [] = $angel_type_id ;
// Trivia
if ( isset ( $_REQUEST [ 'lastname' ]))
2012-12-26 19:53:27 +01:00
$lastname = strip_request_item ( 'lastname' );
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'prename' ]))
2012-12-26 19:53:27 +01:00
$prename = strip_request_item ( 'prename' );
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'age' ]) && preg_match ( " /^[0-9] { 0,4} $ / " , $_REQUEST [ 'age' ]))
2012-12-26 19:53:27 +01:00
$age = strip_request_item ( 'age' );
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'tel' ]))
2012-12-26 19:53:27 +01:00
$tel = strip_request_item ( 'tel' );
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'dect' ]))
2012-12-26 19:53:27 +01:00
$dect = strip_request_item ( 'dect' );
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'mobile' ]))
2012-12-26 19:53:27 +01:00
$mobile = strip_request_item ( 'mobile' );
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'hometown' ]))
2012-12-26 19:53:27 +01:00
$hometown = strip_request_item ( 'hometown' );
2013-11-25 21:04:58 +01:00
2012-12-26 19:53:27 +01:00
if ( $ok ) {
2013-11-25 21:04:58 +01:00
sql_query ( " UPDATE `User` SET `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 ) . " ', `ICQ`=' " . sql_escape ( $icq ) . " ', `jabber`=' " . sql_escape ( $jabber ) . " ', `Size`=' " . sql_escape ( $tshirt_size ) . " ', `Hometown`=' " . sql_escape ( $hometown ) . " ' WHERE `UID`= " . sql_escape ( $user [ 'UID' ]));
2012-12-26 19:53:27 +01:00
// Assign angel-types
$user_angel_type_info = array ();
2012-12-28 17:47:02 +01:00
sql_query ( " DELETE FROM `UserAngelTypes` WHERE `user_id`=' " . sql_escape ( $user [ 'UID' ]) . " ' AND `angeltype_id` IN ( " . implode ( " , " , array_diff ( array_keys ( $angel_types ), $selected_angel_types )) . " ) " );
foreach ( $angel_types_source as $angel_type )
if ( in_array ( $angel_type [ 'id' ], $selected_angel_types ))
2012-12-26 19:53:27 +01:00
$user_angel_type_info [] = $angel_type [ 'name' ];
2013-11-25 21:04:58 +01:00
2012-12-26 19:53:27 +01:00
foreach ( $selected_angel_types as $selected_angel_type_id ) {
if ( sql_num_query ( " SELECT * FROM `UserAngelTypes` WHERE `user_id`= " . sql_escape ( $user [ 'UID' ]) . " AND `angeltype_id`= " . sql_escape ( $selected_angel_type_id ) . " LIMIT 1 " ) == 0 )
sql_query ( " INSERT INTO `UserAngelTypes` SET `user_id`= " . sql_escape ( $user [ 'UID' ]) . " , `angeltype_id`= " . sql_escape ( $selected_angel_type_id ));
}
2013-11-25 21:04:58 +01:00
2012-12-26 19:53:27 +01:00
engelsystem_log ( " Own angel types set to: " . join ( " , " , $user_angel_type_info ));
2013-11-25 21:56:56 +01:00
success ( _ ( " Settings saved. " ));
2012-12-26 19:53:27 +01:00
redirect ( page_link_to ( 'user_settings' ));
}
2013-11-25 21:04:58 +01:00
} elseif ( isset ( $_REQUEST [ 'submit_password' ])) {
2012-12-26 19:53:27 +01:00
$ok = true ;
2013-11-25 21:04:58 +01:00
if ( ! isset ( $_REQUEST [ 'password' ]) || ! verify_password ( $_REQUEST [ 'password' ], $user [ 'Passwort' ], $user [ 'UID' ]))
$msg .= error ( _ ( " -> not OK. Please try again. " ), true );
2012-12-26 19:53:27 +01:00
elseif ( strlen ( $_REQUEST [ 'new_password' ]) < MIN_PASSWORD_LENGTH )
2013-11-25 21:04:58 +01:00
$msg .= error ( _ ( " Your password is to short (please use at least 6 characters). " ), true );
2012-12-26 19:53:27 +01:00
elseif ( $_REQUEST [ 'new_password' ] != $_REQUEST [ 'new_password2' ])
2013-11-25 21:04:58 +01:00
$msg .= error ( _ ( " Your passwords don't match. " ), true );
elseif ( set_password ( $user [ 'UID' ], $_REQUEST [ 'new_password' ]))
success ( _ ( " Password saved. " ));
2012-12-26 19:53:27 +01:00
else
2013-11-25 21:04:58 +01:00
error ( _ ( " Failed setting password. " ));
2012-12-26 19:53:27 +01:00
redirect ( page_link_to ( 'user_settings' ));
2013-11-25 21:04:58 +01:00
} elseif ( isset ( $_REQUEST [ 'submit_theme' ])) {
2012-12-26 19:53:27 +01:00
$ok = true ;
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'theme' ]) && isset ( $themes [ $_REQUEST [ 'theme' ]]))
2012-12-26 19:53:27 +01:00
$selected_theme = $_REQUEST [ 'theme' ];
else
$ok = false ;
2013-11-25 21:04:58 +01:00
2012-12-26 19:53:27 +01:00
if ( $ok ) {
sql_query ( " UPDATE `User` SET `color`=' " . sql_escape ( $selected_theme ) . " ' WHERE `UID`= " . sql_escape ( $user [ 'UID' ]));
2013-11-25 21:04:58 +01:00
2013-11-28 22:40:48 +01:00
success ( _ ( " Theme changed. " ));
2012-12-26 19:53:27 +01:00
redirect ( page_link_to ( 'user_settings' ));
}
2013-11-25 21:04:58 +01:00
} elseif ( isset ( $_REQUEST [ 'submit_language' ])) {
2012-12-26 19:53:27 +01:00
$ok = true ;
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'language' ]) && isset ( $locales [ $_REQUEST [ 'language' ]]))
2012-12-26 19:53:27 +01:00
$selected_language = $_REQUEST [ 'language' ];
else
$ok = false ;
2013-11-25 21:04:58 +01:00
2012-12-26 19:53:27 +01:00
if ( $ok ) {
sql_query ( " UPDATE `User` SET `Sprache`=' " . sql_escape ( $selected_language ) . " ' WHERE `UID`= " . sql_escape ( $user [ 'UID' ]));
2013-11-25 21:04:58 +01:00
$_SESSION [ 'locale' ] = $selected_language ;
2012-12-26 19:53:27 +01:00
success ( " Language changed. " );
redirect ( page_link_to ( 'user_settings' ));
}
}
2013-11-25 21:04:58 +01:00
return page ( array (
sprintf ( _ ( " Hello %s, here you can change your personal settings i.e. password, color settings etc. " ), User_Nick_render ( $user )),
$msg ,
msg (),
form ( array (
form_info ( " " , _ ( " Here you can change your user details. " )),
form_text ( 'nick' , _ ( " Nick " ) . " * " , $nick ),
form_text ( 'lastname' , _ ( " Last name " ), $lastname ),
form_text ( 'prename' , _ ( " First name " ), $prename ),
form_text ( 'age' , _ ( " Age " ), $age ),
form_text ( 'tel' , _ ( " Phone " ), $tel ),
form_text ( 'dect' , _ ( " DECT " ), $tel ),
form_text ( 'mobile' , _ ( " Mobile " ), $mobile ),
form_text ( 'mail' , _ ( " E-Mail " ) . " * " , $mail ),
form_text ( 'icq' , _ ( " ICQ " ), $icq ),
form_text ( 'jabber' , _ ( " Jabber " ), $jabber ),
form_text ( 'hometown' , _ ( " Hometown " ), $hometown ),
$enable_tshirt_size ? form_select ( 'tshirt_size' , _ ( " Shirt size " ), $tshirt_sizes , $tshirt_size ) : '' ,
form_checkboxes ( 'angel_types' , _ ( " What do you want to do? " ) . sprintf ( " <br>(<a href= \" https://events.ccc.de/congress/2012/wiki/Volunteers#What_kind_of_volunteers_are_needed.3F \" >%s</a>) " , _ ( " Description of job types " )), $angel_types , $selected_angel_types ),
form_submit ( 'submit' , _ ( " Save " ))
)),
form ( array (
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 ( array (
form_info ( " " , _ ( " Here you can choose your color settings: " )),
form_select ( 'theme' , _ ( " Color settings: " ), $themes , $selected_theme ),
form_submit ( 'submit_theme' , _ ( " Save " ))
)),
form ( array (
form_info ( " " , _ ( " Here you can choose your language: " )),
form_select ( 'language' , _ ( " Language: " ), $locales , $selected_language ),
form_submit ( 'submit_language' , _ ( " Save " ))
))
2012-12-26 19:53:27 +01:00
));
2011-06-02 20:18:01 +02:00
}
?>