]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Admin/Site.php
Fix null value passed to string functions deprecation notices
[friendica.git] / src / Module / Admin / Site.php
index 515fb53c87524c02e04a6cff65bf0ba969765b2d..ab6624f776b2912ae2ba9ff4a7a236f11bbfea18 100644 (file)
@@ -32,14 +32,11 @@ use Friendica\DI;
 use Friendica\Model\Contact;
 use Friendica\Model\User;
 use Friendica\Module\BaseAdmin;
+use Friendica\Module\Conversation\Community;
 use Friendica\Module\Register;
 use Friendica\Protocol\Relay;
 use Friendica\Util\BasePath;
 use Friendica\Util\EMailer\MailBuilder;
-use Friendica\Util\Strings;
-use Friendica\Worker\Delivery;
-
-require_once __DIR__ . '/../../../boot.php';
 
 class Site extends BaseAdmin
 {
@@ -52,7 +49,7 @@ class Site extends BaseAdmin
                $a = DI::app();
 
                if (!empty($_POST['republish_directory'])) {
-                       Worker::add(PRIORITY_LOW, 'Directory');
+                       Worker::add(Worker::PRIORITY_LOW, 'Directory');
                        return;
                }
 
@@ -60,74 +57,6 @@ class Site extends BaseAdmin
                        return;
                }
 
-               // relocate
-               // @TODO This file could benefit from moving this feature away in a Module\Admin\Relocate class for example
-               if (!empty($_POST['relocate']) && !empty($_POST['relocate_url']) && $_POST['relocate_url'] != "") {
-                       $new_url = $_POST['relocate_url'];
-                       $new_url = rtrim($new_url, "/");
-
-                       $parsed = @parse_url($new_url);
-                       if (!is_array($parsed) || empty($parsed['host']) || empty($parsed['scheme'])) {
-                               notice(DI::l10n()->t("Can not parse base url. Must have at least <scheme>://<domain>"));
-                               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);
@@ -391,8 +324,8 @@ class Site extends BaseAdmin
                /* 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 */
@@ -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('<strong>Warning!</strong> 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...
@@ -533,7 +467,7 @@ class Site extends BaseAdmin
                        '$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'),
@@ -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.')],