/** * Reads configuration from file. * @param string file name * @return array */ public function loadFromFile($file) { $loader = new NConfigLoader; $res = $loader->load($file); $container = $this->compiler->getContainerBuilder(); foreach ($loader->getDependencies() as $file) { $container->addDependency($file); } return $res; }
public function afterCompile(NPhpClassType $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('NDebugger::$? = ?;', array($key, $config['debugger'][$key])); } } if (!$container->parameters['productionMode']) { if ($config['container']['debugger']) { $config['debugger']['bar'][] = 'NContainerPanel'; } foreach ((array) $config['debugger']['bar'] as $item) { $initialize->addBody($container->formatPhp( 'NDebugger::$bar->addPanel(?);', NConfigCompiler::filterArguments(array(is_string($item) ? new NDIStatement($item) : $item)) )); } foreach ((array) $config['debugger']['blueScreen'] as $item) { $initialize->addBody($container->formatPhp( 'NDebugger::$blueScreen->addPanel(?);', NConfigCompiler::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('NRules::$defaultMessages[NForm::?] = ?;', array($name, $text)); } if ($config['session']['autoStart'] === 'smart') { $initialize->addBody('$this->getService("session")->exists() && $this->getService("session")->start();'); } elseif ($config['session']['autoStart']) { $initialize->addBody('$this->getService("session")->start();'); } if (empty($config['xhtml'])) { $initialize->addBody('NHtml::$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)); } } }
/** * @return NConfigCompiler */ protected function createCompiler() { $compiler = new NConfigCompiler; $compiler->addExtension('php', new NPhpExtension) ->addExtension('constants', new NConstantsExtension) ->addExtension('nette', new NNetteExtension); return $compiler; }