X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fadmin.php;h=b43baa44331fa6432fce0321c7165b801d702b0f;hb=22bbfdadd058d2bddc780f220d77918cf872cb64;hp=912d8d43be1857851aa5053d193c52b507b07aa0;hpb=ae62c1d1ea1296e2fcb134debe290aa4e769f9ea;p=friendica.git diff --git a/mod/admin.php b/mod/admin.php index 912d8d43be..b43baa4433 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -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); @@ -305,7 +305,7 @@ function admin_page_tos(App $a) '$displaytos' => ['displaytos', L10n::t('Display Terms of Service'), Config::get('system', 'tosdisplay'), L10n::t('Enable the Terms of Service page. If this is enabled a link to the terms will be added to the registration form and the general information page.')], '$displayprivstatement' => ['displayprivstatement', L10n::t('Display Privacy Statement'), Config::get('system','tosprivstatement'), L10n::t('Show some informations regarding the needed information to operate the node according e.g. to EU-GDPR.','https://en.wikipedia.org/wiki/General_Data_Protection_Regulation')], '$preview' => L10n::t('Privacy Statement Preview'), - '$privtext' => $tos->privblock, + '$privtext' => $tos->privacy_complete, '$tostext' => ['tostext', L10n::t('The Terms of Service'), Config::get('system', 'tostext'), L10n::t('Enter the Terms of Service for your node here. You can use BBCode. Headers of sections should be [h2] and below.')], '$form_security_token' => get_form_security_token("admin_tos"), '$submit' => L10n::t('Save Settings'), @@ -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); @@ -1033,7 +1029,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); @@ -1302,15 +1298,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 = 'logoFriendica'; } + $banner = htmlspecialchars($banner); $info = Config::get('config', 'info'); $info = htmlspecialchars($info); @@ -1395,7 +1394,7 @@ function admin_page_site(App $a) '$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.") . '' . L10n::t('Enabling this may violate privacy laws like the GDPR') . ''], '$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 +1441,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())], @@ -1506,9 +1505,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 +1523,13 @@ function admin_page_dbsync(App $a) $o .= L10n::t('There was no additional update function %s that needed to be called.', $func) . "
"; 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 +1539,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 +1774,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 +1926,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 +2167,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")) {