X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fadmin.php;h=4ae5eb70b067b83eed1826b2c5708d187430629a;hb=3eb7ab2d9e18df44d1dbbdb1d3805335a0fac362;hp=d7495340b4c961932c84e7ec81732ff3263ee5a6;hpb=fb0a21c0a28aa7d7488aca4440a60e5d728f2995;p=friendica.git diff --git a/mod/admin.php b/mod/admin.php index d7495340b4..4ae5eb70b0 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -17,9 +17,11 @@ use Friendica\Core\Worker; use Friendica\Database\DBM; use Friendica\Database\DBStructure; use Friendica\Model\Contact; -use Friendica\Model\User; use Friendica\Model\Item; +use Friendica\Model\User; use Friendica\Module\Login; +use Friendica\Util\DateTimeFormat; +use Friendica\Util\Temporal; require_once 'include/enotify.php'; require_once 'include/text.php'; @@ -382,7 +384,7 @@ function admin_page_contactblock_post(App $a) check_form_security_token_redirectOnErr('/admin/contactblock', 'admin_contactblock'); if (x($_POST, 'page_contactblock_block')) { - $contact_id = Contact::getIdForURL($contact_url, 0); + $contact_id = Contact::getIdForURL($contact_url); if ($contact_id) { Contact::block($contact_id); notice(L10n::t('The contact has been blocked from the node')); @@ -503,7 +505,7 @@ function admin_page_deleteitem_post(App $a) // associated threads. $r = dba::select('item', ['id'], ['guid' => $guid]); while ($row = dba::fetch($r)) { - Item::delete($row['id']); + Item::deleteById($row['id']); } dba::close($r); } @@ -537,7 +539,7 @@ function admin_page_federation(App $a) // off one % two of them are needed in the query // Add more platforms if you like, when one returns 0 known nodes it is not // displayed on the stats page. - $platforms = ['Friendi%%a', 'Diaspora', '%%red%%', 'Hubzilla', 'BlaBlaNet', 'GNU Social', 'StatusNet', 'Mastodon', 'Pleroma', 'socialhome']; + $platforms = ['Friendi%%a', 'Diaspora', '%%red%%', 'Hubzilla', 'BlaBlaNet', 'GNU Social', 'StatusNet', 'Mastodon', 'Pleroma', 'socialhome', 'ganggo']; $colors = [ 'Friendi%%a' => '#ffc018', // orange from the logo 'Diaspora' => '#a1a1a1', // logo is black and white, makes a gray @@ -548,7 +550,8 @@ function admin_page_federation(App $a) 'StatusNet' => '#789240', // the green from the logo (red and blue have already others 'Mastodon' => '#1a9df9', // blue from the Mastodon logo 'Pleroma' => '#E46F0F', // Orange from the text that is used on Pleroma instances - 'socialhome' => '#52056b' // lilac from the Django Image used at the Socialhome homepage + 'socialhome' => '#52056b' , // lilac from the Django Image used at the Socialhome homepage + 'ganggo' => '#69d7e2' // from the favicon ]; $counts = []; $total = 0; @@ -632,8 +635,21 @@ function admin_page_federation(App $a) $v = $newVv; } - foreach ($v as $key => $vv) - $v[$key]["version"] = trim(strip_tags($vv["version"])); + // Assure that the versions are sorted correctly + $v2 = []; + $versions = []; + foreach ($v as $vv) { + $version = trim(strip_tags($vv["version"])); + $v2[$version] = $vv; + $versions[] = $version; + } + + usort($versions, 'version_compare'); + + $v = []; + foreach ($versions as $version) { + $v[] = $v2[$version]; + } // the 3rd array item is needed for the JavaScript graphs as JS does // not like some characters in the names of variables... @@ -715,7 +731,7 @@ function admin_page_summary(App $a) $warningtext = []; if (DBM::is_result($r)) { $showwarning = true; - $warningtext[] = L10n::t('Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See here for a guide that may be helpful converting the table engines. You may also use the command php scripts/dbstructure.php toinnodb of your Friendica installation for an automatic conversion.
', 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html'); + $warningtext[] = L10n::t('Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See here for a guide that may be helpful converting the table engines. You may also use the command php bin/console.php dbstructure toinnodb of your Friendica installation for an automatic conversion.
', 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html'); } // Check if github.com/friendica/master/VERSION is higher then // the local version of Friendica. Check is opt-in, source may be master or devel branch @@ -732,14 +748,14 @@ function admin_page_summary(App $a) } if (Config::get('system', 'dbupdate') == DB_UPDATE_FAILED) { $showwarning = true; - $warningtext[] = L10n::t('The database update failed. Please run "php scripts/dbstructure.php update" from the command line and have a look at the errors that might appear.'); + $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); if (!$last_worker_call) { $showwarning = true; $warningtext[] = L10n::t('The worker was never executed. Please check your database structure!'); - } elseif ((strtotime(datetime_convert()) - strtotime($last_worker_call)) > 60 * 60) { + } elseif ((strtotime(DateTimeFormat::utcNow()) - strtotime($last_worker_call)) > 60 * 60) { $showwarning = true; $warningtext[] = L10n::t('The last worker execution was on %s UTC. This is older than one hour. Please check your crontab settings.', $last_worker_call); } @@ -868,8 +884,9 @@ function admin_page_site_post(App $a) update_table("gcontact", ['connect', 'addr'], $old_host, $new_host); // update config - $a->set_baseurl($new_url); + Config::set('system', 'hostname', parse_url($new_url, PHP_URL_HOST)); Config::set('system', 'url', $new_url); + $a->set_baseurl($new_url); // send relocate $users = q("SELECT `uid` FROM `user` WHERE `account_removed` = 0 AND `account_expired` = 0"); @@ -957,11 +974,19 @@ function admin_page_site_post(App $a) $only_tag_search = ((x($_POST,'only_tag_search')) ? True : False); $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_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); + $relay_directly = ((x($_POST,'relay_directly')) ? True : False); + $relay_server = ((x($_POST,'relay_server')) ? notags(trim($_POST['relay_server'])) : ''); + $relay_subscribe = ((x($_POST,'relay_subscribe')) ? True : False); + $relay_scope = ((x($_POST,'relay_scope')) ? notags(trim($_POST['relay_scope'])) : ''); + $relay_server_tags = ((x($_POST,'relay_server_tags')) ? notags(trim($_POST['relay_server_tags'])) : ''); + $relay_user_tags = ((x($_POST,'relay_user_tags')) ? True : False); + // Has the directory url changed? If yes, then resubmit the existing profiles there if ($global_directory != Config::get('system', 'directory') && ($global_directory != '')) { Config::set('system', 'directory', $global_directory); @@ -1115,10 +1140,19 @@ function admin_page_site_post(App $a) Config::set('system', 'basepath', $basepath); Config::set('system', 'proxy_disabled', $proxy_disabled); Config::set('system', 'only_tag_search', $only_tag_search); + Config::set('system', 'worker_queues', $worker_queues); Config::set('system', 'worker_dont_fork', $worker_dont_fork); Config::set('system', 'worker_fastlane', $worker_fastlane); Config::set('system', 'frontend_worker', $worker_frontend); + + Config::set('system', 'relay_directly', $relay_directly); + Config::set('system', 'relay_server', $relay_server); + Config::set('system', 'relay_subscribe', $relay_subscribe); + Config::set('system', 'relay_scope', $relay_scope); + Config::set('system', 'relay_server_tags', $relay_server_tags); + Config::set('system', 'relay_user_tags', $relay_user_tags); + Config::set('system', 'rino_encrypt', $rino); info(L10n::t('Site settings updated.') . EOL); @@ -1267,6 +1301,7 @@ function admin_page_site(App $a) '$portable_contacts' => L10n::t('Auto Discovered Contact Directory'), '$performance' => L10n::t('Performance'), '$worker_title' => L10n::t('Worker'), + '$relay_title' => L10n::t('Message Relay'), '$relocate' => L10n::t('Relocate - WARNING: advanced function. Could make this server unreachable.'), '$baseurl' => System::baseUrl(true), // name, label, value, help string, extra data... @@ -1346,13 +1381,20 @@ function admin_page_site(App $a) '$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 => "Disabled", 1 => "Enabled"]], + '$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_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())], + '$relay_subscribe' => ['relay_subscribe', L10n::t("Subscribe to relay"), Config::get('system','relay_subscribe'), L10n::t("Enables the receiving of public posts from the relay. They will be included in the search, subscribed tags and on the global community page.")], + '$relay_server' => ['relay_server', L10n::t("Relay server"), Config::get('system','relay_server'), L10n::t("Address of the relay server where public posts should be send to. For example https://relay.diasp.org")], + '$relay_directly' => ['relay_directly', L10n::t("Direct relay transfer"), Config::get('system','relay_directly'), L10n::t("Enables the direct transfer to other servers without using the relay servers")], + '$relay_scope' => ['relay_scope', L10n::t("Relay scope"), Config::get('system','relay_scope'), L10n::t("Can be 'all' or 'tags'. 'all' means that every public post should be received. 'tags' means that only posts with selected tags should be received."), ['' => L10n::t('Disabled'), 'all' => L10n::t('all'), 'tags' => L10n::t('tags')]], + '$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'), 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") ]); } @@ -1565,7 +1607,7 @@ function admin_page_users(App $a) if ($a->argc > 2) { $uid = $a->argv[3]; $user = dba::selectFirst('user', ['username', 'blocked'], ['uid' => $uid]); - if (DBM::is_result($user)) { + if (!DBM::is_result($user)) { notice('User not found' . EOL); goaway('admin/users'); return ''; // NOTREACHED @@ -1647,13 +1689,13 @@ function admin_page_users(App $a) L10n::t('Automatic Friend Account') ]; $e['page-flags'] = $accounts[$e['page-flags']]; - $e['register_date'] = relative_date($e['register_date']); - $e['login_date'] = relative_date($e['login_date']); - $e['lastitem_date'] = relative_date($e['lastitem_date']); + $e['register_date'] = Temporal::getRelativeDate($e['register_date']); + $e['login_date'] = Temporal::getRelativeDate($e['login_date']); + $e['lastitem_date'] = Temporal::getRelativeDate($e['lastitem_date']); //$e['is_admin'] = ($e['email'] === $a->config['admin_email']); $e['is_admin'] = in_array($e['email'], $adminlist); $e['is_deletable'] = (intval($e['uid']) != local_user()); - $e['deleted'] = ($e['account_removed'] ? relative_date($e['account_expires_on']) : False); + $e['deleted'] = ($e['account_removed'] ? Temporal::getRelativeDate($e['account_expires_on']) : False); return $e; }; $users = array_map($_setup_users, $users);