X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FAdmin%2FSummary.php;h=c232b5be5a3a51703c1f1bec5d3c055ee81ee2b1;hb=1792046a4f270f15d904d591c1e9eb0444ff2349;hp=d0bb4347a17ae016a6596e84b1112858bd941893;hpb=1de3960e267a8d298348fbca18cf1be1f6a20f7a;p=friendica.git
diff --git a/src/Module/Admin/Summary.php b/src/Module/Admin/Summary.php
index d0bb4347a1..c232b5be5a 100644
--- a/src/Module/Admin/Summary.php
+++ b/src/Module/Admin/Summary.php
@@ -1,137 +1,194 @@
.
+ *
+ */
namespace Friendica\Module\Admin;
use Friendica\Core\Addon;
-use Friendica\Core\Config;
-use Friendica\Core\L10n;
+use Friendica\Core\Config\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\Model\Register;
-use Friendica\Module\BaseAdminModule;
+use Friendica\Module\BaseAdmin;
+use Friendica\Network\HTTPException\InternalServerErrorException;
use Friendica\Util\ConfigFileLoader;
use Friendica\Util\DateTimeFormat;
-use Friendica\Util\Network;
-class Summary extends BaseAdminModule
+class Summary extends BaseAdmin
{
- 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 = [];
+
+ $templateEngine = Renderer::getTemplateEngine();
+ $errors = [];
+ $templateEngine->testInstall($errors);
+ foreach ($errors as $error) {
+ $warningtext[] = DI::l10n()->t('Template engine (%s) error: %s', $templateEngine::$name, $error);
+ }
+
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 here for a guide that may be helpful converting the table engines. You may also use the command php bin/console.php dbstructure toinnodb of your Friendica installation for an automatic conversion.
', 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html');
+ $warningtext[] = DI::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 here for a guide that may be helpful converting the table engines. You may also use the command php bin/console.php dbstructure toinnodb of your Friendica installation for an automatic conversion.
', 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html');
+ }
+
+ // are there InnoDB tables in Antelope in the DB? If so, trigger a warning message
+ if (DBA::count(['information_schema' => 'tables'], ['ENGINE' => 'InnoDB', 'ROW_FORMAT' => ['COMPACT', 'REDUNDANT'], 'table_schema' => DBA::databaseName()])) {
+ $warningtext[] = DI::l10n()->t('Your DB still runs with InnoDB tables in the Antelope file format. You should change the file format to Barracuda. Friendica is using features that are not provided by the Antelope format. See here for a guide that may be helpful converting the table engines. You may also use the command php bin/console.php dbstructure toinnodb of your Friendica installation for an automatic conversion.
', 'https://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html');
+ }
+
+ // Avoid the database error 1615 "Prepared statement needs to be re-prepared", see https://github.com/friendica/friendica/issues/8550
+ $table_definition_cache = DBA::getVariable('table_definition_cache');
+ $table_open_cache = DBA::getVariable('table_open_cache');
+ if (!empty($table_definition_cache) && !empty($table_open_cache)) {
+ $suggested_definition_cache = min(400 + round($table_open_cache / 2, 1), 2000);
+ if ($suggested_definition_cache > $table_definition_cache) {
+ $warningtext[] = DI::l10n()->t('Your table_definition_cache is too low (%d). This can lead to the database error "Prepared statement needs to be re-prepared". Please set it at least to %d (or -1 for autosizing). See here for more information.
', $table_definition_cache, $suggested_definition_cache, 'https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_table_definition_cache');
+ }
}
- // Check if github.com/friendica/master/VERSION is higher then
- // the local version of Friendica. Check is opt-in, source may be master or devel branch
- if (Config::get('system', 'check_new_version_url', 'none') != 'none') {
- $gitversion = Config::get('system', 'git_friendica_version');
+ // 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');
if (version_compare(FRIENDICA_VERSION, $gitversion) < 0) {
- $warningtext[] = L10n::t('There is a new version of Friendica available for download. Your current version is %1$s, upstream version is %2$s', FRIENDICA_VERSION, $gitversion);
+ $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', FRIENDICA_VERSION, $gitversion);
}
}
- if (Config::get('system', 'dbupdate', DBStructure::UPDATE_NOT_CHECKED) == DBStructure::UPDATE_NOT_CHECKED) {
- DBStructure::update($a->getBasePath(), false, true);
+ if (DI::config()->get('system', 'dbupdate', DBStructure::UPDATE_NOT_CHECKED) == DBStructure::UPDATE_NOT_CHECKED) {
+ DBStructure::performUpdate();
}
- if (Config::get('system', 'dbupdate') == DBStructure::UPDATE_FAILED) {
- $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.');
+ if (DI::config()->get('system', 'dbupdate') == DBStructure::UPDATE_FAILED) {
+ $warningtext[] = DI::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.');
}
- if (Config::get('system', 'update') == Update::FAILED) {
- $warningtext[] = 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.)');
+ if (DI::config()->get('system', 'update') == Update::FAILED) {
+ $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 = Config::get('system', 'last_worker_execution', false);
+ $last_worker_call = DI::config()->get('system', 'last_worker_execution', false);
if (!$last_worker_call) {
- $warningtext[] = L10n::t('The worker was never executed. Please check your database structure!');
+ $warningtext[] = DI::l10n()->t('The worker was never executed. Please check your database structure!');
} elseif ((strtotime(DateTimeFormat::utcNow()) - strtotime($last_worker_call)) > 60 * 60) {
- $warningtext[] = L10n::t('The last worker execution was on %s UTC. This is older than one hour. Please check your crontab settings.', $last_worker_call);
+ $warningtext[] = DI::l10n()->t('The last worker execution was on %s UTC. This is older than one hour. Please check your crontab settings.', $last_worker_call);
}
// 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 .htconfig.php
. See the Config help page for help with the transition.', $a->getBaseURL() . '/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 .htconfig.php
. See the Config help page 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 config/local.ini.php
. See the Config help page for help with the transition.', $a->getBaseURL() . '/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 config/local.ini.php
. See the Config help page for help with the transition.', DI::baseUrl()->get() . '/help/Config');
}
// Check server vitality
if (!self::checkSelfHostMeta()) {
- $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');
+ $well_known = DI::baseUrl()->get() . '/.well-known/host-meta';
+ $warningtext[] = DI::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, DI::baseUrl()->get() . '/help/Install');
}
// Check logfile permission
- if (Config::get('system', 'debugging')) {
- $stream = Config::get('system', 'logfile');
+ if (DI::config()->get('system', 'debugging')) {
+ $file = DI::config()->get('system', 'logfile');
+
+ $fileSystem = DI::fs();
- if (is_file($stream) &&
- !is_writeable($stream)) {
- $warningtext[] = L10n::t('The logfile \'%s\' is not writable. No logging possible', $stream);
+ try {
+ $stream = $fileSystem->createStream($file);
+
+ if (!isset($stream)) {
+ throw new InternalServerErrorException('Stream is null.');
+ }
+
+ } catch (\Throwable $exception) {
+ $warningtext[] = DI::l10n()->t('The logfile \'%s\' is not usable. No logging possible (error: \'%s\')', $file, $exception->getMessage());
}
- $stream = Config::get('system', 'dlogfile');
+ $file = DI::config()->get('system', 'dlogfile');
+
+ try {
+ if (!empty($file)) {
+ $stream = $fileSystem->createStream($file);
- if (is_file($stream) &&
- !is_writeable($stream)) {
- $warningtext[] = L10n::t('The logfile \'%s\' is not writable. No logging possible', $stream);
+ if (!isset($stream)) {
+ throw new InternalServerErrorException('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());
}
}
// check legacy basepath settings
- $configLoader = new ConfigFileLoader($a->getBasePath(), $a->getMode());
- $configCache = new Config\Cache\ConfigCache();
+ $configLoader = new ConfigFileLoader($a->getBasePath());
+ $configCache = new Cache();
$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.', [
+ if (is_dir($confBasepath) && DI::config()->set('system', 'basepath', $confBasepath)) {
+ DI::logger()->info('Friendica\'s system.basepath was updated successfully.', [
'from' => $currBasepath,
'to' => $confBasepath,
]);
- $warningtext[] = L10n::t('Friendica\'s system.basepath was updated from \'%s\' to \'%s\'. Please remove the system.basepath from your db to avoid differences.',
+ $warningtext[] = DI::l10n()->t('Friendica\'s system.basepath was updated from \'%s\' to \'%s\'. Please remove the system.basepath from your db to avoid differences.',
$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,
]);
- $warningtext[] = L10n::t('Friendica\'s current system.basepath \'%s\' is wrong and the config file \'%s\' isn\'t used.',
+ $warningtext[] = DI::l10n()->t('Friendica\'s current system.basepath \'%s\' is wrong and the config file \'%s\' isn\'t used.',
$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,
]);
- $warningtext[] = L10n::t('Friendica\'s current system.basepath \'%s\' is not equal to the config file \'%s\'. Please fix your configuration.',
+ $warningtext[] = DI::l10n()->t('Friendica\'s current system.basepath \'%s\' is not equal to the config file \'%s\'. Please fix your configuration.',
$currBasepath,
$confBasepath);
}
}
$accounts = [
- [L10n::t('Normal Account'), 0],
- [L10n::t('Automatic Follower Account'), 0],
- [L10n::t('Public Forum Account'), 0],
- [L10n::t('Automatic Friend Account'), 0],
- [L10n::t('Blog Account'), 0],
- [L10n::t('Private Forum Account'), 0]
+ [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;
@@ -142,7 +199,7 @@ class Summary extends BaseAdminModule
}
DBA::close($pageFlagsCountStmt);
- Logger::log('accounts: ' . print_r($accounts, true), Logger::DATA);
+ Logger::debug('accounts', ['accounts' => $accounts]);
$pending = Register::getPendingCount();
@@ -151,13 +208,13 @@ class Summary extends BaseAdminModule
$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'), 'deferred' => $deferred, 'workerq' => $workerqueue];
+ $queues = ['label' => DI::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;
$server_settings = [
- 'label' => L10n::t('Server Settings'),
+ 'label' => DI::l10n()->t('Server Settings'),
'php' => [
'upload_max_filesize' => ini_get('upload_max_filesize'),
'post_max_size' => ini_get('post_max_size'),
@@ -170,17 +227,17 @@ class Summary extends BaseAdminModule
$t = Renderer::getMarkupTemplate('admin/summary.tpl');
return Renderer::replaceMacros($t, [
- '$title' => L10n::t('Administration'),
- '$page' => L10n::t('Summary'),
+ '$title' => DI::l10n()->t('Administration'),
+ '$page' => DI::l10n()->t('Summary'),
'$queues' => $queues,
- '$users' => [L10n::t('Registered users'), $users],
+ '$users' => [DI::l10n()->t('Registered users'), $users],
'$accounts' => $accounts,
- '$pending' => [L10n::t('Pending registrations'), $pending],
- '$version' => [L10n::t('Version'), FRIENDICA_VERSION],
+ '$pending' => [DI::l10n()->t('Pending registrations'), $pending],
+ '$version' => [DI::l10n()->t('Version'), FRIENDICA_VERSION],
'$platform' => FRIENDICA_PLATFORM,
'$codename' => FRIENDICA_CODENAME,
- '$build' => Config::get('system', 'build'),
- '$addons' => [L10n::t('Active addons'), Addon::getEnabledList()],
+ '$build' => DI::config()->get('system', 'build'),
+ '$addons' => [DI::l10n()->t('Active addons'), Addon::getEnabledList()],
'$serversettings' => $server_settings,
'$warningtext' => $warningtext
]);
@@ -189,7 +246,7 @@ class Summary extends BaseAdminModule
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 DI::httpRequest()->get(DI::baseUrl()->get() . '/.well-known/host-meta')->isSuccess();
}
}