<?php
/**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
use Friendica\App;
use Friendica\Core\Addon;
+use Friendica\Core\Config\Util\ConfigFileManager;
use Friendica\Core\Config\ValueObject\Cache;
-use Friendica\Core\Logger;
use Friendica\Core\Renderer;
use Friendica\Core\Update;
use Friendica\Database\DBA;
use Friendica\Database\DBStructure;
use Friendica\DI;
use Friendica\Core\Config\Factory\Config;
-use Friendica\Model\Register;
use Friendica\Module\BaseAdmin;
use Friendica\Network\HTTPClient\Client\HttpClientAccept;
use Friendica\Network\HTTPException\ServiceUnavailableException;
// Check if github.com/friendica/stable/VERSION is higher then
// the local version of Friendica. Check is opt-in, source may be stable or develop branch
if (DI::config()->get('system', 'check_new_version_url', 'none') != 'none') {
- $gitversion = DI::config()->get('system', 'git_friendica_version');
+ $gitversion = DI::keyValue()->get('git_friendica_version') ?? '';
+
if (version_compare(App::VERSION, $gitversion) < 0) {
$warningtext[] = DI::l10n()->t('There is a new version of Friendica available for download. Your current version is %1$s, upstream version is %2$s', App::VERSION, $gitversion);
}
$warningtext[] = DI::l10n()->t('The last update failed. Please run "php bin/console.php dbstructure update" from the command line and have a look at the errors that might appear. (Some of the errors are possibly inside the logfile.)');
}
- $last_worker_call = DI::config()->get('system', 'last_worker_execution', false);
+ if (empty(DI::config()->get('system', 'url'))) {
+ $warningtext[] = DI::l10n()->t('The system.url entry is missing. This is a low level setting and can lead to unexpected behavior. Please add a valid entry as soon as possible in the config file or per console command!');
+ }
+
+ $last_worker_call = DI::keyValue()->get('last_worker_execution');
if (!$last_worker_call) {
$warningtext[] = DI::l10n()->t('The worker was never executed. Please check your database structure!');
} elseif ((strtotime(DateTimeFormat::utcNow()) - strtotime($last_worker_call)) > 60 * 60) {
// Legacy config file warning
if (file_exists('.htconfig.php')) {
- $warningtext[] = DI::l10n()->t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>.htconfig.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', DI::baseUrl()->get() . '/help/Config');
+ $warningtext[] = DI::l10n()->t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>.htconfig.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', DI::baseUrl() . '/help/Config');
}
if (file_exists('config/local.ini.php')) {
- $warningtext[] = DI::l10n()->t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>config/local.ini.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', DI::baseUrl()->get() . '/help/Config');
+ $warningtext[] = DI::l10n()->t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>config/local.ini.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', DI::baseUrl() . '/help/Config');
}
// Check server vitality
if (!self::checkSelfHostMeta()) {
- $well_known = DI::baseUrl()->get() . Probe::HOST_META;
+ $well_known = DI::baseUrl() . Probe::HOST_META;
$warningtext[] = DI::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, DI::baseUrl()->get() . '/help/Install');
+ $well_known, $well_known, DI::baseUrl() . '/help/Install');
}
// Check logfile permission
- if (DI::config()->get('system', 'debugging')) {
- $file = DI::config()->get('system', 'logfile');
-
- $fileSystem = DI::fs();
-
- try {
- $stream = $fileSystem->createStream($file);
-
- if (!isset($stream)) {
- throw new ServiceUnavailableException('Stream is null.');
- }
-
- } catch (\Throwable $exception) {
- $warningtext[] = DI::l10n()->t('The logfile \'%s\' is not usable. No logging possible (error: \'%s\')', $file, $exception->getMessage());
- }
-
- $file = DI::config()->get('system', 'dlogfile');
-
- try {
- if (!empty($file)) {
- $stream = $fileSystem->createStream($file);
-
- if (!isset($stream)) {
- throw new ServiceUnavailableException('Stream is null.');
- }
- }
- } catch (\Throwable $exception) {
- $warningtext[] = DI::l10n()->t('The debug logfile \'%s\' is not usable. No logging possible (error: \'%s\')', $file, $exception->getMessage());
- }
+ if (($return = DI::logCheck()->checkLogfile()) !== null) {
+ $warningtext[] = $return;
+ }
+ if (($return = DI::logCheck()->checkDebugLogfile()) !== null) {
+ $warningtext[] = $return;
}
// check legacy basepath settings
- $configLoader = (new Config())->createConfigFileLoader($a->getBasePath(), $_SERVER);
+ $configLoader = (new Config())->createConfigFileManager($a->getBasePath(), $_SERVER);
$configCache = new Cache();
$configLoader->setupCache($configCache);
$confBasepath = $configCache->get('system', 'basepath');
}
}
- $accounts = [
- [DI::l10n()->t('Normal Account'), 0],
- [DI::l10n()->t('Automatic Follower Account'), 0],
- [DI::l10n()->t('Public Forum Account'), 0],
- [DI::l10n()->t('Automatic Friend Account'), 0],
- [DI::l10n()->t('Blog Account'), 0],
- [DI::l10n()->t('Private Forum Account'), 0]
- ];
-
- $users = 0;
- $pageFlagsCountStmt = DBA::p('SELECT `page-flags`, COUNT(`uid`) AS `count` FROM `user` WHERE `uid` != ? GROUP BY `page-flags`', 0);
- while ($pageFlagsCount = DBA::fetch($pageFlagsCountStmt)) {
- $accounts[$pageFlagsCount['page-flags']][1] = $pageFlagsCount['count'];
- $users += $pageFlagsCount['count'];
- }
- DBA::close($pageFlagsCountStmt);
-
- Logger::debug('accounts', ['accounts' => $accounts]);
-
- $pending = Register::getPendingCount();
-
$deferred = DBA::count('workerqueue', ['NOT `done` AND `retrial` > ?', 0]);
$workerqueue = DBA::count('workerqueue', ['NOT `done` AND `retrial` = ?', 0]);
$server_settings = [
'label' => DI::l10n()->t('Server Settings'),
'php' => [
+ 'version' => phpversion(),
+ 'php.ini' => php_ini_loaded_file(),
'upload_max_filesize' => ini_get('upload_max_filesize'),
'post_max_size' => ini_get('post_max_size'),
'memory_limit' => ini_get('memory_limit')
'$title' => DI::l10n()->t('Administration'),
'$page' => DI::l10n()->t('Summary'),
'$queues' => $queues,
- '$users' => [DI::l10n()->t('Registered users'), $users],
- '$accounts' => $accounts,
- '$pending' => [DI::l10n()->t('Pending registrations'), $pending],
'$version' => [DI::l10n()->t('Version'), App::VERSION],
'$platform' => App::PLATFORM,
'$codename' => App::CODENAME,
private static function checkSelfHostMeta()
{
// Fetch the host-meta to check if this really is a vital server
- return DI::httpClient()->get(DI::baseUrl()->get() . Probe::HOST_META, HttpClientAccept::XRD_XML)->isSuccess();
+ return DI::httpClient()->get(DI::baseUrl() . Probe::HOST_META, HttpClientAccept::XRD_XML)->isSuccess();
}
}