2011-06-02 20:18:01 +02:00
< ? php
2014-12-06 18:37:34 +01:00
2017-01-21 13:58:53 +01:00
use Engelsystem\Database\DB ;
2017-01-03 03:22:48 +01:00
/**
* @ return string
*/
2017-01-02 03:57:23 +01:00
function settings_title ()
{
2017-01-03 14:12:17 +01:00
return _ ( 'Settings' );
2013-11-25 21:56:56 +01:00
}
2016-11-11 16:34:23 +01:00
/**
* Change user main attributes ( name , dates , etc . )
*
2017-01-03 03:22:48 +01:00
* @ param array $user_source The user
* @ param bool $enable_tshirt_size
* @ param array $tshirt_sizes
* @ return array
2016-11-11 16:34:23 +01:00
*/
2017-01-02 03:57:23 +01:00
function user_settings_main ( $user_source , $enable_tshirt_size , $tshirt_sizes )
{
$valid = true ;
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( isset ( $_REQUEST [ 'mail' ])) {
$result = User_validate_mail ( $_REQUEST [ 'mail' ]);
$user_source [ 'email' ] = $result -> getValue ();
2017-01-02 15:43:36 +01:00
if ( ! $result -> isValid ()) {
2017-01-02 03:57:23 +01:00
$valid = false ;
2017-01-03 14:12:17 +01:00
error ( _ ( 'E-mail address is not correct.' ));
2017-01-02 03:57:23 +01:00
}
} else {
$valid = false ;
2017-01-03 14:12:17 +01:00
error ( _ ( 'Please enter your e-mail.' ));
2012-12-26 19:53:27 +01:00
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$user_source [ 'email_shiftinfo' ] = isset ( $_REQUEST [ 'email_shiftinfo' ]);
$user_source [ 'email_by_human_allowed' ] = isset ( $_REQUEST [ 'email_by_human_allowed' ]);
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( isset ( $_REQUEST [ 'jabber' ])) {
$result = User_validate_jabber ( $_REQUEST [ 'jabber' ]);
$user_source [ 'jabber' ] = $result -> getValue ();
2017-01-02 15:43:36 +01:00
if ( ! $result -> isValid ()) {
2017-01-02 03:57:23 +01:00
$valid = false ;
2017-01-03 14:12:17 +01:00
error ( _ ( 'Please check your jabber account information.' ));
2017-01-02 03:57:23 +01:00
}
2012-12-26 19:53:27 +01:00
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( isset ( $_REQUEST [ 'tshirt_size' ]) && isset ( $tshirt_sizes [ $_REQUEST [ 'tshirt_size' ]])) {
$user_source [ 'Size' ] = $_REQUEST [ 'tshirt_size' ];
} elseif ( $enable_tshirt_size ) {
$valid = false ;
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( isset ( $_REQUEST [ 'planned_arrival_date' ])) {
2017-01-03 14:12:17 +01:00
$tmp = parse_date ( 'Y-m-d H:i' , $_REQUEST [ 'planned_arrival_date' ] . ' 00:00' );
2017-01-02 03:57:23 +01:00
$result = User_validate_planned_arrival_date ( $tmp );
$user_source [ '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 ;
2017-01-03 14:12:17 +01: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
}
2012-12-26 19:53:27 +01:00
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( isset ( $_REQUEST [ 'planned_departure_date' ])) {
2017-01-03 14:12:17 +01:00
$tmp = parse_date ( 'Y-m-d H:i' , $_REQUEST [ 'planned_departure_date' ] . ' 00:00' );
2017-01-02 03:57:23 +01:00
$result = User_validate_planned_departure_date ( $user_source [ 'planned_arrival_date' ], $tmp );
$user_source [ 'planned_departure_date' ] = $result -> getValue ();
2017-01-02 15:43:36 +01:00
if ( ! $result -> isValid ()) {
2017-01-02 03:57:23 +01:00
$valid = false ;
2017-01-03 14:12:17 +01:00
error ( _ ( 'Please enter your planned date of departure. It should be after your planned arrival date and after buildup start date and before teardown end date.' ));
2017-01-02 03:57:23 +01:00
}
2015-07-15 21:53:19 +02:00
}
2017-01-02 15:43:36 +01:00
// Trivia
$user_source [ 'Name' ] = strip_request_item ( 'lastname' , $user_source [ 'Name' ]);
2017-01-02 03:57:23 +01:00
$user_source [ 'Vorname' ] = strip_request_item ( 'prename' , $user_source [ 'Vorname' ]);
$user_source [ 'Alter' ] = strip_request_item ( 'age' , $user_source [ 'Alter' ]);
$user_source [ 'Telefon' ] = strip_request_item ( 'tel' , $user_source [ 'Telefon' ]);
$user_source [ 'DECT' ] = strip_request_item ( 'dect' , $user_source [ 'DECT' ]);
$user_source [ 'Handy' ] = strip_request_item ( 'mobile' , $user_source [ 'Handy' ]);
$user_source [ 'Hometown' ] = strip_request_item ( 'hometown' , $user_source [ 'Hometown' ]);
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( $valid ) {
User_update ( $user_source );
2017-01-03 14:12:17 +01:00
success ( _ ( 'Settings saved.' ));
2017-01-02 03:57:23 +01:00
redirect ( page_link_to ( 'user_settings' ));
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
return $user_source ;
2016-11-11 16:34:23 +01:00
}
/**
* Change user password .
*
2017-01-03 03:22:48 +01:00
* @ param array $user_source The user
2016-11-11 16:34:23 +01:00
*/
2017-01-02 03:57:23 +01:00
function user_settings_password ( $user_source )
{
2017-01-02 15:43:36 +01:00
if (
! isset ( $_REQUEST [ 'password' ])
|| ! verify_password ( $_REQUEST [ 'password' ], $user_source [ 'Passwort' ], $user_source [ 'UID' ])
) {
2017-01-03 14:12:17 +01:00
error ( _ ( '-> not OK. Please try again.' ));
2017-01-21 23:07:20 +01:00
} elseif ( strlen ( $_REQUEST [ 'new_password' ]) < config ( 'min_password_length' )) {
2017-01-03 14:12:17 +01:00
error ( _ ( 'Your password is to short (please use at least 6 characters).' ));
2017-01-02 03:57:23 +01:00
} elseif ( $_REQUEST [ 'new_password' ] != $_REQUEST [ 'new_password2' ]) {
2017-01-03 14:12:17 +01:00
error ( _ ( 'Your passwords don\'t match.' ));
2017-01-02 03:57:23 +01:00
} elseif ( set_password ( $user_source [ 'UID' ], $_REQUEST [ 'new_password' ])) {
2017-01-03 14:12:17 +01:00
success ( _ ( 'Password saved.' ));
2017-01-02 03:57:23 +01:00
} else {
2017-01-03 14:12:17 +01:00
error ( _ ( 'Failed setting password.' ));
2017-01-02 03:57:23 +01:00
}
redirect ( page_link_to ( 'user_settings' ));
2016-11-11 16:34:23 +01:00
}
/**
* Change user theme
*
2017-01-03 03:22:48 +01:00
* @ param array $user_source The user
* @ param array $themes List of available themes
* @ return mixed
2016-11-11 16:34:23 +01:00
*/
2017-01-02 03:57:23 +01:00
function user_settings_theme ( $user_source , $themes )
{
$valid = true ;
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( isset ( $_REQUEST [ 'theme' ]) && isset ( $themes [ $_REQUEST [ 'theme' ]])) {
$user_source [ 'color' ] = $_REQUEST [ 'theme' ];
} else {
$valid = false ;
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( $valid ) {
2017-01-21 13:58:53 +01:00
DB :: update ( '
2017-01-03 14:12:17 +01:00
UPDATE `User`
2017-01-21 13:58:53 +01:00
SET `color` = ?
WHERE `UID` = ?
' ,
[
$user_source [ 'color' ],
$user_source [ 'UID' ],
]
);
2017-01-02 15:43:36 +01:00
2017-01-03 14:12:17 +01:00
success ( _ ( 'Theme changed.' ));
2017-01-02 03:57:23 +01:00
redirect ( page_link_to ( 'user_settings' ));
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
return $user_source ;
2016-11-11 16:34:23 +01:00
}
/**
* Change use locale
*
2017-01-03 03:22:48 +01:00
* @ param array $user_source The user
* @ param array $locales List of available locales
* @ return array
2016-11-11 16:34:23 +01:00
*/
2017-01-02 03:57:23 +01:00
function user_settings_locale ( $user_source , $locales )
{
$valid = true ;
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( isset ( $_REQUEST [ 'language' ]) && isset ( $locales [ $_REQUEST [ 'language' ]])) {
$user_source [ 'Sprache' ] = $_REQUEST [ 'language' ];
} else {
$valid = false ;
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( $valid ) {
2017-01-21 13:58:53 +01:00
DB :: update ( '
2017-01-03 14:12:17 +01:00
UPDATE `User`
2017-01-21 13:58:53 +01:00
SET `Sprache` = ?
WHERE `UID` = ?
' ,
[
$user_source [ 'Sprache' ],
$user_source [ 'UID' ],
]
);
2017-01-02 03:57:23 +01:00
$_SESSION [ 'locale' ] = $user_source [ 'Sprache' ];
2017-01-02 15:43:36 +01:00
2017-01-03 14:12:17 +01:00
success ( 'Language changed.' );
2017-01-02 03:57:23 +01:00
redirect ( page_link_to ( 'user_settings' ));
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
return $user_source ;
2016-11-11 16:34:23 +01:00
}
/**
* Main user settings page / controller
2017-01-03 03:22:48 +01:00
*
* @ return string
2016-11-11 16:34:23 +01:00
*/
2017-01-02 03:57:23 +01:00
function user_settings ()
{
2017-01-21 23:07:20 +01:00
global $themes , $user ;
$enable_tshirt_size = config ( 'enable_tshirt_size' );
$tshirt_sizes = config ( 'tshirt_sizes' );
$locales = config ( 'locales' );
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$buildup_start_date = null ;
$teardown_end_date = null ;
$event_config = EventConfig ();
if ( $event_config != null ) {
if ( isset ( $event_config [ 'buildup_start_date' ])) {
$buildup_start_date = $event_config [ 'buildup_start_date' ];
}
if ( isset ( $event_config [ 'teardown_end_date' ])) {
$teardown_end_date = $event_config [ 'teardown_end_date' ];
}
2016-09-29 10:53:17 +02:00
}
2017-01-02 15:43:36 +01:00
2017-01-21 23:07:20 +01:00
foreach ( $tshirt_sizes as $key => $size ) {
if ( empty ( $size )) {
unset ( $tshirt_sizes [ $key ]);
}
}
2017-01-02 03:57:23 +01:00
$user_source = $user ;
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
if ( isset ( $_REQUEST [ 'submit' ])) {
$user_source = user_settings_main ( $user_source , $enable_tshirt_size , $tshirt_sizes );
} elseif ( isset ( $_REQUEST [ 'submit_password' ])) {
user_settings_password ( $user_source );
} elseif ( isset ( $_REQUEST [ 'submit_theme' ])) {
$user_source = user_settings_theme ( $user_source , $themes );
} elseif ( isset ( $_REQUEST [ 'submit_language' ])) {
$user_source = user_settings_locale ( $user_source , $locales );
}
2017-01-02 15:43:36 +01:00
2017-01-03 14:12:17 +01:00
return User_settings_view (
$user_source ,
$locales ,
$themes ,
$buildup_start_date ,
$teardown_end_date ,
$enable_tshirt_size ,
$tshirt_sizes
);
2011-06-02 20:18:01 +02:00
}