123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- <?php
- /**
- * Lithium: the most rad php framework
- *
- * @copyright Copyright 2013, Union of RAD (http://union-of-rad.org)
- * @license http://opensource.org/licenses/bsd-license.php The BSD License
- */
- use lithium\core\Libraries;
- use lithium\core\Environment;
- use lithium\data\Connections;
- $this->title('Home');
- $self = $this;
- $notify = function($status, $message, $solution = null) {
- $html = "<div class=\"test-result test-result-{$status}\">{$message}</div>";
- $html .= "<div class=\"test-result solution\">{$solution}</div>";
- return $html;
- };
- $support = function($classes) {
- $result = '<ul class="indicated">';
- foreach ($classes as $class => $enabled) {
- $name = substr($class, strrpos($class, '\\') + 1);
- $url = 'http://lithify.me/docs/' . str_replace('\\', '/', $class);
- $class = $enabled ? 'enabled' : 'disabled';
- $title = $enabled ? "Adapter `{$name}` is enabled." : "Adapter `{$name}` is disabled.";
- $result .= "<li><a href=\"{$url}\" title=\"{$title}\" class=\"{$class}\">{$name}</a></li>";
- }
- $result .= '</ul>';
- return $result;
- };
- $compiled = function($flag) {
- ob_start();
- phpinfo(INFO_GENERAL);
- return strpos(ob_get_clean(), $flag) !== false;
- };
- $checks = array(
- 'resourcesWritable' => function() use ($notify) {
- if (is_writable($path = Libraries::get(true, 'resources'))) {
- return $notify('success', 'Resources directory is writable');
- }
- $path = str_replace(dirname(LITHIUM_APP_PATH) . '/', null, $path);
- $solution = null;
- if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
- $solution = 'To fix this, run the following from the command line: ';
- $solution .= "<code>$ chmod -R 0777 {$path}</code>.";
- } else {
- $path = realpath($path);
- $solution = 'To fix this, give <code>modify</code> rights to the user ';
- $solution .= "<code>Everyone</code> on directory <code>{$path}</code>.";
- }
- return $notify(
- 'fail',
- 'Your resource path is not writeable',
- $solution
- );
- },
- 'magicQuotes' => function() use ($notify) {
- if (!get_magic_quotes_gpc()) {
- return;
- }
- return $notify(
- 'fail',
- 'Magic quotes are enabled in your PHP configuration',
- 'Please set <code>magic_quotes_gpc = Off</code> in your <code>php.ini</code> settings.'
- );
- },
- 'registerGlobals' => function() use ($notify) {
- if (!ini_get('register_globals')) {
- return;
- }
- return $notify(
- 'fail',
- 'Register globals is enabled in your PHP configuration',
- 'Please set <code>register_globals = Off</code> in your <code>php.ini</code> settings.'
- );
- },
- 'curlwrappers' => function() use ($notify, $compiled) {
- if (!$compiled('with-curlwrappers')) {
- return;
- }
- return $notify(
- 'fail',
- 'Curlwrappers are enabled, some things might not work as expected.',
- "This is an expiremental and usually broken feature of PHP.
- Please recompile your PHP binary without using the <code>--with-curlwrappers</code>
- flag or use a precompiled binary that was compiled without the flag."
- );
- },
- 'shortOpenTag' => function() use ($notify, $compiled) {
- if (!ini_get('short_open_tag')) {
- return;
- }
- return $notify(
- 'notice',
- 'Short open tags are enabled, you may want to disable them.',
- "It is recommended to not rely on this option being enabled.
- To increase the portability of your code disable this option by setting
- <code>short_open_tag = Off</code> in your <code>php.ini</code>."
- );
- },
- 'dbSupport' => function() use ($notify, $support) {
- $paths = array('data.source', 'adapter.data.source.database', 'adapter.data.source.http');
- $list = array();
- foreach ($paths as $path) {
- $list = array_merge($list, Libraries::locate($path, null, array('recursive' => false)));
- }
- $list = array_filter($list, function($class) { return method_exists($class, 'enabled'); });
- $map = array_combine($list, array_map(function($c) { return $c::enabled(); }, $list));
- return $notify('notice', 'Database support', $support($map));
- },
- 'cacheSupport' => function() use ($notify, $support) {
- $list = Libraries::locate('adapter.storage.cache', null, array('recursive' => false));
- $list = array_filter($list, function($class) { return method_exists($class, 'enabled'); });
- $map = array_combine($list, array_map(function($c) { return $c::enabled(); }, $list));
- return $notify('notice', 'Cache support', $support($map));
- },
- 'database' => function() use ($notify) {
- if ($config = Connections::config()) {
- return $notify('success', 'Database connection(s) configured');
- }
- return $notify(
- 'notice',
- 'No database connection defined',
- "To create a database connection:
- <ol>
- <li>Edit the file <code>config/bootstrap.php</code>.</li>
- <li>
- Uncomment the line having
- <code>require __DIR__ . '/bootstrap/connections.php';</code>.
- </li>
- <li>Edit the file <code>config/bootstrap/connections.php</code>.</li>
- </ol>"
- );
- },
- 'change' => function() use ($notify, $self) {
- $template = $self->html->link('template', 'http://lithify.me/docs/lithium/template');
- return $notify(
- 'notice',
- "You're using the application's default home page",
- "To change this {$template}, edit the file
- <code>views/pages/home.html.php</code>.
- To change the layout,
- (that is what's wrapping content)
- edit the file <code>views/layouts/default.html.php</code>."
- );
- },
- 'routing' => function() use ($notify, $self) {
- $routing = $self->html->link('routing', 'http://lithify.me/docs/lithium/net/http/Router');
- return $notify(
- 'notice',
- 'Use custom routing',
- "Routes allow you to map custom URLs to your application code. To change the
- {$routing}, edit the file <code>config/routes.php</code>."
- );
- },
- 'tests' => function() use ($notify, $self) {
- if (Environment::is('production')) {
- $docsLink = $self->html->link(
- 'the documentation',
- 'http://lithify.me/docs/lithium/core/Environment::is()'
- );
- return $notify(
- 'fail',
- "Can't run tests",
- "<p>Lithium's default environment detection rules have determined that you are
- running in production mode. Therefore, you will not be able to run tests from the
- web interface. You can do any of the following to remedy this:</p>
- <ul>
- <li>Run this application locally</li>
- <li>Run tests from the console, using the <code>li3 test</code> command</li>
- <li>
- Implementing custom environment detection rules;
- see {$docsLink} for examples
- </li>
- </ul>"
- );
- }
- $tests = $self->html->link('run all tests', array(
- 'controller' => 'lithium\test\Controller',
- 'args' => 'all'
- ));
- $dashboard = $self->html->link('test dashboard', array(
- 'controller' => 'lithium\test\Controller'
- ));
- $ticket = $self->html->link(
- 'file a ticket', 'https://github.com/UnionOfRAD/lithium/issues'
- );
- return $notify(
- 'notice',
- 'Run the tests',
- "Check the builtin {$dashboard} or {$tests} now to ensure Lithium
- is working as expected. Do not hesitate to {$ticket} in case a test fails."
- );
- }
- );
- ?>
- <?php foreach ($checks as $check): ?>
- <?php echo $check(); ?>
- <?php endforeach; ?>
- <ul class="additional-resources">
- <li>
- <div class="test-result test-result-notice">Getting started</div>
- <div class="test-result solution">
- <?php echo $this->html->link(
- 'Quickstart', 'http://lithify.me/docs/manual/quickstart'
- ); ?> is a guide for PHP users who are looking to get a good idea of what Lithium can
- do. The guide is part of the official Lithium manual, <?php echo $this->html->link(
- 'The Definitive Guide', 'http://lithify.me/docs/manual'
- ); ?>.
- </div>
- </li>
- <li>
- <div class="test-result test-result-notice">Learn more</div>
- <div class="test-result solution">
- The
- <?php echo $this->html->link('API documentation', 'http://lithify.me/docs/lithium'); ?>
- has all the implementation details you've been looking for.
- </div>
- </li>
- <li>
- Chat with other Lithium users and the team developing Lithium.
- For <em>general support</em> hop on the
- <?php echo $this->html->link('#li3 channel', 'irc://irc.freenode.net/#li3'); ?>
- or read the
- <?php echo $this->html->link('logs', 'http://lithify.me/bot/logs/li3'); ?>.
- For <em>core discussions</em> join us in the
- <?php echo $this->html->link('#li3-core channel', 'irc://irc.freenode.net/#li3-core'); ?>
- or read the
- <?php echo $this->html->link('logs', 'http://lithify.me/bot/logs/li3-core'); ?>.
- </li>
- <li>
- Browse the Lithium
- <?php echo $this->html->link('Repository', 'https://github.com/UnionOfRAD/lithium'); ?>
- or read the
- <?php echo $this->html->link('Wiki', 'https://github.com/UnionOfRAD/lithium/wiki'); ?>.
- </li>
- </ul>
|