2011-06-02 20:18:01 +02:00
< ? php
2014-12-06 18:37:34 +01:00
2013-11-25 21:56:56 +01:00
function settings_title () {
return _ ( " Settings " );
}
2011-06-02 20:18:01 +02:00
function user_settings () {
2014-03-09 13:39:04 +01:00
global $enable_tshirt_size , $tshirt_sizes , $themes , $locales ;
2012-12-26 19:53:27 +01:00
global $user ;
2014-12-16 00:16:10 +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' ];
2014-12-06 18:37:34 +01:00
$email_shiftinfo = $user [ 'email_shiftinfo' ];
2012-12-26 19:53:27 +01:00
$jabber = $user [ 'jabber' ];
$hometown = $user [ 'Hometown' ];
$tshirt_size = $user [ 'Size' ];
$password_hash = " " ;
$selected_theme = $user [ 'color' ];
$selected_language = $user [ 'Sprache' ];
2014-12-16 00:16:10 +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' ]));
2014-12-16 00:16:10 +01:00
$selected_angel_types_source_ids = array ();
2013-11-25 21:04:58 +01:00
$selected_angel_types = array ();
2014-12-16 00:16:10 +01:00
foreach ( $selected_angel_types_source as $selected_angel_type ) {
2012-12-26 19:53:27 +01:00
$selected_angel_types [] = $selected_angel_type [ 'angeltype_id' ];
2014-12-16 00:16:10 +01:00
$selected_angel_types_source_ids [] = $selected_angel_type [ 'angeltype_id' ];
}
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) " : " " );
2014-12-16 00:16:10 +01:00
2013-11-25 21:04:58 +01:00
if ( isset ( $_REQUEST [ 'submit' ])) {
2012-12-26 19:53:27 +01:00
$ok = true ;
2014-12-16 00:16:10 +01:00
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
}
2014-12-16 00:16:10 +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
}
2014-12-16 00:16:10 +01:00
2014-12-06 18:37:34 +01:00
$email_shiftinfo = isset ( $_REQUEST [ 'email_shiftinfo' ]);
2014-12-16 00:16:10 +01:00
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
}
}
2014-12-16 00:16:10 +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 ;
}
2014-12-16 00:16:10 +01:00
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 ;
2014-12-16 00:16:10 +01:00
2013-11-25 21:04:58 +01:00
// 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' );
2014-12-16 00:16:10 +01:00
2012-12-26 19:53:27 +01:00
if ( $ok ) {
2014-12-06 18:37:34 +01:00
sql_query ( "
2014-12-16 00:16:10 +01:00
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) . "' ,
2014-12-06 18:37:34 +01:00
`email_shiftinfo` = " . sql_escape( $email_shiftinfo ? 'TRUE' : 'FALSE') . " ,
2014-12-16 00:16:10 +01:00
`jabber` = '" . sql_escape($jabber) . "' ,
`Size` = '" . sql_escape($tshirt_size) . "' ,
`Hometown` = '" . sql_escape($hometown) . "'
2014-12-06 18:37:34 +01:00
WHERE `UID` = " . sql_escape( $user['UID'] ));
2014-12-16 00:16:10 +01:00
2012-12-26 19:53:27 +01:00
// Assign angel-types
2014-12-16 00:16:10 +01:00
$deleted_angel_type_names = array ();
$added_angel_type_names = array ();
foreach ( $selected_angel_types_source as $source_angel_type ) {
if ( ! in_array ( $source_angel_type [ " angeltype_id " ], $selected_angel_types )) {
$deleted_angel_type_names [] = $angel_types [ $source_angel_type [ " angeltype_id " ]];
sql_query ( " DELETE FROM `UserAngelTypes` WHERE `user_id`=' " . sql_escape ( $user [ 'UID' ]) . " ' AND `angeltype_id` = " . sql_escape ( $source_angel_type [ " angeltype_id " ]));
}
}
foreach ( $selected_angel_types as $selected_angel_type ) {
if ( ! in_array ( $selected_angel_type , $selected_angel_types_source_ids )) {
$added_angel_type_names [] = $angel_types [ $selected_angel_type ];
sql_query ( " INSERT INTO `UserAngelTypes` SET `user_id`= " . sql_escape ( $user [ 'UID' ]) . " , `angeltype_id`= " . sql_escape ( $selected_angel_type ));
}
2012-12-26 19:53:27 +01:00
}
2014-12-16 00:16:10 +01:00
if ( count ( $deleted_angel_type_names ) > 0 || count ( $added_angel_type_names ) > 0 ) {
$log_message = " User changed his own Angel Types. " ;
if ( count ( $deleted_angel_type_names ) > 0 ) {
$log_message .= " Removed: " . implode ( " , " , $deleted_angel_type_names ) . " " ;
}
if ( count ( $added_angel_type_names ) > 0 ) {
$log_message .= " Added: " . implode ( " , " , $added_angel_type_names );
}
engelsystem_log ( $log_message );
}
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 ;
2014-12-16 00:16:10 +01:00
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 ;
2014-12-16 00:16:10 +01:00
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 ;
2014-12-16 00:16:10 +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' ]));
2014-12-16 00:16:10 +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 ;
2014-12-16 00:16:10 +01:00
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 ;
2014-12-16 00:16:10 +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 ;
2014-12-16 00:16:10 +01:00
2012-12-26 19:53:27 +01:00
success ( " Language changed. " );
redirect ( page_link_to ( 'user_settings' ));
}
}
2014-12-16 00:16:10 +01:00
2014-08-22 22:34:13 +02:00
return page_with_title ( settings_title (), array (
2013-11-25 21:04:58 +01:00
sprintf ( _ ( " Hello %s, here you can change your personal settings i.e. password, color settings etc. " ), User_Nick_render ( $user )),
$msg ,
msg (),
2014-08-23 14:30:45 +02:00
div ( 'row' , array (
div ( 'col-md-6' , array (
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 " ), $dect ),
form_text ( 'mobile' , _ ( " Mobile " ), $mobile ),
form_text ( 'mail' , _ ( " E-Mail " ) . " * " , $mail ),
2014-12-06 18:37:34 +01:00
form_checkbox ( 'email_shiftinfo' , _ ( " Please send me an email if my shifts change " ), $email_shiftinfo ),
2014-08-23 14:30:45 +02:00
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 ( " (<a href= \" %s \" >%s</a>) " , page_link_to ( 'angeltypes' ) . '&action=about' , _ ( " Description of job types " )), $angel_types , $selected_angel_types ),
2014-12-16 00:16:10 +01:00
form_submit ( 'submit' , _ ( " Save " ))
))
2014-08-23 14:30:45 +02:00
)),
div ( 'col-md-6' , array (
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: " )),
2014-12-16 00:16:10 +01:00
form_submit ( 'submit_password' , _ ( " Save " ))
2014-08-23 14:30:45 +02:00
)),
form ( array (
form_info ( _ ( " Here you can choose your color settings: " )),
form_select ( 'theme' , _ ( " Color settings: " ), $themes , $selected_theme ),
2014-12-16 00:16:10 +01:00
form_submit ( 'submit_theme' , _ ( " Save " ))
2014-08-23 14:30:45 +02:00
)),
form ( array (
form_info ( _ ( " Here you can choose your language: " )),
form_select ( 'language' , _ ( " Language: " ), $locales , $selected_language ),
2014-12-16 00:16:10 +01:00
form_submit ( 'submit_language' , _ ( " Save " ))
))
))
))
2012-12-26 19:53:27 +01:00
));
2011-06-02 20:18:01 +02:00
}
?>