]> git.mxchange.org Git - friendica.git/blobdiff - mod/settings.php
Diaspora: Fix class name case + add self
[friendica.git] / mod / settings.php
index 612edaaf881e479ee9af33c5389ded13b6ca3115..663acd69f0267c974e5bb26776ea65a66261ca1e 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+require_once('include/group.php');
+require_once('include/socgraph.php');
 
 function get_theme_config_file($theme){
        $a = get_app();
@@ -39,52 +41,71 @@ function settings_init(&$a) {
        $tabs = array(
                array(
                        'label' => t('Account'),
-                       'url'   => $a->get_baseurl(true).'/settings',
+                       'url'   => 'settings',
                        'selected'      =>  (($a->argc == 1) && ($a->argv[0] === 'settings')?'active':''),
+                       'accesskey' => 'o',
                ),
-               array(
-                       'label' => t('Additional features'),
-                       'url'   => $a->get_baseurl(true).'/settings/features',
-                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'features') ? 'active' : ''),
-               ),
-               array(
-                       'label' => t('Display'),
-                       'url'   => $a->get_baseurl(true).'/settings/display',
-                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'display')?'active':''),
-               ),
+       );
 
-               array(
-                       'label' => t('Social Networks'),
-                       'url'   => $a->get_baseurl(true).'/settings/connectors',
-                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'connectors')?'active':''),
-               ),
-               array(
-                       'label' => t('Plugins'),
-                       'url'   => $a->get_baseurl(true).'/settings/addon',
-                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'addon')?'active':''),
-               ),
-               array(
-                       'label' => t('Delegations'),
-                       'url'   => $a->get_baseurl(true).'/delegate',
-                       'selected'      => (($a->argc == 1) && ($a->argv[0] === 'delegate')?'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' => (($a->argc == 1) && ($a->argv[0] === 'uexport')?'active':''),
-               ),
-               array(
-                       'label' => t('Remove account'),
-                       'url' => $a->get_baseurl(true) . '/removeme',
-                       'selected' => (($a->argc == 1) && ($a->argv[0] === 'removeme')?'active':''),
-               )
+       if(get_features()) {
+               $tabs[] =       array(
+                                       'label' => t('Additional features'),
+                                       'url'   => 'settings/features',
+                                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'features') ? 'active' : ''),
+                                       'accesskey' => 't',
+                               );
+       }
+
+       $tabs[] =       array(
+               'label' => t('Display'),
+               'url'   => 'settings/display',
+               'selected'      => (($a->argc > 1) && ($a->argv[1] === 'display')?'active':''),
+               'accesskey' => 'i',
+       );
+
+       $tabs[] =       array(
+               'label' => t('Social Networks'),
+               'url'   => 'settings/connectors',
+               'selected'      => (($a->argc > 1) && ($a->argv[1] === 'connectors')?'active':''),
+               'accesskey' => 'w',
+       );
+
+       $tabs[] =       array(
+               'label' => t('Plugins'),
+               'url'   => 'settings/addon',
+               'selected'      => (($a->argc > 1) && ($a->argv[1] === 'addon')?'active':''),
+               'accesskey' => 'l',
+       );
+
+       $tabs[] =       array(
+               'label' => t('Delegations'),
+               'url'   => 'delegate',
+               'selected'      => (($a->argc == 1) && ($a->argv[0] === 'delegate')?'active':''),
+               'accesskey' => 'd',
+       );
+
+       $tabs[] =       array(
+               'label' => t('Connected apps'),
+               'url' => 'settings/oauth',
+               'selected' => (($a->argc > 1) && ($a->argv[1] === 'oauth')?'active':''),
+               'accesskey' => 'b',
+       );
+
+       $tabs[] =       array(
+               'label' => t('Export personal data'),
+               'url' => 'uexport',
+               'selected' => (($a->argc == 1) && ($a->argv[0] === 'uexport')?'active':''),
+               'accesskey' => 'e',
+       );
+
+       $tabs[] =       array(
+               'label' => t('Remove account'),
+               'url' => 'removeme',
+               'selected' => (($a->argc == 1) && ($a->argv[0] === 'removeme')?'active':''),
+               'accesskey' => 'r',
        );
 
+
        $tabtpl = get_markup_template("generic_links_widget.tpl");
        $a->page['aside'] = replace_macros($tabtpl, array(
                '$title' => t('Settings'),
@@ -178,7 +199,10 @@ function settings_post(&$a) {
                check_form_security_token_redirectOnErr('/settings/connectors', 'settings_connectors');
 
                if(x($_POST, 'general-submit')) {
-                       set_pconfig(local_user(), 'system', 'no_intelligent_shortening', $_POST['no_intelligent_shortening']);
+                       set_pconfig(local_user(), 'system', 'no_intelligent_shortening', intval($_POST['no_intelligent_shortening']));
+                       set_pconfig(local_user(), 'system', 'ostatus_autofriend', intval($_POST['snautofollow']));
+                       set_pconfig(local_user(), 'ostatus', 'default_group', $_POST['group-selection']);
+                       set_pconfig(local_user(), 'ostatus', 'legacy_contact', $_POST['legacy_contact']);
                } elseif(x($_POST, 'imap-submit')) {
 
                        $mail_server       = ((x($_POST,'mail_server')) ? $_POST['mail_server'] : '');
@@ -255,7 +279,7 @@ function settings_post(&$a) {
                return;
        }
 
-       if(($a->argc > 1) && ($a->argv[1] === 'features')) {
+       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) {
@@ -266,45 +290,52 @@ function settings_post(&$a) {
                return;
        }
 
-       if(($a->argc > 1) && ($a->argv[1] === 'display')) {
-
+       if (($a->argc > 1) && ($a->argv[1] === 'display')) {
                check_form_security_token_redirectOnErr('/settings/display', 'settings_display');
 
-               $theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme']))  : $a->user['theme']);
-               $mobile_theme = ((x($_POST,'mobile_theme')) ? notags(trim($_POST['mobile_theme']))  : '');
-               $nosmile = ((x($_POST,'nosmile')) ? intval($_POST['nosmile'])  : 0);
-               $noinfo = ((x($_POST,'noinfo')) ? intval($_POST['noinfo'])  : 0);
-               $infinite_scroll = ((x($_POST,'infinite_scroll')) ? intval($_POST['infinite_scroll'])  : 0);
-               $no_auto_update = ((x($_POST,'no_auto_update')) ? intval($_POST['no_auto_update'])  : 0);
-               $browser_update   = ((x($_POST,'browser_update')) ? intval($_POST['browser_update']) : 0);
-               $browser_update   = $browser_update * 1000;
-               if($browser_update < 10000)
-                       $browser_update = 10000;
-
-               $itemspage_network   = ((x($_POST,'itemspage_network')) ? intval($_POST['itemspage_network']) : 40);
-               if($itemspage_network > 100)
+               $theme             = x($_POST, 'theme')             ? notags(trim($_POST['theme']))        : $a->user['theme'];
+               $mobile_theme      = x($_POST, 'mobile_theme')      ? notags(trim($_POST['mobile_theme'])) : '';
+               $nosmile           = x($_POST, 'nosmile')           ? intval($_POST['nosmile'])            : 0;
+               $first_day_of_week = x($_POST, 'first_day_of_week') ? intval($_POST['first_day_of_week'])  : 0;
+               $noinfo            = x($_POST, 'noinfo')            ? intval($_POST['noinfo'])             : 0;
+               $infinite_scroll   = x($_POST, 'infinite_scroll')   ? intval($_POST['infinite_scroll'])    : 0;
+               $no_auto_update    = x($_POST, 'no_auto_update')    ? intval($_POST['no_auto_update'])     : 0;
+               $bandwidth_saver   = x($_POST, 'bandwidth_saver')   ? intval($_POST['bandwidth_saver'])    : 0;
+               $nowarn_insecure   = x($_POST, 'nowarn_insecure')   ? intval($_POST['nowarn_insecure'])    : 0;
+               $browser_update    = x($_POST, 'browser_update')    ? intval($_POST['browser_update'])     : 0;
+               if ($browser_update != -1) {
+                       $browser_update = $browser_update * 1000;
+                       if ($browser_update < 10000)
+                               $browser_update = 10000;
+               }
+
+               $itemspage_network = x($_POST,'itemspage_network')  ? intval($_POST['itemspage_network'])  : 40;
+               if ($itemspage_network > 100) {
                        $itemspage_network = 100;
-               $itemspage_mobile_network   = ((x($_POST,'itemspage_mobile_network')) ? intval($_POST['itemspage_mobile_network']) : 20);
-               if($itemspage_mobile_network > 100)
+               }
+               $itemspage_mobile_network = x($_POST,'itemspage_mobile_network') ? intval($_POST['itemspage_mobile_network']) : 20;
+               if ($itemspage_mobile_network > 100) {
                        $itemspage_mobile_network = 100;
-
+               }
 
                if($mobile_theme !== '') {
                        set_pconfig(local_user(),'system','mobile_theme',$mobile_theme);
                }
 
-               set_pconfig(local_user(),'system','update_interval', $browser_update);
-               set_pconfig(local_user(),'system','itemspage_network', $itemspage_network);
-               set_pconfig(local_user(),'system','itemspage_mobile_network', $itemspage_mobile_network);
-               set_pconfig(local_user(),'system','no_smilies',$nosmile);
-               set_pconfig(local_user(),'system','ignore_info',$noinfo);
-               set_pconfig(local_user(),'system','infinite_scroll',$infinite_scroll);
-               set_pconfig(local_user(),'system','no_auto_update',$no_auto_update);
-
-
-               if ($theme == $a->user['theme']){
+               set_pconfig(local_user(), 'system', 'nowarn_insecure'         , $nowarn_insecure);
+               set_pconfig(local_user(), 'system', 'update_interval'         , $browser_update);
+               set_pconfig(local_user(), 'system', 'itemspage_network'       , $itemspage_network);
+               set_pconfig(local_user(), 'system', 'itemspage_mobile_network', $itemspage_mobile_network);
+               set_pconfig(local_user(), 'system', 'no_smilies'              , $nosmile);
+               set_pconfig(local_user(), 'system', 'first_day_of_week'       , $first_day_of_week);
+               set_pconfig(local_user(), 'system', 'ignore_info'             , $noinfo);
+               set_pconfig(local_user(), 'system', 'infinite_scroll'         , $infinite_scroll);
+               set_pconfig(local_user(), 'system', 'no_auto_update'          , $no_auto_update);
+               set_pconfig(local_user(), 'system', 'bandwidth_saver'         , $bandwidth_saver);
+
+               if ($theme == $a->user['theme']) {
                        // call theme_post only if theme has not been changed
-                       if( ($themeconfigfile = get_theme_config_file($theme)) != null){
+                       if (($themeconfigfile = get_theme_config_file($theme)) != null) {
                                require_once($themeconfigfile);
                                theme_post($a);
                        }
@@ -317,16 +348,16 @@ function settings_post(&$a) {
                );
 
                call_hooks('display_settings_post', $_POST);
-               goaway($a->get_baseurl(true) . '/settings/display' );
+               goaway('settings/display' );
                return; // NOTREACHED
        }
 
        check_form_security_token_redirectOnErr('/settings', 'settings');
 
        if (x($_POST,'resend_relocate')) {
-               proc_run('php', 'include/notifier.php', 'relocate', local_user());
+               proc_run(PRIORITY_HIGH, 'include/notifier.php', 'relocate', local_user());
                info(t("Relocate message has been send to your contacts"));
-               goaway($a->get_baseurl(true) . '/settings');
+               goaway('settings');
        }
 
        call_hooks('settings_post', $_POST);
@@ -373,6 +404,8 @@ function settings_post(&$a) {
        $username         = ((x($_POST,'username'))   ? notags(trim($_POST['username']))     : '');
        $email            = ((x($_POST,'email'))      ? notags(trim($_POST['email']))        : '');
        $timezone         = ((x($_POST,'timezone'))   ? notags(trim($_POST['timezone']))     : '');
+       $language         = ((x($_POST,'language'))   ? notags(trim($_POST['language']))     : '');
+
        $defloc           = ((x($_POST,'defloc'))     ? notags(trim($_POST['defloc']))       : '');
        $openid           = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url']))   : '');
        $maxreq           = ((x($_POST,'maxreq'))     ? intval($_POST['maxreq'])             : 0);
@@ -390,6 +423,7 @@ function settings_post(&$a) {
        $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);
+       $account_type     = (((x($_POST,'account-type')) && (intval($_POST['account-type']))) ? intval($_POST['account-type']) : 0);
        $page_flags       = (((x($_POST,'page-flags')) && (intval($_POST['page-flags']))) ? intval($_POST['page-flags']) : 0);
        $blockwall        = (((x($_POST,'blockwall')) && (intval($_POST['blockwall']) == 1)) ? 0: 1); // this setting is inverted!
        $blocktags        = (((x($_POST,'blocktags')) && (intval($_POST['blocktags']) == 1)) ? 0: 1); // this setting is inverted!
@@ -423,6 +457,16 @@ function settings_post(&$a) {
        if(x($_POST,'notify8'))
                $notify += intval($_POST['notify8']);
 
+       // Adjust the page flag if the account type doesn't fit to the page flag.
+       if (($account_type == ACCOUNT_TYPE_PERSON) AND !in_array($page_flags, array(PAGE_NORMAL, PAGE_SOAPBOX, PAGE_FREELOVE)))
+               $page_flags = PAGE_NORMAL;
+       elseif (($account_type == ACCOUNT_TYPE_ORGANISATION) AND !in_array($page_flags, array(PAGE_SOAPBOX)))
+               $page_flags = PAGE_SOAPBOX;
+       elseif (($account_type == ACCOUNT_TYPE_NEWS) AND !in_array($page_flags, array(PAGE_SOAPBOX)))
+               $page_flags = PAGE_SOAPBOX;
+       elseif (($account_type == ACCOUNT_TYPE_COMMUNITY) AND !in_array($page_flags, array(PAGE_COMMUNITY, PAGE_PRVGROUP)))
+               $page_flags = PAGE_COMMUNITY;
+
        $email_changed = false;
 
        $err = '';
@@ -519,7 +563,15 @@ function settings_post(&$a) {
                }
        }
 
-       $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",
+
+       $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, `account-type` = %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, `language` = '%s'
+                       WHERE `uid` = %d",
                        dbesc($username),
                        dbesc($email),
                        dbesc($openid),
@@ -530,6 +582,7 @@ function settings_post(&$a) {
                        dbesc($str_group_deny),
                        intval($notify),
                        intval($page_flags),
+                       intval($account_type),
                        dbesc($defloc),
                        intval($allow_location),
                        intval($maxreq),
@@ -541,11 +594,15 @@ function settings_post(&$a) {
                        intval($blocktags),
                        intval($unkmail),
                        intval($cntunkmail),
+                       dbesc($language),
                        intval(local_user())
        );
        if($r)
                info( t('Settings updated.') . EOL);
 
+       // clear session language
+       unset($_SESSION['language']);
+
        $r = q("UPDATE `profile`
                SET `publish` = %d,
                `name` = '%s',
@@ -561,7 +618,7 @@ function settings_post(&$a) {
 
 
        if($name_change) {
-               q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s' WHERE `uid` = %d AND `self` = 1",
+               q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s' WHERE `uid` = %d AND `self`",
                        dbesc($username),
                        dbesc(datetime_convert()),
                        intval(local_user())
@@ -571,15 +628,16 @@ function settings_post(&$a) {
        if(($old_visibility != $net_publish) || ($page_flags != $old_page_flags)) {
                // Update global directory in background
                $url = $_SESSION['my_url'];
-               if($url && strlen(get_config('system','directory_submit_url')))
-                       proc_run('php',"include/directory.php","$url");
-
+               if($url && strlen(get_config('system','directory')))
+                       proc_run(PRIORITY_LOW, "include/directory.php", $url);
        }
 
-
        require_once('include/profile_update.php');
        profile_change();
 
+       // Update the global contact for the user
+       update_gcontact_for_user(local_user());
+
        //$_SESSION['theme'] = $theme;
        if($email_changed && $a->config['register_policy'] == REGISTER_VERIFY) {
 
@@ -588,12 +646,11 @@ function settings_post(&$a) {
 
        }
 
-       goaway($a->get_baseurl(true) . '/settings' );
+       goaway('settings');
        return; // NOTREACHED
 }
 
 
-if(! function_exists('settings_content')) {
 function settings_content(&$a) {
 
        $o = '';
@@ -718,7 +775,7 @@ function settings_content(&$a) {
                        $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')));
+                               $arr[$fname][1][] = array('feature_' .$f[0],$f[1],((intval(feature_enabled(local_user(),$f[0]))) ? "1" : ''),$f[2],array(t('Off'),t('On')));
                        }
                }
 
@@ -751,6 +808,30 @@ function settings_content(&$a) {
                $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>';
                $settings_connectors .= '</div>';
 
+               $checked = ((get_pconfig(local_user(), 'system', 'ostatus_autofriend')) ? ' checked="checked" ' : '');
+
+               $settings_connectors .= '<div id="snautofollow-wrapper" class="field checkbox">';
+               $settings_connectors .= '<label id="snautofollow-label" for="snautofollow-checkbox">'. t('Automatically follow any GNU Social (OStatus) followers/mentioners'). '</label>';
+               $settings_connectors .= '<input id="snautofollow-checkbox" type="checkbox" name="snautofollow" value="1" ' . $checked . '/>';
+               $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>';
+               $settings_connectors .= '</div>';
+
+               $default_group = get_pconfig(local_user(), 'ostatus', 'default_group');
+               $legacy_contact = get_pconfig(local_user(), 'ostatus', 'legacy_contact');
+
+               $settings_connectors .= mini_group_select(local_user(), $default_group, t("Default group for OStatus contacts"));
+
+               if ($legacy_contact != "")
+                       $a->page['htmlhead'] = '<meta http-equiv="refresh" content="0; URL='.$a->get_baseurl().'/ostatus_subscribe?url='.urlencode($legacy_contact).'">';
+
+               $settings_connectors .= '<div id="legacy-contact-wrapper" class="field input">';
+               $settings_connectors .= '<label id="legacy-contact-label" for="snautofollow-checkbox">'. t('Your legacy GNU Social account'). '</label>';
+               $settings_connectors .= '<input id="legacy-contact-checkbox" name="legacy_contact" value="'.$legacy_contact.'"/>';
+               $settings_connectors .= '<span class="field_help">'.t('If you enter your old GNU Social/Statusnet account name here (in the format user@domain.tld), your contacts will be added automatically. The field will be emptied when done.').'</span>';
+               $settings_connectors .= '</div>';
+
+               $settings_connectors .= '<p><a href="'.$a->get_baseurl().'/repair_ostatus">'.t("Repair OStatus subscriptions").'</a></p>';
+
                $settings_connectors .= '<div class="settings-submit-wrapper" ><input type="submit" name="general-submit" class="settings-submit" value="' . t('Save Settings') . '" /></div>';
 
                $settings_connectors .= '</div><div class="clear"></div>';
@@ -759,7 +840,7 @@ function settings_content(&$a) {
 
                if (is_site_admin()) {
                        $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')));
+                       $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')));
                } else {
                        $diasp_enabled = "";
                        $ostat_enabled = "";
@@ -872,8 +953,11 @@ function settings_content(&$a) {
                $theme_selected = (!x($_SESSION,'theme')? $default_theme : $_SESSION['theme']);
                $mobile_theme_selected = (!x($_SESSION,'mobile-theme')? $default_mobile_theme : $_SESSION['mobile-theme']);
 
+               $nowarn_insecure = intval(get_pconfig(local_user(), 'system', 'nowarn_insecure'));
+
                $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
+               if (intval($browser_update) != -1)
+                       $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
@@ -883,6 +967,10 @@ function settings_content(&$a) {
                $nosmile = get_pconfig(local_user(),'system','no_smilies');
                $nosmile = (($nosmile===false)? '0': $nosmile); // default if not set: 0
 
+               $first_day_of_week = get_pconfig(local_user(),'system','first_day_of_week');
+               $first_day_of_week = (($first_day_of_week===false)? '0': $first_day_of_week); // default if not set: 0
+               $weekdays = array(0 => t("Sunday"), 1 => t("Monday"));
+
                $noinfo = get_pconfig(local_user(),'system','ignore_info');
                $noinfo = (($noinfo===false)? '0': $noinfo); // default if not set: 0
 
@@ -892,8 +980,11 @@ function settings_content(&$a) {
                $no_auto_update = get_pconfig(local_user(),'system','no_auto_update');
                $no_auto_update = (($no_auto_update===false)? '0': $no_auto_update); // default if not set: 0
 
+               $bandwidth_saver = get_pconfig(local_user(), 'system', 'bandwidth_saver');
+               $bandwidth_saver = (($bandwidth_saver === false) ? '0' : $bandwidth_saver); // default if not set: 0
+
                $theme_config = "";
-               if( ($themeconfigfile = get_theme_config_file($theme_selected)) != null){
+               if (($themeconfigfile = get_theme_config_file($theme_selected)) != null) {
                        require_once($themeconfigfile);
                        $theme_config = theme_content($a);
                }
@@ -908,14 +999,21 @@ function settings_content(&$a) {
 
                        '$theme'        => array('theme', t('Display Theme:'), $theme_selected, '', $themes, true),
                        '$mobile_theme' => array('mobile_theme', t('Mobile Theme:'), $mobile_theme_selected, '', $mobile_themes, false),
-                       '$ajaxint'   => array('browser_update',  t("Update browser every xx seconds"), $browser_update, t('Minimum of 10 seconds, no maximum')),
+                       '$nowarn_insecure' => array('nowarn_insecure',  t('Suppress warning of insecure networks'), $nowarn_insecure, t("Should the system suppress the warning that the current group contains members of networks that can't receive non public postings.")),
+                       '$ajaxint'   => array('browser_update',  t("Update browser every xx seconds"), $browser_update, t('Minimum of 10 seconds. Enter -1 to disable it.')),
                        '$itemspage_network'   => array('itemspage_network',  t("Number of items to display per page:"), $itemspage_network, t('Maximum of 100 items')),
                        '$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')),
                        '$nosmile'      => array('nosmile', t("Don't show emoticons"), $nosmile, ''),
+                       '$calendar_title' => t('Calendar'),
+                       '$first_day_of_week'    => array('first_day_of_week', t('Beginning of week:'), $first_day_of_week, '', $weekdays, false),
                        '$noinfo'       => array('noinfo', t("Don't show notices"), $noinfo, ''),
                        '$infinite_scroll'      => array('infinite_scroll', t("Infinite scroll"), $infinite_scroll, ''),
                        '$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.'),
+                       '$bandwidth_saver' => array('bandwidth_saver', t('Bandwith Saver Mode'), $bandwidth_saver, t('When enabled, embedded content is not displayed on automatic updates, they only show on page reload.')),
 
+                       '$d_tset' => t('General Theme Settings'),
+                       '$d_ctset' => t('Custom Theme Settings'),
+                       '$d_cset' => t('Content Settings'),
                        'stitle' => t('Theme settings'),
                        '$theme_config' => $theme_config,
                ));
@@ -945,6 +1043,7 @@ function settings_content(&$a) {
        $email      = $a->user['email'];
        $nickname   = $a->user['nickname'];
        $timezone   = $a->user['timezone'];
+       $language   = $a->user['language'];
        $notify     = $a->user['notify-flags'];
        $defloc     = $a->user['default-location'];
        $openid     = $a->user['openid'];
@@ -988,13 +1087,41 @@ function settings_content(&$a) {
        if(! strlen($a->user['timezone']))
                $timezone = date_default_timezone_get();
 
+       // Set the account type to "Community" when the page is a community page but the account type doesn't fit
+       // This is only happening on the first visit after the update
+       if (in_array($a->user['page-flags'], array(PAGE_COMMUNITY, PAGE_PRVGROUP)) AND
+               ($a->user['account-type'] != ACCOUNT_TYPE_COMMUNITY))
+               $a->user['account-type'] = ACCOUNT_TYPE_COMMUNITY;
 
+       $pageset_tpl = get_markup_template('settings_pagetypes.tpl');
 
-       $pageset_tpl = get_markup_template('pagetypes.tpl');
        $pagetype = replace_macros($pageset_tpl, array(
-               '$user'         => t("User Types"),
-               '$community'    => t("Community Types"),
-               '$page_normal'  => array('page-flags', t('Normal Account Page'), PAGE_NORMAL,
+               '$account_types'        => t("Account Types"),
+               '$user'                 => t("Personal Page Subtypes"),
+               '$community'            => t("Community Forum Subtypes"),
+               '$account_type'         => $a->user['account-type'],
+               '$type_person'          => ACCOUNT_TYPE_PERSON,
+               '$type_organisation'    => ACCOUNT_TYPE_ORGANISATION,
+               '$type_news'            => ACCOUNT_TYPE_NEWS,
+               '$type_community'       => ACCOUNT_TYPE_COMMUNITY,
+
+               '$account_person'       => array('account-type', t('Personal Page'), ACCOUNT_TYPE_PERSON,
+                                                                       t('This account is a regular personal profile'),
+                                                                       ($a->user['account-type'] == ACCOUNT_TYPE_PERSON)),
+
+               '$account_organisation' => array('account-type', t('Organisation Page'), ACCOUNT_TYPE_ORGANISATION,
+                                                                       t('This account is a profile for an organisation'),
+                                                                       ($a->user['account-type'] == ACCOUNT_TYPE_ORGANISATION)),
+
+               '$account_news'         => array('account-type', t('News Page'), ACCOUNT_TYPE_NEWS,
+                                                                       t('This account is a news account/reflector'),
+                                                                       ($a->user['account-type'] == ACCOUNT_TYPE_NEWS)),
+
+               '$account_community'    => array('account-type', t('Community Forum'), ACCOUNT_TYPE_COMMUNITY,
+                                                                       t('This account is a community forum where people can discuss with each other'),
+                                                                       ($a->user['account-type'] == ACCOUNT_TYPE_COMMUNITY)),
+
+               '$page_normal'          => array('page-flags', t('Normal Account Page'), PAGE_NORMAL,
                                                                        t('This account is a normal personal profile'),
                                                                        ($a->user['page-flags'] == PAGE_NORMAL)),
 
@@ -1002,8 +1129,8 @@ function settings_content(&$a) {
                                                                        t('Automatically approve all connection/friend requests as read-only fans'),
                                                                        ($a->user['page-flags'] == PAGE_SOAPBOX)),
 
-               '$page_community'       => array('page-flags', t('Community Forum/Celebrity Account'), PAGE_COMMUNITY,
-                                                                       t('Automatically approve all connection/friend requests as read-write fans'),
+               '$page_community'       => array('page-flags', t('Public Forum'), PAGE_COMMUNITY,
+                                                                       t('Automatically approve all contact requests'),
                                                                        ($a->user['page-flags'] == PAGE_COMMUNITY)),
 
                '$page_freelove'        => array('page-flags', t('Automatic Friend Page'), PAGE_FREELOVE,
@@ -1037,7 +1164,7 @@ function settings_content(&$a) {
                ));
        }
 
-       if(strlen(get_config('system','directory_submit_url'))) {
+       if(strlen(get_config('system','directory'))) {
                $profile_in_net_dir = replace_macros($opt_tpl,array(
                        '$field'        => array('profile_in_netdirectory', t('Publish your default profile in the global social directory?'), $profile['net-publish'], '', array(t('No'),t('Yes'))),
                ));
@@ -1085,14 +1212,12 @@ function settings_content(&$a) {
                info( t('Profile is <strong>not published</strong>.') . EOL );
 
 
-       $subdir = ((strlen($a->get_path())) ? '<br />' . t('or') . ' ' . $a->get_baseurl(true) . '/profile/' . $nickname : '');
+       //$subdir = ((strlen($a->get_path())) ? '<br />' . t('or') . ' ' . 'profile/' . $nickname : '');
 
        $tpl_addr = get_markup_template("settings_nick_set.tpl");
 
        $prof_addr = replace_macros($tpl_addr,array(
-               '$desc' => t('Your Identity Address is'),
-               '$nickname' => $nickname,
-               '$subdir' => $subdir,
+               '$desc' => sprintf(t("Your Identity Address is <strong>'%s'</strong> or '%s'."), $nickname.'@'.$a->get_hostname().$a->get_path(), $a->get_baseurl().'/profile/'.$nickname),
                '$basepath' => $a->get_hostname()
        ));
 
@@ -1130,6 +1255,8 @@ function settings_content(&$a) {
        else
                $public_post_link = '&public=1';
 
+       /* Installed langs */
+       $lang_choices = get_available_languages();
 
        $o .= replace_macros($stpl, array(
                '$ptitle'       => t('Account Settings'),
@@ -1152,6 +1279,7 @@ function settings_content(&$a) {
                '$username' => array('username',  t('Full Name:'), $username,''),
                '$email'        => array('email', t('Email Address:'), $email, '', '', '', 'email'),
                '$timezone' => array('timezone_select' , t('Your Timezone:'), select_timezone($timezone), ''),
+               '$language' => array('language', t('Your Language:'), $language, t('Set the language we use to show you friendica interface and to send you emails'), $lang_choices),
                '$defloc'       => array('defloc', t('Default Post Location:'), $defloc, ''),
                '$allowloc' => array('allow_location', t('Use Browser Location:'), ($a->user['allow_location'] == 1), ''),
 
@@ -1206,8 +1334,8 @@ function settings_content(&$a) {
                '$notify7'  => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, ''),
                '$notify8'  => array('notify8', t('You are poked/prodded/etc. in a post'), ($notify & NOTIFY_POKE), NOTIFY_POKE, ''),
 
-        '$desktop_notifications' => array('desktop_notifications', t('Activate desktop notifications') , false, t('Show desktop popup on new notifications')),
-                
+               '$desktop_notifications' => array('desktop_notifications', t('Activate desktop notifications') , false, t('Show desktop popup on new notifications')),
+
                '$email_textonly' => array('email_textonly', t('Text-only notification emails'),
                                                                        get_pconfig(local_user(),'system','email_textonly'),
                                                                        t('Send text only notification emails, without the html part')),
@@ -1228,5 +1356,4 @@ function settings_content(&$a) {
 
        return $o;
 
-}}
-
+}