4 function get_theme_config_file($theme){
6 $base_theme = $a->theme_info['extends'];
8 if (file_exists("view/theme/$theme/config.php")){
9 return "view/theme/$theme/config.php";
11 if (file_exists("view/theme/$base_theme/config.php")){
12 return "view/theme/$base_theme/config.php";
17 function settings_init(&$a) {
20 notice( t('Permission denied.') . EOL );
24 // APC deactivated, since there are problems with PHP 5.5
25 //if (function_exists("apc_delete")) {
26 // $toDelete = new APCIterator('user', APC_ITER_VALUE);
27 // apc_delete($toDelete);
30 // These lines provide the javascript needed by the acl selector
32 $tpl = get_markup_template("settings-head.tpl");
33 $a->page['htmlhead'] .= replace_macros($tpl,array(
34 '$ispublic' => t('everybody')
41 'label' => t('Account'),
42 'url' => $a->get_baseurl(true).'/settings',
43 'selected' => (($a->argc == 1) && ($a->argv[0] === 'settings')?'active':''),
47 'label' => t('Additional features'),
48 'url' => $a->get_baseurl(true).'/settings/features',
49 'selected' => (($a->argc > 1) && ($a->argv[1] === 'features') ? 'active' : ''),
53 'label' => t('Display'),
54 'url' => $a->get_baseurl(true).'/settings/display',
55 'selected' => (($a->argc > 1) && ($a->argv[1] === 'display')?'active':''),
60 'label' => t('Social Networks'),
61 'url' => $a->get_baseurl(true).'/settings/connectors',
62 'selected' => (($a->argc > 1) && ($a->argv[1] === 'connectors')?'active':''),
66 'label' => t('Plugins'),
67 'url' => $a->get_baseurl(true).'/settings/addon',
68 'selected' => (($a->argc > 1) && ($a->argv[1] === 'addon')?'active':''),
72 'label' => t('Delegations'),
73 'url' => $a->get_baseurl(true).'/delegate',
74 'selected' => (($a->argc == 1) && ($a->argv[0] === 'delegate')?'active':''),
78 'label' => t('Connected apps'),
79 'url' => $a->get_baseurl(true) . '/settings/oauth',
80 'selected' => (($a->argc > 1) && ($a->argv[1] === 'oauth')?'active':''),
84 'label' => t('Export personal data'),
85 'url' => $a->get_baseurl(true) . '/uexport',
86 'selected' => (($a->argc == 1) && ($a->argv[0] === 'uexport')?'active':''),
90 'label' => t('Remove account'),
91 'url' => $a->get_baseurl(true) . '/removeme',
92 'selected' => (($a->argc == 1) && ($a->argv[0] === 'removeme')?'active':''),
97 $tabtpl = get_markup_template("generic_links_widget.tpl");
98 $a->page['aside'] = replace_macros($tabtpl, array(
99 '$title' => t('Settings'),
100 '$class' => 'settings-widget',
107 function settings_post(&$a) {
112 if(x($_SESSION,'submanage') && intval($_SESSION['submanage']))
115 if(count($a->user) && x($a->user,'uid') && $a->user['uid'] != local_user()) {
116 notice( t('Permission denied.') . EOL);
120 $old_page_flags = $a->user['page-flags'];
122 if(($a->argc > 1) && ($a->argv[1] === 'oauth') && x($_POST,'remove')){
123 check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth');
125 $key = $_POST['remove'];
126 q("DELETE FROM tokens WHERE id='%s' AND uid=%d",
129 goaway($a->get_baseurl(true)."/settings/oauth/");
133 if(($a->argc > 2) && ($a->argv[1] === 'oauth') && ($a->argv[2] === 'edit'||($a->argv[2] === 'add')) && x($_POST,'submit')) {
135 check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth');
137 $name = ((x($_POST,'name')) ? $_POST['name'] : '');
138 $key = ((x($_POST,'key')) ? $_POST['key'] : '');
139 $secret = ((x($_POST,'secret')) ? $_POST['secret'] : '');
140 $redirect = ((x($_POST,'redirect')) ? $_POST['redirect'] : '');
141 $icon = ((x($_POST,'icon')) ? $_POST['icon'] : '');
142 if ($name=="" || $key=="" || $secret==""){
143 notice(t("Missing some important data!"));
146 if ($_POST['submit']==t("Update")){
147 $r = q("UPDATE clients SET
154 WHERE client_id='%s'",
163 $r = q("INSERT INTO clients
164 (client_id, pw, name, redirect_uri, icon, uid)
165 VALUES ('%s','%s','%s','%s','%s',%d)",
174 goaway($a->get_baseurl(true)."/settings/oauth/");
178 if(($a->argc > 1) && ($a->argv[1] == 'addon')) {
179 check_form_security_token_redirectOnErr('/settings/addon', 'settings_addon');
181 call_hooks('plugin_settings_post', $_POST);
185 if(($a->argc > 1) && ($a->argv[1] == 'connectors')) {
187 check_form_security_token_redirectOnErr('/settings/connectors', 'settings_connectors');
189 if(x($_POST, 'general-submit')) {
190 set_pconfig(local_user(), 'system', 'no_intelligent_shortening', intval($_POST['no_intelligent_shortening']));
191 set_pconfig(local_user(), 'system', 'ostatus_autofriend', intval($_POST['snautofollow']));
192 } elseif(x($_POST, 'imap-submit')) {
194 $mail_server = ((x($_POST,'mail_server')) ? $_POST['mail_server'] : '');
195 $mail_port = ((x($_POST,'mail_port')) ? $_POST['mail_port'] : '');
196 $mail_ssl = ((x($_POST,'mail_ssl')) ? strtolower(trim($_POST['mail_ssl'])) : '');
197 $mail_user = ((x($_POST,'mail_user')) ? $_POST['mail_user'] : '');
198 $mail_pass = ((x($_POST,'mail_pass')) ? trim($_POST['mail_pass']) : '');
199 $mail_action = ((x($_POST,'mail_action')) ? trim($_POST['mail_action']) : '');
200 $mail_movetofolder = ((x($_POST,'mail_movetofolder')) ? trim($_POST['mail_movetofolder']) : '');
201 $mail_replyto = ((x($_POST,'mail_replyto')) ? $_POST['mail_replyto'] : '');
202 $mail_pubmail = ((x($_POST,'mail_pubmail')) ? $_POST['mail_pubmail'] : '');
205 $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
206 if(get_config('system','dfrn_only'))
209 if(! $mail_disabled) {
211 $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
215 q("INSERT INTO `mailacct` (`uid`) VALUES (%d)",
219 if(strlen($mail_pass)) {
221 openssl_public_encrypt($mail_pass,$pass,$a->user['pubkey']);
222 q("UPDATE `mailacct` SET `pass` = '%s' WHERE `uid` = %d",
223 dbesc(bin2hex($pass)),
227 $r = q("UPDATE `mailacct` SET `server` = '%s', `port` = %d, `ssltype` = '%s', `user` = '%s',
228 `action` = %d, `movetofolder` = '%s',
229 `mailbox` = 'INBOX', `reply_to` = '%s', `pubmail` = %d WHERE `uid` = %d",
234 intval($mail_action),
235 dbesc($mail_movetofolder),
236 dbesc($mail_replyto),
237 intval($mail_pubmail),
240 logger("mail: updating mailaccount. Response: ".print_r($r, true));
241 $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
246 require_once('include/email.php');
247 $mb = construct_mailbox_name($eacct);
248 if(strlen($eacct['server'])) {
250 openssl_private_decrypt(hex2bin($eacct['pass']),$dcrpass,$a->user['prvkey']);
251 $mbox = email_connect($mb,$mail_user,$dcrpass);
255 notice( t('Failed to connect with email account using the settings provided.') . EOL);
260 info( t('Email settings updated.') . EOL);
264 call_hooks('connector_settings_post', $_POST);
268 if(($a->argc > 1) && ($a->argv[1] === 'features')) {
269 check_form_security_token_redirectOnErr('/settings/features', 'settings_features');
270 foreach($_POST as $k => $v) {
271 if(strpos($k,'feature_') === 0) {
272 set_pconfig(local_user(),'feature',substr($k,8),((intval($v)) ? 1 : 0));
275 info( t('Features updated') . EOL);
279 if(($a->argc > 1) && ($a->argv[1] === 'display')) {
281 check_form_security_token_redirectOnErr('/settings/display', 'settings_display');
283 $theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : $a->user['theme']);
284 $mobile_theme = ((x($_POST,'mobile_theme')) ? notags(trim($_POST['mobile_theme'])) : '');
285 $nosmile = ((x($_POST,'nosmile')) ? intval($_POST['nosmile']) : 0);
286 $noinfo = ((x($_POST,'noinfo')) ? intval($_POST['noinfo']) : 0);
287 $infinite_scroll = ((x($_POST,'infinite_scroll')) ? intval($_POST['infinite_scroll']) : 0);
288 $no_auto_update = ((x($_POST,'no_auto_update')) ? intval($_POST['no_auto_update']) : 0);
289 $browser_update = ((x($_POST,'browser_update')) ? intval($_POST['browser_update']) : 0);
290 $browser_update = $browser_update * 1000;
291 if($browser_update < 10000)
292 $browser_update = 10000;
294 $itemspage_network = ((x($_POST,'itemspage_network')) ? intval($_POST['itemspage_network']) : 40);
295 if($itemspage_network > 100)
296 $itemspage_network = 100;
297 $itemspage_mobile_network = ((x($_POST,'itemspage_mobile_network')) ? intval($_POST['itemspage_mobile_network']) : 20);
298 if($itemspage_mobile_network > 100)
299 $itemspage_mobile_network = 100;
302 if($mobile_theme !== '') {
303 set_pconfig(local_user(),'system','mobile_theme',$mobile_theme);
306 set_pconfig(local_user(),'system','update_interval', $browser_update);
307 set_pconfig(local_user(),'system','itemspage_network', $itemspage_network);
308 set_pconfig(local_user(),'system','itemspage_mobile_network', $itemspage_mobile_network);
309 set_pconfig(local_user(),'system','no_smilies',$nosmile);
310 set_pconfig(local_user(),'system','ignore_info',$noinfo);
311 set_pconfig(local_user(),'system','infinite_scroll',$infinite_scroll);
312 set_pconfig(local_user(),'system','no_auto_update',$no_auto_update);
315 if ($theme == $a->user['theme']){
316 // call theme_post only if theme has not been changed
317 if( ($themeconfigfile = get_theme_config_file($theme)) != null){
318 require_once($themeconfigfile);
324 $r = q("UPDATE `user` SET `theme` = '%s' WHERE `uid` = %d",
329 call_hooks('display_settings_post', $_POST);
330 goaway($a->get_baseurl(true) . '/settings/display' );
331 return; // NOTREACHED
334 check_form_security_token_redirectOnErr('/settings', 'settings');
336 if (x($_POST,'resend_relocate')) {
337 proc_run('php', 'include/notifier.php', 'relocate', local_user());
338 info(t("Relocate message has been send to your contacts"));
339 goaway($a->get_baseurl(true) . '/settings');
342 call_hooks('settings_post', $_POST);
344 if((x($_POST,'password')) || (x($_POST,'confirm'))) {
346 $newpass = $_POST['password'];
347 $confirm = $_POST['confirm'];
348 $oldpass = hash('whirlpool', $_POST['opassword']);
351 if($newpass != $confirm ) {
352 notice( t('Passwords do not match. Password unchanged.') . EOL);
356 if((! x($newpass)) || (! x($confirm))) {
357 notice( t('Empty passwords are not allowed. Password unchanged.') . EOL);
361 // check if the old password was supplied correctly before
362 // changing it to the new value
363 $r = q("SELECT `password` FROM `user`WHERE `uid` = %d LIMIT 1", intval(local_user()));
364 if( $oldpass != $r[0]['password'] ) {
365 notice( t('Wrong password.') . EOL);
370 $password = hash('whirlpool',$newpass);
371 $r = q("UPDATE `user` SET `password` = '%s' WHERE `uid` = %d",
376 info( t('Password changed.') . EOL);
378 notice( t('Password update failed. Please try again.') . EOL);
383 $username = ((x($_POST,'username')) ? notags(trim($_POST['username'])) : '');
384 $email = ((x($_POST,'email')) ? notags(trim($_POST['email'])) : '');
385 $timezone = ((x($_POST,'timezone')) ? notags(trim($_POST['timezone'])) : '');
386 $defloc = ((x($_POST,'defloc')) ? notags(trim($_POST['defloc'])) : '');
387 $openid = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : '');
388 $maxreq = ((x($_POST,'maxreq')) ? intval($_POST['maxreq']) : 0);
389 $expire = ((x($_POST,'expire')) ? intval($_POST['expire']) : 0);
390 $def_gid = ((x($_POST,'group-selection')) ? intval($_POST['group-selection']) : 0);
393 $expire_items = ((x($_POST,'expire_items')) ? intval($_POST['expire_items']) : 0);
394 $expire_notes = ((x($_POST,'expire_notes')) ? intval($_POST['expire_notes']) : 0);
395 $expire_starred = ((x($_POST,'expire_starred')) ? intval($_POST['expire_starred']) : 0);
396 $expire_photos = ((x($_POST,'expire_photos'))? intval($_POST['expire_photos']) : 0);
397 $expire_network_only = ((x($_POST,'expire_network_only'))? intval($_POST['expire_network_only']) : 0);
399 $allow_location = (((x($_POST,'allow_location')) && (intval($_POST['allow_location']) == 1)) ? 1: 0);
400 $publish = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0);
401 $net_publish = (((x($_POST,'profile_in_netdirectory')) && (intval($_POST['profile_in_netdirectory']) == 1)) ? 1: 0);
402 $old_visibility = (((x($_POST,'visibility')) && (intval($_POST['visibility']) == 1)) ? 1 : 0);
403 $page_flags = (((x($_POST,'page-flags')) && (intval($_POST['page-flags']))) ? intval($_POST['page-flags']) : 0);
404 $blockwall = (((x($_POST,'blockwall')) && (intval($_POST['blockwall']) == 1)) ? 0: 1); // this setting is inverted!
405 $blocktags = (((x($_POST,'blocktags')) && (intval($_POST['blocktags']) == 1)) ? 0: 1); // this setting is inverted!
406 $unkmail = (((x($_POST,'unkmail')) && (intval($_POST['unkmail']) == 1)) ? 1: 0);
407 $cntunkmail = ((x($_POST,'cntunkmail')) ? intval($_POST['cntunkmail']) : 0);
408 $suggestme = ((x($_POST,'suggestme')) ? intval($_POST['suggestme']) : 0);
409 $hide_friends = (($_POST['hide-friends'] == 1) ? 1: 0);
410 $hidewall = (($_POST['hidewall'] == 1) ? 1: 0);
411 $post_newfriend = (($_POST['post_newfriend'] == 1) ? 1: 0);
412 $post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0);
413 $post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0);
415 $email_textonly = (($_POST['email_textonly'] == 1) ? 1 : 0);
419 if(x($_POST,'notify1'))
420 $notify += intval($_POST['notify1']);
421 if(x($_POST,'notify2'))
422 $notify += intval($_POST['notify2']);
423 if(x($_POST,'notify3'))
424 $notify += intval($_POST['notify3']);
425 if(x($_POST,'notify4'))
426 $notify += intval($_POST['notify4']);
427 if(x($_POST,'notify5'))
428 $notify += intval($_POST['notify5']);
429 if(x($_POST,'notify6'))
430 $notify += intval($_POST['notify6']);
431 if(x($_POST,'notify7'))
432 $notify += intval($_POST['notify7']);
433 if(x($_POST,'notify8'))
434 $notify += intval($_POST['notify8']);
436 $email_changed = false;
440 $name_change = false;
442 if($username != $a->user['username']) {
444 if(strlen($username) > 40)
445 $err .= t(' Please use a shorter name.');
446 if(strlen($username) < 3)
447 $err .= t(' Name too short.');
450 if($email != $a->user['email']) {
451 $email_changed = true;
452 // check for the correct password
453 $r = q("SELECT `password` FROM `user`WHERE `uid` = %d LIMIT 1", intval(local_user()));
454 $password = hash('whirlpool', $_POST['mpassword']);
455 if ($password != $r[0]['password']) {
456 $err .= t('Wrong Password') . EOL;
457 $email = $a->user['email'];
459 // check the email is valid
460 if(! valid_email($email))
461 $err .= t(' Not valid email.');
462 // ensure new email is not the admin mail
463 //if((x($a->config,'admin_email')) && (strcasecmp($email,$a->config['admin_email']) == 0)) {
464 if(x($a->config,'admin_email')) {
465 $adminlist = explode(",", str_replace(" ", "", strtolower($a->config['admin_email'])));
466 if (in_array(strtolower($email), $adminlist)) {
467 $err .= t(' Cannot change to that email.');
468 $email = $a->user['email'];
478 if($timezone != $a->user['timezone']) {
479 if(strlen($timezone))
480 date_default_timezone_set($timezone);
483 $str_group_allow = perms2str($_POST['group_allow']);
484 $str_contact_allow = perms2str($_POST['contact_allow']);
485 $str_group_deny = perms2str($_POST['group_deny']);
486 $str_contact_deny = perms2str($_POST['contact_deny']);
488 $openidserver = $a->user['openidserver'];
489 //$openid = normalise_openid($openid);
491 // If openid has changed or if there's an openid but no openidserver, try and discover it.
493 if($openid != $a->user['openid'] || (strlen($openid) && (! strlen($openidserver)))) {
495 if(strlen($tmp_str) && validate_url($tmp_str)) {
496 logger('updating openidserver');
497 require_once('library/openid.php');
498 $open_id_obj = new LightOpenID;
499 $open_id_obj->identity = $openid;
500 $openidserver = $open_id_obj->discover($open_id_obj->identity);
506 set_pconfig(local_user(),'expire','items', $expire_items);
507 set_pconfig(local_user(),'expire','notes', $expire_notes);
508 set_pconfig(local_user(),'expire','starred', $expire_starred);
509 set_pconfig(local_user(),'expire','photos', $expire_photos);
510 set_pconfig(local_user(),'expire','network_only', $expire_network_only);
512 set_pconfig(local_user(),'system','suggestme', $suggestme);
513 set_pconfig(local_user(),'system','post_newfriend', $post_newfriend);
514 set_pconfig(local_user(),'system','post_joingroup', $post_joingroup);
515 set_pconfig(local_user(),'system','post_profilechange', $post_profilechange);
517 set_pconfig(local_user(),'system','email_textonly', $email_textonly);
519 if($page_flags == PAGE_PRVGROUP) {
521 if((! $str_contact_allow) && (! $str_group_allow) && (! $str_contact_deny) && (! $str_group_deny)) {
523 info( t('Private forum has no privacy permissions. Using default privacy group.'). EOL);
524 $str_group_allow = '<' . $def_gid . '>';
527 notice( t('Private forum has no privacy permissions and no default privacy group.') . EOL);
532 $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",
537 dbesc($str_contact_allow),
538 dbesc($str_group_allow),
539 dbesc($str_contact_deny),
540 dbesc($str_group_deny),
544 intval($allow_location),
547 dbesc($openidserver),
557 info( t('Settings updated.') . EOL);
559 $r = q("UPDATE `profile`
564 WHERE `is-default` = 1 AND `uid` = %d",
567 intval($net_publish),
568 intval($hide_friends),
574 q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s' WHERE `uid` = %d AND `self` = 1",
576 dbesc(datetime_convert()),
581 if(($old_visibility != $net_publish) || ($page_flags != $old_page_flags)) {
582 // Update global directory in background
583 $url = $_SESSION['my_url'];
584 if($url && strlen(get_config('system','directory_submit_url')))
585 proc_run('php',"include/directory.php","$url");
590 require_once('include/profile_update.php');
593 //$_SESSION['theme'] = $theme;
594 if($email_changed && $a->config['register_policy'] == REGISTER_VERIFY) {
596 // FIXME - set to un-verified, blocked and redirect to logout
597 // Why? Are we verifying people or email addresses?
601 goaway($a->get_baseurl(true) . '/settings' );
602 return; // NOTREACHED
606 if(! function_exists('settings_content')) {
607 function settings_content(&$a) {
610 nav_set_selected('settings');
613 #notice( t('Permission denied.') . EOL );
617 if(x($_SESSION,'submanage') && intval($_SESSION['submanage'])) {
618 notice( t('Permission denied.') . EOL );
624 if(($a->argc > 1) && ($a->argv[1] === 'oauth')) {
626 if(($a->argc > 2) && ($a->argv[2] === 'add')) {
627 $tpl = get_markup_template("settings_oauth_edit.tpl");
628 $o .= replace_macros($tpl, array(
629 '$form_security_token' => get_form_security_token("settings_oauth"),
630 '$title' => t('Add application'),
631 '$submit' => t('Save Settings'),
632 '$cancel' => t('Cancel'),
633 '$name' => array('name', t('Name'), '', ''),
634 '$key' => array('key', t('Consumer Key'), '', ''),
635 '$secret' => array('secret', t('Consumer Secret'), '', ''),
636 '$redirect' => array('redirect', t('Redirect'), '', ''),
637 '$icon' => array('icon', t('Icon url'), '', ''),
642 if(($a->argc > 3) && ($a->argv[2] === 'edit')) {
643 $r = q("SELECT * FROM clients WHERE client_id='%s' AND uid=%d",
648 notice(t("You can't edit this application."));
653 $tpl = get_markup_template("settings_oauth_edit.tpl");
654 $o .= replace_macros($tpl, array(
655 '$form_security_token' => get_form_security_token("settings_oauth"),
656 '$title' => t('Add application'),
657 '$submit' => t('Update'),
658 '$cancel' => t('Cancel'),
659 '$name' => array('name', t('Name'), $app['name'] , ''),
660 '$key' => array('key', t('Consumer Key'), $app['client_id'], ''),
661 '$secret' => array('secret', t('Consumer Secret'), $app['pw'], ''),
662 '$redirect' => array('redirect', t('Redirect'), $app['redirect_uri'], ''),
663 '$icon' => array('icon', t('Icon url'), $app['icon'], ''),
668 if(($a->argc > 3) && ($a->argv[2] === 'delete')) {
669 check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth', 't');
671 $r = q("DELETE FROM clients WHERE client_id='%s' AND uid=%d",
674 goaway($a->get_baseurl(true)."/settings/oauth/");
679 $r = q("SELECT clients.*, tokens.id as oauth_token, (clients.uid=%d) AS my
681 LEFT JOIN tokens ON clients.client_id=tokens.client_id
682 WHERE clients.uid IN (%d,0)",
687 $tpl = get_markup_template("settings_oauth.tpl");
688 $o .= replace_macros($tpl, array(
689 '$form_security_token' => get_form_security_token("settings_oauth"),
690 '$baseurl' => $a->get_baseurl(true),
691 '$title' => t('Connected Apps'),
692 '$add' => t('Add application'),
693 '$edit' => t('Edit'),
694 '$delete' => t('Delete'),
695 '$consumerkey' => t('Client key starts with'),
696 '$noname' => t('No name'),
697 '$remove' => t('Remove authorization'),
704 if(($a->argc > 1) && ($a->argv[1] === 'addon')) {
705 $settings_addons = "";
707 $r = q("SELECT * FROM `hook` WHERE `hook` = 'plugin_settings' ");
709 $settings_addons = t('No Plugin settings configured');
711 call_hooks('plugin_settings', $settings_addons);
714 $tpl = get_markup_template("settings_addons.tpl");
715 $o .= replace_macros($tpl, array(
716 '$form_security_token' => get_form_security_token("settings_addon"),
717 '$title' => t('Plugin Settings'),
718 '$settings_addons' => $settings_addons
723 if(($a->argc > 1) && ($a->argv[1] === 'features')) {
726 $features = get_features();
727 foreach($features as $fname => $fdata) {
728 $arr[$fname] = array();
729 $arr[$fname][0] = $fdata[0];
730 foreach(array_slice($fdata,1) as $f) {
731 $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')));
736 $tpl = get_markup_template("settings_features.tpl");
737 $o .= replace_macros($tpl, array(
738 '$form_security_token' => get_form_security_token("settings_features"),
739 '$title' => t('Additional Features'),
741 '$submit' => t('Save Settings'),
746 if(($a->argc > 1) && ($a->argv[1] === 'connectors')) {
748 $settings_connectors = '<span id="settings_general_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose(\'settings_general_expanded\'); openClose(\'settings_general_inflated\');">';
749 $settings_connectors .= '<h3 class="connector">'. t('General Social Media Settings').'</h3>';
750 $settings_connectors .= '</span>';
751 $settings_connectors .= '<div id="settings_general_expanded" class="settings-block" style="display: none;">';
752 $settings_connectors .= '<span class="fakelink" onclick="openClose(\'settings_general_expanded\'); openClose(\'settings_general_inflated\');">';
753 $settings_connectors .= '<h3 class="connector">'. t('General Social Media Settings').'</h3>';
754 $settings_connectors .= '</span>';
756 $checked = ((get_pconfig(local_user(), 'system', 'no_intelligent_shortening')) ? ' checked="checked" ' : '');
758 $settings_connectors .= '<div id="no_intelligent_shortening" class="field checkbox">';
759 $settings_connectors .= '<label id="no_intelligent_shortening-label" for="shortening-checkbox">'. t('Disable intelligent shortening'). '</label>';
760 $settings_connectors .= '<input id="shortening-checkbox" type="checkbox" name="no_intelligent_shortening" value="1" ' . $checked . '/>';
761 $settings_connectors .= '<span class="field_help">'.t('Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original friendica post.').'</span>';
762 $settings_connectors .= '</div>';
764 $checked = ((get_pconfig(local_user(), 'system', 'ostatus_autofriend')) ? ' checked="checked" ' : '');
766 $settings_connectors .= '<div id="snautofollow-wrapper" class="field checkbox">';
767 $settings_connectors .= '<label id="snautofollow-label" for="snautofollow-checkbox">'. t('Automatically follow any GNU Social (OStatus) followers/mentioners'). '</label>';
768 $settings_connectors .= '<input id="snautofollow-checkbox" type="checkbox" name="snautofollow" value="1" ' . $checked . '/>';
769 $settings_connectors .= '<span class="field_help">'.t('If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user.').'</span>';
770 $settings_connectors .= '</div>';
772 $settings_connectors .= '<div class="settings-submit-wrapper" ><input type="submit" name="general-submit" class="settings-submit" value="' . t('Save Settings') . '" /></div>';
774 $settings_connectors .= '</div><div class="clear"></div>';
776 call_hooks('connector_settings', $settings_connectors);
778 if (is_site_admin()) {
779 $diasp_enabled = sprintf( t('Built-in support for %s connectivity is %s'), t('Diaspora'), ((get_config('system','diaspora_enabled')) ? t('enabled') : t('disabled')));
780 $ostat_enabled = sprintf( t('Built-in support for %s connectivity is %s'), t('GNU Social (OStatus)'), ((get_config('system','ostatus_disabled')) ? t('disabled') : t('enabled')));
786 $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
787 if(get_config('system','dfrn_only'))
790 if(! $mail_disabled) {
791 $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
799 $mail_server = ((count($r)) ? $r[0]['server'] : '');
800 $mail_port = ((count($r) && intval($r[0]['port'])) ? intval($r[0]['port']) : '');
801 $mail_ssl = ((count($r)) ? $r[0]['ssltype'] : '');
802 $mail_user = ((count($r)) ? $r[0]['user'] : '');
803 $mail_replyto = ((count($r)) ? $r[0]['reply_to'] : '');
804 $mail_pubmail = ((count($r)) ? $r[0]['pubmail'] : 0);
805 $mail_action = ((count($r)) ? $r[0]['action'] : 0);
806 $mail_movetofolder = ((count($r)) ? $r[0]['movetofolder'] : '');
807 $mail_chk = ((count($r)) ? $r[0]['last_check'] : '0000-00-00 00:00:00');
810 $tpl = get_markup_template("settings_connectors.tpl");
812 if(! service_class_allows(local_user(),'email_connect')) {
813 $mail_disabled_message = upgrade_bool_message();
816 $mail_disabled_message = (($mail_disabled) ? t('Email access is disabled on this site.') : '');
820 $o .= replace_macros($tpl, array(
821 '$form_security_token' => get_form_security_token("settings_connectors"),
823 '$title' => t('Social Networks'),
825 '$diasp_enabled' => $diasp_enabled,
826 '$ostat_enabled' => $ostat_enabled,
828 '$h_imap' => t('Email/Mailbox Setup'),
829 '$imap_desc' => t("If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox."),
830 '$imap_lastcheck' => array('imap_lastcheck', t('Last successful email check:'), $mail_chk,''),
831 '$mail_disabled' => $mail_disabled_message,
832 '$mail_server' => array('mail_server', t('IMAP server name:'), $mail_server, ''),
833 '$mail_port' => array('mail_port', t('IMAP port:'), $mail_port, ''),
834 '$mail_ssl' => array('mail_ssl', t('Security:'), strtoupper($mail_ssl), '', array( 'notls'=>t('None'), 'TLS'=>'TLS', 'SSL'=>'SSL')),
835 '$mail_user' => array('mail_user', t('Email login name:'), $mail_user, ''),
836 '$mail_pass' => array('mail_pass', t('Email password:'), '', ''),
837 '$mail_replyto' => array('mail_replyto', t('Reply-to address:'), $mail_replyto, 'Optional'),
838 '$mail_pubmail' => array('mail_pubmail', t('Send public posts to all email contacts:'), $mail_pubmail, ''),
839 '$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'))),
840 '$mail_movetofolder' => array('mail_movetofolder', t('Move to folder:'), $mail_movetofolder, ''),
841 '$submit' => t('Save Settings'),
843 '$settings_connectors' => $settings_connectors
846 call_hooks('display_settings', $o);
853 if(($a->argc > 1) && ($a->argv[1] === 'display')) {
854 $default_theme = get_config('system','theme');
856 $default_theme = 'default';
857 $default_mobile_theme = get_config('system','mobile-theme');
858 if(! $mobile_default_theme)
859 $mobile_default_theme = 'none';
861 $allowed_themes_str = get_config('system','allowed_themes');
862 $allowed_themes_raw = explode(',',$allowed_themes_str);
863 $allowed_themes = array();
864 if(count($allowed_themes_raw))
865 foreach($allowed_themes_raw as $x)
866 if(strlen(trim($x)) && is_dir("view/theme/$x"))
867 $allowed_themes[] = trim($x);
871 $mobile_themes = array("---" => t('No special theme for mobile devices'));
872 $files = glob('view/theme/*'); /* */
873 if($allowed_themes) {
874 foreach($allowed_themes as $th) {
876 $is_experimental = file_exists('view/theme/' . $th . '/experimental');
877 $unsupported = file_exists('view/theme/' . $th . '/unsupported');
878 $is_mobile = file_exists('view/theme/' . $th . '/mobile');
879 if (!$is_experimental or ($is_experimental && (get_config('experimentals','exp_themes')==1 or get_config('experimentals','exp_themes')===false))){
880 $theme_name = (($is_experimental) ? sprintf("%s - \x28Experimental\x29", $f) : $f);
882 $mobile_themes[$f]=$theme_name;
885 $themes[$f]=$theme_name;
890 $theme_selected = (!x($_SESSION,'theme')? $default_theme : $_SESSION['theme']);
891 $mobile_theme_selected = (!x($_SESSION,'mobile-theme')? $default_mobile_theme : $_SESSION['mobile-theme']);
893 $browser_update = intval(get_pconfig(local_user(), 'system','update_interval'));
894 $browser_update = (($browser_update == 0) ? 40 : $browser_update / 1000); // default if not set: 40 seconds
896 $itemspage_network = intval(get_pconfig(local_user(), 'system','itemspage_network'));
897 $itemspage_network = (($itemspage_network > 0 && $itemspage_network < 101) ? $itemspage_network : 40); // default if not set: 40 items
898 $itemspage_mobile_network = intval(get_pconfig(local_user(), 'system','itemspage_mobile_network'));
899 $itemspage_mobile_network = (($itemspage_mobile_network > 0 && $itemspage_mobile_network < 101) ? $itemspage_mobile_network : 20); // default if not set: 20 items
901 $nosmile = get_pconfig(local_user(),'system','no_smilies');
902 $nosmile = (($nosmile===false)? '0': $nosmile); // default if not set: 0
904 $noinfo = get_pconfig(local_user(),'system','ignore_info');
905 $noinfo = (($noinfo===false)? '0': $noinfo); // default if not set: 0
907 $infinite_scroll = get_pconfig(local_user(),'system','infinite_scroll');
908 $infinite_scroll = (($infinite_scroll===false)? '0': $infinite_scroll); // default if not set: 0
910 $no_auto_update = get_pconfig(local_user(),'system','no_auto_update');
911 $no_auto_update = (($no_auto_update===false)? '0': $no_auto_update); // default if not set: 0
914 if( ($themeconfigfile = get_theme_config_file($theme_selected)) != null){
915 require_once($themeconfigfile);
916 $theme_config = theme_content($a);
919 $tpl = get_markup_template("settings_display.tpl");
920 $o = replace_macros($tpl, array(
921 '$ptitle' => t('Display Settings'),
922 '$form_security_token' => get_form_security_token("settings_display"),
923 '$submit' => t('Save Settings'),
924 '$baseurl' => $a->get_baseurl(true),
925 '$uid' => local_user(),
927 '$theme' => array('theme', t('Display Theme:'), $theme_selected, '', $themes, true),
928 '$mobile_theme' => array('mobile_theme', t('Mobile Theme:'), $mobile_theme_selected, '', $mobile_themes, false),
929 '$ajaxint' => array('browser_update', t("Update browser every xx seconds"), $browser_update, t('Minimum of 10 seconds, no maximum')),
930 '$itemspage_network' => array('itemspage_network', t("Number of items to display per page:"), $itemspage_network, t('Maximum of 100 items')),
931 '$itemspage_mobile_network' => array('itemspage_mobile_network', t("Number of items to display per page when viewed from mobile device:"), $itemspage_mobile_network, t('Maximum of 100 items')),
932 '$nosmile' => array('nosmile', t("Don't show emoticons"), $nosmile, ''),
933 '$noinfo' => array('noinfo', t("Don't show notices"), $noinfo, ''),
934 '$infinite_scroll' => array('infinite_scroll', t("Infinite scroll"), $infinite_scroll, ''),
935 '$no_auto_update' => array('no_auto_update', t("Automatic updates only at the top of the network page"), $no_auto_update, 'When disabled, the network page is updated all the time, which could be confusing while reading.'),
937 'stitle' => t('Theme settings'),
938 '$theme_config' => $theme_config,
941 $tpl = get_markup_template("settings_display_end.tpl");
942 $a->page['end'] .= replace_macros($tpl, array(
943 '$theme' => array('theme', t('Display Theme:'), $theme_selected, '', $themes)
954 require_once('include/acl_selectors.php');
956 $p = q("SELECT * FROM `profile` WHERE `is-default` = 1 AND `uid` = %d LIMIT 1",
962 $username = $a->user['username'];
963 $email = $a->user['email'];
964 $nickname = $a->user['nickname'];
965 $timezone = $a->user['timezone'];
966 $notify = $a->user['notify-flags'];
967 $defloc = $a->user['default-location'];
968 $openid = $a->user['openid'];
969 $maxreq = $a->user['maxreq'];
970 $expire = ((intval($a->user['expire'])) ? $a->user['expire'] : '');
971 $blockwall = $a->user['blockwall'];
972 $blocktags = $a->user['blocktags'];
973 $unkmail = $a->user['unkmail'];
974 $cntunkmail = $a->user['cntunkmail'];
976 $expire_items = get_pconfig(local_user(), 'expire','items');
977 $expire_items = (($expire_items===false)? '1' : $expire_items); // default if not set: 1
979 $expire_notes = get_pconfig(local_user(), 'expire','notes');
980 $expire_notes = (($expire_notes===false)? '1' : $expire_notes); // default if not set: 1
982 $expire_starred = get_pconfig(local_user(), 'expire','starred');
983 $expire_starred = (($expire_starred===false)? '1' : $expire_starred); // default if not set: 1
985 $expire_photos = get_pconfig(local_user(), 'expire','photos');
986 $expire_photos = (($expire_photos===false)? '0' : $expire_photos); // default if not set: 0
988 $expire_network_only = get_pconfig(local_user(), 'expire','network_only');
989 $expire_network_only = (($expire_network_only===false)? '0' : $expire_network_only); // default if not set: 0
992 $suggestme = get_pconfig(local_user(), 'system','suggestme');
993 $suggestme = (($suggestme===false)? '0': $suggestme); // default if not set: 0
995 $post_newfriend = get_pconfig(local_user(), 'system','post_newfriend');
996 $post_newfriend = (($post_newfriend===false)? '0': $post_newfriend); // default if not set: 0
998 $post_joingroup = get_pconfig(local_user(), 'system','post_joingroup');
999 $post_joingroup = (($post_joingroup===false)? '0': $post_joingroup); // default if not set: 0
1001 $post_profilechange = get_pconfig(local_user(), 'system','post_profilechange');
1002 $post_profilechange = (($post_profilechange===false)? '0': $post_profilechange); // default if not set: 0
1006 if(! strlen($a->user['timezone']))
1007 $timezone = date_default_timezone_get();
1011 $pageset_tpl = get_markup_template('pagetypes.tpl');
1012 $pagetype = replace_macros($pageset_tpl, array(
1013 '$user' => t("User Types"),
1014 '$community' => t("Community Types"),
1015 '$page_normal' => array('page-flags', t('Normal Account Page'), PAGE_NORMAL,
1016 t('This account is a normal personal profile'),
1017 ($a->user['page-flags'] == PAGE_NORMAL)),
1019 '$page_soapbox' => array('page-flags', t('Soapbox Page'), PAGE_SOAPBOX,
1020 t('Automatically approve all connection/friend requests as read-only fans'),
1021 ($a->user['page-flags'] == PAGE_SOAPBOX)),
1023 '$page_community' => array('page-flags', t('Community Forum/Celebrity Account'), PAGE_COMMUNITY,
1024 t('Automatically approve all connection/friend requests as read-write fans'),
1025 ($a->user['page-flags'] == PAGE_COMMUNITY)),
1027 '$page_freelove' => array('page-flags', t('Automatic Friend Page'), PAGE_FREELOVE,
1028 t('Automatically approve all connection/friend requests as friends'),
1029 ($a->user['page-flags'] == PAGE_FREELOVE)),
1031 '$page_prvgroup' => array('page-flags', t('Private Forum [Experimental]'), PAGE_PRVGROUP,
1032 t('Private forum - approved members only'),
1033 ($a->user['page-flags'] == PAGE_PRVGROUP)),
1038 $noid = get_config('system','no_openid');
1041 $openid_field = false;
1044 $openid_field = array('openid_url', t('OpenID:'),$openid, t("\x28Optional\x29 Allow this OpenID to login to this account."), "", "", "url");
1048 $opt_tpl = get_markup_template("field_yesno.tpl");
1049 if(get_config('system','publish_all')) {
1050 $profile_in_dir = '<input type="hidden" name="profile_in_directory" value="1" />';
1053 $profile_in_dir = replace_macros($opt_tpl,array(
1054 '$field' => array('profile_in_directory', t('Publish your default profile in your local site directory?'), $profile['publish'], '', array(t('No'),t('Yes'))),
1058 if(strlen(get_config('system','directory_submit_url'))) {
1059 $profile_in_net_dir = replace_macros($opt_tpl,array(
1060 '$field' => array('profile_in_netdirectory', t('Publish your default profile in the global social directory?'), $profile['net-publish'], '', array(t('No'),t('Yes'))),
1064 $profile_in_net_dir = '';
1067 $hide_friends = replace_macros($opt_tpl,array(
1068 '$field' => array('hide-friends', t('Hide your contact/friend list from viewers of your default profile?'), $profile['hide-friends'], '', array(t('No'),t('Yes'))),
1071 $hide_wall = replace_macros($opt_tpl,array(
1072 '$field' => array('hidewall', t('Hide your profile details from unknown viewers?'), $a->user['hidewall'], t("If enabled, posting public messages to Diaspora and other networks isn't possible."), array(t('No'),t('Yes'))),
1076 $blockwall = replace_macros($opt_tpl,array(
1077 '$field' => array('blockwall', t('Allow friends to post to your profile page?'), (intval($a->user['blockwall']) ? '0' : '1'), '', array(t('No'),t('Yes'))),
1082 $blocktags = replace_macros($opt_tpl,array(
1083 '$field' => array('blocktags', t('Allow friends to tag your posts?'), (intval($a->user['blocktags']) ? '0' : '1'), '', array(t('No'),t('Yes'))),
1088 $suggestme = replace_macros($opt_tpl,array(
1089 '$field' => array('suggestme', t('Allow us to suggest you as a potential friend to new members?'), $suggestme, '', array(t('No'),t('Yes'))),
1094 $unkmail = replace_macros($opt_tpl,array(
1095 '$field' => array('unkmail', t('Permit unknown people to send you private mail?'), $unkmail, '', array(t('No'),t('Yes'))),
1099 $invisible = (((! $profile['publish']) && (! $profile['net-publish']))
1103 info( t('Profile is <strong>not published</strong>.') . EOL );
1106 //$subdir = ((strlen($a->get_path())) ? '<br />' . t('or') . ' ' . $a->get_baseurl(true) . '/profile/' . $nickname : '');
1108 $tpl_addr = get_markup_template("settings_nick_set.tpl");
1110 $prof_addr = replace_macros($tpl_addr,array(
1111 '$desc' => sprintf(t("Your Identity Address is <strong>'%s'</strong> or '%s'."), $nickname.'@'.$a->get_hostname(), $a->get_baseurl().'/profile/'.$nickname),
1112 '$basepath' => $a->get_hostname()
1115 $stpl = get_markup_template('settings.tpl');
1117 $expire_arr = array(
1118 'days' => array('expire', t("Automatically expire posts after this many days:"), $expire, t('If empty, posts will not expire. Expired posts will be deleted')),
1119 'advanced' => t('Advanced expiration settings'),
1120 'label' => t('Advanced Expiration'),
1121 'items' => array('expire_items', t("Expire posts:"), $expire_items, '', array(t('No'),t('Yes'))),
1122 'notes' => array('expire_notes', t("Expire personal notes:"), $expire_notes, '', array(t('No'),t('Yes'))),
1123 'starred' => array('expire_starred', t("Expire starred posts:"), $expire_starred, '', array(t('No'),t('Yes'))),
1124 'photos' => array('expire_photos', t("Expire photos:"), $expire_photos, '', array(t('No'),t('Yes'))),
1125 'network_only' => array('expire_network_only', t("Only expire posts by others:"), $expire_network_only, '', array(t('No'),t('Yes'))),
1128 require_once('include/group.php');
1129 $group_select = mini_group_select(local_user(),$a->user['def_gid']);
1132 // Private/public post links for the non-JS ACL form
1134 if($_REQUEST['public'])
1137 $query_str = $a->query_string;
1138 if(strpos($query_str, 'public=1') !== false)
1139 $query_str = str_replace(array('?public=1', '&public=1'), array('', ''), $query_str);
1141 // I think $a->query_string may never have ? in it, but I could be wrong
1142 // It looks like it's from the index.php?q=[etc] rewrite that the web
1143 // server does, which converts any ? to &, e.g. suggest&ignore=61 for suggest?ignore=61
1144 if(strpos($query_str, '?') === false)
1145 $public_post_link = '?public=1';
1147 $public_post_link = '&public=1';
1150 $o .= replace_macros($stpl, array(
1151 '$ptitle' => t('Account Settings'),
1153 '$submit' => t('Save Settings'),
1154 '$baseurl' => $a->get_baseurl(true),
1155 '$uid' => local_user(),
1156 '$form_security_token' => get_form_security_token("settings"),
1157 '$nickname_block' => $prof_addr,
1159 '$h_pass' => t('Password Settings'),
1160 '$password1'=> array('password', t('New Password:'), '', ''),
1161 '$password2'=> array('confirm', t('Confirm:'), '', t('Leave password fields blank unless changing')),
1162 '$password3'=> array('opassword', t('Current Password:'), '', t('Your current password to confirm the changes')),
1163 '$password4'=> array('mpassword', t('Password:'), '', t('Your current password to confirm the changes')),
1164 '$oid_enable' => (! get_config('system','no_openid')),
1165 '$openid' => $openid_field,
1167 '$h_basic' => t('Basic Settings'),
1168 '$username' => array('username', t('Full Name:'), $username,''),
1169 '$email' => array('email', t('Email Address:'), $email, '', '', '', 'email'),
1170 '$timezone' => array('timezone_select' , t('Your Timezone:'), select_timezone($timezone), ''),
1171 '$defloc' => array('defloc', t('Default Post Location:'), $defloc, ''),
1172 '$allowloc' => array('allow_location', t('Use Browser Location:'), ($a->user['allow_location'] == 1), ''),
1175 '$h_prv' => t('Security and Privacy Settings'),
1177 '$maxreq' => array('maxreq', t('Maximum Friend Requests/Day:'), $maxreq ,t("\x28to prevent spam abuse\x29")),
1178 '$permissions' => t('Default Post Permissions'),
1179 '$permdesc' => t("\x28click to open/close\x29"),
1180 '$visibility' => $profile['net-publish'],
1181 '$aclselect' => populate_acl($a->user),
1182 '$suggestme' => $suggestme,
1183 '$blockwall'=> $blockwall, // array('blockwall', t('Allow friends to post to your profile page:'), !$blockwall, ''),
1184 '$blocktags'=> $blocktags, // array('blocktags', t('Allow friends to tag your posts:'), !$blocktags, ''),
1186 // ACL permissions box
1187 '$acl_data' => construct_acl_data($a, $a->user), // For non-Javascript ACL selector
1188 '$group_perms' => t('Show to Groups'),
1189 '$contact_perms' => t('Show to Contacts'),
1190 '$private' => t('Default Private Post'),
1191 '$public' => t('Default Public Post'),
1192 '$is_private' => $private_post,
1193 '$return_path' => $query_str,
1194 '$public_link' => $public_post_link,
1195 '$settings_perms' => t('Default Permissions for New Posts'),
1197 '$group_select' => $group_select,
1200 '$expire' => $expire_arr,
1202 '$profile_in_dir' => $profile_in_dir,
1203 '$profile_in_net_dir' => $profile_in_net_dir,
1204 '$hide_friends' => $hide_friends,
1205 '$hide_wall' => $hide_wall,
1206 '$unkmail' => $unkmail,
1207 '$cntunkmail' => array('cntunkmail', t('Maximum private messages per day from unknown people:'), $cntunkmail ,t("\x28to prevent spam abuse\x29")),
1210 '$h_not' => t('Notification Settings'),
1211 '$activity_options' => t('By default post a status message when:'),
1212 '$post_newfriend' => array('post_newfriend', t('accepting a friend request'), $post_newfriend, ''),
1213 '$post_joingroup' => array('post_joingroup', t('joining a forum/community'), $post_joingroup, ''),
1214 '$post_profilechange' => array('post_profilechange', t('making an <em>interesting</em> profile change'), $post_profilechange, ''),
1215 '$lbl_not' => t('Send a notification email when:'),
1216 '$notify1' => array('notify1', t('You receive an introduction'), ($notify & NOTIFY_INTRO), NOTIFY_INTRO, ''),
1217 '$notify2' => array('notify2', t('Your introductions are confirmed'), ($notify & NOTIFY_CONFIRM), NOTIFY_CONFIRM, ''),
1218 '$notify3' => array('notify3', t('Someone writes on your profile wall'), ($notify & NOTIFY_WALL), NOTIFY_WALL, ''),
1219 '$notify4' => array('notify4', t('Someone writes a followup comment'), ($notify & NOTIFY_COMMENT), NOTIFY_COMMENT, ''),
1220 '$notify5' => array('notify5', t('You receive a private message'), ($notify & NOTIFY_MAIL), NOTIFY_MAIL, ''),
1221 '$notify6' => array('notify6', t('You receive a friend suggestion'), ($notify & NOTIFY_SUGGEST), NOTIFY_SUGGEST, ''),
1222 '$notify7' => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, ''),
1223 '$notify8' => array('notify8', t('You are poked/prodded/etc. in a post'), ($notify & NOTIFY_POKE), NOTIFY_POKE, ''),
1225 '$desktop_notifications' => array('desktop_notifications', t('Activate desktop notifications') , false, t('Show desktop popup on new notifications')),
1227 '$email_textonly' => array('email_textonly', t('Text-only notification emails'),
1228 get_pconfig(local_user(),'system','email_textonly'),
1229 t('Send text only notification emails, without the html part')),
1231 '$h_advn' => t('Advanced Account/Page Type Settings'),
1232 '$h_descadvn' => t('Change the behaviour of this account for special situations'),
1233 '$pagetype' => $pagetype,
1235 '$relocate' => t('Relocate'),
1236 '$relocate_text' => t("If you have moved this profile from another server, and some of your contacts don't receive your updates, try pushing this button."),
1237 '$relocate_button' => t("Resend relocate message to contacts"),
1241 call_hooks('settings_form',$o);
1243 $o .= '</form>' . "\r\n";