2010-07-02 01:48:07 +02:00
< ? php
2012-03-30 15:45:02 +02:00
function get_theme_config_file ( $theme ){
$a = get_app ();
$base_theme = $a -> theme_info [ 'extends' ];
if ( file_exists ( " view/theme/ $theme /config.php " )){
return " view/theme/ $theme /config.php " ;
}
if ( file_exists ( " view/theme/ $base_theme /config.php " )){
return " view/theme/ $base_theme /config.php " ;
}
return null ;
}
2010-07-02 01:48:07 +02:00
function settings_init ( & $a ) {
2012-05-28 06:01:58 +02:00
2011-11-29 00:11:59 +01:00
// These lines provide the javascript needed by the acl selector
2012-07-28 17:57:16 +02:00
$tpl = get_markup_template ( " settings-head.tpl " );
$a -> page [ 'htmlhead' ] .= replace_macros ( $tpl , array (
'$ispublic' => t ( 'everybody' )
));
2011-06-02 07:06:53 +02:00
2012-04-12 08:38:55 +02:00
$tabs = array (
array (
'label' => t ( 'Account settings' ),
'url' => $a -> get_baseurl ( true ) . '/settings' ,
'selected' => (( $a -> argc == 1 ) ? 'active' : '' ),
2013-03-05 00:46:11 +01:00
),
2012-11-22 17:14:22 +01:00
array (
'label' => t ( 'Additional features' ),
'url' => $a -> get_baseurl ( true ) . '/settings/features' ,
'selected' => (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] === 'features' ) ? 'active' : '' ),
),
2012-04-12 08:38:55 +02:00
array (
'label' => t ( 'Display settings' ),
'url' => $a -> get_baseurl ( true ) . '/settings/display' ,
'selected' => (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] === 'display' ) ? 'active' : '' ),
2013-03-05 00:46:11 +01:00
),
2012-04-12 08:38:55 +02:00
array (
'label' => t ( 'Connector settings' ),
'url' => $a -> get_baseurl ( true ) . '/settings/connectors' ,
'selected' => (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] === 'connectors' ) ? 'active' : '' ),
),
array (
'label' => t ( 'Plugin settings' ),
'url' => $a -> get_baseurl ( true ) . '/settings/addon' ,
'selected' => (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] === 'addon' ) ? 'active' : '' ),
),
array (
'label' => t ( 'Connected apps' ),
'url' => $a -> get_baseurl ( true ) . '/settings/oauth' ,
'selected' => (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] === 'oauth' ) ? 'active' : '' ),
),
array (
'label' => t ( 'Export personal data' ),
'url' => $a -> get_baseurl ( true ) . '/uexport' ,
'selected' => ''
2012-04-26 17:21:27 +02:00
),
array (
'label' => t ( 'Remove account' ),
'url' => $a -> get_baseurl ( true ) . '/removeme' ,
'selected' => ''
2012-04-12 08:38:55 +02:00
)
);
2013-03-05 00:46:11 +01:00
2012-04-12 08:38:55 +02:00
$tabtpl = get_markup_template ( " generic_links_widget.tpl " );
$a -> page [ 'aside' ] = replace_macros ( $tabtpl , array (
'$title' => t ( 'Settings' ),
2012-05-29 04:17:06 +02:00
'$class' => 'settings-widget' ,
2012-04-12 08:38:55 +02:00
'$items' => $tabs ,
));
2010-07-02 01:48:07 +02:00
}
function settings_post ( & $a ) {
2012-01-27 01:52:12 +01:00
if ( ! local_user ())
return ;
if ( x ( $_SESSION , 'submanage' ) && intval ( $_SESSION [ 'submanage' ]))
2010-07-02 01:48:07 +02:00
return ;
2010-12-23 05:23:41 +01:00
2010-10-18 23:34:59 +02:00
if ( count ( $a -> user ) && x ( $a -> user , 'uid' ) && $a -> user [ 'uid' ] != local_user ()) {
2010-08-08 08:54:22 +02:00
notice ( t ( 'Permission denied.' ) . EOL );
2010-07-02 01:48:07 +02:00
return ;
}
2011-01-05 22:10:47 +01:00
2012-02-28 08:27:16 +01:00
$old_page_flags = $a -> user [ 'page-flags' ];
2011-11-07 17:38:30 +01:00
if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] === 'oauth' ) && x ( $_POST , 'remove' )){
2012-03-12 21:17:37 +01:00
check_form_security_token_redirectOnErr ( '/settings/oauth' , 'settings_oauth' );
2013-03-05 00:46:11 +01:00
2011-11-07 17:38:30 +01:00
$key = $_POST [ 'remove' ];
q ( " DELETE FROM tokens WHERE id='%s' AND uid=%d " ,
dbesc ( $key ),
local_user ());
2012-03-15 05:20:20 +01:00
goaway ( $a -> get_baseurl ( true ) . " /settings/oauth/ " );
2013-03-05 00:46:11 +01:00
return ;
2011-11-07 17:38:30 +01:00
}
2011-11-07 17:54:46 +01:00
if (( $a -> argc > 2 ) && ( $a -> argv [ 1 ] === 'oauth' ) && ( $a -> argv [ 2 ] === 'edit' || ( $a -> argv [ 2 ] === 'add' )) && x ( $_POST , 'submit' )) {
2013-03-05 00:46:11 +01:00
2012-03-12 21:17:37 +01:00
check_form_security_token_redirectOnErr ( '/settings/oauth' , 'settings_oauth' );
2013-03-05 00:46:11 +01:00
2011-11-07 17:38:30 +01:00
$name = (( x ( $_POST , 'name' )) ? $_POST [ 'name' ] : '' );
$key = (( x ( $_POST , 'key' )) ? $_POST [ 'key' ] : '' );
$secret = (( x ( $_POST , 'secret' )) ? $_POST [ 'secret' ] : '' );
$redirect = (( x ( $_POST , 'redirect' )) ? $_POST [ 'redirect' ] : '' );
$icon = (( x ( $_POST , 'icon' )) ? $_POST [ 'icon' ] : '' );
if ( $name == " " || $key == " " || $secret == " " ){
notice ( t ( " Missing some important data! " ));
2013-03-05 00:46:11 +01:00
2011-11-07 17:38:30 +01:00
} else {
if ( $_POST [ 'submit' ] == t ( " Update " )){
$r = q ( " UPDATE clients SET
client_id = '%s' ,
pw = '%s' ,
name = '%s' ,
redirect_uri = '%s' ,
icon = '%s' ,
uid =% d
WHERE client_id = '%s' " ,
dbesc ( $key ),
dbesc ( $secret ),
dbesc ( $name ),
dbesc ( $redirect ),
dbesc ( $icon ),
local_user (),
dbesc ( $key ));
} else {
$r = q ( " INSERT INTO clients
( client_id , pw , name , redirect_uri , icon , uid )
VALUES ( '%s' , '%s' , '%s' , '%s' , '%s' , % d ) " ,
dbesc ( $key ),
dbesc ( $secret ),
dbesc ( $name ),
dbesc ( $redirect ),
dbesc ( $icon ),
local_user ());
}
}
2012-03-15 05:20:20 +01:00
goaway ( $a -> get_baseurl ( true ) . " /settings/oauth/ " );
2011-11-07 17:38:30 +01:00
return ;
}
2011-01-05 22:10:47 +01:00
if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] == 'addon' )) {
2012-03-12 21:17:37 +01:00
check_form_security_token_redirectOnErr ( '/settings/addon' , 'settings_addon' );
2011-01-05 22:10:47 +01:00
call_hooks ( 'plugin_settings_post' , $_POST );
return ;
}
2011-10-12 03:24:37 +02:00
if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] == 'connectors' )) {
2012-03-12 21:17:37 +01:00
check_form_security_token_redirectOnErr ( '/settings/connectors' , 'settings_connectors' );
if ( x ( $_POST , 'imap-submit' )) {
2012-02-26 23:39:29 +01:00
$mail_server = (( x ( $_POST , 'mail_server' )) ? $_POST [ 'mail_server' ] : '' );
$mail_port = (( x ( $_POST , 'mail_port' )) ? $_POST [ 'mail_port' ] : '' );
$mail_ssl = (( x ( $_POST , 'mail_ssl' )) ? strtolower ( trim ( $_POST [ 'mail_ssl' ])) : '' );
$mail_user = (( x ( $_POST , 'mail_user' )) ? $_POST [ 'mail_user' ] : '' );
$mail_pass = (( x ( $_POST , 'mail_pass' )) ? trim ( $_POST [ 'mail_pass' ]) : '' );
$mail_action = (( x ( $_POST , 'mail_action' )) ? trim ( $_POST [ 'mail_action' ]) : '' );
$mail_movetofolder = (( x ( $_POST , 'mail_movetofolder' )) ? trim ( $_POST [ 'mail_movetofolder' ]) : '' );
$mail_replyto = (( x ( $_POST , 'mail_replyto' )) ? $_POST [ 'mail_replyto' ] : '' );
$mail_pubmail = (( x ( $_POST , 'mail_pubmail' )) ? $_POST [ 'mail_pubmail' ] : '' );
2011-10-12 03:24:37 +02:00
$mail_disabled = (( function_exists ( 'imap_open' ) && ( ! get_config ( 'system' , 'imap_disabled' ))) ? 0 : 1 );
if ( get_config ( 'system' , 'dfrn_only' ))
$mail_disabled = 1 ;
if ( ! $mail_disabled ) {
$failed = false ;
$r = q ( " SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1 " ,
intval ( local_user ())
);
if ( ! count ( $r )) {
q ( " INSERT INTO `mailacct` (`uid`) VALUES (%d) " ,
intval ( local_user ())
);
}
if ( strlen ( $mail_pass )) {
$pass = '' ;
openssl_public_encrypt ( $mail_pass , $pass , $a -> user [ 'pubkey' ]);
q ( " UPDATE `mailacct` SET `pass` = '%s' WHERE `uid` = %d LIMIT 1 " ,
dbesc ( bin2hex ( $pass )),
intval ( local_user ())
);
}
$r = q ( " UPDATE `mailacct` SET `server` = '%s', `port` = %d, `ssltype` = '%s', `user` = '%s',
2012-02-26 23:39:29 +01:00
`action` = % d , `movetofolder` = '%s' ,
2011-10-12 03:24:37 +02:00
`mailbox` = 'INBOX' , `reply_to` = '%s' , `pubmail` = % d WHERE `uid` = % d LIMIT 1 " ,
dbesc ( $mail_server ),
intval ( $mail_port ),
dbesc ( $mail_ssl ),
dbesc ( $mail_user ),
2012-02-26 23:39:29 +01:00
intval ( $mail_action ),
dbesc ( $mail_movetofolder ),
2011-10-12 03:24:37 +02:00
dbesc ( $mail_replyto ),
intval ( $mail_pubmail ),
intval ( local_user ())
);
2012-12-18 00:47:55 +01:00
logger ( " mail: updating mailaccount. Response: " . print_r ( $r , true ));
2011-10-12 03:24:37 +02:00
$r = q ( " SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1 " ,
intval ( local_user ())
);
if ( count ( $r )) {
$eacct = $r [ 0 ];
require_once ( 'include/email.php' );
$mb = construct_mailbox_name ( $eacct );
if ( strlen ( $eacct [ 'server' ])) {
$dcrpass = '' ;
openssl_private_decrypt ( hex2bin ( $eacct [ 'pass' ]), $dcrpass , $a -> user [ 'prvkey' ]);
$mbox = email_connect ( $mb , $mail_user , $dcrpass );
unset ( $dcrpass );
if ( ! $mbox ) {
$failed = true ;
notice ( t ( 'Failed to connect with email account using the settings provided.' ) . EOL );
}
}
}
if ( ! $failed )
info ( t ( 'Email settings updated.' ) . EOL );
}
}
call_hooks ( 'connector_settings_post' , $_POST );
return ;
}
2013-03-05 00:46:11 +01:00
2012-11-22 17:14:22 +01:00
if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] === 'features' )) {
check_form_security_token_redirectOnErr ( '/settings/features' , 'settings_features' );
foreach ( $_POST as $k => $v ) {
if ( strpos ( $k , 'feature_' ) === 0 ) {
set_pconfig ( local_user (), 'feature' , substr ( $k , 8 ),(( intval ( $v )) ? 1 : 0 ));
}
}
info ( t ( 'Features updated' ) . EOL );
return ;
}
if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] === 'display' )) {
2013-03-05 00:46:11 +01:00
2012-03-30 15:45:02 +02:00
check_form_security_token_redirectOnErr ( '/settings/display' , 'settings_display' );
$theme = (( x ( $_POST , 'theme' )) ? notags ( trim ( $_POST [ 'theme' ])) : $a -> user [ 'theme' ]);
2012-09-07 01:24:34 +02:00
$mobile_theme = (( x ( $_POST , 'mobile_theme' )) ? notags ( trim ( $_POST [ 'mobile_theme' ])) : '' );
2012-03-30 15:45:02 +02:00
$nosmile = (( x ( $_POST , 'nosmile' )) ? intval ( $_POST [ 'nosmile' ]) : 0 );
$browser_update = (( x ( $_POST , 'browser_update' )) ? intval ( $_POST [ 'browser_update' ]) : 0 );
$browser_update = $browser_update * 1000 ;
if ( $browser_update < 10000 )
2012-09-07 01:24:34 +02:00
$browser_update = 10000 ;
2012-03-30 15:45:02 +02:00
$itemspage_network = (( x ( $_POST , 'itemspage_network' )) ? intval ( $_POST [ 'itemspage_network' ]) : 40 );
if ( $itemspage_network > 100 )
2012-09-07 01:24:34 +02:00
$itemspage_network = 100 ;
2012-03-30 15:45:02 +02:00
2012-09-07 01:24:34 +02:00
if ( $mobile_theme !== '' ) {
set_pconfig ( local_user (), 'system' , 'mobile_theme' , $mobile_theme );
}
2012-03-30 15:45:02 +02:00
set_pconfig ( local_user (), 'system' , 'update_interval' , $browser_update );
set_pconfig ( local_user (), 'system' , 'itemspage_network' , $itemspage_network );
set_pconfig ( local_user (), 'system' , 'no_smilies' , $nosmile );
if ( $theme == $a -> user [ 'theme' ]){
2012-04-04 07:01:52 +02:00
// call theme_post only if theme has not been changed
2012-03-30 15:45:02 +02:00
if ( ( $themeconfigfile = get_theme_config_file ( $theme )) != null ){
require_once ( $themeconfigfile );
theme_post ( $a );
}
}
$r = q ( " UPDATE `user` SET `theme` = '%s' WHERE `uid` = %d LIMIT 1 " ,
dbesc ( $theme ),
intval ( local_user ())
);
2012-04-04 07:01:52 +02:00
call_hooks ( 'display_settings_post' , $_POST );
2012-03-30 15:45:02 +02:00
goaway ( $a -> get_baseurl ( true ) . '/settings/display' );
return ; // NOTREACHED
}
2011-10-12 03:24:37 +02:00
2012-03-12 21:17:37 +01:00
check_form_security_token_redirectOnErr ( '/settings' , 'settings' );
2011-01-05 22:10:47 +01:00
call_hooks ( 'settings_post' , $_POST );
2010-08-20 07:18:06 +02:00
if (( x ( $_POST , 'npassword' )) || ( x ( $_POST , 'confirm' ))) {
2010-07-02 01:48:07 +02:00
2010-10-10 01:19:52 +02:00
$newpass = $_POST [ 'npassword' ];
2013-04-14 17:22:42 +02:00
$confirm = $_POST [ 'confirm' ];
$oldpass = hash ( 'whirlpool' , $_POST [ 'opassword' ]);
2010-07-02 01:48:07 +02:00
$err = false ;
if ( $newpass != $confirm ) {
2010-08-08 08:54:22 +02:00
notice ( t ( 'Passwords do not match. Password unchanged.' ) . EOL );
2010-07-02 01:48:07 +02:00
$err = true ;
}
if (( ! x ( $newpass )) || ( ! x ( $confirm ))) {
2010-08-08 08:54:22 +02:00
notice ( t ( 'Empty passwords are not allowed. Password unchanged.' ) . EOL );
2010-07-02 01:48:07 +02:00
$err = true ;
2013-04-14 17:22:42 +02:00
}
$r = q ( " SELECT `password` FROM `user`WHERE `uid` = %d LIMIT 1 " , intval ( local_user ()));
if ( $oldpass != $r [ 0 ][ 'password' ] ) {
notice ( t ( 'Wrong password.' ) . EOL );
$err = true ;
}
2010-07-02 01:48:07 +02:00
if ( ! $err ) {
$password = hash ( 'whirlpool' , $newpass );
$r = q ( " UPDATE `user` SET `password` = '%s' WHERE `uid` = %d LIMIT 1 " ,
dbesc ( $password ),
2010-10-18 23:34:59 +02:00
intval ( local_user ())
2010-09-09 05:52:43 +02:00
);
2010-07-02 01:48:07 +02:00
if ( $r )
2011-05-23 11:39:57 +02:00
info ( t ( 'Password changed.' ) . EOL );
2010-07-02 01:48:07 +02:00
else
2010-08-08 08:54:22 +02:00
notice ( t ( 'Password update failed. Please try again.' ) . EOL );
2010-07-02 01:48:07 +02:00
}
}
2012-03-30 15:45:02 +02:00
2010-11-18 00:41:18 +01:00
$username = (( x ( $_POST , 'username' )) ? notags ( trim ( $_POST [ 'username' ])) : '' );
$email = (( x ( $_POST , 'email' )) ? notags ( trim ( $_POST [ 'email' ])) : '' );
$timezone = (( x ( $_POST , 'timezone' )) ? notags ( trim ( $_POST [ 'timezone' ])) : '' );
$defloc = (( x ( $_POST , 'defloc' )) ? notags ( trim ( $_POST [ 'defloc' ])) : '' );
$openid = (( x ( $_POST , 'openid_url' )) ? notags ( trim ( $_POST [ 'openid_url' ])) : '' );
2010-12-20 09:27:00 +01:00
$maxreq = (( x ( $_POST , 'maxreq' )) ? intval ( $_POST [ 'maxreq' ]) : 0 );
2011-03-16 01:31:49 +01:00
$expire = (( x ( $_POST , 'expire' )) ? intval ( $_POST [ 'expire' ]) : 0 );
2012-05-18 07:44:52 +02:00
$def_gid = (( x ( $_POST , 'group-selection' )) ? intval ( $_POST [ 'group-selection' ]) : 0 );
2012-02-26 23:39:29 +01:00
2011-11-17 15:53:59 +01:00
$expire_items = (( x ( $_POST , 'expire_items' )) ? intval ( $_POST [ 'expire_items' ]) : 0 );
$expire_notes = (( x ( $_POST , 'expire_notes' )) ? intval ( $_POST [ 'expire_notes' ]) : 0 );
2011-11-22 04:01:05 +01:00
$expire_starred = (( x ( $_POST , 'expire_starred' )) ? intval ( $_POST [ 'expire_starred' ]) : 0 );
2011-11-17 15:53:59 +01:00
$expire_photos = (( x ( $_POST , 'expire_photos' )) ? intval ( $_POST [ 'expire_photos' ]) : 0 );
2012-05-29 10:14:53 +02:00
$expire_network_only = (( x ( $_POST , 'expire_network_only' )) ? intval ( $_POST [ 'expire_network_only' ]) : 0 );
2010-11-18 00:41:18 +01:00
$allow_location = ((( x ( $_POST , 'allow_location' )) && ( intval ( $_POST [ 'allow_location' ]) == 1 )) ? 1 : 0 );
$publish = ((( x ( $_POST , 'profile_in_directory' )) && ( intval ( $_POST [ 'profile_in_directory' ]) == 1 )) ? 1 : 0 );
$net_publish = ((( x ( $_POST , 'profile_in_netdirectory' )) && ( intval ( $_POST [ 'profile_in_netdirectory' ]) == 1 )) ? 1 : 0 );
$old_visibility = ((( x ( $_POST , 'visibility' )) && ( intval ( $_POST [ 'visibility' ]) == 1 )) ? 1 : 0 );
$page_flags = ((( x ( $_POST , 'page-flags' )) && ( intval ( $_POST [ 'page-flags' ]))) ? intval ( $_POST [ 'page-flags' ]) : 0 );
2011-03-21 01:54:50 +01:00
$blockwall = ((( x ( $_POST , 'blockwall' )) && ( intval ( $_POST [ 'blockwall' ]) == 1 )) ? 0 : 1 ); // this setting is inverted!
2011-10-25 06:11:05 +02:00
$blocktags = ((( x ( $_POST , 'blocktags' )) && ( intval ( $_POST [ 'blocktags' ]) == 1 )) ? 0 : 1 ); // this setting is inverted!
2012-03-31 09:57:59 +02:00
$unkmail = ((( x ( $_POST , 'unkmail' )) && ( intval ( $_POST [ 'unkmail' ]) == 1 )) ? 1 : 0 );
$cntunkmail = (( x ( $_POST , 'cntunkmail' )) ? intval ( $_POST [ 'cntunkmail' ]) : 0 );
2011-11-29 00:11:59 +01:00
$suggestme = (( x ( $_POST , 'suggestme' )) ? intval ( $_POST [ 'suggestme' ]) : 0 );
$hide_friends = (( $_POST [ 'hide-friends' ] == 1 ) ? 1 : 0 );
$hidewall = (( $_POST [ 'hidewall' ] == 1 ) ? 1 : 0 );
2012-04-13 03:15:46 +02:00
$post_newfriend = (( $_POST [ 'post_newfriend' ] == 1 ) ? 1 : 0 );
2012-05-01 04:01:41 +02:00
$post_joingroup = (( $_POST [ 'post_joingroup' ] == 1 ) ? 1 : 0 );
2012-04-13 06:10:32 +02:00
$post_profilechange = (( $_POST [ 'post_profilechange' ] == 1 ) ? 1 : 0 );
2012-03-30 15:45:02 +02:00
2010-08-14 16:55:18 +02:00
$notify = 0 ;
2010-11-18 00:41:18 +01:00
if ( x ( $_POST , 'notify1' ))
2010-08-14 16:55:18 +02:00
$notify += intval ( $_POST [ 'notify1' ]);
2010-11-18 00:41:18 +01:00
if ( x ( $_POST , 'notify2' ))
2010-08-14 16:55:18 +02:00
$notify += intval ( $_POST [ 'notify2' ]);
2010-11-18 00:41:18 +01:00
if ( x ( $_POST , 'notify3' ))
2010-08-14 16:55:18 +02:00
$notify += intval ( $_POST [ 'notify3' ]);
2010-11-18 00:41:18 +01:00
if ( x ( $_POST , 'notify4' ))
2010-08-14 16:55:18 +02:00
$notify += intval ( $_POST [ 'notify4' ]);
2010-11-18 00:41:18 +01:00
if ( x ( $_POST , 'notify5' ))
2010-08-14 16:55:18 +02:00
$notify += intval ( $_POST [ 'notify5' ]);
2012-01-04 02:29:07 +01:00
if ( x ( $_POST , 'notify6' ))
$notify += intval ( $_POST [ 'notify6' ]);
if ( x ( $_POST , 'notify7' ))
$notify += intval ( $_POST [ 'notify7' ]);
2012-07-20 05:13:40 +02:00
if ( x ( $_POST , 'notify8' ))
$notify += intval ( $_POST [ 'notify8' ]);
2010-08-14 16:55:18 +02:00
2010-07-02 01:48:07 +02:00
$email_changed = false ;
2010-09-09 05:14:17 +02:00
2010-07-02 01:48:07 +02:00
$err = '' ;
2011-01-25 03:18:47 +01:00
$name_change = false ;
2010-07-02 01:48:07 +02:00
if ( $username != $a -> user [ 'username' ]) {
2011-01-25 03:18:47 +01:00
$name_change = true ;
if ( strlen ( $username ) > 40 )
$err .= t ( ' Please use a shorter name.' );
if ( strlen ( $username ) < 3 )
$err .= t ( ' Name too short.' );
2010-07-02 01:48:07 +02:00
}
2010-10-17 05:38:27 +02:00
2010-07-02 01:48:07 +02:00
if ( $email != $a -> user [ 'email' ]) {
$email_changed = true ;
2010-11-14 09:32:31 +01:00
if ( ! valid_email ( $email ))
$err .= t ( ' Not valid email.' );
2011-01-05 07:17:58 +01:00
if (( x ( $a -> config , 'admin_email' )) && ( strcasecmp ( $email , $a -> config [ 'admin_email' ]) == 0 )) {
$err .= t ( ' Cannot change to that email.' );
$email = $a -> user [ 'email' ];
}
2010-07-02 01:48:07 +02:00
}
2010-10-17 05:38:27 +02:00
if ( strlen ( $err )) {
notice ( $err . EOL );
return ;
}
2010-07-02 01:48:07 +02:00
if ( $timezone != $a -> user [ 'timezone' ]) {
if ( strlen ( $timezone ))
date_default_timezone_set ( $timezone );
}
2010-08-08 08:54:22 +02:00
2010-09-09 05:14:17 +02:00
$str_group_allow = perms2str ( $_POST [ 'group_allow' ]);
$str_contact_allow = perms2str ( $_POST [ 'contact_allow' ]);
$str_group_deny = perms2str ( $_POST [ 'group_deny' ]);
$str_contact_deny = perms2str ( $_POST [ 'contact_deny' ]);
2010-08-08 08:54:22 +02:00
2010-12-23 23:40:32 +01:00
$openidserver = $a -> user [ 'openidserver' ];
2012-03-19 14:48:11 +01:00
$openid = normalise_openid ( $openid );
2010-12-23 23:40:32 +01:00
2010-12-23 23:54:34 +01:00
// If openid has changed or if there's an openid but no openidserver, try and discover it.
if ( $openid != $a -> user [ 'openid' ] || ( strlen ( $openid ) && ( ! strlen ( $openidserver )))) {
2011-01-03 06:25:38 +01:00
$tmp_str = $openid ;
if ( strlen ( $tmp_str ) && validate_url ( $tmp_str )) {
2011-01-03 06:20:17 +01:00
logger ( 'updating openidserver' );
require_once ( 'library/openid.php' );
$open_id_obj = new LightOpenID ;
$open_id_obj -> identity = $openid ;
$openidserver = $open_id_obj -> discover ( $open_id_obj -> identity );
}
else
$openidserver = '' ;
2010-12-23 21:52:51 +01:00
}
2011-11-17 15:53:59 +01:00
set_pconfig ( local_user (), 'expire' , 'items' , $expire_items );
set_pconfig ( local_user (), 'expire' , 'notes' , $expire_notes );
2011-11-22 04:01:05 +01:00
set_pconfig ( local_user (), 'expire' , 'starred' , $expire_starred );
2011-11-17 15:53:59 +01:00
set_pconfig ( local_user (), 'expire' , 'photos' , $expire_photos );
2012-05-29 10:14:53 +02:00
set_pconfig ( local_user (), 'expire' , 'network_only' , $expire_network_only );
2011-11-17 15:53:59 +01:00
2011-11-29 00:11:59 +01:00
set_pconfig ( local_user (), 'system' , 'suggestme' , $suggestme );
2012-04-13 03:15:46 +02:00
set_pconfig ( local_user (), 'system' , 'post_newfriend' , $post_newfriend );
2012-05-01 04:01:41 +02:00
set_pconfig ( local_user (), 'system' , 'post_joingroup' , $post_joingroup );
2012-04-13 06:10:32 +02:00
set_pconfig ( local_user (), 'system' , 'post_profilechange' , $post_profilechange );
2011-11-29 00:11:59 +01:00
2012-03-30 15:45:02 +02:00
2012-05-18 08:05:41 +02:00
if ( $page_flags == PAGE_PRVGROUP ) {
$hidewall = 1 ;
2012-05-30 03:14:21 +02:00
if (( ! $str_contact_allow ) && ( ! $str_group_allow ) && ( ! $str_contact_deny ) && ( ! $str_group_deny )) {
2012-05-18 08:05:41 +02:00
if ( $def_gid ) {
info ( t ( 'Private forum has no privacy permissions. Using default privacy group.' ) . EOL );
$str_group_allow = '<' . $def_gid . '>' ;
}
else {
notice ( t ( 'Private forum has no privacy permissions and no default privacy group.' ) . EOL );
}
}
}
2012-05-18 07:44:52 +02:00
$r = q ( " UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `maxreq` = %d, `expire` = %d, `openidserver` = '%s', `def_gid` = %d, `blockwall` = %d, `hidewall` = %d, `blocktags` = %d, `unkmail` = %d, `cntunkmail` = %d WHERE `uid` = %d LIMIT 1 " ,
2010-07-02 01:48:07 +02:00
dbesc ( $username ),
dbesc ( $email ),
2010-11-18 00:41:18 +01:00
dbesc ( $openid ),
2010-07-02 01:48:07 +02:00
dbesc ( $timezone ),
2010-08-08 08:54:22 +02:00
dbesc ( $str_contact_allow ),
dbesc ( $str_group_allow ),
dbesc ( $str_contact_deny ),
dbesc ( $str_group_deny ),
2010-08-14 16:55:18 +02:00
intval ( $notify ),
2010-10-18 09:43:49 +02:00
intval ( $page_flags ),
2010-08-22 01:31:46 +02:00
dbesc ( $defloc ),
2010-10-20 05:52:05 +02:00
intval ( $allow_location ),
2010-12-20 09:27:00 +01:00
intval ( $maxreq ),
2011-03-16 01:31:49 +01:00
intval ( $expire ),
2010-12-23 23:40:32 +01:00
dbesc ( $openidserver ),
2012-05-18 07:44:52 +02:00
intval ( $def_gid ),
2011-03-21 01:54:50 +01:00
intval ( $blockwall ),
2011-07-06 08:23:43 +02:00
intval ( $hidewall ),
2011-10-25 06:11:05 +02:00
intval ( $blocktags ),
2012-03-31 09:57:59 +02:00
intval ( $unkmail ),
intval ( $cntunkmail ),
2010-10-18 23:34:59 +02:00
intval ( local_user ())
2010-08-08 08:54:22 +02:00
);
if ( $r )
2011-05-23 11:39:57 +02:00
info ( t ( 'Settings updated.' ) . EOL );
2010-08-20 07:04:18 +02:00
$r = q ( " UPDATE `profile`
2011-06-20 01:47:03 +02:00
SET `publish` = % d ,
2013-04-05 00:10:14 +02:00
`name` = '%s' ,
2011-06-20 01:47:03 +02:00
`net-publish` = % d ,
2011-07-07 01:47:55 +02:00
`hide-friends` = % d
2010-08-20 07:04:18 +02:00
WHERE `is-default` = 1 AND `uid` = % d LIMIT 1 " ,
intval ( $publish ),
2013-04-05 00:10:14 +02:00
dbesc ( $username ),
2010-08-20 07:04:18 +02:00
intval ( $net_publish ),
2011-06-20 01:47:03 +02:00
intval ( $hide_friends ),
2010-10-18 23:34:59 +02:00
intval ( local_user ())
2010-08-20 07:04:18 +02:00
);
2011-01-25 03:18:47 +01:00
if ( $name_change ) {
q ( " UPDATE `contact` SET `name` = '%s', `name-date` = '%s' WHERE `uid` = %d AND `self` = 1 LIMIT 1 " ,
dbesc ( $username ),
dbesc ( datetime_convert ()),
intval ( local_user ())
);
}
2012-02-28 08:27:16 +01:00
if (( $old_visibility != $net_publish ) || ( $page_flags != $old_page_flags )) {
2010-08-20 07:04:18 +02:00
// Update global directory in background
$url = $_SESSION [ 'my_url' ];
if ( $url && strlen ( get_config ( 'system' , 'directory_submit_url' )))
2011-02-24 00:16:12 +01:00
proc_run ( 'php' , " include/directory.php " , " $url " );
2011-10-20 00:08:16 +02:00
2010-08-20 07:04:18 +02:00
}
2011-10-20 14:43:33 +02:00
require_once ( 'include/profile_update.php' );
profile_change ();
2011-10-20 00:08:16 +02:00
2012-09-07 01:24:34 +02:00
//$_SESSION['theme'] = $theme;
2010-07-02 01:48:07 +02:00
if ( $email_changed && $a -> config [ 'register_policy' ] == REGISTER_VERIFY ) {
// FIXME - set to un-verified, blocked and redirect to logout
2012-09-07 01:24:34 +02:00
// Why? Are we verifying people or email addresses?
2010-07-02 01:48:07 +02:00
}
2010-07-06 06:39:55 +02:00
2012-03-15 05:20:20 +01:00
goaway ( $a -> get_baseurl ( true ) . '/settings' );
2010-09-09 05:14:17 +02:00
return ; // NOTREACHED
2010-07-02 01:48:07 +02:00
}
if ( ! function_exists ( 'settings_content' )) {
function settings_content ( & $a ) {
2010-10-17 05:38:27 +02:00
2010-11-01 00:38:22 +01:00
$o = '' ;
2011-08-17 18:36:24 +02:00
nav_set_selected ( 'settings' );
2010-07-02 01:48:07 +02:00
2010-07-30 15:09:20 +02:00
if ( ! local_user ()) {
notice ( t ( 'Permission denied.' ) . EOL );
2010-07-02 01:48:07 +02:00
return ;
}
2012-01-27 01:52:12 +01:00
if ( x ( $_SESSION , 'submanage' ) && intval ( $_SESSION [ 'submanage' ])) {
notice ( t ( 'Permission denied.' ) . EOL );
return ;
}
2011-07-06 12:10:00 +02:00
2012-04-12 08:38:55 +02:00
2011-07-06 12:10:00 +02:00
2011-10-26 17:15:36 +02:00
if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] === 'oauth' )) {
2011-11-07 17:38:30 +01:00
if (( $a -> argc > 2 ) && ( $a -> argv [ 2 ] === 'add' )) {
$tpl = get_markup_template ( " settings_oauth_edit.tpl " );
2012-12-25 19:48:02 +01:00
$o .= replace_macros ( $tpl , array (
2012-03-12 21:17:37 +01:00
'$form_security_token' => get_form_security_token ( " settings_oauth " ),
2011-11-07 17:38:30 +01:00
'$title' => t ( 'Add application' ),
'$submit' => t ( 'Submit' ),
'$cancel' => t ( 'Cancel' ),
'$name' => array ( 'name' , t ( 'Name' ), '' , '' ),
'$key' => array ( 'key' , t ( 'Consumer Key' ), '' , '' ),
'$secret' => array ( 'secret' , t ( 'Consumer Secret' ), '' , '' ),
'$redirect' => array ( 'redirect' , t ( 'Redirect' ), '' , '' ),
'$icon' => array ( 'icon' , t ( 'Icon url' ), '' , '' ),
));
return $o ;
}
if (( $a -> argc > 3 ) && ( $a -> argv [ 2 ] === 'edit' )) {
$r = q ( " SELECT * FROM clients WHERE client_id='%s' AND uid=%d " ,
dbesc ( $a -> argv [ 3 ]),
local_user ());
if ( ! count ( $r )){
notice ( t ( " You can't edit this application. " ));
return ;
}
$app = $r [ 0 ];
$tpl = get_markup_template ( " settings_oauth_edit.tpl " );
2012-12-25 19:48:02 +01:00
$o .= replace_macros ( $tpl , array (
2012-03-12 21:17:37 +01:00
'$form_security_token' => get_form_security_token ( " settings_oauth " ),
2011-11-07 17:38:30 +01:00
'$title' => t ( 'Add application' ),
'$submit' => t ( 'Update' ),
'$cancel' => t ( 'Cancel' ),
'$name' => array ( 'name' , t ( 'Name' ), $app [ 'name' ] , '' ),
'$key' => array ( 'key' , t ( 'Consumer Key' ), $app [ 'client_id' ], '' ),
'$secret' => array ( 'secret' , t ( 'Consumer Secret' ), $app [ 'pw' ], '' ),
'$redirect' => array ( 'redirect' , t ( 'Redirect' ), $app [ 'redirect_uri' ], '' ),
'$icon' => array ( 'icon' , t ( 'Icon url' ), $app [ 'icon' ], '' ),
));
return $o ;
}
if (( $a -> argc > 3 ) && ( $a -> argv [ 2 ] === 'delete' )) {
2012-03-12 21:17:37 +01:00
check_form_security_token_redirectOnErr ( '/settings/oauth' , 'settings_oauth' , 't' );
2011-11-07 17:38:30 +01:00
$r = q ( " DELETE FROM clients WHERE client_id='%s' AND uid=%d " ,
dbesc ( $a -> argv [ 3 ]),
local_user ());
2012-03-15 05:20:20 +01:00
goaway ( $a -> get_baseurl ( true ) . " /settings/oauth/ " );
2011-11-07 17:38:30 +01:00
return ;
}
$r = q ( " SELECT clients.*, tokens.id as oauth_token, (clients.uid=%d) AS my
FROM clients
LEFT JOIN tokens ON clients . client_id = tokens . client_id
WHERE clients . uid IN ( % d , 0 ) " ,
local_user (),
local_user ());
2013-03-05 00:46:11 +01:00
2011-10-26 17:15:36 +02:00
$tpl = get_markup_template ( " settings_oauth.tpl " );
$o .= replace_macros ( $tpl , array (
2012-03-12 21:17:37 +01:00
'$form_security_token' => get_form_security_token ( " settings_oauth " ),
2012-03-15 05:20:20 +01:00
'$baseurl' => $a -> get_baseurl ( true ),
2011-10-26 17:15:36 +02:00
'$title' => t ( 'Connected Apps' ),
2011-11-07 17:38:30 +01:00
'$add' => t ( 'Add application' ),
'$edit' => t ( 'Edit' ),
'$delete' => t ( 'Delete' ),
'$consumerkey' => t ( 'Client key starts with' ),
'$noname' => t ( 'No name' ),
'$remove' => t ( 'Remove authorization' ),
'$apps' => $r ,
2011-10-26 17:15:36 +02:00
));
return $o ;
2013-03-05 00:46:11 +01:00
2011-10-26 17:15:36 +02:00
}
2012-11-22 17:14:22 +01:00
2010-12-25 08:44:17 +01:00
if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] === 'addon' )) {
2011-07-06 12:10:00 +02:00
$settings_addons = " " ;
2013-03-05 00:46:11 +01:00
2010-12-25 08:44:17 +01:00
$r = q ( " SELECT * FROM `hook` WHERE `hook` = 'plugin_settings' " );
if ( ! count ( $r ))
2011-07-06 12:10:00 +02:00
$settings_addons = t ( 'No Plugin settings configured' );
2010-12-25 08:44:17 +01:00
2011-07-06 12:10:00 +02:00
call_hooks ( 'plugin_settings' , $settings_addons );
2013-03-05 00:46:11 +01:00
2011-07-06 12:10:00 +02:00
$tpl = get_markup_template ( " settings_addons.tpl " );
$o .= replace_macros ( $tpl , array (
2012-03-14 07:52:13 +01:00
'$form_security_token' => get_form_security_token ( " settings_addon " ),
2011-07-06 12:10:00 +02:00
'$title' => t ( 'Plugin Settings' ),
'$settings_addons' => $settings_addons
));
2010-12-25 08:44:17 +01:00
return $o ;
}
2010-07-02 01:48:07 +02:00
2012-11-22 17:14:22 +01:00
if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] === 'features' )) {
2013-03-05 00:46:11 +01:00
2012-11-22 17:14:22 +01:00
$arr = array ();
$features = get_features ();
foreach ( $features as $fname => $fdata ) {
$arr [ $fname ] = array ();
$arr [ $fname ][ 0 ] = $fdata [ 0 ];
foreach ( array_slice ( $fdata , 1 ) as $f ) {
$arr [ $fname ][ 1 ][] = array ( 'feature_' . $f [ 0 ], $f [ 1 ],(( intval ( get_pconfig ( local_user (), 'feature' , $f [ 0 ]))) ? " 1 " : '' ), $f [ 2 ], array ( t ( 'Off' ), t ( 'On' )));
}
}
$tpl = get_markup_template ( " settings_features.tpl " );
2012-12-25 19:48:02 +01:00
$o .= replace_macros ( $tpl , array (
2012-11-22 17:14:22 +01:00
'$form_security_token' => get_form_security_token ( " settings_features " ),
'$title' => t ( 'Additional Features' ),
'$features' => $arr ,
'$submit' => t ( 'Submit' ),
));
return $o ;
}
2011-10-12 03:24:37 +02:00
if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] === 'connectors' )) {
2010-08-20 07:04:18 +02:00
2011-10-12 03:24:37 +02:00
$settings_connectors = " " ;
2013-03-05 00:46:11 +01:00
2011-10-12 03:24:37 +02:00
call_hooks ( 'connector_settings' , $settings_connectors );
2010-07-20 07:52:31 +02:00
2011-10-12 03:24:37 +02:00
$diasp_enabled = sprintf ( t ( 'Built-in support for %s connectivity is %s' ), t ( 'Diaspora' ), (( get_config ( 'system' , 'diaspora_enabled' )) ? t ( 'enabled' ) : t ( 'disabled' )));
$ostat_enabled = sprintf ( t ( 'Built-in support for %s connectivity is %s' ), t ( 'StatusNet' ), (( get_config ( 'system' , 'ostatus_disabled' )) ? t ( 'disabled' ) : t ( 'enabled' )));
2011-04-18 08:27:11 +02:00
2012-03-30 15:45:02 +02:00
$mail_disabled = (( function_exists ( 'imap_open' ) && ( ! get_config ( 'system' , 'imap_disabled' ))) ? 0 : 1 );
if ( get_config ( 'system' , 'dfrn_only' ))
$mail_disabled = 1 ;
2011-04-19 05:20:04 +02:00
2012-03-30 15:45:02 +02:00
if ( ! $mail_disabled ) {
$r = q ( " SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1 " ,
local_user ()
);
}
else {
$r = null ;
}
2011-04-18 08:27:11 +02:00
2012-03-30 15:45:02 +02:00
$mail_server = (( count ( $r )) ? $r [ 0 ][ 'server' ] : '' );
$mail_port = (( count ( $r ) && intval ( $r [ 0 ][ 'port' ])) ? intval ( $r [ 0 ][ 'port' ]) : '' );
$mail_ssl = (( count ( $r )) ? $r [ 0 ][ 'ssltype' ] : '' );
$mail_user = (( count ( $r )) ? $r [ 0 ][ 'user' ] : '' );
$mail_replyto = (( count ( $r )) ? $r [ 0 ][ 'reply_to' ] : '' );
$mail_pubmail = (( count ( $r )) ? $r [ 0 ][ 'pubmail' ] : 0 );
$mail_action = (( count ( $r )) ? $r [ 0 ][ 'action' ] : 0 );
$mail_movetofolder = (( count ( $r )) ? $r [ 0 ][ 'movetofolder' ] : '' );
$mail_chk = (( count ( $r )) ? $r [ 0 ][ 'last_check' ] : '0000-00-00 00:00:00' );
2012-02-26 23:39:29 +01:00
2011-04-18 08:27:11 +02:00
2012-03-30 15:45:02 +02:00
$tpl = get_markup_template ( " settings_connectors.tpl " );
2012-06-27 03:30:20 +02:00
if ( ! service_class_allows ( local_user (), 'email_connect' )) {
$mail_disabled_message = upgrade_bool_message ();
}
else {
$mail_disabled_message = (( $mail_disabled ) ? t ( 'Email access is disabled on this site.' ) : '' );
}
2012-12-22 20:57:29 +01:00
2012-12-25 19:48:02 +01:00
$o .= replace_macros ( $tpl , array (
2012-03-12 21:17:37 +01:00
'$form_security_token' => get_form_security_token ( " settings_connectors " ),
2011-10-12 03:24:37 +02:00
'$title' => t ( 'Connector Settings' ),
2012-02-26 23:39:29 +01:00
2012-03-12 21:17:37 +01:00
'$diasp_enabled' => $diasp_enabled ,
'$ostat_enabled' => $ostat_enabled ,
'$h_imap' => t ( 'Email/Mailbox Setup' ),
'$imap_desc' => t ( " If you wish to communicate with email contacts using this service \x28 optional \x29 , please specify how to connect to your mailbox. " ),
'$imap_lastcheck' => array ( 'imap_lastcheck' , t ( 'Last successful email check:' ), $mail_chk , '' ),
2012-06-27 03:30:20 +02:00
'$mail_disabled' => $mail_disabled_message ,
2012-03-12 21:17:37 +01:00
'$mail_server' => array ( 'mail_server' , t ( 'IMAP server name:' ), $mail_server , '' ),
'$mail_port' => array ( 'mail_port' , t ( 'IMAP port:' ), $mail_port , '' ),
2012-03-28 23:54:00 +02:00
'$mail_ssl' => array ( 'mail_ssl' , t ( 'Security:' ), strtoupper ( $mail_ssl ), '' , array ( 'notls' => t ( 'None' ), 'TLS' => 'TLS' , 'SSL' => 'SSL' )),
2012-03-12 21:17:37 +01:00
'$mail_user' => array ( 'mail_user' , t ( 'Email login name:' ), $mail_user , '' ),
'$mail_pass' => array ( 'mail_pass' , t ( 'Email password:' ), '' , '' ),
2012-12-18 00:47:55 +01:00
'$mail_replyto' => array ( 'mail_replyto' , t ( 'Reply-to address:' ), $mail_replyto , 'Optional' ),
2012-03-12 21:17:37 +01:00
'$mail_pubmail' => array ( 'mail_pubmail' , t ( 'Send public posts to all email contacts:' ), $mail_pubmail , '' ),
2012-09-30 01:50:34 +02:00
'$mail_action' => array ( 'mail_action' , t ( 'Action after import:' ), $mail_action , '' , array ( 0 => t ( 'None' ), /*1=>t('Delete'),*/ 2 => t ( 'Mark as seen' ), 3 => t ( 'Move to folder' ))),
2012-03-12 21:17:37 +01:00
'$mail_movetofolder' => array ( 'mail_movetofolder' , t ( 'Move to folder:' ), $mail_movetofolder , '' ),
'$submit' => t ( 'Submit' ),
2011-10-12 03:24:37 +02:00
'$settings_connectors' => $settings_connectors
));
2012-04-04 07:01:52 +02:00
call_hooks ( 'display_settings' , $o );
2011-10-12 03:24:37 +02:00
return $o ;
}
2012-03-30 15:45:02 +02:00
/*
* DISPLAY SETTINGS
*/
if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] === 'display' )) {
$default_theme = get_config ( 'system' , 'theme' );
if ( ! $default_theme )
$default_theme = 'default' ;
2012-09-07 01:24:34 +02:00
$default_mobile_theme = get_config ( 'system' , 'mobile-theme' );
if ( ! $mobile_default_theme )
$mobile_default_theme = 'none' ;
2012-03-30 15:45:02 +02:00
$allowed_themes_str = get_config ( 'system' , 'allowed_themes' );
$allowed_themes_raw = explode ( ',' , $allowed_themes_str );
$allowed_themes = array ();
if ( count ( $allowed_themes_raw ))
2012-04-23 01:24:29 +02:00
foreach ( $allowed_themes_raw as $x )
if ( strlen ( trim ( $x )) && is_dir ( " view/theme/ $x " ))
2012-03-30 15:45:02 +02:00
$allowed_themes [] = trim ( $x );
$themes = array ();
2012-09-07 01:24:34 +02:00
$mobile_themes = array ( " --- " => t ( 'No special theme for mobile devices' ));
2012-03-30 15:45:02 +02:00
$files = glob ( 'view/theme/*' );
if ( $allowed_themes ) {
foreach ( $allowed_themes as $th ) {
$f = $th ;
$is_experimental = file_exists ( 'view/theme/' . $th . '/experimental' );
$unsupported = file_exists ( 'view/theme/' . $th . '/unsupported' );
2012-09-07 01:24:34 +02:00
$is_mobile = file_exists ( 'view/theme/' . $th . '/mobile' );
2012-03-30 15:45:02 +02:00
if ( ! $is_experimental or ( $is_experimental && ( get_config ( 'experimentals' , 'exp_themes' ) == 1 or get_config ( 'experimentals' , 'exp_themes' ) === false ))){
$theme_name = (( $is_experimental ) ? sprintf ( " %s - \x28 Experimental \x29 " , $f ) : $f );
2012-09-07 01:24:34 +02:00
if ( $is_mobile ) {
$mobile_themes [ $f ] = $theme_name ;
}
else {
$themes [ $f ] = $theme_name ;
}
2012-03-30 15:45:02 +02:00
}
}
}
$theme_selected = ( ! x ( $_SESSION , 'theme' ) ? $default_theme : $_SESSION [ 'theme' ]);
2012-09-07 01:24:34 +02:00
$mobile_theme_selected = ( ! x ( $_SESSION , 'mobile-theme' ) ? $default_mobile_theme : $_SESSION [ 'mobile-theme' ]);
2012-03-30 15:45:02 +02:00
$browser_update = intval ( get_pconfig ( local_user (), 'system' , 'update_interval' ));
$browser_update = (( $browser_update == 0 ) ? 40 : $browser_update / 1000 ); // default if not set: 40 seconds
$itemspage_network = intval ( get_pconfig ( local_user (), 'system' , 'itemspage_network' ));
$itemspage_network = (( $itemspage_network > 0 && $itemspage_network < 101 ) ? $itemspage_network : 40 ); // default if not set: 40 items
$nosmile = get_pconfig ( local_user (), 'system' , 'no_smilies' );
$nosmile = (( $nosmile === false ) ? '0' : $nosmile ); // default if not set: 0
$theme_config = " " ;
if ( ( $themeconfigfile = get_theme_config_file ( $theme_selected )) != null ){
require_once ( $themeconfigfile );
$theme_config = theme_content ( $a );
}
$tpl = get_markup_template ( " settings_display.tpl " );
2012-12-25 19:48:02 +01:00
$o = replace_macros ( $tpl , array (
2012-03-30 15:45:02 +02:00
'$ptitle' => t ( 'Display Settings' ),
'$form_security_token' => get_form_security_token ( " settings_display " ),
'$submit' => t ( 'Submit' ),
'$baseurl' => $a -> get_baseurl ( true ),
'$uid' => local_user (),
2012-09-07 20:17:03 +02:00
'$theme' => array ( 'theme' , t ( 'Display Theme:' ), $theme_selected , '' , $themes , true ),
'$mobile_theme' => array ( 'mobile_theme' , t ( 'Mobile Theme:' ), $mobile_theme_selected , '' , $mobile_themes , false ),
2012-03-30 15:45:02 +02:00
'$ajaxint' => array ( 'browser_update' , t ( " Update browser every xx seconds " ), $browser_update , t ( 'Minimum of 10 seconds, no maximum' )),
2012-08-26 23:21:26 +02:00
'$itemspage_network' => array ( 'itemspage_network' , t ( " Number of items to display per page: " ), $itemspage_network , t ( 'Maximum of 100 items' )),
2012-03-30 15:45:02 +02:00
'$nosmile' => array ( 'nosmile' , t ( " Don't show emoticons " ), $nosmile , '' ),
'$theme_config' => $theme_config ,
));
2012-07-28 17:57:16 +02:00
$tpl = get_markup_template ( " settings_display_end.tpl " );
$a -> page [ 'end' ] .= replace_macros ( $tpl , array (
'$theme' => array ( 'theme' , t ( 'Display Theme:' ), $theme_selected , '' , $themes )
));
2012-03-30 15:45:02 +02:00
return $o ;
}
/*
* ACCOUNT SETTINGS
*/
2012-02-26 23:39:29 +01:00
2011-10-12 03:24:37 +02:00
require_once ( 'include/acl_selectors.php' );
$p = q ( " SELECT * FROM `profile` WHERE `is-default` = 1 AND `uid` = %d LIMIT 1 " ,
intval ( local_user ())
);
if ( count ( $p ))
$profile = $p [ 0 ];
2012-03-31 09:57:59 +02:00
$username = $a -> user [ 'username' ];
$email = $a -> user [ 'email' ];
$nickname = $a -> user [ 'nickname' ];
$timezone = $a -> user [ 'timezone' ];
$notify = $a -> user [ 'notify-flags' ];
$defloc = $a -> user [ 'default-location' ];
$openid = $a -> user [ 'openid' ];
$maxreq = $a -> user [ 'maxreq' ];
$expire = (( intval ( $a -> user [ 'expire' ])) ? $a -> user [ 'expire' ] : '' );
$blockwall = $a -> user [ 'blockwall' ];
$blocktags = $a -> user [ 'blocktags' ];
$unkmail = $a -> user [ 'unkmail' ];
$cntunkmail = $a -> user [ 'cntunkmail' ];
2011-10-12 03:24:37 +02:00
2011-11-17 15:53:59 +01:00
$expire_items = get_pconfig ( local_user (), 'expire' , 'items' );
2012-03-17 00:05:16 +01:00
$expire_items = (( $expire_items === false ) ? '1' : $expire_items ); // default if not set: 1
2011-11-17 15:53:59 +01:00
$expire_notes = get_pconfig ( local_user (), 'expire' , 'notes' );
2012-03-17 00:05:16 +01:00
$expire_notes = (( $expire_notes === false ) ? '1' : $expire_notes ); // default if not set: 1
2011-11-22 04:01:05 +01:00
$expire_starred = get_pconfig ( local_user (), 'expire' , 'starred' );
2012-03-17 00:05:16 +01:00
$expire_starred = (( $expire_starred === false ) ? '1' : $expire_starred ); // default if not set: 1
2011-11-17 15:53:59 +01:00
$expire_photos = get_pconfig ( local_user (), 'expire' , 'photos' );
2012-03-17 00:05:16 +01:00
$expire_photos = (( $expire_photos === false ) ? '0' : $expire_photos ); // default if not set: 0
2011-11-29 04:28:33 +01:00
2012-05-29 10:14:53 +02:00
$expire_network_only = get_pconfig ( local_user (), 'expire' , 'network_only' );
$expire_network_only = (( $expire_network_only === false ) ? '0' : $expire_network_only ); // default if not set: 0
2011-11-29 04:28:33 +01:00
$suggestme = get_pconfig ( local_user (), 'system' , 'suggestme' );
2012-03-17 00:05:16 +01:00
$suggestme = (( $suggestme === false ) ? '0' : $suggestme ); // default if not set: 0
2011-12-12 06:03:33 +01:00
2012-04-13 03:15:46 +02:00
$post_newfriend = get_pconfig ( local_user (), 'system' , 'post_newfriend' );
$post_newfriend = (( $post_newfriend === false ) ? '0' : $post_newfriend ); // default if not set: 0
2012-03-10 03:29:39 +01:00
2012-05-01 04:01:41 +02:00
$post_joingroup = get_pconfig ( local_user (), 'system' , 'post_joingroup' );
$post_joingroup = (( $post_joingroup === false ) ? '0' : $post_joingroup ); // default if not set: 0
2012-04-13 06:10:32 +02:00
$post_profilechange = get_pconfig ( local_user (), 'system' , 'post_profilechange' );
$post_profilechange = (( $post_profilechange === false ) ? '0' : $post_profilechange ); // default if not set: 0
2012-03-23 12:07:22 +01:00
2011-10-12 03:24:37 +02:00
if ( ! strlen ( $a -> user [ 'timezone' ]))
$timezone = date_default_timezone_get ();
2011-05-11 13:37:13 +02:00
$pageset_tpl = get_markup_template ( 'pagetypes.tpl' );
2012-12-25 19:48:02 +01:00
$pagetype = replace_macros ( $pageset_tpl , array (
2012-05-31 01:30:51 +02:00
'$page_normal' => array ( 'page-flags' , t ( 'Normal Account Page' ), PAGE_NORMAL ,
2011-07-06 12:10:00 +02:00
t ( 'This account is a normal personal profile' ),
( $a -> user [ 'page-flags' ] == PAGE_NORMAL )),
2012-05-31 01:30:51 +02:00
'$page_soapbox' => array ( 'page-flags' , t ( 'Soapbox Page' ), PAGE_SOAPBOX ,
2011-07-06 12:10:00 +02:00
t ( 'Automatically approve all connection/friend requests as read-only fans' ),
2011-07-07 01:47:55 +02:00
( $a -> user [ 'page-flags' ] == PAGE_SOAPBOX )),
2011-07-06 12:10:00 +02:00
2012-05-31 01:30:51 +02:00
'$page_community' => array ( 'page-flags' , t ( 'Community Forum/Celebrity Account' ), PAGE_COMMUNITY ,
2011-07-06 12:10:00 +02:00
t ( 'Automatically approve all connection/friend requests as read-write fans' ),
( $a -> user [ 'page-flags' ] == PAGE_COMMUNITY )),
2012-05-31 01:30:51 +02:00
'$page_freelove' => array ( 'page-flags' , t ( 'Automatic Friend Page' ), PAGE_FREELOVE ,
2011-07-06 12:10:00 +02:00
t ( 'Automatically approve all connection/friend requests as friends' ),
( $a -> user [ 'page-flags' ] == PAGE_FREELOVE )),
2012-05-18 07:44:52 +02:00
2012-05-31 01:30:51 +02:00
'$page_prvgroup' => array ( 'page-flags' , t ( 'Private Forum [Experimental]' ), PAGE_PRVGROUP ,
t ( 'Private forum - approved members only' ),
2012-05-18 07:44:52 +02:00
( $a -> user [ 'page-flags' ] == PAGE_PRVGROUP )),
2010-10-18 09:43:49 +02:00
));
2010-11-29 05:58:23 +01:00
$noid = get_config ( 'system' , 'no_openid' );
if ( $noid ) {
2011-07-06 12:10:00 +02:00
$openid_field = false ;
2010-11-29 05:58:23 +01:00
}
else {
2011-07-06 12:10:00 +02:00
$openid_field = array ( 'openid_url' , t ( 'OpenID:' ), $openid , t ( " \x28 Optional \x29 Allow this OpenID to login to this account. " ));
2010-11-29 05:58:23 +01:00
}
2011-07-06 12:10:00 +02:00
$opt_tpl = get_markup_template ( " field_yesno.tpl " );
2011-01-03 07:09:54 +01:00
if ( get_config ( 'system' , 'publish_all' )) {
$profile_in_dir = '<input type="hidden" name="profile_in_directory" value="1" />' ;
}
else {
$profile_in_dir = replace_macros ( $opt_tpl , array (
2011-07-06 12:10:00 +02:00
'$field' => array ( 'profile_in_directory' , t ( 'Publish your default profile in your local site directory?' ), $profile [ 'publish' ], '' , array ( t ( 'No' ), t ( 'Yes' ))),
2011-01-03 07:09:54 +01:00
));
}
2010-08-20 07:04:18 +02:00
if ( strlen ( get_config ( 'system' , 'directory_submit_url' ))) {
$profile_in_net_dir = replace_macros ( $opt_tpl , array (
2011-07-06 12:10:00 +02:00
'$field' => array ( 'profile_in_netdirectory' , t ( 'Publish your default profile in the global social directory?' ), $profile [ 'net-publish' ], '' , array ( t ( 'No' ), t ( 'Yes' ))),
2010-08-20 07:04:18 +02:00
));
}
else
$profile_in_net_dir = '' ;
2011-06-20 01:47:03 +02:00
$hide_friends = replace_macros ( $opt_tpl , array (
2011-07-06 12:10:00 +02:00
'$field' => array ( 'hide-friends' , t ( 'Hide your contact/friend list from viewers of your default profile?' ), $profile [ 'hide-friends' ], '' , array ( t ( 'No' ), t ( 'Yes' ))),
2011-06-20 01:47:03 +02:00
));
$hide_wall = replace_macros ( $opt_tpl , array (
2011-11-16 13:15:14 +01:00
'$field' => array ( 'hidewall' , t ( 'Hide your profile details from unknown viewers?' ), $a -> user [ 'hidewall' ], '' , array ( t ( 'No' ), t ( 'Yes' ))),
2011-07-06 12:10:00 +02:00
2011-06-20 01:47:03 +02:00
));
2011-10-25 06:11:05 +02:00
$blockwall = replace_macros ( $opt_tpl , array (
2012-03-17 00:05:16 +01:00
'$field' => array ( 'blockwall' , t ( 'Allow friends to post to your profile page?' ), ( intval ( $a -> user [ 'blockwall' ]) ? '0' : '1' ), '' , array ( t ( 'No' ), t ( 'Yes' ))),
2011-10-25 06:11:05 +02:00
));
$blocktags = replace_macros ( $opt_tpl , array (
2012-03-17 00:05:16 +01:00
'$field' => array ( 'blocktags' , t ( 'Allow friends to tag your posts?' ), ( intval ( $a -> user [ 'blocktags' ]) ? '0' : '1' ), '' , array ( t ( 'No' ), t ( 'Yes' ))),
2011-10-25 06:11:05 +02:00
));
2011-06-20 01:47:03 +02:00
2011-11-29 04:28:33 +01:00
$suggestme = replace_macros ( $opt_tpl , array (
'$field' => array ( 'suggestme' , t ( 'Allow us to suggest you as a potential friend to new members?' ), $suggestme , '' , array ( t ( 'No' ), t ( 'Yes' ))),
));
2012-03-31 09:57:59 +02:00
$unkmail = replace_macros ( $opt_tpl , array (
2012-04-01 09:59:35 +02:00
'$field' => array ( 'unkmail' , t ( 'Permit unknown people to send you private mail?' ), $unkmail , '' , array ( t ( 'No' ), t ( 'Yes' ))),
2012-03-31 09:57:59 +02:00
));
2010-09-30 14:10:25 +02:00
$invisible = ((( ! $profile [ 'publish' ]) && ( ! $profile [ 'net-publish' ]))
? true : false );
if ( $invisible )
2011-05-23 11:39:57 +02:00
info ( t ( 'Profile is <strong>not published</strong>.' ) . EOL );
2010-09-30 14:10:25 +02:00
2010-08-16 14:23:26 +02:00
2012-03-15 05:20:20 +01:00
$subdir = (( strlen ( $a -> get_path ())) ? '<br />' . t ( 'or' ) . ' ' . $a -> get_baseurl ( true ) . '/profile/' . $nickname : '' );
2010-07-02 01:48:07 +02:00
2011-05-11 13:37:13 +02:00
$tpl_addr = get_markup_template ( " settings_nick_set.tpl " );
2011-04-08 08:10:43 +02:00
$prof_addr = replace_macros ( $tpl_addr , array (
2011-04-15 05:37:42 +02:00
'$desc' => t ( 'Your Identity Address is' ),
2010-07-02 01:48:07 +02:00
'$nickname' => $nickname ,
2011-04-08 08:10:43 +02:00
'$subdir' => $subdir ,
'$basepath' => $a -> get_hostname ()
));
2010-07-02 01:48:07 +02:00
2011-05-11 13:37:13 +02:00
$stpl = get_markup_template ( 'settings.tpl' );
2010-07-02 01:48:07 +02:00
2010-10-18 09:43:49 +02:00
$celeb = ((( $a -> user [ 'page-flags' ] == PAGE_SOAPBOX ) || ( $a -> user [ 'page-flags' ] == PAGE_COMMUNITY )) ? true : false );
2011-11-17 15:53:59 +01:00
$expire_arr = array (
2012-01-31 00:13:24 +01:00
'days' => array ( 'expire' , t ( " Automatically expire posts after this many days: " ), $expire , t ( 'If empty, posts will not expire. Expired posts will be deleted' )),
2011-11-22 04:01:05 +01:00
'advanced' => t ( 'Advanced expiration settings' ),
'label' => t ( 'Advanced Expiration' ),
2011-11-17 15:53:59 +01:00
'items' => array ( 'expire_items' , t ( " Expire posts: " ), $expire_items , '' , array ( t ( 'No' ), t ( 'Yes' ))),
'notes' => array ( 'expire_notes' , t ( " Expire personal notes: " ), $expire_notes , '' , array ( t ( 'No' ), t ( 'Yes' ))),
2011-11-22 04:01:05 +01:00
'starred' => array ( 'expire_starred' , t ( " Expire starred posts: " ), $expire_starred , '' , array ( t ( 'No' ), t ( 'Yes' ))),
2011-11-17 15:53:59 +01:00
'photos' => array ( 'expire_photos' , t ( " Expire photos: " ), $expire_photos , '' , array ( t ( 'No' ), t ( 'Yes' ))),
2012-05-29 10:14:53 +02:00
'network_only' => array ( 'expire_network_only' , t ( " Only expire posts by others: " ), $expire_network_only , '' , array ( t ( 'No' ), t ( 'Yes' ))),
2011-11-17 15:53:59 +01:00
);
2011-03-22 11:07:46 +01:00
2012-05-18 07:44:52 +02:00
require_once ( 'include/group.php' );
$group_select = mini_group_select ( local_user (), $a -> user [ 'def_gid' ]);
2013-01-26 20:52:21 +01:00
// Private/public post links for the non-JS ACL form
$private_post = 1 ;
if ( $_REQUEST [ 'public' ])
$private_post = 0 ;
$query_str = $a -> query_string ;
if ( strpos ( $query_str , 'public=1' ) !== false )
$query_str = str_replace ( array ( '?public=1' , '&public=1' ), array ( '' , '' ), $query_str );
// I think $a->query_string may never have ? in it, but I could be wrong
// It looks like it's from the index.php?q=[etc] rewrite that the web
// server does, which converts any ? to &, e.g. suggest&ignore=61 for suggest?ignore=61
if ( strpos ( $query_str , '?' ) === false )
$public_post_link = '?public=1' ;
else
$public_post_link = '&public=1' ;
2012-12-25 19:48:02 +01:00
$o .= replace_macros ( $stpl , array (
2011-07-06 12:10:00 +02:00
'$ptitle' => t ( 'Account Settings' ),
'$submit' => t ( 'Submit' ),
2012-03-15 05:20:20 +01:00
'$baseurl' => $a -> get_baseurl ( true ),
2010-11-18 00:41:18 +01:00
'$uid' => local_user (),
2012-03-12 21:17:37 +01:00
'$form_security_token' => get_form_security_token ( " settings " ),
2011-04-08 08:10:43 +02:00
'$nickname_block' => $prof_addr ,
2011-07-06 12:10:00 +02:00
'$h_pass' => t ( 'Password Settings' ),
'$password1' => array ( 'npassword' , t ( 'New Password:' ), '' , '' ),
'$password2' => array ( 'confirm' , t ( 'Confirm:' ), '' , t ( 'Leave password fields blank unless changing' )),
2013-04-14 17:22:42 +02:00
'$password3' => array ( 'opassword' , t ( 'Current Password:' ), '' , t ( 'Your current password to confirm the changes' )),
'$password4' => array ( 'password' , t ( 'Password:' ), '' , t ( 'Your current password to confirm the changes' )),
2011-07-13 08:14:38 +02:00
'$oid_enable' => ( ! get_config ( 'system' , 'no_openid' )),
2011-07-06 12:10:00 +02:00
'$openid' => $openid_field ,
'$h_basic' => t ( 'Basic Settings' ),
'$username' => array ( 'username' , t ( 'Full Name:' ), $username , '' ),
'$email' => array ( 'email' , t ( 'Email Address:' ), $email , '' ),
'$timezone' => array ( 'timezone_select' , t ( 'Your Timezone:' ), select_timezone ( $timezone ), '' ),
'$defloc' => array ( 'defloc' , t ( 'Default Post Location:' ), $defloc , '' ),
'$allowloc' => array ( 'allow_location' , t ( 'Use Browser Location:' ), ( $a -> user [ 'allow_location' ] == 1 ), '' ),
2012-03-30 15:45:02 +02:00
2011-07-06 12:10:00 +02:00
'$h_prv' => t ( 'Security and Privacy Settings' ),
'$maxreq' => array ( 'maxreq' , t ( 'Maximum Friend Requests/Day:' ), $maxreq , t ( " \x28 to prevent spam abuse \x29 " )),
2010-08-08 08:54:22 +02:00
'$permissions' => t ( 'Default Post Permissions' ),
2011-04-14 02:11:24 +02:00
'$permdesc' => t ( " \x28 click to open/close \x29 " ),
2010-08-20 07:04:18 +02:00
'$visibility' => $profile [ 'net-publish' ],
2010-10-18 09:43:49 +02:00
'$aclselect' => populate_acl ( $a -> user , $celeb ),
2011-11-29 04:28:33 +01:00
'$suggestme' => $suggestme ,
2011-10-25 06:11:05 +02:00
'$blockwall' => $blockwall , // array('blockwall', t('Allow friends to post to your profile page:'), !$blockwall, ''),
'$blocktags' => $blocktags , // array('blocktags', t('Allow friends to tag your posts:'), !$blocktags, ''),
2012-05-18 10:38:11 +02:00
2013-01-26 20:52:21 +01:00
// ACL permissions box
'$acl_data' => construct_acl_data ( $a , $a -> user ), // For non-Javascript ACL selector
'$group_perms' => t ( 'Show to Groups' ),
'$contact_perms' => t ( 'Show to Contacts' ),
'$private' => t ( 'Default Private Post' ),
'$public' => t ( 'Default Public Post' ),
'$is_private' => $private_post ,
'$return_path' => $query_str ,
'$public_link' => $public_post_link ,
'$settings_perms' => t ( 'Default Permissions for New Posts' ),
2012-05-18 07:44:52 +02:00
'$group_select' => $group_select ,
2011-11-17 15:53:59 +01:00
'$expire' => $expire_arr ,
2011-07-06 12:10:00 +02:00
'$profile_in_dir' => $profile_in_dir ,
'$profile_in_net_dir' => $profile_in_net_dir ,
'$hide_friends' => $hide_friends ,
'$hide_wall' => $hide_wall ,
2012-03-31 09:57:59 +02:00
'$unkmail' => $unkmail ,
'$cntunkmail' => array ( 'cntunkmail' , t ( 'Maximum private messages per day from unknown people:' ), $cntunkmail , t ( " \x28 to prevent spam abuse \x29 " )),
2011-07-06 12:10:00 +02:00
'$h_not' => t ( 'Notification Settings' ),
2012-04-13 06:10:32 +02:00
'$activity_options' => t ( 'By default post a status message when:' ),
'$post_newfriend' => array ( 'post_newfriend' , t ( 'accepting a friend request' ), $post_newfriend , '' ),
2012-05-01 04:01:41 +02:00
'$post_joingroup' => array ( 'post_joingroup' , t ( 'joining a forum/community' ), $post_joingroup , '' ),
2012-04-13 06:10:32 +02:00
'$post_profilechange' => array ( 'post_profilechange' , t ( 'making an <em>interesting</em> profile change' ), $post_profilechange , '' ),
2011-07-06 12:10:00 +02:00
'$lbl_not' => t ( 'Send a notification email when:' ),
2011-07-12 14:09:07 +02:00
'$notify1' => array ( 'notify1' , t ( 'You receive an introduction' ), ( $notify & NOTIFY_INTRO ), NOTIFY_INTRO , '' ),
'$notify2' => array ( 'notify2' , t ( 'Your introductions are confirmed' ), ( $notify & NOTIFY_CONFIRM ), NOTIFY_CONFIRM , '' ),
'$notify3' => array ( 'notify3' , t ( 'Someone writes on your profile wall' ), ( $notify & NOTIFY_WALL ), NOTIFY_WALL , '' ),
'$notify4' => array ( 'notify4' , t ( 'Someone writes a followup comment' ), ( $notify & NOTIFY_COMMENT ), NOTIFY_COMMENT , '' ),
'$notify5' => array ( 'notify5' , t ( 'You receive a private message' ), ( $notify & NOTIFY_MAIL ), NOTIFY_MAIL , '' ),
2012-01-04 02:29:07 +01:00
'$notify6' => array ( 'notify6' , t ( 'You receive a friend suggestion' ), ( $notify & NOTIFY_SUGGEST ), NOTIFY_SUGGEST , '' ),
2012-02-10 06:18:50 +01:00
'$notify7' => array ( 'notify7' , t ( 'You are tagged in a post' ), ( $notify & NOTIFY_TAGSELF ), NOTIFY_TAGSELF , '' ),
2012-07-20 05:13:40 +02:00
'$notify8' => array ( 'notify8' , t ( 'You are poked/prodded/etc. in a post' ), ( $notify & NOTIFY_POKE ), NOTIFY_POKE , '' ),
2011-07-06 12:10:00 +02:00
2012-05-31 01:30:51 +02:00
'$h_advn' => t ( 'Advanced Account/Page Type Settings' ),
'$h_descadvn' => t ( 'Change the behaviour of this account for special situations' ),
2011-07-06 12:10:00 +02:00
'$pagetype' => $pagetype ,
2010-07-30 15:09:20 +02:00
));
2010-07-02 01:48:07 +02:00
2010-12-23 23:40:32 +01:00
call_hooks ( 'settings_form' , $o );
$o .= '</form>' . " \r \n " ;
2010-12-23 05:23:41 +01:00
2010-07-02 01:48:07 +02:00
return $o ;
2010-12-23 05:23:41 +01:00
}}