Exemplo n.º 1
0
 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');
     }
 }
Exemplo n.º 2
0
 /**
  * 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';
 }
Exemplo n.º 3
0
 /**
  * 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;
 }
Exemplo n.º 4
0
 /**
  * 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;
 }
Exemplo n.º 5
0
 /**
  * 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;
 }
Exemplo n.º 6
0
        $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
Exemplo n.º 7
0
 public function onLoad()
 {
     Environment::getServiceLocator()->addService('UserAuthenticator', new UsersModuleModel());
 }
Exemplo n.º 8
0
 /**
  * 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;
 }
Exemplo n.º 9
0
Arquivo: Debug.php Projeto: vrana/dibi
    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>&#x25bc;</abbr> </a><code>' : '<abbr>&#x25ba;</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 ? '&#x25ba;' : '&#x25bc;';
                ?>
</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>&#x25bc;</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());
                ?>
 &nbsp; <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 {
                    ?>
						&lt;PHP inner-code&gt;
					<?php 
                }
                ?>

					<?php 
                if (isset($row['file']) && is_file($row['file'])) {
                    ?>
<a href="#" onclick="return !netteToggle(this, 'src<?php 
                    echo "{$level}-{$key}";
                    ?>
')">source <abbr>&#x25ba;</abbr></a>&nbsp; <?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>&#x25ba;</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>&#x25bc;</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>&#x25ba;</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 
    }
Exemplo n.º 10
0
 /**
  * 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';
 }
Exemplo n.º 11
0
 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;
 }
Exemplo n.º 12
0
 /**
  * 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;
 }