]> git.mxchange.org Git - friendica.git/blobdiff - mod/settings.php
Merge pull request #3047 from annando/1612-indexlength
[friendica.git] / mod / settings.php
index c7659212bff242359a337e3e88b4cc4ef699d4a1..298b5025cde289e2c4a62e46905804190324f5e8 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 require_once('include/group.php');
+require_once('include/socgraph.php');
 
 function get_theme_config_file($theme){
        $a = get_app();
@@ -17,7 +18,7 @@ function get_theme_config_file($theme){
 
 function settings_init(&$a) {
 
-       if(! local_user()) {
+       if (! local_user()) {
                notice( t('Permission denied.') . EOL );
                return;
        }
@@ -117,31 +118,33 @@ function settings_init(&$a) {
 
 function settings_post(&$a) {
 
-       if(! local_user())
+       if (! local_user()) {
                return;
+       }
 
-       if(x($_SESSION,'submanage') && intval($_SESSION['submanage']))
+       if (x($_SESSION,'submanage') && intval($_SESSION['submanage'])) {
                return;
+       }
 
-       if(count($a->user) && x($a->user,'uid') && $a->user['uid'] != local_user()) {
+       if (count($a->user) && x($a->user,'uid') && $a->user['uid'] != local_user()) {
                notice( t('Permission denied.') . EOL);
                return;
        }
 
        $old_page_flags = $a->user['page-flags'];
 
-       if(($a->argc > 1) && ($a->argv[1] === 'oauth') && x($_POST,'remove')){
+       if (($a->argc > 1) && ($a->argv[1] === 'oauth') && x($_POST,'remove')) {
                check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth');
 
                $key = $_POST['remove'];
                q("DELETE FROM tokens WHERE id='%s' AND uid=%d",
                        dbesc($key),
                        local_user());
-               goaway($a->get_baseurl(true)."/settings/oauth/");
+               goaway(App::get_baseurl(true)."/settings/oauth/");
                return;
        }
 
-       if(($a->argc > 2) && ($a->argv[1] === 'oauth')  && ($a->argv[2] === 'edit'||($a->argv[2] === 'add')) && x($_POST,'submit')) {
+       if (($a->argc > 2) && ($a->argv[1] === 'oauth')  && ($a->argv[2] === 'edit'||($a->argv[2] === 'add')) && x($_POST,'submit')) {
 
                check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth');
 
@@ -182,7 +185,7 @@ function settings_post(&$a) {
                                                local_user());
                        }
                }
-               goaway($a->get_baseurl(true)."/settings/oauth/");
+               goaway(App::get_baseurl(true)."/settings/oauth/");
                return;
        }
 
@@ -224,7 +227,7 @@ function settings_post(&$a) {
                                $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
                                        intval(local_user())
                                );
-                               if(! count($r)) {
+                               if (! dbm::is_result($r)) {
                                        q("INSERT INTO `mailacct` (`uid`) VALUES (%d)",
                                                intval(local_user())
                                        );
@@ -254,7 +257,7 @@ function settings_post(&$a) {
                                $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
                                        intval(local_user())
                                );
-                               if(count($r)) {
+                               if (dbm::is_result($r)) {
                                        $eacct = $r[0];
                                        require_once('include/email.php');
                                        $mb = construct_mailbox_name($eacct);
@@ -278,7 +281,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) {
@@ -289,49 +292,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);
-               $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);
-               $browser_update   = ((x($_POST,'browser_update')) ? intval($_POST['browser_update']) : 0);
+               $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;
+                       $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 = 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','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);
-
-
-               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);
                        }
@@ -351,7 +357,7 @@ function settings_post(&$a) {
        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('settings');
        }
@@ -419,6 +425,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!
@@ -452,6 +459,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 = '';
@@ -552,7 +569,7 @@ 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',
+                               `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'
@@ -567,6 +584,7 @@ function settings_post(&$a) {
                        dbesc($str_group_deny),
                        intval($notify),
                        intval($page_flags),
+                       intval($account_type),
                        dbesc($defloc),
                        intval($allow_location),
                        intval($maxreq),
@@ -602,34 +620,36 @@ 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())
                );
        }
 
-       if(($old_visibility != $net_publish) || ($page_flags != $old_page_flags)) {
+       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')))
-                       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) {
+       if ($email_changed && $a->config['register_policy'] == REGISTER_VERIFY) {
 
-               // FIXME - set to un-verified, blocked and redirect to logout
-               // Why? Are we verifying people or email addresses?
+               /// @TODO set to un-verified, blocked and redirect to logout
+               /// @TODO Why? Are we verifying people or email addresses?
 
        }
 
-       goaway('settings' );
+       goaway('settings');
        return; // NOTREACHED
 }
 
@@ -639,21 +659,21 @@ function settings_content(&$a) {
        $o = '';
        nav_set_selected('settings');
 
-       if(! local_user()) {
+       if (! local_user()) {
                #notice( t('Permission denied.') . EOL );
                return;
        }
 
-       if(x($_SESSION,'submanage') && intval($_SESSION['submanage'])) {
+       if (x($_SESSION,'submanage') && intval($_SESSION['submanage'])) {
                notice( t('Permission denied.') . EOL );
                return;
        }
 
 
 
-       if(($a->argc > 1) && ($a->argv[1] === 'oauth')) {
+       if (($a->argc > 1) && ($a->argv[1] === 'oauth')) {
 
-               if(($a->argc > 2) && ($a->argv[2] === 'add')) {
+               if (($a->argc > 2) && ($a->argv[2] === 'add')) {
                        $tpl = get_markup_template("settings_oauth_edit.tpl");
                        $o .= replace_macros($tpl, array(
                                '$form_security_token' => get_form_security_token("settings_oauth"),
@@ -669,12 +689,12 @@ function settings_content(&$a) {
                        return $o;
                }
 
-               if(($a->argc > 3) && ($a->argv[2] === 'edit')) {
+               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)){
+                       if (!dbm::is_result($r)){
                                notice(t("You can't edit this application."));
                                return;
                        }
@@ -701,11 +721,11 @@ function settings_content(&$a) {
                        $r = q("DELETE FROM clients WHERE client_id='%s' AND uid=%d",
                                        dbesc($a->argv[3]),
                                        local_user());
-                       goaway($a->get_baseurl(true)."/settings/oauth/");
+                       goaway(App::get_baseurl(true)."/settings/oauth/");
                        return;
                }
 
-
+               /// @TODO validate result with dbm::is_result()
                $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
@@ -717,7 +737,7 @@ function settings_content(&$a) {
                $tpl = get_markup_template("settings_oauth.tpl");
                $o .= replace_macros($tpl, array(
                        '$form_security_token' => get_form_security_token("settings_oauth"),
-                       '$baseurl'      => $a->get_baseurl(true),
+                       '$baseurl'      => App::get_baseurl(true),
                        '$title'        => t('Connected Apps'),
                        '$add'          => t('Add application'),
                        '$edit'         => t('Edit'),
@@ -731,12 +751,13 @@ function settings_content(&$a) {
 
        }
 
-       if(($a->argc > 1) && ($a->argv[1] === 'addon')) {
+       if (($a->argc > 1) && ($a->argv[1] === 'addon')) {
                $settings_addons = "";
 
                $r = q("SELECT * FROM `hook` WHERE `hook` = 'plugin_settings' ");
-               if(! count($r))
+               if (! dbm::is_result($r)) {
                        $settings_addons = t('No Plugin settings configured');
+               }
 
                call_hooks('plugin_settings', $settings_addons);
 
@@ -750,14 +771,14 @@ function settings_content(&$a) {
                return $o;
        }
 
-       if(($a->argc > 1) && ($a->argv[1] === 'features')) {
+       if (($a->argc > 1) && ($a->argv[1] === 'features')) {
 
                $arr = array();
                $features = get_features();
-               foreach($features as $fname => $fdata) {
+               foreach ($features as $fname => $fdata) {
                        $arr[$fname] = array();
                        $arr[$fname][0] = $fdata[0];
-                       foreach(array_slice($fdata,1) as $f) {
+                       foreach (array_slice($fdata,1) as $f) {
                                $arr[$fname][1][] = array('feature_' .$f[0],$f[1],((intval(feature_enabled(local_user(),$f[0]))) ? "1" : ''),$f[2],array(t('Off'),t('On')));
                        }
                }
@@ -766,14 +787,14 @@ function settings_content(&$a) {
                $tpl = get_markup_template("settings_features.tpl");
                $o .= replace_macros($tpl, array(
                        '$form_security_token' => get_form_security_token("settings_features"),
-                       '$title'        => t('Additional Features'),
-                       '$features' => $arr,
-                       '$submit'   => t('Save Settings'),
+                       '$title'               => t('Additional Features'),
+                       '$features'            => $arr,
+                       '$submit'              => t('Save Settings'),
                ));
                return $o;
        }
 
-       if(($a->argc > 1) && ($a->argv[1] === 'connectors')) {
+       if (($a->argc > 1) && ($a->argv[1] === 'connectors')) {
 
                $settings_connectors = '<span id="settings_general_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose(\'settings_general_expanded\'); openClose(\'settings_general_inflated\');">';
                $settings_connectors .= '<h3 class="connector">'. t('General Social Media Settings').'</h3>';
@@ -804,8 +825,10 @@ function settings_content(&$a) {
 
                $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).'">';
+               /// @TODO Found to much different usage to test empty/non-empty strings (e.g. empty(), trim() == '' ) which is wanted?
+               if ($legacy_contact != "") {
+                       $a->page['htmlhead'] = '<meta http-equiv="refresh" content="0; URL='.App::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>';
@@ -813,7 +836,7 @@ function settings_content(&$a) {
                $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 .= '<p><a href="'.App::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>';
 
@@ -837,28 +860,26 @@ function settings_content(&$a) {
                        $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
                                local_user()
                        );
-               }
-               else {
+               } else {
                        $r = null;
                }
 
-               $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');
+               $mail_server       = ((dbm::is_result($r)) ? $r[0]['server'] : '');
+               $mail_port         = ((dbm::is_result($r) && intval($r[0]['port'])) ? intval($r[0]['port']) : '');
+               $mail_ssl          = ((dbm::is_result($r)) ? $r[0]['ssltype'] : '');
+               $mail_user         = ((dbm::is_result($r)) ? $r[0]['user'] : '');
+               $mail_replyto      = ((dbm::is_result($r)) ? $r[0]['reply_to'] : '');
+               $mail_pubmail      = ((dbm::is_result($r)) ? $r[0]['pubmail'] : 0);
+               $mail_action       = ((dbm::is_result($r)) ? $r[0]['action'] : 0);
+               $mail_movetofolder = ((dbm::is_result($r)) ? $r[0]['movetofolder'] : '');
+               $mail_chk          = ((dbm::is_result($r)) ? $r[0]['last_check'] : '0000-00-00 00:00:00');
 
 
                $tpl = get_markup_template("settings_connectors.tpl");
 
-               if(! service_class_allows(local_user(),'email_connect')) {
+               if (! service_class_allows(local_user(),'email_connect')) {
                        $mail_disabled_message = upgrade_bool_message();
-               }
-               else {
+               } else {
                        $mail_disabled_message = (($mail_disabled) ? t('Email access is disabled on this site.') : '');
                }
 
@@ -896,38 +917,42 @@ function settings_content(&$a) {
        /*
         * DISPLAY SETTINGS
         */
-       if(($a->argc > 1) && ($a->argv[1] === 'display')) {
+       if (($a->argc > 1) && ($a->argv[1] === 'display')) {
                $default_theme = get_config('system','theme');
-               if(! $default_theme)
+               if (! $default_theme) {
                        $default_theme = 'default';
+               }
                $default_mobile_theme = get_config('system','mobile-theme');
-               if(! $mobile_default_theme)
+               if (! $mobile_default_theme) {
                        $mobile_default_theme = 'none';
+               }
 
                $allowed_themes_str = get_config('system','allowed_themes');
                $allowed_themes_raw = explode(',',$allowed_themes_str);
                $allowed_themes = array();
-               if(count($allowed_themes_raw))
-                       foreach($allowed_themes_raw as $x)
-                               if(strlen(trim($x)) && is_dir("view/theme/$x"))
+               if (count($allowed_themes_raw)) {
+                       foreach ($allowed_themes_raw as $x) {
+                               if (strlen(trim($x)) && is_dir("view/theme/$x")) {
                                        $allowed_themes[] = trim($x);
+                               }
+                       }
+               }
 
 
                $themes = array();
                $mobile_themes = array("---" => t('No special theme for mobile devices'));
                $files = glob('view/theme/*'); /* */
-               if($allowed_themes) {
-                       foreach($allowed_themes as $th) {
+               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');
                                $is_mobile = file_exists('view/theme/' . $th . '/mobile');
                                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 - \x28Experimental\x29", $f) : $f);
-                                       if($is_mobile) {
+                                       if ($is_mobile) {
                                                $mobile_themes[$f]=$theme_name;
-                                       }
-                                       else {
+                                       } else {
                                                $themes[$f]=$theme_name;
                                        }
                                }
@@ -936,9 +961,12 @@ 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'));
-               if (intval($browser_update) != -1)
+               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
@@ -961,8 +989,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);
                }
@@ -972,11 +1003,12 @@ function settings_content(&$a) {
                        '$ptitle'       => t('Display Settings'),
                        '$form_security_token' => get_form_security_token("settings_display"),
                        '$submit'       => t('Save Settings'),
-                       '$baseurl' => $a->get_baseurl(true),
+                       '$baseurl' => App::get_baseurl(true),
                        '$uid' => local_user(),
 
                        '$theme'        => array('theme', t('Display Theme:'), $theme_selected, '', $themes, true),
                        '$mobile_theme' => array('mobile_theme', t('Mobile Theme:'), $mobile_theme_selected, '', $mobile_themes, false),
+                       '$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')),
@@ -986,7 +1018,11 @@ function settings_content(&$a) {
                        '$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,
                ));
@@ -1009,8 +1045,9 @@ function settings_content(&$a) {
        $p = q("SELECT * FROM `profile` WHERE `is-default` = 1 AND `uid` = %d LIMIT 1",
                intval(local_user())
        );
-       if(count($p))
+       if (count($p)) {
                $profile = $p[0];
+       }
 
        $username   = $a->user['username'];
        $email      = $a->user['email'];
@@ -1057,16 +1094,45 @@ function settings_content(&$a) {
 
        // nowarn_insecure
 
-       if(! strlen($a->user['timezone']))
+       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)),
 
@@ -1074,8 +1140,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,
@@ -1091,32 +1157,28 @@ function settings_content(&$a) {
 
        $noid = get_config('system','no_openid');
 
-       if($noid) {
+       if ($noid) {
                $openid_field = false;
-       }
-       else {
+       } else {
                $openid_field = array('openid_url', t('OpenID:'),$openid, t("\x28Optional\x29 Allow this OpenID to login to this account."), "", "", "url");
        }
 
-
        $opt_tpl = get_markup_template("field_yesno.tpl");
        if(get_config('system','publish_all')) {
                $profile_in_dir = '<input type="hidden" name="profile_in_directory" value="1" />';
-       }
-       else {
+       } else {
                $profile_in_dir = replace_macros($opt_tpl,array(
                        '$field'        => array('profile_in_directory', t('Publish your default profile in your local site directory?'), $profile['publish'], '', array(t('No'),t('Yes'))),
                ));
        }
 
-       if(strlen(get_config('system','directory'))) {
+       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'))),
                ));
-       }
-       else
+       } else {
                $profile_in_net_dir = '';
-
+       }
 
        $hide_friends = replace_macros($opt_tpl,array(
                        '$field'        => array('hide-friends', t('Hide your contact/friend list from viewers of your default profile?'), $profile['hide-friends'], '', array(t('No'),t('Yes'))),
@@ -1132,19 +1194,16 @@ function settings_content(&$a) {
 
        ));
 
-
        $blocktags = replace_macros($opt_tpl,array(
                        '$field'        => array('blocktags',  t('Allow friends to tag your posts?'), (intval($a->user['blocktags']) ? '0' : '1'), '', array(t('No'),t('Yes'))),
 
        ));
 
-
        $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'))),
 
        ));
 
-
        $unkmail = replace_macros($opt_tpl,array(
                        '$field'        => array('unkmail',  t('Permit unknown people to send you private mail?'), $unkmail, '', array(t('No'),t('Yes'))),
 
@@ -1153,16 +1212,16 @@ function settings_content(&$a) {
        $invisible = (((! $profile['publish']) && (! $profile['net-publish']))
                ? true : false);
 
-       if($invisible)
+       if ($invisible) {
                info( t('Profile is <strong>not published</strong>.') . EOL );
-
+       }
 
        //$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' => sprintf(t("Your Identity Address is <strong>'%s'</strong> or '%s'."), $nickname.'@'.$a->get_hostname().$a->get_path(), $a->get_baseurl().'/profile/'.$nickname),
+               '$desc' => sprintf(t("Your Identity Address is <strong>'%s'</strong> or '%s'."), $nickname.'@'.$a->get_hostname().$a->get_path(), App::get_baseurl().'/profile/'.$nickname),
                '$basepath' => $a->get_hostname()
        ));
 
@@ -1182,32 +1241,35 @@ function settings_content(&$a) {
        require_once('include/group.php');
        $group_select = mini_group_select(local_user(),$a->user['def_gid']);
 
-
        // Private/public post links for the non-JS ACL form
        $private_post = 1;
-       if($_REQUEST['public'])
+       if ($_REQUEST['public']) {
                $private_post = 0;
+       }
 
        $query_str = $a->query_string;
-       if(strpos($query_str, 'public=1') !== false)
+       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)
+       if (strpos($query_str, '?') === false) {
                $public_post_link = '?public=1';
-       else
+       } else {
                $public_post_link = '&public=1';
+       }
 
        /* Installed langs */
-       $lang_choices = get_avaiable_languages();
+       $lang_choices = get_available_languages();
 
+       /// @TODO Fix indending (or so)
        $o .= replace_macros($stpl, array(
                '$ptitle'       => t('Account Settings'),
 
                '$submit'       => t('Save Settings'),
-               '$baseurl' => $a->get_baseurl(true),
+               '$baseurl' => App::get_baseurl(true),
                '$uid' => local_user(),
                '$form_security_token' => get_form_security_token("settings"),
                '$nickname_block' => $prof_addr,
@@ -1279,7 +1341,7 @@ 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'),
@@ -1302,4 +1364,3 @@ function settings_content(&$a) {
        return $o;
 
 }
-