use Friendica\Core\Update;
use Friendica\Database\DBA;
use Friendica\Database\DBStructure;
+use Friendica\DI;
use Friendica\Model\Register;
use Friendica\Module\BaseAdminModule;
-use Friendica\Util\Config\ConfigFileLoader;
+use Friendica\Network\HTTPException\InternalServerErrorException;
+use Friendica\Util\ConfigFileLoader;
use Friendica\Util\DateTimeFormat;
+use Friendica\Util\FileSystem;
use Friendica\Util\Network;
class Summary extends BaseAdminModule
{
- public static function content()
+ public static function content(array $parameters = [])
{
- parent::content();
+ parent::content($parameters);
- $a = self::getApp();
+ $a = DI::app();
// are there MyISAM tables in the DB? If so, trigger a warning message
$warningtext = [];
- if (DBA::count('`information_schema`.`tables`', ['engine' => 'myisam', 'table_schema' => DBA::databaseName()])) {
+ if (DBA::count(['information_schema' => 'tables'], ['engine' => 'myisam', 'table_schema' => DBA::databaseName()])) {
$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 <a href="%s">here</a> for a guide that may be helpful converting the table engines. You may also use the command <tt>php bin/console.php dbstructure toinnodb</tt> of your Friendica installation for an automatic conversion.<br />', 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html');
}
// Legacy config file warning
if (file_exists('.htconfig.php')) {
- $warningtext[] = 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.', $a->getBaseURL() . '/help/Config');
+ $warningtext[] = 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');
}
if (file_exists('config/local.ini.php')) {
- $warningtext[] = 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.', $a->getBaseURL() . '/help/Config');
+ $warningtext[] = 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');
}
// Check server vitality
if (!self::checkSelfHostMeta()) {
- $well_known = $a->getBaseURL() . '/.well-known/host-meta';
+ $well_known = DI::baseUrl()->get() . '/.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->getBaseURL() . '/help/Install');
+ $well_known, $well_known, DI::baseUrl()->get() . '/help/Install');
+ }
+
+ // Check logfile permission
+ if (Config::get('system', 'debugging')) {
+ $file = Config::get('system', 'logfile');
+
+ $fileSystem = DI::fs();
+
+ try {
+ $stream = $fileSystem->createStream($file);
+
+ if (!isset($stream)) {
+ throw new InternalServerErrorException('Stream is null.');
+ }
+
+ } catch (\Throwable $exception) {
+ $warningtext[] = L10n::t('The logfile \'%s\' is not usable. No logging possible (error: \'%s\')', $file, $exception->getMessage());
+ }
+
+ $file = Config::get('system', 'dlogfile');
+
+ try {
+ if (!empty($file)) {
+ $stream = $fileSystem->createStream($file);
+
+ if (!isset($stream)) {
+ throw new InternalServerErrorException('Stream is null.');
+ }
+ }
+
+ } catch (\Throwable $exception) {
+ $warningtext[] = L10n::t('The debug logfile \'%s\' is not usable. No logging possible (error: \'%s\')', $file, $exception->getMessage());
+ }
}
// check legacy basepath settings
- $configLoader = new ConfigFileLoader($a->getBasePath(), $a->getMode());
+ $configLoader = new ConfigFileLoader($a->getBasePath());
$configCache = new Config\Cache\ConfigCache();
$configLoader->setupCache($configCache);
$confBasepath = $configCache->get('system', 'basepath');
- $currBasepath = $a->getConfig()->get('system', 'basepath');
+ $currBasepath = DI::config()->get('system', 'basepath');
if ($confBasepath !== $currBasepath || !is_dir($currBasepath)) {
if (is_dir($confBasepath) && Config::set('system', 'basepath', $confBasepath)) {
- $a->getLogger()->info('Friendica\'s system.basepath was updated successfully.', [
+ DI::logger()->info('Friendica\'s system.basepath was updated successfully.', [
'from' => $currBasepath,
'to' => $confBasepath,
]);
$currBasepath,
$confBasepath);
} elseif (!is_dir($currBasepath)) {
- $a->getLogger()->alert('Friendica\'s system.basepath is wrong.', [
+ DI::logger()->alert('Friendica\'s system.basepath is wrong.', [
'from' => $currBasepath,
'to' => $confBasepath,
]);
$currBasepath,
$confBasepath);
} else {
- $a->getLogger()->alert('Friendica\'s system.basepath is wrong.', [
+ DI::logger()->alert('Friendica\'s system.basepath is wrong.', [
'from' => $currBasepath,
'to' => $confBasepath,
]);
$pending = Register::getPendingCount();
- $queue = DBA::count('queue', []);
-
- $deferred = DBA::count('workerqueue', ['`executed` <= ? AND NOT `done` AND `next_try` > ?',
- DBA::NULL_DATETIME, DateTimeFormat::utcNow()]);
+ $deferred = DBA::count('workerqueue', ['NOT `done` AND `retrial` > ?', 0]);
- $workerqueue = DBA::count('workerqueue', ['`executed` <= ? AND NOT `done` AND `next_try` < ?',
- DBA::NULL_DATETIME, DateTimeFormat::utcNow()]);
+ $workerqueue = DBA::count('workerqueue', ['NOT `done` AND `retrial` = ?', 0]);
// We can do better, but this is a quick queue status
- $queues = ['label' => L10n::t('Message queues'), 'queue' => $queue, 'deferred' => $deferred, 'workerq' => $workerqueue];
+ $queues = ['label' => L10n::t('Message queues'), 'deferred' => $deferred, 'workerq' => $workerqueue];
$variables = DBA::toArray(DBA::p('SHOW variables LIKE "max_allowed_packet"'));
$max_allowed_packet = $variables ? $variables[0]['Value'] : 0;
private static function checkSelfHostMeta()
{
// Fetch the host-meta to check if this really is a vital server
- return Network::curl(self::getApp()->getBaseURL() . '/.well-known/host-meta')->isSuccess();
+ return Network::curl(DI::baseUrl()->get() . '/.well-known/host-meta')->isSuccess();
}
}