/** * Reads configuration from file. * @param string file name * @return array */ public function loadFromFile($file) { $loader = new ConfigLoader(); $res = $loader->load($file); $container = $this->compiler->getContainerBuilder(); foreach ($loader->getDependencies() as $file) { $container->addDependency($file); } return $res; }
public function save() { $data = array('version' => $this->_data['version']); if ($this->is_master()) { foreach ($this->_data as $key => $value) { $data[$key] = $this->_data[$key]; } } else { // write only overwrited keys $master = new ConfigCompiler(0, $this->_preview); $master->load(); foreach ($this->_data as $key => $value) { if (!ConfigCompiler::child_key_sealed($key, $master->_data, $this->_data)) { $data[$key] = $this->_data[$key]; } } } $filename = Config::util_config_filename($this->_blog_id, $this->_preview); if (defined('JSON_PRETTY_PRINT')) { $config = json_encode($data, JSON_PRETTY_PRINT); } else { // for older php versions $config = json_encode($data); } Util_File::file_put_contents_atomic($filename, $config); }
/** * Slower version of loader, used when configs belong to older w3tc version */ private function load_full() { $c = new ConfigCompiler($this->_blog_id, $this->_preview); $c->load(); $this->_data = $c->get_data(); }
/** * @return ConfigCompiler */ protected function createCompiler() { $compiler = new ConfigCompiler(); $compiler->addExtension('php', new PhpExtension())->addExtension('constants', new ConstantsExtension())->addExtension('nette', new NetteExtension()); return $compiler; }
public function afterCompile(PhpClassType $class) { $initialize = $class->methods['initialize']; $container = $this->getContainerBuilder(); $config = $this->getConfig($this->defaults); // debugger foreach (array('email', 'editor', 'browser', 'strictMode', 'maxLen', 'maxDepth') as $key) { if (isset($config['debugger'][$key])) { $initialize->addBody('Debugger::$? = ?;', array($key, $config['debugger'][$key])); } } if (!$container->parameters['productionMode']) { if ($config['container']['debugger']) { $config['debugger']['bar'][] = 'ContainerPanel'; } foreach ((array) $config['debugger']['bar'] as $item) { $initialize->addBody($container->formatPhp('Debugger::$bar->addPanel(?);', ConfigCompiler::filterArguments(array(is_string($item) ? new DIStatement($item) : $item)))); } foreach ((array) $config['debugger']['blueScreen'] as $item) { $initialize->addBody($container->formatPhp('Debugger::$blueScreen->addPanel(?);', ConfigCompiler::filterArguments(array($item)))); } } if (!empty($container->parameters['tempDir'])) { $initialize->addBody($this->checkTempDir($container->expand('%tempDir%/cache'))); } foreach ((array) $config['forms']['messages'] as $name => $text) { $initialize->addBody('Rules::$defaultMessages[Form::?] = ?;', array($name, $text)); } if ($config['session']['autoStart'] === 'smart') { $initialize->addBody('$this->session->exists() && $this->session->start();'); } elseif ($config['session']['autoStart']) { $initialize->addBody('$this->session->start();'); } if (empty($config['xhtml'])) { $initialize->addBody('Html::$xhtml = ?;', array((bool) $config['xhtml'])); } if (isset($config['security']['frames']) && $config['security']['frames'] !== TRUE) { $frames = $config['security']['frames']; if ($frames === FALSE) { $frames = 'DENY'; } elseif (preg_match('#^https?:#', $frames)) { $frames = "ALLOW-FROM {$frames}"; } $initialize->addBody('header(?);', array("X-Frame-Options: {$frames}")); } foreach ($container->findByTag('run') as $name => $on) { if ($on) { $initialize->addBody('$this->getService(?);', array($name)); } } }