X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FAdmin%2FSite.php;h=ab6624f776b2912ae2ba9ff4a7a236f11bbfea18;hb=0ec7238da49d7e9a98b0a49f86e8ed2ca721ae9a;hp=27623880aeb6f6035d65680d43346df262e036cf;hpb=190efcefad29a5971a0cd487d2d67dab638c5a4e;p=friendica.git diff --git a/src/Module/Admin/Site.php b/src/Module/Admin/Site.php index 27623880ae..ab6624f776 100644 --- a/src/Module/Admin/Site.php +++ b/src/Module/Admin/Site.php @@ -1,6 +1,6 @@ t("Can not parse base url. Must have at least ://")); - DI::baseUrl()->redirect('admin/site'); - } - - /* steps: - * replace all "baseurl" to "new_url" in config, profile, term, items and contacts - * send relocate for every local user - * */ - - $old_url = DI::baseUrl()->get(true); - - // Generate host names for relocation the addresses in the format user@address.tld - $new_host = str_replace("http://", "@", Strings::normaliseLink($new_url)); - $old_host = str_replace("http://", "@", Strings::normaliseLink($old_url)); - - function update_table(App $a, $table_name, $fields, $old_url, $new_url) - { - $dbold = DBA::escape($old_url); - $dbnew = DBA::escape($new_url); - - $upd = []; - foreach ($fields as $f) { - $upd[] = "`$f` = REPLACE(`$f`, '$dbold', '$dbnew')"; - } - - $upds = implode(", ", $upd); - - $r = DBA::e(sprintf("UPDATE %s SET %s;", $table_name, $upds)); - if (!DBA::isResult($r)) { - notice("Failed updating '$table_name': " . DBA::errorMessage()); - DI::baseUrl()->redirect('admin/site'); - } - } - - // update tables - // update profile links in the format "http://server.tld" - update_table($a, "profile", ['photo', 'thumb'], $old_url, $new_url); - update_table($a, "contact", ['photo', 'thumb', 'micro', 'url', 'nurl', 'alias', 'request', 'notify', 'poll', 'confirm', 'poco', 'avatar'], $old_url, $new_url); - update_table($a, "post-content", ['body'], $old_url, $new_url); - - // update profile addresses in the format "user@server.tld" - update_table($a, "contact", ['addr'], $old_host, $new_host); - - // update config - DI::config()->set('system', 'url', $new_url); - DI::baseUrl()->saveByURL($new_url); - - // send relocate - $usersStmt = DBA::select('user', ['uid'], ['account_removed' => false, 'account_expired' => false]); - while ($user = DBA::fetch($usersStmt)) { - Worker::add(PRIORITY_HIGH, 'Notifier', Delivery::RELOCATION, $user['uid']); - } - DBA::close($usersStmt); - - info(DI::l10n()->t("Relocation started. Could take a while to complete.")); - - DI::baseUrl()->redirect('admin/site'); - } - // end relocate - $sitename = (!empty($_POST['sitename']) ? trim($_POST['sitename']) : ''); $sender_email = (!empty($_POST['sender_email']) ? trim($_POST['sender_email']) : ''); $banner = (!empty($_POST['banner']) ? trim($_POST['banner']) : false); @@ -169,6 +98,7 @@ class Site extends BaseAdmin $enable_multi_reg = !empty($_POST['enable_multi_reg']); $enable_openid = !empty($_POST['enable_openid']); $enable_regfullname = !empty($_POST['enable_regfullname']); + $register_notification = !empty($_POST['register_notification']); $community_page_style = (!empty($_POST['community_page_style']) ? intval(trim($_POST['community_page_style'])) : 0); $max_author_posts_community_page = (!empty($_POST['max_author_posts_community_page']) ? intval(trim($_POST['max_author_posts_community_page'])) : 0); @@ -201,6 +131,7 @@ class Site extends BaseAdmin $temppath = (!empty($_POST['temppath']) ? trim($_POST['temppath']) : ''); $singleuser = (!empty($_POST['singleuser']) ? trim($_POST['singleuser']) : ''); $only_tag_search = !empty($_POST['only_tag_search']); + $compute_group_counts = !empty($_POST['compute_group_counts']); $check_new_version_url = (!empty($_POST['check_new_version_url']) ? trim($_POST['check_new_version_url']) : 'none'); $worker_queues = (!empty($_POST['worker_queues']) ? intval($_POST['worker_queues']) : 10); @@ -216,7 +147,7 @@ class Site extends BaseAdmin // Has the directory url changed? If yes, then resubmit the existing profiles there if ($global_directory != DI::config()->get('system', 'directory') && ($global_directory != '')) { DI::config()->set('system', 'directory', $global_directory); - Worker::add(PRIORITY_LOW, 'Directory'); + Worker::add(Worker::PRIORITY_LOW, 'Directory'); } if (DI::baseUrl()->getUrlPath() != "") { @@ -336,6 +267,7 @@ class Site extends BaseAdmin DI::config()->set('system', 'block_extended_register', !$enable_multi_reg); DI::config()->set('system', 'no_openid' , !$enable_openid); DI::config()->set('system', 'no_regfullname' , !$enable_regfullname); + DI::config()->set('system', 'register_notification' , $register_notification); DI::config()->set('system', 'community_page_style' , $community_page_style); DI::config()->set('system', 'max_author_posts_community_page', $max_author_posts_community_page); DI::config()->set('system', 'verifyssl' , $verifyssl); @@ -371,6 +303,7 @@ class Site extends BaseAdmin DI::config()->set('system', 'temppath', $temppath); DI::config()->set('system', 'only_tag_search' , $only_tag_search); + DI::config()->set('system', 'compute_group_counts', $compute_group_counts); DI::config()->set('system', 'worker_queues' , $worker_queues); DI::config()->set('system', 'worker_fastlane' , $worker_fastlane); @@ -384,15 +317,15 @@ class Site extends BaseAdmin DI::baseUrl()->redirect('admin/site' . $active_panel); } - public function content(): string + protected function content(array $request = []): string { parent::content(); /* Installed langs */ $lang_choices = DI::l10n()->getAvailableLanguages(); - if (strlen(DI::config()->get('system', 'directory_submit_url')) && - !strlen(DI::config()->get('system', 'directory'))) { + if (DI::config()->get('system', 'directory_submit_url') && + !DI::config()->get('system', 'directory')) { DI::config()->set('system', 'directory', dirname(DI::config()->get('system', 'directory_submit_url'))); DI::config()->delete('system', 'directory_submit_url'); } @@ -429,11 +362,11 @@ class Site extends BaseAdmin /* Community page style */ $community_page_style_choices = [ - CP_NO_INTERNAL_COMMUNITY => DI::l10n()->t('No community page for local users'), - CP_NO_COMMUNITY_PAGE => DI::l10n()->t('No community page'), - CP_USERS_ON_SERVER => DI::l10n()->t('Public postings from users of this site'), - CP_GLOBAL_COMMUNITY => DI::l10n()->t('Public postings from the federated network'), - CP_USERS_AND_GLOBAL => DI::l10n()->t('Public postings from local users and the federated network') + Community::DISABLED => DI::l10n()->t('No community page'), + Community::DISABLED_VISITOR => DI::l10n()->t('No community page for visitors'), + Community::LOCAL => DI::l10n()->t('Public postings from users of this site'), + Community::GLOBAL => DI::l10n()->t('Public postings from the federated network'), + Community::LOCAL_AND_GLOBAL => DI::l10n()->t('Public postings from local users and the federated network') ]; /* get user names to make the install a personal install of X */ @@ -450,7 +383,7 @@ class Site extends BaseAdmin $banner = DI::config()->get('system', 'banner'); if ($banner == false) { - $banner = 'logoFriendica'; + $banner = 'logoFriendica'; } $email_banner = DI::config()->get('system', 'email_banner'); @@ -512,8 +445,9 @@ class Site extends BaseAdmin '$no_relay_list' => DI::l10n()->t('The system is not subscribed to any relays at the moment.'), '$relay_list_title' => DI::l10n()->t('The system is currently subscribed to the following relays:'), '$relay_list' => Relay::getList(['url']), - '$relocate' => DI::l10n()->t('Relocate Instance'), - '$relocate_warning' => DI::l10n()->t('Warning! Advanced function. Could make this server unreachable.'), + '$relocate' => DI::l10n()->t('Relocate Node'), + '$relocate_msg' => DI::l10n()->t('Relocating your node enables you to change the DNS domain of this node and keep all the existing users and posts. This process takes a while and can only be started from the relocate console command like this:'), + '$relocate_cmd' => DI::l10n()->t('(Friendica directory)# bin/console relocate https://newdomain.com'), '$baseurl' => DI::baseUrl()->get(true), // name, label, value, help string, extra data... @@ -526,14 +460,14 @@ class Site extends BaseAdmin '$touch_icon' => ['touch_icon', DI::l10n()->t('Touch icon'), DI::config()->get('system', 'touch_icon'), DI::l10n()->t('Link to an icon that will be used for tablets and mobiles.')], '$additional_info' => ['additional_info', DI::l10n()->t('Additional Info'), $additional_info, DI::l10n()->t('For public servers: you can add additional information here that will be listed at %s/servers.', Search::getGlobalDirectory())], '$language' => ['language', DI::l10n()->t('System language'), DI::config()->get('system', 'language'), '', $lang_choices], - '$theme' => ['theme', DI::l10n()->t('System theme'), DI::config()->get('system', 'theme'), DI::l10n()->t('Default system theme - may be over-ridden by user profiles - Change default theme settings'), $theme_choices], + '$theme' => ['theme', DI::l10n()->t('System theme'), DI::config()->get('system', 'theme'), DI::l10n()->t('Default system theme - may be over-ridden by user profiles - Change default theme settings', DI::baseUrl()->get(true) . '/admin/themes'), $theme_choices], '$theme_mobile' => ['theme_mobile', DI::l10n()->t('Mobile system theme'), DI::config()->get('system', 'mobile-theme', '---'), DI::l10n()->t('Theme for mobile devices'), $theme_choices_mobile], '$ssl_policy' => ['ssl_policy', DI::l10n()->t('SSL link policy'), DI::config()->get('system', 'ssl_policy'), DI::l10n()->t('Determines whether generated links should be forced to use SSL'), $ssl_choices], '$force_ssl' => ['force_ssl', DI::l10n()->t('Force SSL'), DI::config()->get('system', 'force_ssl'), DI::l10n()->t('Force all Non-SSL requests to SSL - Attention: on some systems it could lead to endless loops.')], '$show_help' => ['show_help', DI::l10n()->t('Show help entry from navigation menu'), !DI::config()->get('system', 'hide_help'), DI::l10n()->t('Displays the menu entry for the Help pages from the navigation menu. It is always accessible by calling /help directly.')], '$singleuser' => ['singleuser', DI::l10n()->t('Single user instance'), DI::config()->get('system', 'singleuser', '---'), DI::l10n()->t('Make this instance multi-user or single-user for the named user'), $user_names], - '$maximagesize' => ['maximagesize', DI::l10n()->t('Maximum image size'), DI::config()->get('system', 'maximagesize'), DI::l10n()->t('Maximum size in bytes of uploaded images. Default is 0, which means no limits.')], + '$maximagesize' => ['maximagesize', DI::l10n()->t('Maximum image size'), DI::config()->get('system', 'maximagesize'), DI::l10n()->t('Maximum size in bytes of uploaded images. Default is 0, which means no limits. Be aware that this setting does not affect server-side upload limits.')], '$maximagelength' => ['maximagelength', DI::l10n()->t('Maximum image length'), DI::config()->get('system', 'max_image_length'), DI::l10n()->t('Maximum length in pixels of the longest side of uploaded images. Default is -1, which means no limits.')], '$jpegimagequality' => ['jpegimagequality', DI::l10n()->t('JPEG image quality'), DI::config()->get('system', 'jpeg_quality'), DI::l10n()->t('Uploaded JPEGS will be saved at this quality setting [0-100]. Default is 100, which is full quality.')], @@ -560,6 +494,7 @@ class Site extends BaseAdmin '$enable_multi_reg' => ['enable_multi_reg', DI::l10n()->t('Enable multiple registrations'), !DI::config()->get('system', 'block_extended_register'), DI::l10n()->t('Enable users to register additional accounts for use as pages.')], '$enable_openid' => ['enable_openid', DI::l10n()->t('Enable OpenID'), !DI::config()->get('system', 'no_openid'), DI::l10n()->t('Enable OpenID support for registration and logins.')], '$enable_regfullname' => ['enable_regfullname', DI::l10n()->t('Enable Fullname check'), !DI::config()->get('system', 'no_regfullname'), DI::l10n()->t('Enable check to only allow users to register with a space between the first name and the last name in their full name.')], + '$register_notification' => ['register_notification', DI::l10n()->t('Email administrators on new registration'), DI::config()->get('system', 'register_notification'), DI::l10n()->t('If enabled and the system is set to an open registration, an email for each new registration is sent to the administrators.')], '$community_page_style' => ['community_page_style', DI::l10n()->t('Community pages for visitors'), DI::config()->get('system', 'community_page_style'), DI::l10n()->t('Which community pages should be available for visitors. Local users always see both pages.'), $community_page_style_choices], '$max_author_posts_community_page' => ['max_author_posts_community_page', DI::l10n()->t('Posts per user on community page'), DI::config()->get('system', 'max_author_posts_community_page'), DI::l10n()->t('The maximum number of posts per user on the community page. (Not valid for "Global Community")')], '$mail_able' => function_exists('imap_open'), @@ -570,8 +505,8 @@ class Site extends BaseAdmin '$diaspora_not_able' => DI::l10n()->t('Diaspora support can\'t be enabled because Friendica was installed into a sub directory.'), '$diaspora_enabled' => ['diaspora_enabled', DI::l10n()->t('Enable Diaspora support'), DI::config()->get('system', 'diaspora_enabled', $diaspora_able), DI::l10n()->t('Enable built-in Diaspora network compatibility for communicating with diaspora servers.')], '$verifyssl' => ['verifyssl', DI::l10n()->t('Verify SSL'), DI::config()->get('system', 'verifyssl'), DI::l10n()->t('If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites.')], - '$proxyuser' => ['proxyuser', DI::l10n()->t('Proxy user'), DI::config()->get('system', 'proxyuser'), ''], - '$proxy' => ['proxy', DI::l10n()->t('Proxy URL'), DI::config()->get('system', 'proxy'), ''], + '$proxyuser' => ['proxyuser', DI::l10n()->t('Proxy user'), DI::config()->get('system', 'proxyuser'), DI::l10n()->t('User name for the proxy server.')], + '$proxy' => ['proxy', DI::l10n()->t('Proxy URL'), DI::config()->get('system', 'proxy'), DI::l10n()->t('If you want to use a proxy server that Friendica should use to connect to the network, put the URL of the proxy here.')], '$timeout' => ['timeout', DI::l10n()->t('Network timeout'), DI::config()->get('system', 'curl_timeout'), DI::l10n()->t('Value is in seconds. Set to 0 for unlimited (not recommended).')], '$maxloadavg' => ['maxloadavg', DI::l10n()->t('Maximum Load Average'), DI::config()->get('system', 'maxloadavg'), DI::l10n()->t('Maximum system load before delivery and poll processes are deferred - default %d.', 20)], '$min_memory' => ['min_memory', DI::l10n()->t('Minimal Memory'), DI::config()->get('system', 'min_memory'), DI::l10n()->t('Minimal free memory in MB for the worker. Needs access to /proc/meminfo - default 0 (deactivated).')], @@ -600,8 +535,7 @@ class Site extends BaseAdmin '$max_display_comments' => ['max_display_comments', DI::l10n()->t('Maximum numbers of comments per post on the display page'), DI::config()->get('system', 'max_display_comments'), DI::l10n()->t('How many comments should be shown on the single view for each post? Default value is 1000.')], '$temppath' => ['temppath', DI::l10n()->t('Temp path'), DI::config()->get('system', 'temppath'), DI::l10n()->t('If you have a restricted system where the webserver can\'t access the system temp path, enter another path here.')], '$only_tag_search' => ['only_tag_search', DI::l10n()->t('Only search in tags'), DI::config()->get('system', 'only_tag_search'), DI::l10n()->t('On large systems the text search can slow down the system extremely.')], - - '$relocate_url' => ['relocate_url', DI::l10n()->t('New base url'), DI::baseUrl()->get(), DI::l10n()->t('Change base url for this server. Sends relocate message to all Friendica and Diaspora* contacts of all users.')], + '$compute_group_counts' => ['compute_group_counts', DI::l10n()->t('Generate counts per contact group when calculating network count'), DI::config()->get('system', 'compute_group_counts'), DI::l10n()->t('On systems with users that heavily use contact groups the query can be very expensive.')], '$worker_queues' => ['worker_queues', DI::l10n()->t('Maximum number of parallel workers'), DI::config()->get('system', 'worker_queues'), DI::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_fastlane' => ['worker_fastlane', DI::l10n()->t('Enable fastlane'), DI::config()->get('system', 'worker_fastlane'), DI::l10n()->t('When enabed, the fastlane mechanism starts an additional worker if processes with higher priority are blocked by processes of lower priority.')],