X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fadmin.php;h=b0fb6d47262a23024e8d0df63c464a2cd438f4c5;hb=bedab33e0b3a1636332c8f07c157a357bf3fd459;hp=9be75f6f90d79057c5fade43369392f3687a9b32;hpb=480d573fc50fc69aea5df593fd24c797bc4ab23a;p=friendica.git
diff --git a/mod/admin.php b/mod/admin.php
index 9be75f6f90..b0fb6d4726 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -18,11 +18,13 @@ use Friendica\Database\DBA;
use Friendica\Database\DBStructure;
use Friendica\Model\Contact;
use Friendica\Model\Item;
+use Friendica\Model\Register;
use Friendica\Model\User;
use Friendica\Module\Login;
use Friendica\Module\Tos;
use Friendica\Util\Arrays;
use Friendica\Util\DateTimeFormat;
+use Friendica\Util\Network;
use Friendica\Util\Temporal;
require_once 'include/enotify.php';
@@ -32,11 +34,11 @@ require_once 'include/items.php';
/**
* @brief Process send data from the admin panels subpages
*
- * This function acts as relais for processing the data send from the subpages
+ * This function acts as relay for processing the data send from the subpages
* of the admin panel. Depending on the 1st parameter of the url (argv[1])
* specialized functions are called to process the data from the subpages.
*
- * The function itself does not return anything, but the subsequencely function
+ * The function itself does not return anything, but the subsequently function
* return the HTML for the pages of the admin panel.
*
* @param App $a
@@ -76,7 +78,7 @@ function admin_post(App $a)
break;
case 'themes':
if ($a->argc < 2) {
- if (is_ajax()) {
+ if ($a->isAjax()) {
return;
}
goaway('admin/');
@@ -106,7 +108,7 @@ function admin_post(App $a)
}
info(L10n::t('Theme settings updated.'));
- if (is_ajax()) {
+ if ($a->isAjax()) {
return;
}
$return_path = 'admin/themes/' . $theme;
@@ -285,7 +287,7 @@ function admin_content(App $a)
$o = admin_page_summary($a);
}
- if (is_ajax()) {
+ if ($a->isAjax()) {
echo $o;
killme();
return '';
@@ -474,8 +476,8 @@ function admin_page_contactblock(App $a)
$total = DBA::count('contact', $condition);
- $a->set_pager_total($total);
- $a->set_pager_itemspage(30);
+ $a->setPagerTotal($total);
+ $a->setPagerItemsPage(30);
$statement = DBA::select('contact', [], $condition, ['limit' => [$a->pager['start'], $a->pager['itemspage']]]);
@@ -746,25 +748,19 @@ function admin_page_federation(App $a)
function admin_page_queue(App $a)
{
// get content from the queue table
- /*
- //todo: convert q() to DBA::Select()
- $statement = DBA::Select('`queue` AS `q`, `contact` AS `c`',
- [ '`c`.`name`', '`c`.`nurl`', '`q`.`id`', '`q`.`network`', "CONVERT_TZ(`q`.`created`, 'UTC' " . Config::get('system', 'default_timezone') . ') as created', "CONVERT_TZ(`q`.`last`, 'UTC', " . Config::get('system', 'default_timezone') . "') as last" ],
- '`c`.`id`' => '`q`.`cid`',
- ['order'=> ['`q`.`cid`, `q`.`created`']]
- );
- $r = DBA::toArray($statement);
- */
-
- $r = q("SELECT `c`.`name`, `c`.`nurl`, `q`.`id`, `q`.`network`, `q`.`created`, `q`.`last`
- FROM `queue` AS `q`, `contact` AS `c`
- WHERE `c`.`id` = `q`.`cid`
- ORDER BY `q`.`cid`, `q`.`created`;");
-
- foreach ($r as $key => $rr) {
- $r[$key]['created'] = DateTimeFormat::local($rr['created']);
- $r[$key]['last'] = DateTimeFormat::local($rr['last']);
+ $entries = DBA::p("SELECT `contact`.`name`, `contact`.`nurl`,
+ `queue`.`id`, `queue`.`network`, `queue`.`created`, `queue`.`last`
+ FROM `queue` INNER JOIN `contact` ON `contact`.`id` = `queue`.`cid`
+ ORDER BY `queue`.`cid`, `queue`.`created`");
+
+ $r = [];
+ while ($entry = DBA::fetch($entries)) {
+ $entry['created'] = DateTimeFormat::local($entry['created']);
+ $entry['last'] = DateTimeFormat::local($entry['last']);
+ $r[] = $entry;
}
+ DBA::close($entries);
+
$t = get_markup_template('admin/queue.tpl');
return replace_macros($t, [
'$title' => L10n::t('Administration'),
@@ -795,14 +791,16 @@ function admin_page_queue(App $a)
function admin_page_workerqueue(App $a)
{
// get jobs from the workerqueue table
- $statement = DBA::select('workerqueue', ['id', 'parameter', 'created', 'priority'], ['done' => 0], ['order'=> ['priority']]);
- $r = DBA::toArray($statement);
+ $entries = DBA::select('workerqueue', ['id', 'parameter', 'created', 'priority'], ['done' => 0], ['order'=> ['priority']]);
- foreach ($r as $key => $rr) {
+ $r = [];
+ while ($entry = DBA::fetch($entries)) {
// fix GH-5469. ref: src/Core/Worker.php:217
- $r[$key]['parameter'] = Arrays::recursiveImplode(json_decode($rr['parameter'], true), ': ');
- $r[$key]['created'] = DateTimeFormat::local($rr['created']);
+ $entry['parameter'] = Arrays::recursiveImplode(json_decode($entry['parameter'], true), ': ');
+ $entry['created'] = DateTimeFormat::local($entry['created']);
+ $r[] = $entry;
}
+ DBA::close($entries);
$t = get_markup_template('admin/workerqueue.tpl');
return replace_macros($t, [
@@ -869,7 +867,15 @@ function admin_page_summary(App $a)
// Legacy config file warning
if (file_exists('.htconfig.php')) {
$showwarning = true;
- $warningtext[] = L10n::t('Friendica\'s configuration now is stored in config/local.ini.php, please copy config/local-sample.ini.php and move your config from .htconfig.php
. See the Config help page for help with the transition.', $a->get_baseurl() . '/help/Config');
+ $warningtext[] = L10n::t('Friendica\'s configuration now is stored in config/local.ini.php, please copy config/local-sample.ini.php and move your config from .htconfig.php
. See the Config help page for help with the transition.', $a->getBaseURL() . '/help/Config');
+ }
+
+ // Check server vitality
+ if (!admin_page_server_vital()) {
+ $showwarning = true;
+ $well_known = $a->getBaseURL() . '/.well-known/host-meta';
+ $warningtext[] = L10n::t('%s is not reachable on your system. This is a severe configuration issue that prevents server to server communication. See the installation page for help.',
+ $well_known, $well_known, $a->getBaseURL() . '/help/Install');
}
$r = q("SELECT `page-flags`, COUNT(`uid`) AS `count` FROM `user` GROUP BY `page-flags`");
@@ -890,8 +896,7 @@ function admin_page_summary(App $a)
logger('accounts: ' . print_r($accounts, true), LOGGER_DATA);
- $r = q("SELECT COUNT(`id`) AS `count` FROM `register`");
- $pending = $r[0]['count'];
+ $pending = Register::getPendingCount();
$r = q("SELECT COUNT(*) AS `total` FROM `queue` WHERE 1");
$queue = (($r) ? $r[0]['total'] : 0);
@@ -904,6 +909,15 @@ function admin_page_summary(App $a)
$queues = ['label' => L10n::t('Message queues'), 'queue' => $queue, 'workerq' => $workerqueue];
+ $r = q("SHOW variables LIKE 'max_allowed_packet'");
+ $max_allowed_packet = (($r) ? $r[0]['Value'] : 0);
+
+ $server_settings = ['label' => L10n::t('Server Settings'),
+ 'php' => ['upload_max_filesize' => ini_get('upload_max_filesize'),
+ 'post_max_size' => ini_get('post_max_size'),
+ 'memory_limit' => ini_get('memory_limit')],
+ 'mysql' => ['max_allowed_packet' => $max_allowed_packet]];
+
$t = get_markup_template('admin/summary.tpl');
return replace_macros($t, [
'$title' => L10n::t('Administration'),
@@ -918,6 +932,7 @@ function admin_page_summary(App $a)
'$codename' => FRIENDICA_CODENAME,
'$build' => Config::get('system', 'build'),
'$addons' => [L10n::t('Active addons'), $a->addons],
+ '$serversettings' => $server_settings,
'$showwarning' => $showwarning,
'$warningtext' => $warningtext
]);
@@ -997,7 +1012,7 @@ function admin_page_site_post(App $a)
// update config
Config::set('system', 'hostname', parse_url($new_url, PHP_URL_HOST));
Config::set('system', 'url', $new_url);
- $a->set_baseurl($new_url);
+ $a->setBaseURL($new_url);
// send relocate
$users = q("SELECT `uid` FROM `user` WHERE `account_removed` = 0 AND `account_expired` = 0");
@@ -1109,7 +1124,7 @@ function admin_page_site_post(App $a)
Worker::add(PRIORITY_LOW, 'Directory');
}
- if ($a->get_path() != "") {
+ if ($a->getURLPath() != "") {
$diaspora_enabled = false;
}
if ($ssl_policy != intval(Config::get('system', 'ssl_policy'))) {
@@ -1246,7 +1261,7 @@ function admin_page_site_post(App $a)
Config::set('system', 'dbclean-expire-unclaimed', $dbclean_unclaimed);
if ($itemcache != '') {
- $itemcache = App::realpath($itemcache);
+ $itemcache = App::getRealPath($itemcache);
}
Config::set('system', 'itemcache', $itemcache);
@@ -1254,13 +1269,13 @@ function admin_page_site_post(App $a)
Config::set('system', 'max_comments', $max_comments);
if ($temppath != '') {
- $temppath = App::realpath($temppath);
+ $temppath = App::getRealPath($temppath);
}
Config::set('system', 'temppath', $temppath);
if ($basepath != '') {
- $basepath = App::realpath($basepath);
+ $basepath = App::getRealPath($basepath);
}
Config::set('system', 'basepath', $basepath);
@@ -1404,9 +1419,9 @@ function admin_page_site(App $a)
];
if (empty(Config::get('config', 'hostname'))) {
- Config::set('config', 'hostname', $a->get_hostname());
+ Config::set('config', 'hostname', $a->getHostName());
}
- $diaspora_able = ($a->get_path() == "");
+ $diaspora_able = ($a->getURLPath() == "");
$optimize_max_tablesize = Config::get('system', 'optimize_max_tablesize', -1);
@@ -1473,7 +1488,7 @@ function admin_page_site(App $a)
'$community_page_style' => ['community_page_style', L10n::t("Community pages for visitors"), Config::get('system','community_page_style'), 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', L10n::t("Posts per user on community page"), Config::get('system','max_author_posts_community_page'), L10n::t("The maximum number of posts per user on the community page. \x28Not valid for 'Global Community'\x29")],
'$ostatus_disabled' => ['ostatus_disabled', L10n::t("Enable OStatus support"), !Config::get('system','ostatus_disabled'), L10n::t("Provide built-in OStatus \x28StatusNet, GNU Social etc.\x29 compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed.")],
- '$ostatus_full_threads' => ['ostatus_full_threads', L10n::t("Only import OStatus threads from our contacts"), Config::get('system','ostatus_full_threads'), L10n::t("Normally we import every content from our OStatus contacts. With this option we only store threads that are started by a contact that is known on our system.")],
+ '$ostatus_full_threads' => ['ostatus_full_threads', L10n::t("Only import OStatus/ActivityPub threads from our contacts"), Config::get('system','ostatus_full_threads'), L10n::t("Normally we import every content from our OStatus and ActivityPub contacts. With this option we only store threads that are started by a contact that is known on our system.")],
'$ostatus_not_able' => L10n::t("OStatus support can only be enabled if threading is enabled."),
'$diaspora_able' => $diaspora_able,
'$diaspora_not_able' => L10n::t("Diaspora support can't be enabled because Friendica was installed into a sub directory."),
@@ -1693,11 +1708,14 @@ function admin_page_users_post(App $a)
$body = sprintf($body, System::baseUrl(), $user['email'], $result['password'], Config::get('config', 'sitename'));
notification([
- 'type' => SYSTEM_EMAIL,
+ 'type' => SYSTEM_EMAIL,
+ 'language' => $user['language'],
+ 'to_name' => $user['username'],
'to_email' => $user['email'],
- 'subject' => L10n::t('Registration details for %s', Config::get('config', 'sitename')),
+ 'uid' => $user['uid'],
+ 'subject' => L10n::t('Registration details for %s', Config::get('config', 'sitename')),
'preamble' => $preamble,
- 'body' => $body]);
+ 'body' => $body]);
}
if (x($_POST, 'page_users_block')) {
@@ -1774,17 +1792,13 @@ function admin_page_users(App $a)
}
/* get pending */
- $pending = q("SELECT `register`.*, `contact`.`name`, `user`.`email`
- FROM `register`
- INNER JOIN `contact` ON `register`.`uid` = `contact`.`uid`
- INNER JOIN `user` ON `register`.`uid` = `user`.`uid`;");
-
+ $pending = Register::getPending();
/* get users */
$total = q("SELECT COUNT(*) AS `total` FROM `user` WHERE 1");
if (count($total)) {
- $a->set_pager_total($total[0]['total']);
- $a->set_pager_itemspage(100);
+ $a->setPagerTotal($total[0]['total']);
+ $a->setPagerItemsPage(100);
}
/* ordering */
@@ -1904,7 +1918,7 @@ function admin_page_users(App $a)
'$h_users' => L10n::t('Users'),
'$h_newuser' => L10n::t('New User'),
- '$th_deleted' => [L10n::t('Name'), L10n::t('Email'), L10n::t('Register date'), L10n::t('Last login'), L10n::t('Last item'), L10n::t('Deleted since')],
+ '$th_deleted' => [L10n::t('Name'), L10n::t('Email'), L10n::t('Register date'), L10n::t('Last login'), L10n::t('Last item'), L10n::t('Delete in')],
'$th_users' => $th_users,
'$order_users' => $order,
'$order_direction_users' => $order_direction,
@@ -2518,7 +2532,7 @@ function admin_page_features_post(App $a)
*/
function admin_page_features(App $a)
{
- if ((argc() > 1) && (argv(1) === 'features')) {
+ if (($a->argc > 1) && ($a->getArgumentValue(1) === 'features')) {
$arr = [];
$features = Feature::get(false);
@@ -2545,3 +2559,9 @@ function admin_page_features(App $a)
return $o;
}
}
+
+function admin_page_server_vital()
+{
+ // Fetch the host-meta to check if this really is a vital server
+ return Network::curl(System::baseUrl() . '/.well-known/host-meta')->isSuccess();
+}