]> git.mxchange.org Git - friendica.git/blobdiff - mod/settings.php
Merge pull request #8350 from nupplaphil/bug/8342_not_link
[friendica.git] / mod / settings.php
index d06f5885f5c9214bfa66eece0913bfe4c0a58da7..4d09f827ea10ff2611ee7213161c11632bc7ed2a 100644 (file)
@@ -27,8 +27,6 @@ use Friendica\Core\ACL;
 use Friendica\Core\Hook;
 use Friendica\Core\Logger;
 use Friendica\Core\Renderer;
-use Friendica\Core\Session;
-use Friendica\Core\Theme;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\DI;
@@ -37,131 +35,21 @@ use Friendica\Model\GContact;
 use Friendica\Model\Group;
 use Friendica\Model\Notify\Type;
 use Friendica\Model\User;
+use Friendica\Module\BaseSettings;
 use Friendica\Module\Security\Login;
 use Friendica\Protocol\Email;
 use Friendica\Util\Strings;
 use Friendica\Util\Temporal;
 use Friendica\Worker\Delivery;
 
-function get_theme_config_file($theme)
-{
-       $theme = Strings::sanitizeFilePathItem($theme);
-
-       $a = DI::app();
-       $base_theme = $a->theme_info['extends'] ?? '';
-
-       if (file_exists("view/theme/$theme/config.php")) {
-               return "view/theme/$theme/config.php";
-       }
-       if ($base_theme && file_exists("view/theme/$base_theme/config.php")) {
-               return "view/theme/$base_theme/config.php";
-       }
-       return null;
-}
-
 function settings_init(App $a)
 {
        if (!local_user()) {
-               notice(DI::l10n()->t('Permission denied.') . EOL);
+               notice(DI::l10n()->t('Permission denied.'));
                return;
        }
 
-       // These lines provide the javascript needed by the acl selector
-
-       $tpl = Renderer::getMarkupTemplate('settings/head.tpl');
-       DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [
-               '$ispublic' => DI::l10n()->t('everybody')
-       ]);
-
-       $tabs = [
-               [
-                       'label' => DI::l10n()->t('Account'),
-                       'url'   => 'settings',
-                       'selected'      =>  (($a->argc == 1) && ($a->argv[0] === 'settings')?'active':''),
-                       'accesskey' => 'o',
-               ],
-       ];
-
-       $tabs[] = [
-               'label' => DI::l10n()->t('Two-factor authentication'),
-               'url' => 'settings/2fa',
-               'selected' => (($a->argc > 1) && ($a->argv[1] === '2fa') ? 'active' : ''),
-               'accesskey' => 'o',
-       ];
-
-       $tabs[] =       [
-               'label' => DI::l10n()->t('Profile'),
-               'url'   => 'settings/profile',
-               'selected'      => (($a->argc > 1) && ($a->argv[1] === 'profile')?'active':''),
-               'accesskey' => 'p',
-       ];
-
-       if (Feature::get()) {
-               $tabs[] =       [
-                                       'label' => DI::l10n()->t('Additional features'),
-                                       'url'   => 'settings/features',
-                                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'features') ? 'active' : ''),
-                                       'accesskey' => 't',
-                               ];
-       }
-
-       $tabs[] =       [
-               'label' => DI::l10n()->t('Display'),
-               'url'   => 'settings/display',
-               'selected'      => (($a->argc > 1) && ($a->argv[1] === 'display')?'active':''),
-               'accesskey' => 'i',
-       ];
-
-       $tabs[] =       [
-               'label' => DI::l10n()->t('Social Networks'),
-               'url'   => 'settings/connectors',
-               'selected'      => (($a->argc > 1) && ($a->argv[1] === 'connectors')?'active':''),
-               'accesskey' => 'w',
-       ];
-
-       $tabs[] =       [
-               'label' => DI::l10n()->t('Addons'),
-               'url'   => 'settings/addon',
-               'selected'      => (($a->argc > 1) && ($a->argv[1] === 'addon')?'active':''),
-               'accesskey' => 'l',
-       ];
-
-       $tabs[] =       [
-               'label' => DI::l10n()->t('Delegations'),
-               'url'   => 'settings/delegation',
-               'selected'      => (($a->argc > 1) && ($a->argv[1] === 'delegation')?'active':''),
-               'accesskey' => 'd',
-       ];
-
-       $tabs[] =       [
-               'label' => DI::l10n()->t('Connected apps'),
-               'url' => 'settings/oauth',
-               'selected' => (($a->argc > 1) && ($a->argv[1] === 'oauth')?'active':''),
-               'accesskey' => 'b',
-       ];
-
-       $tabs[] =       [
-               'label' => DI::l10n()->t('Export personal data'),
-               'url' => 'settings/userexport',
-               'selected' => (($a->argc > 1) && ($a->argv[1] === 'userexport')?'active':''),
-               'accesskey' => 'e',
-       ];
-
-       $tabs[] =       [
-               'label' => DI::l10n()->t('Remove account'),
-               'url' => 'removeme',
-               'selected' => (($a->argc == 1) && ($a->argv[0] === 'removeme')?'active':''),
-               'accesskey' => 'r',
-       ];
-
-
-       $tabtpl = Renderer::getMarkupTemplate("generic_links_widget.tpl");
-       DI::page()['aside'] = Renderer::replaceMacros($tabtpl, [
-               '$title' => DI::l10n()->t('Settings'),
-               '$class' => 'settings-widget',
-               '$items' => $tabs,
-       ]);
-
+       BaseSettings::content();
 }
 
 function settings_post(App $a)
@@ -335,75 +223,6 @@ function settings_post(App $a)
                return;
        }
 
-       if (($a->argc > 1) && ($a->argv[1] === 'display')) {
-               BaseModule::checkFormSecurityTokenRedirectOnError('/settings/display', 'settings_display');
-
-               $theme              = !empty($_POST['theme'])              ? Strings::escapeTags(trim($_POST['theme']))        : $a->user['theme'];
-               $mobile_theme       = !empty($_POST['mobile_theme'])       ? Strings::escapeTags(trim($_POST['mobile_theme'])) : '';
-               $nosmile            = !empty($_POST['nosmile'])            ? intval($_POST['nosmile'])            : 0;
-               $first_day_of_week  = !empty($_POST['first_day_of_week'])  ? intval($_POST['first_day_of_week'])  : 0;
-               $noinfo             = !empty($_POST['noinfo'])             ? intval($_POST['noinfo'])             : 0;
-               $infinite_scroll    = !empty($_POST['infinite_scroll'])    ? intval($_POST['infinite_scroll'])    : 0;
-               $no_auto_update     = !empty($_POST['no_auto_update'])     ? intval($_POST['no_auto_update'])     : 0;
-               $bandwidth_saver    = !empty($_POST['bandwidth_saver'])    ? intval($_POST['bandwidth_saver'])    : 0;
-               $no_smart_threading = !empty($_POST['no_smart_threading']) ? intval($_POST['no_smart_threading']) : 0;
-               $nowarn_insecure    = !empty($_POST['nowarn_insecure'])    ? intval($_POST['nowarn_insecure'])    : 0;
-               $browser_update     = !empty($_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 = !empty($_POST['itemspage_network']) ?
-                       intval($_POST['itemspage_network']) :
-                       DI::config()->get('system', 'itemspage_network');
-               if ($itemspage_network > 100) {
-                       $itemspage_network = 100;
-               }
-               $itemspage_mobile_network = !empty($_POST['itemspage_mobile_network']) ?
-                       intval($_POST['itemspage_mobile_network']) :
-                       DI::config()->get('system', 'itemspage_network_mobile');
-               if ($itemspage_mobile_network > 100) {
-                       $itemspage_mobile_network = 100;
-               }
-
-               if ($mobile_theme !== '') {
-                       DI::pConfig()->set(local_user(), 'system', 'mobile_theme', $mobile_theme);
-               }
-
-               DI::pConfig()->set(local_user(), 'system', 'nowarn_insecure'         , $nowarn_insecure);
-               DI::pConfig()->set(local_user(), 'system', 'update_interval'         , $browser_update);
-               DI::pConfig()->set(local_user(), 'system', 'itemspage_network'       , $itemspage_network);
-               DI::pConfig()->set(local_user(), 'system', 'itemspage_mobile_network', $itemspage_mobile_network);
-               DI::pConfig()->set(local_user(), 'system', 'no_smilies'              , $nosmile);
-               DI::pConfig()->set(local_user(), 'system', 'first_day_of_week'       , $first_day_of_week);
-               DI::pConfig()->set(local_user(), 'system', 'ignore_info'             , $noinfo);
-               DI::pConfig()->set(local_user(), 'system', 'infinite_scroll'         , $infinite_scroll);
-               DI::pConfig()->set(local_user(), 'system', 'no_auto_update'          , $no_auto_update);
-               DI::pConfig()->set(local_user(), 'system', 'bandwidth_saver'         , $bandwidth_saver);
-               DI::pConfig()->set(local_user(), 'system', 'no_smart_threading'      , $no_smart_threading);
-
-               if (in_array($theme, Theme::getAllowedList())) {
-                       if ($theme == $a->user['theme']) {
-                               // call theme_post only if theme has not been changed
-                               if (($themeconfigfile = get_theme_config_file($theme)) !== null) {
-                                       require_once $themeconfigfile;
-                                       theme_post($a);
-                               }
-                       } else {
-                               DBA::update('user', ['theme' => $theme], ['uid' => local_user()]);
-                       }
-               } else {
-                       notice(DI::l10n()->t('The theme you chose isn\'t available.'));
-               }
-
-               Hook::callAll('display_settings_post', $_POST);
-               DI::baseUrl()->redirect('settings/display');
-               return; // NOTREACHED
-       }
-
        BaseModule::checkFormSecurityTokenRedirectOnError('/settings', 'settings');
 
        // Import Contacts from CSV file
@@ -432,6 +251,8 @@ function settings_post(App $a)
                                unlink($_FILES['importcontact-filename']['tmp_name']);
                        }
                }
+
+               return;
        }
 
        if (!empty($_POST['resend_relocate'])) {
@@ -543,17 +364,17 @@ function settings_post(App $a)
 
        if ($username != $a->user['username']) {
                if (strlen($username) > 40) {
-                       $err .= DI::l10n()->t(' Please use a shorter name.');
+                       $err .= DI::l10n()->t('Please use a shorter name.');
                }
                if (strlen($username) < 3) {
-                       $err .= DI::l10n()->t(' Name too short.');
+                       $err .= DI::l10n()->t('Name too short.');
                }
        }
 
        if ($email != $a->user['email']) {
                //  check for the correct password
                if (!User::authenticate(intval(local_user()), $_POST['mpassword'])) {
-                       $err .= DI::l10n()->t('Wrong Password') . EOL;
+                       $err .= DI::l10n()->t('Wrong Password.');
                        $email = $a->user['email'];
                }
                //  check the email is valid
@@ -571,7 +392,7 @@ function settings_post(App $a)
        }
 
        if (strlen($err)) {
-               notice($err . EOL);
+               notice($err);
                return;
        }
 
@@ -777,7 +598,7 @@ function settings_content(App $a)
                        $arr[$fname] = [];
                        $arr[$fname][0] = $fdata[0];
                        foreach (array_slice($fdata,1) as $f) {
-                               $arr[$fname][1][] = ['feature_' .$f[0], $f[1],((intval(Feature::isEnabled(local_user(), $f[0]))) ? "1" : ''), $f[2],[DI::l10n()->t('Off'), DI::l10n()->t('On')]];
+                               $arr[$fname][1][] = ['feature_' . $f[0], $f[1], Feature::isEnabled(local_user(), $f[0]), $f[2]];
                        }
                }
 
@@ -891,108 +712,6 @@ function settings_content(App $a)
                return $o;
        }
 
-       /*
-        * DISPLAY SETTINGS
-        */
-       if (($a->argc > 1) && ($a->argv[1] === 'display')) {
-               $default_theme = DI::config()->get('system', 'theme');
-               if (!$default_theme) {
-                       $default_theme = 'default';
-               }
-               $default_mobile_theme = DI::config()->get('system', 'mobile-theme');
-               if (!$default_mobile_theme) {
-                       $default_mobile_theme = 'none';
-               }
-
-               $allowed_themes = Theme::getAllowedList();
-
-               $themes = [];
-               $mobile_themes = ["---" => DI::l10n()->t('No special theme for mobile devices')];
-               foreach ($allowed_themes as $theme) {
-                       $is_experimental = file_exists('view/theme/' . $theme . '/experimental');
-                       $is_unsupported  = file_exists('view/theme/' . $theme . '/unsupported');
-                       $is_mobile       = file_exists('view/theme/' . $theme . '/mobile');
-                       if (!$is_experimental || ($is_experimental && (DI::config()->get('experimentals', 'exp_themes')==1 || is_null(DI::config()->get('experimentals', 'exp_themes'))))) {
-                               $theme_name = ucfirst($theme);
-                               if ($is_unsupported) {
-                                       $theme_name = DI::l10n()->t('%s - (Unsupported)', $theme_name);
-                               } elseif ($is_experimental) {
-                                       $theme_name = DI::l10n()->t('%s - (Experimental)', $theme_name);
-                               }
-
-                               if ($is_mobile) {
-                                       $mobile_themes[$theme] = $theme_name;
-                               } else {
-                                       $themes[$theme] = $theme_name;
-                               }
-                       }
-               }
-
-               $theme_selected        = $a->user['theme'] ?: $default_theme;
-               $mobile_theme_selected = Session::get('mobile-theme', $default_mobile_theme);
-
-               $nowarn_insecure = intval(DI::pConfig()->get(local_user(), 'system', 'nowarn_insecure'));
-
-               $browser_update = intval(DI::pConfig()->get(local_user(), 'system', 'update_interval'));
-               if (intval($browser_update) != -1) {
-                       $browser_update = (($browser_update == 0) ? 40 : $browser_update / 1000); // default if not set: 40 seconds
-               }
-
-               $itemspage_network = intval(DI::pConfig()->get(local_user(), 'system', 'itemspage_network'));
-               $itemspage_network = (($itemspage_network > 0 && $itemspage_network < 101) ? $itemspage_network : DI::config()->get('system', 'itemspage_network'));
-               $itemspage_mobile_network = intval(DI::pConfig()->get(local_user(), 'system', 'itemspage_mobile_network'));
-               $itemspage_mobile_network = (($itemspage_mobile_network > 0 && $itemspage_mobile_network < 101) ? $itemspage_mobile_network : DI::config()->get('system', 'itemspage_network_mobile'));
-
-               $nosmile = DI::pConfig()->get(local_user(), 'system', 'no_smilies', 0);
-               $first_day_of_week = DI::pConfig()->get(local_user(), 'system', 'first_day_of_week', 0);
-               $weekdays = [0 => DI::l10n()->t("Sunday"), 1 => DI::l10n()->t("Monday")];
-
-               $noinfo = DI::pConfig()->get(local_user(), 'system', 'ignore_info', 0);
-               $infinite_scroll = DI::pConfig()->get(local_user(), 'system', 'infinite_scroll', 0);
-               $no_auto_update = DI::pConfig()->get(local_user(), 'system', 'no_auto_update', 0);
-               $bandwidth_saver = DI::pConfig()->get(local_user(), 'system', 'bandwidth_saver', 0);
-               $no_smart_threading = DI::pConfig()->get(local_user(), 'system', 'no_smart_threading', 0);
-
-               $theme_config = "";
-               if (($themeconfigfile = get_theme_config_file($theme_selected)) !== null) {
-                       require_once $themeconfigfile;
-                       $theme_config = theme_content($a);
-               }
-
-               $tpl = Renderer::getMarkupTemplate('settings/display.tpl');
-               $o = Renderer::replaceMacros($tpl, [
-                       '$ptitle'       => DI::l10n()->t('Display Settings'),
-                       '$form_security_token' => BaseModule::getFormSecurityToken("settings_display"),
-                       '$submit'       => DI::l10n()->t('Save Settings'),
-                       '$baseurl' => DI::baseUrl()->get(true),
-                       '$uid' => local_user(),
-
-                       '$theme'        => ['theme', DI::l10n()->t('Display Theme:'), $theme_selected, '', $themes, true],
-                       '$mobile_theme' => ['mobile_theme', DI::l10n()->t('Mobile Theme:'), $mobile_theme_selected, '', $mobile_themes, false],
-                       '$nowarn_insecure' => ['nowarn_insecure',  DI::l10n()->t('Suppress warning of insecure networks'), $nowarn_insecure, DI::l10n()->t("Should the system suppress the warning that the current group contains members of networks that can't receive non public postings.")],
-                       '$ajaxint'   => ['browser_update',  DI::l10n()->t("Update browser every xx seconds"), $browser_update, DI::l10n()->t('Minimum of 10 seconds. Enter -1 to disable it.')],
-                       '$itemspage_network'   => ['itemspage_network',  DI::l10n()->t("Number of items to display per page:"), $itemspage_network, DI::l10n()->t('Maximum of 100 items')],
-                       '$itemspage_mobile_network'   => ['itemspage_mobile_network',  DI::l10n()->t("Number of items to display per page when viewed from mobile device:"), $itemspage_mobile_network, DI::l10n()->t('Maximum of 100 items')],
-                       '$nosmile'      => ['nosmile', DI::l10n()->t("Don't show emoticons"), $nosmile, ''],
-                       '$calendar_title' => DI::l10n()->t('Calendar'),
-                       '$first_day_of_week'    => ['first_day_of_week', DI::l10n()->t('Beginning of week:'), $first_day_of_week, '', $weekdays, false],
-                       '$noinfo'       => ['noinfo', DI::l10n()->t("Don't show notices"), $noinfo, ''],
-                       '$infinite_scroll'      => ['infinite_scroll', DI::l10n()->t("Infinite scroll"), $infinite_scroll, ''],
-                       '$no_auto_update'       => ['no_auto_update', DI::l10n()->t("Automatic updates only at the top of the network page"), $no_auto_update, DI::l10n()->t('When disabled, the network page is updated all the time, which could be confusing while reading.')],
-                       '$bandwidth_saver' => ['bandwidth_saver', DI::l10n()->t('Bandwidth Saver Mode'), $bandwidth_saver, DI::l10n()->t('When enabled, embedded content is not displayed on automatic updates, they only show on page reload.')],
-                       '$no_smart_threading' => ['no_smart_threading', DI::l10n()->t('Disable Smart Threading'), $no_smart_threading, DI::l10n()->t('Disable the automatic suppression of extraneous thread indentation.')],
-
-                       '$d_tset' => DI::l10n()->t('General Theme Settings'),
-                       '$d_ctset' => DI::l10n()->t('Custom Theme Settings'),
-                       '$d_cset' => DI::l10n()->t('Content Settings'),
-                       'stitle' => DI::l10n()->t('Theme settings'),
-                       '$theme_config' => $theme_config,
-               ]);
-
-               return $o;
-       }
-
-
        /*
         * ACCOUNT SETTINGS
         */
@@ -1022,8 +741,6 @@ function settings_content(App $a)
        $expire_photos = DI::pConfig()->get(local_user(), 'expire', 'photos', false);
        $expire_network_only = DI::pConfig()->get(local_user(), 'expire', 'network_only', false);
 
-       // nowarn_insecure
-
        if (!strlen($a->user['timezone'])) {
                $timezone = date_default_timezone_get();
        }