return $this->profiler;
}
+ /**
+ * Returns the Mode of the Application
+ *
+ * @return App\Mode The Application Mode
+ */
+ public function getMode()
+ {
+ return $this->mode;
+ }
+
/**
* Register a stylesheet file path to be included in the <head> tag of every page.
* Inclusion is done in App->initHead().
*
* @param string $basePath The basedir of the app
* @param Configuration $config The Configuration
+ * @param App\Mode $mode The mode of this Friendica app
* @param LoggerInterface $logger The current app logger
* @param Profiler $profiler The profiler of this application
* @param bool $isBackend Whether it is used for backend or frontend (Default true=backend)
*
* @throws Exception if the Basepath is not usable
*/
- public function __construct($basePath, Configuration $config, LoggerInterface $logger, Profiler $profiler, $isBackend = true)
+ public function __construct($basePath, Configuration $config, App\Mode $mode, LoggerInterface $logger, Profiler $profiler, $isBackend = true)
{
BaseObject::setApp($this);
$this->logger = $logger;
$this->config = $config;
$this->profiler = $profiler;
+ $this->mode = $mode;
$cfgBasePath = $this->config->get('system', 'basepath');
$this->basePath = !empty($cfgBasePath) ? $cfgBasePath : $basePath;
$this->profiler->reset();
- $this->mode = new App\Mode($this->basePath);
-
$this->reload();
set_time_limit(0);
Core\Renderer::registerTemplateEngine('Friendica\Render\FriendicaSmartyEngine');
}
- /**
- * Returns the Mode of the Application
- *
- * @return App\Mode The Application Mode
- *
- * @throws InternalServerErrorException when the mode isn't created
- */
- public function getMode()
- {
- if (empty($this->mode)) {
- throw new InternalServerErrorException('Mode of the Application is not defined');
- }
-
- return $this->mode;
- }
-
/**
* Reloads the whole app instance
*/
$this->config->get('rendertime', 'callstack', false));
Core\Hook::loadHooks();
+ $loader = new ConfigCacheLoader($this->basePath, $this->mode);
Core\Hook::callAll('load_config', $loader);
}
namespace Friendica\Core\Config\Cache;
+use Friendica\App;
use Friendica\Core\Addon;
/**
private $baseDir;
private $configDir;
- public function __construct($baseDir)
+ /**
+ * @var App\Mode
+ */
+ private $appMode;
+
+ public function __construct($baseDir, App\Mode $mode)
{
+ $this->appMode = $mode;
$this->baseDir = $baseDir;
$this->configDir = $baseDir . DIRECTORY_SEPARATOR . self::SUBDIRECTORY;
}
*
* First loads the default value for all the configuration keys, then the legacy configuration files, then the
* expected local.config.php
+ *
+ * @param IConfigCache The config cache to load to
+ *
+ * @throws \Exception
*/
- public function loadConfigFiles(ConfigCache $config)
+ public function loadConfigFiles(IConfigCache $config)
{
$config->load($this->loadCoreConfig('defaults'));
$config->load($this->loadCoreConfig('settings'));
$config->load($this->loadLegacyConfig('htconfig'), true);
$config->load($this->loadCoreConfig('local'), true);
+
+ // In case of install mode, add the found basepath (because there isn't a basepath set yet
+ if ($this->appMode->isInstall()) {
+ // Setting at least the basepath we know
+ $config->set('system', 'basepath', $this->baseDir);
+ }
}
/**
public static function setUp($channel, $directory, $isBackend = true)
{
$basePath = BasePath::create($directory, $_SERVER);
- $configLoader = new Cache\ConfigCacheLoader($basePath);
+ $mode = new App\Mode($basePath);
+ $configLoader = new Cache\ConfigCacheLoader($basePath, $mode);
$configCache = Factory\ConfigFactory::createCache($configLoader);
$profiler = Factory\ProfilerFactory::create($configCache);
Factory\DBFactory::init($basePath, $configCache, $profiler, $_SERVER);
// needed to call PConfig::init()
Factory\ConfigFactory::createPConfig($configCache);
$logger = Factory\LoggerFactory::create($channel, $config, $profiler);
- Factory\LoggerFactory::createDev($channel, $config);
+ Factory\LoggerFactory::createDev($channel, $config, $profiler);
- return new App($basePath, $config, $logger, $profiler, $isBackend);
+ return new App($basePath, $config, $mode, $logger, $profiler, $isBackend);
}
}
namespace Friendica\Test;
+use Friendica\App;
use Friendica\Core\Config\Cache;
use Friendica\Database\DBA;
use Friendica\Factory;
}
$basePath = BasePath::create(dirname(__DIR__));
- $configLoader = new Cache\ConfigCacheLoader($basePath);
+ $mode = new App\Mode($basePath);
+ $configLoader = new Cache\ConfigCacheLoader($basePath, $mode);
$config = Factory\ConfigFactory::createCache($configLoader);
$profiler = \Mockery::mock(Profiler::class);
public function setUp()
{
$basePath = BasePath::create(dirname(__DIR__) . '/../');
- $configLoader = new Cache\ConfigCacheLoader($basePath);
+ $mode = new App\Mode($basePath);
+ $configLoader = new Cache\ConfigCacheLoader($basePath, $mode);
$configCache = Factory\ConfigFactory::createCache($configLoader);
$profiler = Factory\ProfilerFactory::create($configCache);
Factory\DBFactory::init($basePath, $configCache, $profiler, $_SERVER);
$config = Factory\ConfigFactory::createConfig($configCache);
Factory\ConfigFactory::createPConfig($configCache);
$logger = Factory\LoggerFactory::create('test', $config, $profiler);
- $this->app = new App($basePath, $config, $logger, $profiler, false);
+ $this->app = new App($basePath, $config, $mode, $logger, $profiler, false);
parent::setUp();
public function setUp()
{
$basePath = BasePath::create(dirname(__DIR__) . '/../../');
- $configLoader = new Cache\ConfigCacheLoader($basePath);
+ $mode = new App\Mode($basePath);
+ $configLoader = new Cache\ConfigCacheLoader($basePath, $mode);
$configCache = Factory\ConfigFactory::createCache($configLoader);
$profiler = Factory\ProfilerFactory::create($configCache);
Factory\DBFactory::init($basePath, $configCache, $profiler, $_SERVER);
$config = Factory\ConfigFactory::createConfig($configCache);
Factory\ConfigFactory::createPConfig($configCache);
$logger = Factory\LoggerFactory::create('test', $config, $profiler);
- $this->app = new App($basePath, $config, $logger, $profiler, false);
+ $this->app = new App($basePath, $config, $mode, $logger, $profiler, false);
parent::setUp();
public function setUp()
{
$basePath = BasePath::create(dirname(__DIR__) . '/../../');
- $configLoader = new Cache\ConfigCacheLoader($basePath);
+ $mode = new App\Mode($basePath);
+ $configLoader = new Cache\ConfigCacheLoader($basePath, $mode);
$configCache = Factory\ConfigFactory::createCache($configLoader);
$profiler = Factory\ProfilerFactory::create($configCache);
Factory\DBFactory::init($basePath, $configCache, $profiler, $_SERVER);
$config = Factory\ConfigFactory::createConfig($configCache);
Factory\ConfigFactory::createPConfig($configCache);
$logger = Factory\LoggerFactory::create('test', $config, $profiler);
- $this->app = new App($basePath, $config, $logger, $profiler, false);
+ $this->app = new App($basePath, $config, $mode, $logger, $profiler, false);
parent::setUp();
}