]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Admin/Summary.php
Remove deprecated App::query_string - replace with DI::args()->getQueryString()
[friendica.git] / src / Module / Admin / Summary.php
index a78a6b8d7c033d890a93157f0229884a1f704c0d..6f304082af6d7d355056e8f4950c87927729a329 100644 (file)
@@ -10,22 +10,26 @@ 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\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');
                }
 
@@ -59,18 +63,85 @@ class Summary extends BaseAdminModule
 
                // 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());
+               $configCache = new Config\Cache\ConfigCache();
+               $configLoader->setupCache($configCache);
+               $confBasepath = $configCache->get('system', 'basepath');
+               $currBasepath = DI::config()->get('system', 'basepath');
+               if ($confBasepath !== $currBasepath || !is_dir($currBasepath)) {
+                       if (is_dir($confBasepath) && 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.',
+                                       $currBasepath,
+                                       $confBasepath);
+                       } elseif (!is_dir($currBasepath)) {
+                               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.',
+                                       $currBasepath,
+                                       $confBasepath);
+                       } else {
+                               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.',
+                                       $currBasepath,
+                                       $confBasepath);
+                       }
                }
 
                $accounts = [
@@ -94,16 +165,12 @@ class Summary extends BaseAdminModule
 
                $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;
@@ -141,7 +208,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 Network::curl(DI::baseUrl()->get() . '/.well-known/host-meta')->isSuccess();
        }
 
 }