public function startup() { parent::startup(); if (!function_exists('lcfirst')) { function lcfirst($str) { $str[0] = strtolower($str[0]); return $str; } } if (Environment::getServiceLocator()->hasService('User') === false) { Environment::getServiceLocator()->addService('User', new User()); } $this->user = Environment::getServiceLocator()->getService('User'); $this->verifyUser(); // Nastaví aktuální identitu do template proměnné user $this->template->user = $this->user->isLoggedIn() ? $this->user->getIdentity() : NULL; if (!defined('ERROR_MESSAGE')) { define('ERROR_MESSAGE', 'System exception occured.'); } if (!defined('HASH_TYPE')) { define('HASH_TYPE', 'sha512'); } }
/** * Paint blue screen. * @param Exception * @return void * @ignore internal */ public static function _paintBlueScreen(Exception $exception) { $internals = array(); foreach (array('Object', 'ObjectMixin') as $class) { if (class_exists($class, FALSE)) { $rc = new ReflectionClass($class); $internals[$rc->getFileName()] = TRUE; } } if (class_exists('Environment', FALSE)) { $application = Environment::getServiceLocator()->hasService('Nette\\Application\\Application', TRUE) ? Environment::getServiceLocator()->getService('Nette\\Application\\Application') : NULL; } require dirname(__FILE__) . '/templates/bluescreen.phtml'; }
/** * Loads global configuration from file and process it. * @param string|Nette\Config\Config file name or Config object * @param bool * @return Nette\Config\Config */ public function loadConfig($file, $useCache) { if ($useCache === NULL) { $useCache = Environment::isLive(); } $cache = $useCache && $this->cacheKey ? Environment::getCache('Nette.Environment') : NULL; $name = Environment::getName(); $cacheKey = Environment::expand($this->cacheKey); if (isset($cache[$cacheKey])) { Environment::swapState($cache[$cacheKey]); $config = Environment::getConfig(); } else { if ($file instanceof Config) { $config = $file; $file = NULL; } else { if ($file === NULL) { $file = $this->defaultConfigFile; } $file = Environment::expand($file); $config = Config::fromFile($file, $name, 0); } // process environment variables if ($config->variable instanceof Config) { foreach ($config->variable as $key => $value) { Environment::setVariable($key, $value); } } if (PATH_SEPARATOR !== ';' && isset($config->set->include_path)) { $config->set->include_path = str_replace(';', PATH_SEPARATOR, $config->set->include_path); } $config->expand(); $config->setReadOnly(); // process services $locator = Environment::getServiceLocator(); if ($config->service instanceof Config) { foreach ($config->service as $key => $value) { $locator->addService($value, strtr($key, '-', '\\')); } } // save cache if ($cache) { $state = Environment::swapState(NULL); $state[0] = $config; // TODO: better! $cache->save($cacheKey, $state, array(Cache::FILES => $file)); } } // check temporary directory - TODO: discuss /* $dir = Environment::getVariable('tempDir'); if ($dir && !(is_dir($dir) && is_writable($dir))) { trigger_error("Temporary directory '$dir' is not writable", E_USER_NOTICE); } */ // process ini settings if ($config->set instanceof Config) { foreach ($config->set as $key => $value) { $key = strtr($key, '-', '.'); if (function_exists('ini_set')) { ini_set($key, $value); } else { switch ($key) { case 'include_path': set_include_path($value); break; case 'iconv.internal_encoding': iconv_set_encoding('internal_encoding', $value); break; case 'mbstring.internal_encoding': mb_internal_encoding($value); break; case 'date.timezone': date_default_timezone_set($value); break; case 'error_reporting': error_reporting($value); break; case 'ignore_user_abort': ignore_user_abort($value); break; case 'max_execution_time': set_time_limit($value); break; default: throw new NotSupportedException('Required function ini_set() is disabled.'); } } } } // define constants if ($config->const instanceof Config) { foreach ($config->const as $key => $value) { define($key, $value); } } // set modes if (isset($config->mode)) { foreach ($config->mode as $mode => $state) { Environment::setMode($mode, $state); } } return $config; }
/** * Gets the service locator (experimental). * @return IServiceLocator */ public final function getServiceLocator() { if ($this->serviceLocator === NULL) { $this->serviceLocator = $this->parent === NULL ? Environment::getServiceLocator() : $this->parent->getServiceLocator(); } return $this->serviceLocator; }
/** * Loads global configuration from file and process it. * @param string|Config file name or Config object * @return Config */ public function loadConfig($file) { $name = Environment::getName(); if ($file instanceof Config) { $config = $file; $file = NULL; } else { if ($file === NULL) { $file = $this->defaultConfigFile; } $file = Environment::expand($file); $config = Config::fromFile($file, $name, 0); } // process environment variables if ($config->variable instanceof Config) { foreach ($config->variable as $key => $value) { Environment::setVariable($key, $value); } } $config->expand(); // process services $runServices = array(); $locator = Environment::getServiceLocator(); if ($config->service instanceof Config) { foreach ($config->service as $key => $value) { $key = strtr($key, '-', '\\'); // limited INI chars if (is_string($value)) { $locator->removeService($key); $locator->addService($key, $value); } else { if ($value->factory) { $locator->removeService($key); $locator->addService($key, $value->factory, isset($value->singleton) ? $value->singleton : TRUE, (array) $value->option); } if ($value->run) { $runServices[] = $key; } } } } // process ini settings if (!$config->php) { // backcompatibility $config->php = $config->set; unset($config->set); } if ($config->php instanceof Config) { if (PATH_SEPARATOR !== ';' && isset($config->php->include_path)) { $config->php->include_path = str_replace(';', PATH_SEPARATOR, $config->php->include_path); } foreach ($config->php as $key => $value) { // flatten INI dots if ($value instanceof Config) { unset($config->php->{$key}); foreach ($value as $k => $v) { $config->php->{"{$key}.{$k}"} = $v; } } } foreach ($config->php as $key => $value) { $key = strtr($key, '-', '.'); // backcompatibility if (!is_scalar($value)) { throw new InvalidStateException("Configuration value for directive '{$key}' is not scalar."); } if ($key === 'date.timezone') { // PHP bug #47466 date_default_timezone_set($value); } if (function_exists('ini_set')) { ini_set($key, $value); } else { switch ($key) { case 'include_path': set_include_path($value); break; case 'iconv.internal_encoding': iconv_set_encoding('internal_encoding', $value); break; case 'mbstring.internal_encoding': mb_internal_encoding($value); break; case 'date.timezone': date_default_timezone_set($value); break; case 'error_reporting': error_reporting($value); break; case 'ignore_user_abort': ignore_user_abort($value); break; case 'max_execution_time': set_time_limit($value); break; default: if (ini_get($key) != $value) { // intentionally == throw new NotSupportedException('Required function ini_set() is disabled.'); } } } } } // define constants if ($config->const instanceof Config) { foreach ($config->const as $key => $value) { define($key, $value); } } // set modes if (isset($config->mode)) { foreach ($config->mode as $mode => $state) { Environment::setMode($mode, $state); } } // auto-start services foreach ($runServices as $name) { $locator->getService($name); } $config->freeze(); return $config; }
$config = Environment::getConfig('httpRequest'); // params can be taken from config or command line if needed $uri = new UriScript(); $uri->scheme = 'http'; $uri->port = Uri::$defaultPorts['http']; $uri->host = $config->host; $uri->path = $config->path; // $uri->path = '/'; $uri->canonicalize(); $uri->path = String::fixEncoding($uri->path); $uri->scriptPath = '/'; $req = new HttpRequest(); $req->setUri($uri); return $req; } $serviceLocator = Environment::getServiceLocator(); $httpReqServiceName = 'Nette\\Web\\IHttpRequest'; $serviceLocator->removeService($httpReqServiceName); $serviceLocator->addService($httpReqServiceName, createHttpRequestService()); } // Step 3: Configure application // 3a) get and setup a front controller $application = Environment::getApplication(); $application->errorPresenter = 'Front:Error'; if (Environment::isProduction() && Debug::$productionMode) { $application->catchExceptions = true; } else { $application->catchExceptions = false; } dibi::connect(Environment::getConfig("database")); // Step 4: Setup application router
public function onLoad() { Environment::getServiceLocator()->addService('UserAuthenticator', new UsersModuleModel()); }
/** * Gets the service locator (experimental). * @return IServiceLocator */ public final function getServiceLocator() { if ($this->serviceLocator === NULL) { $this->serviceLocator = new ServiceLocator(Environment::getServiceLocator()); foreach ($this->defaultServices as $name => $service) { if (!$this->serviceLocator->hasService($name)) { $this->serviceLocator->addService($name, $service); } } } return $this->serviceLocator; }
public static function _paintBlueScreen(Exception $exception) { $internals = array(); foreach (array('Object', 'ObjectMixin') as $class) { if (class_exists($class, FALSE)) { $rc = new ReflectionClass($class); $internals[$rc->getFileName()] = TRUE; } } if (class_exists('Environment', FALSE)) { $application = Environment::getServiceLocator()->hasService('Nette\\Application\\Application', TRUE) ? Environment::getServiceLocator()->getService('Nette\\Application\\Application') : NULL; } if (!function_exists('_netteDebugPrintCode')) { function _netteDebugPrintCode($file, $line, $count = 15) { if (function_exists('ini_set')) { ini_set('highlight.comment', '#999; font-style: italic'); ini_set('highlight.default', '#000'); ini_set('highlight.html', '#06b'); ini_set('highlight.keyword', '#d24; font-weight: bold'); ini_set('highlight.string', '#080'); } $start = max(1, $line - floor($count / 2)); $source = @file_get_contents($file); if (!$source) { return; } $source = explode("\n", highlight_string($source, TRUE)); $spans = 1; echo $source[0]; $source = explode('<br />', $source[1]); array_unshift($source, NULL); $i = $start; while (--$i >= 1) { if (preg_match('#.*(</?span[^>]*>)#', $source[$i], $m)) { if ($m[1] !== '</span>') { $spans++; echo $m[1]; } break; } } $source = array_slice($source, $start, $count, TRUE); end($source); $numWidth = strlen((string) key($source)); foreach ($source as $n => $s) { $spans += substr_count($s, '<span') - substr_count($s, '</span'); $s = str_replace(array("\r", "\n"), array('', ''), $s); if ($n === $line) { printf("<span class='highlight'>Line %{$numWidth}s: %s\n</span>%s", $n, strip_tags($s), preg_replace('#[^>]*(<[^>]+>)[^<]*#', '$1', $s)); } else { printf("<span class='line'>Line %{$numWidth}s:</span> %s\n", $n, $s); } } echo str_repeat('</span>', $spans), '</code>'; } function _netteDump($dump) { return '<pre class="nette-dump">' . preg_replace_callback('#(^|\\s+)?(.*)\\((\\d+)\\) <code>#', '_netteDumpCb', $dump) . '</pre>'; } function _netteDumpCb($m) { return "{$m['1']}<a href='#' onclick='return !netteToggle(this)'>{$m['2']}({$m['3']}) " . (trim($m[1]) || $m[3] < 7 ? '<abbr>▼</abbr> </a><code>' : '<abbr>►</abbr> </a><code class="collapsed">'); } function _netteOpenPanel($name, $collapsed) { static $id; $id++; ?> <div class="panel"> <h2><a href="#" onclick="return !netteToggle(this, 'pnl<?php echo $id; ?> ')"><?php echo htmlSpecialChars($name); ?> <abbr><?php echo $collapsed ? '►' : '▼'; ?> </abbr></a></h2> <div id="pnl<?php echo $id; ?> " class="<?php echo $collapsed ? 'collapsed ' : ''; ?> inner"> <?php } function _netteClosePanel() { ?> </div> </div> <?php } } static $errorTypes = array(E_ERROR => 'Fatal Error', E_USER_ERROR => 'User Error', E_RECOVERABLE_ERROR => 'Recoverable Error', E_CORE_ERROR => 'Core Error', E_COMPILE_ERROR => 'Compile Error', E_PARSE => 'Parse Error', E_WARNING => 'Warning', E_CORE_WARNING => 'Core Warning', E_COMPILE_WARNING => 'Compile Warning', E_USER_WARNING => 'User Warning', E_NOTICE => 'Notice', E_USER_NOTICE => 'User Notice', E_STRICT => 'Strict', E_DEPRECATED => 'Deprecated', E_USER_DEPRECATED => 'User Deprecated'); $title = $exception instanceof FatalErrorException && isset($errorTypes[$exception->getSeverity()]) ? $errorTypes[$exception->getSeverity()] : get_class($exception); $rn = 0; if (headers_sent()) { echo '</pre></xmp></table>'; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="robots" content="noindex,noarchive"> <meta name="generator" content="Nette Framework"> <title><?php echo htmlspecialchars($title); ?> </title><!-- <?php echo $exception->getMessage(), $exception->getCode() ? ' #' . $exception->getCode() : ''; ?> --> <style type="text/css">/* <![CDATA[ */body{margin:0 0 2em;padding:0}#netteBluescreen{font:9pt/1.5 Verdana,sans-serif;background:white;color:#333;position:absolute;left:0;top:0;width:100%;z-index:23178;text-align:left}#netteBluescreen *{color:inherit;background:inherit;text-align:inherit}#netteBluescreenIcon{position:absolute;right:.5em;top:.5em;z-index:23179;text-decoration:none;background:red;padding:3px}#netteBluescreenIcon abbr{color:black!important}#netteBluescreen h1{font:18pt/1.5 Verdana,sans-serif!important;margin:.6em 0}#netteBluescreen h2{font:14pt/1.5 sans-serif!important;color:#888;margin:.6em 0}#netteBluescreen a{text-decoration:none;color:#4197E3}#netteBluescreen a abbr{font-family:sans-serif;color:#999}#netteBluescreen h3{font:bold 10pt/1.5 Verdana,sans-serif!important;margin:1em 0;padding:0}#netteBluescreen p{margin:.8em 0}#netteBluescreen pre,#netteBluescreen code,#netteBluescreen table{font:9pt/1.5 Consolas,monospace!important}#netteBluescreen pre,#netteBluescreen table{background:#fffbcc;padding:.4em .7em;border:1px dotted silver}#netteBluescreen table pre{padding:0;margin:0;border:none}#netteBluescreen pre.nette-dump span{color:#c16549}#netteBluescreen pre.nette-dump a{color:#333}#netteBluescreen div.panel{border-bottom:1px solid #eee;padding:1px 2em}#netteBluescreen div.inner{padding:.1em 1em 1em;background:#f5f5f5}#netteBluescreen table{border-collapse:collapse;width:100%}#netteBluescreen td,#netteBluescreen th{vertical-align:top;text-align:left;padding:2px 3px;border:1px solid #eeb}#netteBluescreen th{width:10%;font-weight:bold}#netteBluescreen .odd,#netteBluescreen .odd pre{background-color:#faf5c3}#netteBluescreen ul{font:7pt/1.5 Verdana,sans-serif!important;padding:1em 2em 50px}#netteBluescreen .highlight,#netteBluescreenError{background:red;color:white;font-weight:bold;font-style:normal;display:block}#netteBluescreen .line{color:#9e9e7e;font-weight:normal;font-style:normal}/* ]]> */</style> <script type="text/javascript">/* <![CDATA[ */document.write("<style> .collapsed { display: none; } </style>");function netteToggle(a,b){var c=a.getElementsByTagName("abbr")[0];for(a=b?document.getElementById(b):a.nextSibling;a.nodeType!==1;)a=a.nextSibling;b=a.currentStyle?a.currentStyle.display=="none":getComputedStyle(a,null).display=="none";c.innerHTML=String.fromCharCode(b?9660:9658);a.style.display=b?a.tagName.toLowerCase()==="code"?"inline":"block":"none";return true}; /* ]]> */</script> </head> <body> <div id="netteBluescreen"> <a id="netteBluescreenIcon" href="#" onclick="return !netteToggle(this)"><abbr>▼</abbr></a ><div> <div id="netteBluescreenError" class="panel"> <h1><?php echo htmlspecialchars($title), $exception->getCode() ? ' #' . $exception->getCode() : ''; ?> </h1> <p><?php echo htmlspecialchars($exception->getMessage()); ?> </p> </div> <?php $ex = $exception; $level = 0; ?> <?php do { ?> <?php if ($level++) { ?> <?php _netteOpenPanel('Caused by', $level > 2); ?> <div class="panel"> <h1><?php echo htmlspecialchars(get_class($ex)), $ex->getCode() ? ' #' . $ex->getCode() : ''; ?> </h1> <p><?php echo htmlspecialchars($ex->getMessage()); ?> </p> </div> <?php } ?> <?php $collapsed = isset($internals[$ex->getFile()]); ?> <?php if (is_file($ex->getFile())) { ?> <?php _netteOpenPanel('Source file', $collapsed); ?> <p><strong>File:</strong> <?php echo htmlspecialchars($ex->getFile()); ?> <strong>Line:</strong> <?php echo $ex->getLine(); ?> </p> <pre><?php _netteDebugPrintCode($ex->getFile(), $ex->getLine()); ?> </pre> <?php _netteClosePanel(); ?> <?php } ?> <?php _netteOpenPanel('Call stack', FALSE); ?> <ol> <?php foreach ($ex->getTrace() as $key => $row) { ?> <li><p> <?php if (isset($row['file'])) { ?> <span title="<?php echo htmlSpecialChars($row['file']); ?> "><?php echo htmlSpecialChars(basename(dirname($row['file']))), '/<b>', htmlSpecialChars(basename($row['file'])), '</b></span> (', $row['line'], ')'; ?> <?php } else { ?> <PHP inner-code> <?php } ?> <?php if (isset($row['file']) && is_file($row['file'])) { ?> <a href="#" onclick="return !netteToggle(this, 'src<?php echo "{$level}-{$key}"; ?> ')">source <abbr>►</abbr></a> <?php } ?> <?php if (isset($row['class'])) { echo $row['class'] . $row['type']; } ?> <?php echo $row['function']; ?> (<?php if (!empty($row['args'])) { ?> <a href="#" onclick="return !netteToggle(this, 'args<?php echo "{$level}-{$key}"; ?> ')">arguments <abbr>►</abbr></a><?php } ?> ) </p> <?php if (!empty($row['args'])) { ?> <div class="collapsed" id="args<?php echo "{$level}-{$key}"; ?> "> <table> <?php try { $r = isset($row['class']) ? new ReflectionMethod($row['class'], $row['function']) : new ReflectionFunction($row['function']); $params = $r->getParameters(); } catch (Exception $e) { $params = array(); } foreach ($row['args'] as $k => $v) { echo '<tr><th>', isset($params[$k]) ? '$' . $params[$k]->name : "#{$k}", '</th><td>'; echo _netteDump(self::_dump($v, 0)); echo "</td></tr>\n"; } ?> </table> </div> <?php } ?> <?php if (isset($row['file']) && is_file($row['file'])) { ?> <pre <?php if (!$collapsed || isset($internals[$row['file']])) { echo 'class="collapsed"'; } else { $collapsed = FALSE; } ?> id="src<?php echo "{$level}-{$key}"; ?> "><?php _netteDebugPrintCode($row['file'], $row['line']); ?> </pre> <?php } ?> </li> <?php } ?> <?php if (!isset($row)) { ?> <li><i>empty</i></li> <?php } ?> </ol> <?php _netteClosePanel(); ?> <?php if ($ex instanceof IDebugPanel && ($panel = $ex->getPanel())) { ?> <?php _netteOpenPanel($ex->getTab(), FALSE); ?> <?php echo $panel; ?> <?php _netteClosePanel(); ?> <?php } ?> <?php if (isset($ex->context) && is_array($ex->context)) { ?> <?php _netteOpenPanel('Variables', TRUE); ?> <table> <?php foreach ($ex->context as $k => $v) { echo '<tr><th>$', htmlspecialchars($k), '</th><td>', _netteDump(self::_dump($v, 0)), "</td></tr>\n"; } ?> </table> <?php _netteClosePanel(); ?> <?php } ?> <?php } while (method_exists($ex, 'getPrevious') && ($ex = $ex->getPrevious()) || isset($ex->previous) && ($ex = $ex->previous)); ?> <?php while (--$level) { _netteClosePanel(); } ?> <?php if (!empty($application)) { ?> <?php _netteOpenPanel('Nette Application', TRUE); ?> <h3>Requests</h3> <?php $tmp = $application->getRequests(); echo _netteDump(self::_dump($tmp, 0)); ?> <h3>Presenter</h3> <?php $tmp = $application->getPresenter(); echo _netteDump(self::_dump($tmp, 0)); ?> <?php _netteClosePanel(); ?> <?php } ?> <?php _netteOpenPanel('Environment', TRUE); ?> <?php $list = get_defined_constants(TRUE); if (!empty($list['user'])) { ?> <h3><a href="#" onclick="return !netteToggle(this, 'pnl-env-const')">Constants <abbr>▼</abbr></a></h3> <table id="pnl-env-const"> <?php foreach ($list['user'] as $k => $v) { echo '<tr' . ($rn++ % 2 ? ' class="odd"' : '') . '><th>', htmlspecialchars($k), '</th>'; echo '<td>', _netteDump(self::_dump($v, 0)), "</td></tr>\n"; } ?> </table> <?php } ?> <h3><a href="#" onclick="return !netteToggle(this, 'pnl-env-files')">Included files <abbr>►</abbr></a>(<?php echo count(get_included_files()); ?> )</h3> <table id="pnl-env-files" class="collapsed"> <?php foreach (get_included_files() as $v) { echo '<tr' . ($rn++ % 2 ? ' class="odd"' : '') . '><td>', htmlspecialchars($v), "</td></tr>\n"; } ?> </table> <h3>$_SERVER</h3> <?php if (empty($_SERVER)) { ?> <p><i>empty</i></p> <?php } else { ?> <table> <?php foreach ($_SERVER as $k => $v) { echo '<tr' . ($rn++ % 2 ? ' class="odd"' : '') . '><th>', htmlspecialchars($k), '</th><td>', _netteDump(self::_dump($v, 0)), "</td></tr>\n"; } ?> </table> <?php } ?> <?php _netteClosePanel(); ?> <?php _netteOpenPanel('HTTP request', TRUE); ?> <?php if (function_exists('apache_request_headers')) { ?> <h3>Headers</h3> <table> <?php foreach (apache_request_headers() as $k => $v) { echo '<tr' . ($rn++ % 2 ? ' class="odd"' : '') . '><th>', htmlspecialchars($k), '</th><td>', htmlspecialchars($v), "</td></tr>\n"; } ?> </table> <?php } ?> <?php foreach (array('_GET', '_POST', '_COOKIE') as $name) { ?> <h3>$<?php echo $name; ?> </h3> <?php if (empty($GLOBALS[$name])) { ?> <p><i>empty</i></p> <?php } else { ?> <table> <?php foreach ($GLOBALS[$name] as $k => $v) { echo '<tr' . ($rn++ % 2 ? ' class="odd"' : '') . '><th>', htmlspecialchars($k), '</th><td>', _netteDump(self::_dump($v, 0)), "</td></tr>\n"; } ?> </table> <?php } ?> <?php } ?> <?php _netteClosePanel(); ?> <?php _netteOpenPanel('HTTP response', TRUE); ?> <h3>Headers</h3> <?php if (headers_list()) { ?> <pre><?php foreach (headers_list() as $s) { echo htmlspecialchars($s), '<br>'; } ?> </pre> <?php } else { ?> <p><i>no headers</i></p> <?php } ?> <?php _netteClosePanel(); ?> <ul> <li>Report generated at <?php echo @date('Y/m/d H:i:s', self::$time); ?> </li> <?php if (isset($_SERVER['HTTP_HOST'], $_SERVER['REQUEST_URI'])) { ?> <li><a href="<?php $url = (isset($_SERVER['HTTPS']) && strcasecmp($_SERVER['HTTPS'], 'off') ? 'https://' : 'http://') . htmlSpecialChars($_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); ?> "><?php echo $url; ?> </a></li> <?php } ?> <li>PHP <?php echo htmlSpecialChars(PHP_VERSION); ?> </li> <?php if (isset($_SERVER['SERVER_SOFTWARE'])) { ?> <li><?php echo htmlSpecialChars($_SERVER['SERVER_SOFTWARE']); ?> </li><?php } ?> <?php if (class_exists('Framework')) { ?> <li><?php echo htmlSpecialChars('Nette Framework ' . Framework::VERSION); ?> <i>(revision <?php echo htmlSpecialChars(Framework::REVISION); ?> )</i></li><?php } ?> </ul> </div> </div> <script type="text/javascript">/* <![CDATA[ */document.body.appendChild(document.getElementById("netteBluescreen")); /* ]]> */</script> </body> </html><?php }
/** * Paint blue screen. * @param Exception * @return void * @ignore internal */ public static function _paintBlueScreen(Exception $exception) { if (class_exists('Environment', FALSE)) { $application = Environment::getServiceLocator()->hasService('Nette\\Application\\Application', TRUE) ? Environment::getServiceLocator()->getService('Nette\\Application\\Application') : NULL; } require dirname(__FILE__) . '/templates/bluescreen.phtml'; }
function loadConfig($file) { $name = Environment::getName(); if ($file instanceof Config) { $config = $file; $file = NULL; } else { if ($file === NULL) { $file = $this->defaultConfigFile; } $file = Environment::expand($file); $config = Config::fromFile($file, $name); } if ($config->variable instanceof Config) { foreach ($config->variable as $key => $value) { Environment::setVariable($key, $value); } } $iterator = new RecursiveIteratorIterator($config); foreach ($iterator as $key => $value) { $tmp = $iterator->getDepth() ? $iterator->getSubIterator($iterator->getDepth() - 1)->current() : $config; $tmp[$key] = Environment::expand($value); } $runServices = array(); $locator = Environment::getServiceLocator(); if ($config->service instanceof Config) { foreach ($config->service as $key => $value) { $key = strtr($key, '-', '\\'); if (is_string($value)) { $locator->removeService($key); $locator->addService($key, $value); } else { if ($value->factory) { $locator->removeService($key); $locator->addService($key, $value->factory, isset($value->singleton) ? $value->singleton : TRUE, (array) $value->option); } if ($value->run) { $runServices[] = $key; } } } } if (!$config->php) { $config->php = $config->set; unset($config->set); } if ($config->php instanceof Config) { if (PATH_SEPARATOR !== ';' && isset($config->php->include_path)) { $config->php->include_path = str_replace(';', PATH_SEPARATOR, $config->php->include_path); } foreach (clone $config->php as $key => $value) { if ($value instanceof Config) { unset($config->php->{$key}); foreach ($value as $k => $v) { $config->php->{"{$key}.{$k}"} = $v; } } } foreach ($config->php as $key => $value) { $key = strtr($key, '-', '.'); if (!is_scalar($value)) { throw new InvalidStateException("Configuration value for directive '{$key}' is not scalar."); } if ($key === 'date.timezone') { date_default_timezone_set($value); } if (function_exists('ini_set')) { ini_set($key, $value); } else { switch ($key) { case 'include_path': set_include_path($value); break; case 'iconv.internal_encoding': iconv_set_encoding('internal_encoding', $value); break; case 'mbstring.internal_encoding': mb_internal_encoding($value); break; case 'date.timezone': date_default_timezone_set($value); break; case 'error_reporting': error_reporting($value); break; case 'ignore_user_abort': ignore_user_abort($value); break; case 'max_execution_time': set_time_limit($value); break; default: if (ini_get($key) != $value) { throw new NotSupportedException('Required function ini_set() is disabled.'); } } } } } if ($config->const instanceof Config) { foreach ($config->const as $key => $value) { define($key, $value); } } if (isset($config->mode)) { foreach ($config->mode as $mode => $state) { Environment::setMode($mode, $state); } } foreach ($runServices as $name) { $locator->getService($name); } return $config; }
/** * Loads global configuration from file and process it. * @param string|Nette\Config\Config file name or Config object * @return Config */ public function loadConfig($file) { $name = Environment::getName(); if ($file instanceof Config) { $config = $file; $file = NULL; } else { if ($file === NULL) { $file = $this->defaultConfigFile; } $file = Environment::expand($file); $config = Config::fromFile($file, $name, 0); } // process environment variables if ($config->variable instanceof Config) { foreach ($config->variable as $key => $value) { Environment::setVariable($key, $value); } } $config->expand(); // process services $locator = Environment::getServiceLocator(); if ($config->service instanceof Config) { foreach ($config->service as $key => $value) { $locator->addService($value, strtr($key, '-', '\\')); } } // check temporary directory - TODO: discuss /* $dir = Environment::getVariable('tempDir'); if ($dir && !(is_dir($dir) && is_writable($dir))) { trigger_error("Temporary directory '$dir' is not writable", E_USER_NOTICE); } */ // process ini settings if ($config->set instanceof Config) { if (PATH_SEPARATOR !== ';' && isset($config->set->include_path)) { $config->set->include_path = str_replace(';', PATH_SEPARATOR, $config->set->include_path); } foreach ($config->set as $key => $value) { $key = strtr($key, '-', '.'); // old INI compatibility if (!is_scalar($value)) { throw new InvalidStateException("Configuration value for directive '{$key}' is not scalar."); } if (function_exists('ini_set')) { ini_set($key, $value); } else { switch ($key) { case 'include_path': set_include_path($value); break; case 'iconv.internal_encoding': iconv_set_encoding('internal_encoding', $value); break; case 'mbstring.internal_encoding': mb_internal_encoding($value); break; case 'date.timezone': date_default_timezone_set($value); break; case 'error_reporting': error_reporting($value); break; case 'ignore_user_abort': ignore_user_abort($value); break; case 'max_execution_time': set_time_limit($value); break; default: if (ini_get($key) != $value) { // intentionally == throw new NotSupportedException('Required function ini_set() is disabled.'); } } } } } // define constants if ($config->const instanceof Config) { foreach ($config->const as $key => $value) { define($key, $value); } } // set modes if (isset($config->mode)) { foreach ($config->mode as $mode => $state) { Environment::setMode($mode, $state); } } $config->setReadOnly(); return $config; }