Example #1
0
 /**
  * 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);
 }
Example #3
0
 /**
  * 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();
 }
Example #4
0
 /**
  * @return ConfigCompiler
  */
 protected function createCompiler()
 {
     $compiler = new ConfigCompiler();
     $compiler->addExtension('php', new PhpExtension())->addExtension('constants', new ConstantsExtension())->addExtension('nette', new NetteExtension());
     return $compiler;
 }
Example #5
0
 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));
         }
     }
 }