public function buildSiteConfig($url, $html = '', $add_to_cache = true) { // extract host name $host = @parse_url($url, PHP_URL_HOST); $host = strtolower($host); if (substr($host, 0, 4) == 'www.') { $host = substr($host, 4); } // is merged version already cached? if (SiteConfig::is_cached("{$host}.merged")) { $this->debug("Returning cached and merged site config for {$host}"); return SiteConfig::build("{$host}.merged"); } // let's build from site_config/custom/ and standard/ $config = SiteConfig::build($host); if ($add_to_cache && $config && !SiteConfig::is_cached("{$host}")) { SiteConfig::add_to_cache($host, $config); } // if no match, use defaults if (!$config) { $config = new SiteConfig(); } // load fingerprint config? if ($config->autodetect_on_failure()) { // check HTML for fingerprints if (!empty($this->fingerprints) && ($_fphost = $this->findHostUsingFingerprints($html))) { if ($config_fingerprint = SiteConfig::build($_fphost)) { $this->debug("Appending site config settings from {$_fphost} (fingerprint match)"); $config->append($config_fingerprint); if ($add_to_cache && !SiteConfig::is_cached($_fphost)) { //$config_fingerprint->cache_in_apc = true; SiteConfig::add_to_cache($_fphost, $config_fingerprint); } } } } // load global config? if ($config->autodetect_on_failure()) { if ($config_global = SiteConfig::build('global', true)) { $this->debug('Appending site config settings from global.txt'); $config->append($config_global); if ($add_to_cache && !SiteConfig::is_cached('global')) { //$config_global->cache_in_apc = true; SiteConfig::add_to_cache('global', $config_global); } } } // store copy of merged config if ($add_to_cache) { // do not store in APC if wildcard match $use_apc = $host == $config->cache_key; $config->cache_key = null; SiteConfig::add_to_cache("{$host}.merged", $config, $use_apc); } return $config; }