From 076370631ff6b981cc3809ea53ffb4690a408fb0 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 13 May 2019 19:30:03 +0200 Subject: [PATCH] Friendica-7112 - Missing basepath fix --- src/App.php | 3 ++- src/Module/Admin/Summary.php | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/App.php b/src/App.php index 41c50fda5d..2e357f8651 100644 --- a/src/App.php +++ b/src/App.php @@ -149,7 +149,8 @@ class App */ public function getBasePath() { - return $this->config->get('system', 'basepath'); + // Don't use the basepath of the config table for basepath (it should always be the config-file one) + return $this->config->getCache()->get('system', 'basepath'); } /** diff --git a/src/Module/Admin/Summary.php b/src/Module/Admin/Summary.php index a78a6b8d7c..901a4b081f 100644 --- a/src/Module/Admin/Summary.php +++ b/src/Module/Admin/Summary.php @@ -12,6 +12,7 @@ use Friendica\Database\DBA; use Friendica\Database\DBStructure; use Friendica\Model\Register; use Friendica\Module\BaseAdminModule; +use Friendica\Util\Config\ConfigFileLoader; use Friendica\Util\DateTimeFormat; use Friendica\Util\Network; @@ -73,6 +74,40 @@ class Summary extends BaseAdminModule $well_known, $well_known, $a->getBaseURL() . '/help/Install'); } + // check legacy basepath settings + $configLoader = new ConfigFileLoader($a->getBasePath(), $a->getMode()); + $configCache = new Config\Cache\ConfigCache(); + $configLoader->setupCache($configCache); + $confBasepath = $configCache->get('system', 'basepath'); + $currBasepath = $a->getConfig()->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.', [ + '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)) { + $a->getLogger()->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 { + $a->getLogger()->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 = [ [L10n::t('Normal Account'), 0], [L10n::t('Automatic Follower Account'), 0],