public function buildForHost($host, $addToCache = true)
{
$host = strtolower($host);
if (substr($host, 0, 4) == 'www.') {
$host = substr($host, 4);
}
// is merged version already cached?
$cachedSiteConfig = $this->getCachedVersion($host . '.merged');
if (false !== $cachedSiteConfig) {
$this->logger->log('debug', 'Returning cached and merged site config for {host}', array('host' => $host));
return $cachedSiteConfig;
}
// let's build it
$config = $this->loadSiteConfig($host);
if ($addToCache && false !== $config && false === $this->getCachedVersion($host)) {
$this->addToCache($host, $config);
}
// if no match, use defaults
if (false === $config) {
$config = $this->create();
}
// load global config?
$configGlobal = $this->loadSiteConfig('global', true);
if ($config->autodetect_on_failure() && false !== $configGlobal) {
$this->logger->log('debug', 'Appending site config settings from global.txt');
$this->mergeConfig($config, $configGlobal);
if ($addToCache && false === $this->getCachedVersion('global')) {
$this->addToCache('global', $configGlobal);
}
}
// store copy of merged config
if ($addToCache) {
$config->cache_key = null;
$this->addToCache($host . '.merged', $config);
}
return $config;
}