]> git.mxchange.org Git - friendica.git/blobdiff - mod/admin.php
Merge pull request #5343 from astifter/fix_relocate_button
[friendica.git] / mod / admin.php
index bba46c9f3a8a9034925aad99c579a7b7c1725c00..4d4c065010b32ffdcbde7f8933222dd6f2dff1c3 100644 (file)
@@ -65,7 +65,7 @@ function admin_post(App $a)
                        case 'addons':
                                if ($a->argc > 2 &&
                                        is_file("addon/" . $a->argv[2] . "/" . $a->argv[2] . ".php")) {
-                                       @include_once("addon/" . $a->argv[2] . "/" . $a->argv[2] . ".php");
+                                       include_once "addon/" . $a->argv[2] . "/" . $a->argv[2] . ".php";
                                        if (function_exists($a->argv[2] . '_addon_admin_post')) {
                                                $func = $a->argv[2] . '_addon_admin_post';
                                                $func($a);
@@ -555,14 +555,9 @@ function admin_page_deleteitem_post(App $a)
                if (strpos($guid, '/')) {
                        $guid = substr($guid, strrpos($guid, '/') + 1);
                }
-               // Now that we have the GUID get all IDs of the associated entries in the
-               // item table of the DB and drop those items, which will also delete the
+               // Now that we have the GUID, drop those items, which will also delete the
                // associated threads.
-               $r = dba::select('item', ['id'], ['guid' => $guid]);
-               while ($row = dba::fetch($r)) {
-                       Item::deleteById($row['id']);
-               }
-               dba::close($r);
+               Item::delete(['guid' => $guid]);
        }
 
        info(L10n::t('Item marked for deletion.') . EOL);
@@ -806,7 +801,7 @@ function admin_page_summary(App $a)
                $warningtext[] = L10n::t('The database update failed. Please run "php bin/console.php dbstructure update" from the command line and have a look at the errors that might appear.');
        }
 
-       $last_worker_call = Config::get('system', 'last_poller_execution', false);
+       $last_worker_call = Config::get('system', 'last_worker_execution', false);
        if (!$last_worker_call) {
                $showwarning = true;
                $warningtext[] = L10n::t('The worker was never executed. Please check your database structure!');
@@ -921,6 +916,7 @@ function admin_page_site_post(App $a)
                        $upds = implode(", ", $upd);
 
                        $r = q("UPDATE %s SET %s;", $table_name, $upds);
+
                        if (!DBM::is_result($r)) {
                                notice("Failed updating '$table_name': " . dba::errorMessage());
                                goaway('admin/site');
@@ -932,7 +928,7 @@ function admin_page_site_post(App $a)
                update_table("term", ['url'], $old_url, $new_url);
                update_table("contact", ['photo', 'thumb', 'micro', 'url', 'nurl', 'alias', 'request', 'notify', 'poll', 'confirm', 'poco', 'avatar'], $old_url, $new_url);
                update_table("gcontact", ['url', 'nurl', 'photo', 'server_url', 'notify', 'alias'], $old_url, $new_url);
-               update_table("item", ['owner-link', 'owner-avatar', 'author-link', 'author-avatar', 'body', 'plink', 'tag'], $old_url, $new_url);
+               update_table("item", ['owner-link', 'author-link', 'body', 'plink', 'tag'], $old_url, $new_url);
 
                // update profile addresses in the format "user@server.tld"
                update_table("contact", ['addr'], $old_host, $new_host);
@@ -979,6 +975,7 @@ function admin_page_site_post(App $a)
 
        $allowed_sites          =       ((x($_POST,'allowed_sites'))            ? notags(trim($_POST['allowed_sites']))         : '');
        $allowed_email          =       ((x($_POST,'allowed_email'))            ? notags(trim($_POST['allowed_email']))         : '');
+       $forbidden_nicknames    =       ((x($_POST,'forbidden_nicknames'))      ? strtolower(notags(trim($_POST['forbidden_nicknames'])))               : '');
        $no_oembed_rich_content = x($_POST,'no_oembed_rich_content');
        $allowed_oembed         =       ((x($_POST,'allowed_oembed'))           ? notags(trim($_POST['allowed_oembed']))                : '');
        $block_public           =       ((x($_POST,'block_public'))             ? True                                          : False);
@@ -1033,7 +1030,7 @@ function admin_page_site_post(App $a)
        $rino                   =       ((x($_POST,'rino'))                     ? intval($_POST['rino'])                        : 0);
        $check_new_version_url  =       ((x($_POST, 'check_new_version_url'))   ?       notags(trim($_POST['check_new_version_url']))   : 'none');
 
-       $worker_queues          =       ((x($_POST,'worker_queues'))            ? intval($_POST['worker_queues'])               : 4);
+       $worker_queues          =       ((x($_POST,'worker_queues'))            ? intval($_POST['worker_queues'])               : 10);
        $worker_dont_fork       =       ((x($_POST,'worker_dont_fork'))         ? True                                          : False);
        $worker_fastlane        =       ((x($_POST,'worker_fastlane'))          ? True                                          : False);
        $worker_frontend        =       ((x($_POST,'worker_frontend'))          ? True                                          : False);
@@ -1147,6 +1144,7 @@ function admin_page_site_post(App $a)
        Config::set('config', 'register_text', $register_text);
        Config::set('system', 'allowed_sites', $allowed_sites);
        Config::set('system', 'allowed_email', $allowed_email);
+       Config::set('system', 'forbidden_nicknames', $forbidden_nicknames);
        Config::set('system', 'no_oembed_rich_content', $no_oembed_rich_content);
        Config::set('system', 'allowed_oembed', $allowed_oembed);
        Config::set('system', 'block_public', $block_public);
@@ -1302,15 +1300,18 @@ function admin_page_site(App $a)
        $user_names = [];
        $user_names['---'] = L10n::t('Multi user instance');
        $users = q("SELECT `username`, `nickname` FROM `user`");
+
        foreach ($users as $user) {
                $user_names[$user['nickname']] = $user['username'];
        }
 
        /* Banner */
        $banner = Config::get('system', 'banner');
+
        if ($banner == false) {
                $banner = '<a href="https://friendi.ca"><img id="logo-img" src="images/friendica-32.png" alt="logo" /></a><span id="logo-text"><a href="https://friendi.ca">Friendica</a></span>';
        }
+
        $banner = htmlspecialchars($banner);
        $info = Config::get('config', 'info');
        $info = htmlspecialchars($info);
@@ -1350,6 +1351,8 @@ function admin_page_site(App $a)
        if ($optimize_max_tablesize <= 0) {
                $optimize_max_tablesize = -1;
        }
+       // Default list of forbidden names, classic role names from RFC 2142
+       $default_forbidden_nicknames = 'info, marketing, sales, support, abuse, noc, security, postmaster, hostmaster, usenet, news, webmaster, www, uucp, ftp, root, sysop';
 
        $t = get_markup_template('admin/site.tpl');
        return replace_macros($t, [
@@ -1389,13 +1392,14 @@ function admin_page_site(App $a)
                '$register_policy'      => ['register_policy', L10n::t("Register policy"), $a->config['register_policy'], "", $register_choices],
                '$daily_registrations'  => ['max_daily_registrations', L10n::t("Maximum Daily Registrations"), Config::get('system', 'max_daily_registrations'), L10n::t("If registration is permitted above, this sets the maximum number of new user registrations to accept per day.  If register is set to closed, this setting has no effect.")],
                '$register_text'        => ['register_text', L10n::t("Register text"), $a->config['register_text'], L10n::t("Will be displayed prominently on the registration page. You can use BBCode here.")],
+               '$forbidden_nicknames' => ['forbidden_nicknames', L10n::t('Forbidden Nicknames'), Config::get('system', 'forbidden_nicknames', $default_forbidden_nicknames), L10n::t('Comma separated list of nicknames that are forbidden from registration. Preset is a list of role names according RFC 2142.')],
                '$abandon_days'         => ['abandon_days', L10n::t('Accounts abandoned after x days'), Config::get('system','account_abandon_days'), L10n::t('Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit.')],
                '$allowed_sites'        => ['allowed_sites', L10n::t("Allowed friend domains"), Config::get('system','allowed_sites'), L10n::t("Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains")],
                '$allowed_email'        => ['allowed_email', L10n::t("Allowed email domains"), Config::get('system','allowed_email'), L10n::t("Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains")],
                '$no_oembed_rich_content' => ['no_oembed_rich_content', L10n::t("No OEmbed rich content"), Config::get('system','no_oembed_rich_content'), L10n::t("Don't show the rich content \x28e.g. embedded PDF\x29, except from the domains listed below.")],
                '$allowed_oembed'       => ['allowed_oembed', L10n::t("Allowed OEmbed domains"), Config::get('system','allowed_oembed'), L10n::t("Comma separated list of domains which oembed content is allowed to be displayed. Wildcards are accepted.")],
                '$block_public'         => ['block_public', L10n::t("Block public"), Config::get('system','block_public'), L10n::t("Check to block public access to all otherwise public personal pages on this site unless you are currently logged in.")],
-               '$force_publish'        => ['publish_all', L10n::t("Force publish"), Config::get('system','publish_all'), L10n::t("Check to force all profiles on this site to be listed in the site directory.")],
+               '$force_publish'        => ['publish_all', L10n::t("Force publish"), Config::get('system','publish_all'), L10n::t("Check to force all profiles on this site to be listed in the site directory.") . '<strong>' . L10n::t('Enabling this may violate privacy laws like the GDPR') . '</strong>'],
                '$global_directory'     => ['directory', L10n::t("Global directory URL"), Config::get('system', 'directory', 'https://dir.friendica.social'), L10n::t("URL to the global directory. If this is not set, the global directory is completely unavailable to the application.")],
                '$newuser_private'      => ['newuser_private', L10n::t("Private posts by default for new users"), Config::get('system','newuser_private'), L10n::t("Set default post permissions for all new members to the default privacy group rather than public.")],
                '$enotify_no_content'   => ['enotify_no_content', L10n::t("Don't include post content in email notifications"), Config::get('system','enotify_no_content'), L10n::t("Don't include the content of a post/comment/private message/etc. in the email notifications that are sent out from this site, as a privacy measure.")],
@@ -1442,14 +1446,14 @@ function admin_page_site(App $a)
                '$max_comments'         => ['max_comments', L10n::t("Maximum numbers of comments per post"), Config::get('system','max_comments'), L10n::t("How much comments should be shown for each post? Default value is 100.")],
                '$temppath'             => ['temppath', L10n::t("Temp path"), Config::get('system','temppath'), L10n::t("If you have a restricted system where the webserver can't access the system temp path, enter another path here.")],
                '$basepath'             => ['basepath', L10n::t("Base path to installation"), Config::get('system','basepath'), L10n::t("If the system cannot detect the correct path to your installation, enter the correct path here. This setting should only be set if you are using a restricted system and symbolic links to your webroot.")],
-               '$proxy_disabled'       => ['proxy_disabled', L10n::t("Disable picture proxy"), Config::get('system','proxy_disabled'), L10n::t("The picture proxy increases performance and privacy. It shouldn't be used on systems with very low bandwith.")],
+               '$proxy_disabled'       => ['proxy_disabled', L10n::t("Disable picture proxy"), Config::get('system','proxy_disabled'), L10n::t("The picture proxy increases performance and privacy. It shouldn't be used on systems with very low bandwidth.")],
                '$only_tag_search'      => ['only_tag_search', L10n::t("Only search in tags"), Config::get('system','only_tag_search'), L10n::t("On large systems the text search can slow down the system extremely.")],
 
                '$relocate_url'         => ['relocate_url', L10n::t("New base url"), System::baseUrl(), L10n::t("Change base url for this server. Sends relocate message to all Friendica and Diaspora* contacts of all users.")],
 
                '$rino'                 => ['rino', L10n::t("RINO Encryption"), intval(Config::get('system','rino_encrypt')), L10n::t("Encryption layer between nodes."), [0 => L10n::t("Disabled"), 1 => L10n::t("Enabled")]],
 
-               '$worker_queues'        => ['worker_queues', L10n::t("Maximum number of parallel workers"), Config::get('system','worker_queues'), L10n::t("On shared hosters set this to 2. On larger systems, values of 10 are great. Default value is 4.")],
+               '$worker_queues'        => ['worker_queues', L10n::t("Maximum number of parallel workers"), Config::get('system','worker_queues'), L10n::t("On shared hosters set this to %d. On larger systems, values of %d are great. Default value is %d.", 5, 20, 10)],
                '$worker_dont_fork'     => ['worker_dont_fork', L10n::t("Don't use 'proc_open' with the worker"), Config::get('system','worker_dont_fork'), L10n::t("Enable this if your system doesn't allow the use of 'proc_open'. This can happen on shared hosters. If this is enabled you should increase the frequency of worker calls in your crontab.")],
                '$worker_fastlane'      => ['worker_fastlane', L10n::t("Enable fastlane"), Config::get('system','worker_fastlane'), L10n::t("When enabed, the fastlane mechanism starts an additional worker if processes with higher priority are blocked by processes of lower priority.")],
                '$worker_frontend'      => ['worker_frontend', L10n::t('Enable frontend worker'), Config::get('system','frontend_worker'), L10n::t('When enabled the Worker process is triggered when backend access is performed \x28e.g. messages being delivered\x29. On smaller sites you might want to call %s/worker on a regular basis via an external cron job. You should only enable this option if you cannot utilize cron/scheduled jobs on your server.', System::baseUrl())],
@@ -1461,7 +1465,8 @@ function admin_page_site(App $a)
                '$relay_server_tags'    => ['relay_server_tags', L10n::t("Server tags"), Config::get('system','relay_server_tags'), L10n::t("Comma separated list of tags for the 'tags' subscription.")],
                '$relay_user_tags'      => ['relay_user_tags', L10n::t("Allow user tags"), Config::get('system', 'relay_user_tags', true), L10n::t("If enabled, the tags from the saved searches will used for the 'tags' subscription in addition to the 'relay_server_tags'.")],
 
-               '$form_security_token'  => get_form_security_token("admin_site")
+               '$form_security_token'  => get_form_security_token("admin_site"),
+               '$relocate_button'      => L10n::t('Start Relocation'),
        ]);
 }
 
@@ -1506,9 +1511,12 @@ function admin_page_dbsync(App $a)
 
        if ($a->argc > 2 && intval($a->argv[2])) {
                require_once 'update.php';
+
                $func = 'update_' . intval($a->argv[2]);
+
                if (function_exists($func)) {
                        $retval = $func();
+
                        if ($retval === UPDATE_FAILED) {
                                $o .= L10n::t("Executing %s failed with error: %s", $func, $retval);
                        } elseif ($retval === UPDATE_SUCCESS) {
@@ -1521,11 +1529,13 @@ function admin_page_dbsync(App $a)
                        $o .= L10n::t('There was no additional update function %s that needed to be called.', $func) . "<br />";
                        Config::set('database', $func, 'success');
                }
+
                return $o;
        }
 
        $failed = [];
        $r = q("SELECT `k`, `v` FROM `config` WHERE `cat` = 'database' ");
+
        if (DBM::is_result($r)) {
                foreach ($r as $rr) {
                        $upd = intval(substr($rr['k'], 7));
@@ -1535,6 +1545,7 @@ function admin_page_dbsync(App $a)
                        $failed[] = $upd;
                }
        }
+
        if (!count($failed)) {
                $o = replace_macros(get_markup_template('structure_check.tpl'), [
                        '$base' => System::baseUrl(true),
@@ -1769,8 +1780,8 @@ function admin_page_users(App $a)
                $e['page-flags-raw'] = $e['page-flags'];
                $e['page-flags'] = $page_types[$e['page-flags']];
 
-               $e['account-type-raw'] = ($e['page_flags_raw']==0) ? $e['account-type'] : -1;
-               $e['account-type'] = ($e['page_flags_raw']==0) ? $account_types[$e['account-type']] : "";
+               $e['account-type-raw'] = ($e['page_flags_raw'] == 0) ? $e['account-type'] : -1;
+               $e['account-type'] = ($e['page_flags_raw'] == 0) ? $account_types[$e['account-type']] : "";
 
                $e['register_date'] = Temporal::getRelativeDate($e['register_date']);
                $e['login_date'] = Temporal::getRelativeDate($e['login_date']);
@@ -1921,7 +1932,7 @@ function admin_page_addons(App $a)
 
                $admin_form = "";
                if (in_array($addon, $a->addons_admin)) {
-                       @require_once("addon/$addon/$addon.php");
+                       require_once "addon/$addon/$addon.php";
                        $func = $addon . '_addon_admin';
                        $func($a, $admin_form);
                }
@@ -2162,6 +2173,7 @@ function admin_page_themes(App $a)
                }
 
                $readme = null;
+
                if (is_file("view/theme/$theme/README.md")) {
                        $readme = Markdown::convert(file_get_contents("view/theme/$theme/README.md"), false);
                } elseif (is_file("view/theme/$theme/README")) {