function create_compiled_config($cache_filename) { /** * defines $keys with descriptors * @var array $keys config keys */ include W3TC_LIB_W3_DIR . '/ConfigKeys.php'; $compiled_config = new W3_ConfigData($keys); $compiled_config->set_defaults(); // collect config data from master config if (!$compiled_config->read($this->_get_config_filename(true))) { // try to read production master config $success = false; if ($this->_preview) { $success = $compiled_config->read($this->_get_config_filename(true, false)); } // try to read legacy master config if (!$success) { $data = $this->get_imported_legacy_config_keys(true); if (!is_null($data)) { foreach ($data as $key => $value) { $compiled_config->set($key, $value); } } } } $this->_put_instance_value_in_config($compiled_config); // append data from blog config $config_admin = w3_instance('W3_ConfigAdmin'); $data = W3_ConfigData::get_array_from_file($this->_get_config_filename()); if (is_null($data)) { $data = $this->get_imported_legacy_config_keys(); } if (!is_null($data)) { foreach ($data as $key => $value) { if (!$this->_key_sealed($key, $compiled_config->data, $config_admin, $value)) { $compiled_config->set($key, $value); } } } // save the value for 'home' in the config $this->_put_home_value_in_config($compiled_config->data); // save the bad_behavior path in config if plugin exists $this->_put_bad_behavior_in_config($compiled_config->data); $this->_post_process_values($compiled_config); // write cache try { $compiled_config->write($cache_filename); } catch (Exception $ex) { // dont care here about file permissions } $this->flush_apc($cache_filename, true); return $compiled_config->data; }