use Friendica\Model\User;
use Friendica\Module\Login;
use Friendica\Module\Tos;
+use Friendica\Util\Arrays;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Temporal;
+use Friendica\Util\Network;
require_once 'include/enotify.php';
require_once 'include/text.php';
function admin_page_queue(App $a)
{
// get content from the queue table
- $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`;");
+ $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, [
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']]);
- for($i = 0; $i < count($r); $i++) {
- $r[$i]['parameter'] = implode(json_decode($r[$i]['parameter']), ': ');
+ $r = [];
+ while ($entry = DBA::fetch($entries)) {
+ // fix GH-5469. ref: src/Core/Worker.php:217
+ $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, [
$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 <code>.htconfig.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', $a->get_baseurl() . '/help/Config');
}
+ // Check server vitality
+ if (!admin_page_server_vital()) {
+ $showwarning = true;
+ $well_known = $a->get_baseurl() . '/.well-known/host-meta';
+ $warningtext[] = L10n::t('<a href="%s">%s</a> is not reachable on your system. This is a severe configuration issue that prevents server to server communication. See <a href="%s">the installation page</a> for help.',
+ $well_known, $well_known, $a->get_baseurl() . '/help/Install');
+ }
+
$r = q("SELECT `page-flags`, COUNT(`uid`) AS `count` FROM `user` GROUP BY `page-flags`");
$accounts = [
[L10n::t('Normal Account'), 0],
$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'),
'$codename' => FRIENDICA_CODENAME,
'$build' => Config::get('system', 'build'),
'$addons' => [L10n::t('Active addons'), $a->addons],
+ '$serversettings' => $server_settings,
'$showwarning' => $showwarning,
'$warningtext' => $warningtext
]);
'$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."),
$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')) {
$adminlist = explode(",", str_replace(" ", "", Config::get('config', 'admin_email')));
$_setup_users = function ($e) use ($adminlist) {
$page_types = [
- PAGE_NORMAL => L10n::t('Normal Account Page'),
- PAGE_SOAPBOX => L10n::t('Soapbox Page'),
- PAGE_COMMUNITY => L10n::t('Public Forum'),
- PAGE_FREELOVE => L10n::t('Automatic Friend Page'),
- PAGE_PRVGROUP => L10n::t('Private Forum')
+ Contact::PAGE_NORMAL => L10n::t('Normal Account Page'),
+ Contact::PAGE_SOAPBOX => L10n::t('Soapbox Page'),
+ Contact::PAGE_COMMUNITY => L10n::t('Public Forum'),
+ Contact::PAGE_FREELOVE => L10n::t('Automatic Friend Page'),
+ Contact::PAGE_PRVGROUP => L10n::t('Private Forum')
];
$account_types = [
- ACCOUNT_TYPE_PERSON => L10n::t('Personal Page'),
- ACCOUNT_TYPE_ORGANISATION => L10n::t('Organisation Page'),
- ACCOUNT_TYPE_NEWS => L10n::t('News Page'),
- ACCOUNT_TYPE_COMMUNITY => L10n::t('Community Forum')
+ Contact::ACCOUNT_TYPE_PERSON => L10n::t('Personal Page'),
+ Contact::ACCOUNT_TYPE_ORGANISATION => L10n::t('Organisation Page'),
+ Contact::ACCOUNT_TYPE_NEWS => L10n::t('News Page'),
+ Contact::ACCOUNT_TYPE_COMMUNITY => L10n::t('Community Forum')
];
$e['page_flags_raw'] = $e['page-flags'];
'$deny' => L10n::t('Deny'),
'$delete' => L10n::t('Delete'),
'$block' => L10n::t('Block'),
+ '$blocked' => L10n::t('User blocked'),
'$unblock' => L10n::t('Unblock'),
'$siteadmin' => L10n::t('Site admin'),
'$accountexpired' => L10n::t('Account expired'),
return $o;
}
}
+
+function admin_page_server_vital()
+{
+ // Fetch the host-meta to check if this really is a vital server
+ $serverret = Network::curl(System::baseUrl() . '/.well-known/host-meta');
+ return $serverret["success"];
+}