[FEATURE] Install script: Reduce test code

Add some comments to enhance the readabillity in the
installation script.

Reduce footer includes and send all fatal errors
to one function instead.

Remove includes of installation depenend variables
in the footer, if the installation script is not
done yet.

Move settings include to the top (this may help
for future configuration tests).
This commit is contained in:
Dan Untenzu 2017-01-16 17:23:17 +01:00 committed by Jerome Jutteau
parent e2db43bbc9
commit 18b6e57c00
2 changed files with 67 additions and 38 deletions

View File

@ -24,9 +24,14 @@ define ('QUOTE', "'");
define ('JIRAFEAU_CFG', JIRAFEAU_ROOT.'lib/config.local.php');
define ('JIRAFEAU_VAR_RAND_LENGTH', 15);
require (JIRAFEAU_ROOT . 'lib/config.original.php');
require (JIRAFEAU_ROOT . 'lib/settings.php');
require (JIRAFEAU_ROOT . 'lib/functions.php');
require (JIRAFEAU_ROOT . 'lib/lang.php');
require (JIRAFEAU_ROOT . 'lib/config.original.php');
/**
* Prepend used functions
**/
function
jirafeau_quoted ($str)
@ -120,42 +125,62 @@ jirafeau_add_ending_slash ($path)
return $path . ((substr ($path, -1) == '/') ? '' : '/');
}
if ($cfg['installation_done'] === true)
function
jirafeau_fatal_error($errorText)
{
header('Location: index.php');
exit;
}
if (!file_exists (JIRAFEAU_CFG))
{
/* We try to create an empty one. */
if (!@touch (JIRAFEAU_CFG))
{
require (JIRAFEAU_ROOT . 'lib/template/header.php');
echo '<div class="error"><p>' .
t('The local configuration file could not be created. Create a ' .
'<code>lib/config.local.php</code> file and give the write ' .
'permission to the web server (preferred solution), or give the ' .
'write permission to the web server on the <code>lib</code> ' .
'directory.') .
'</p></div>';
require (JIRAFEAU_ROOT . 'lib/template/footer.php');
exit;
}
}
if (!is_writable (JIRAFEAU_CFG) && !@chmod (JIRAFEAU_CFG, '0666'))
{
require (JIRAFEAU_ROOT . 'lib/template/header.php');
echo '<div class="error"><p>' .
t('The local configuration is not writable by the web server. ' .
'Give the write permission to the web server on the ' .
'<code>lib/config.local.php</code> file.') .
'</p></div>';
echo '<div class="error"><h2>Error</h2><p>' . $errorText . '</p></div>';
require (JIRAFEAU_ROOT . 'lib/template/footer.php');
exit;
}
/**
* Check installation
**/
// Is the installation process done already?
// Then there is nothing to do here → redirect to the main page.
if ($cfg['installation_done'] === true)
{
header('Location: index.php');
exit;
}
/**
* Prepare installation process
**/
require (JIRAFEAU_ROOT . 'lib/template/header.php');
// does the local configuration file exist?
if (!file_exists (JIRAFEAU_CFG))
{
// show an error if it is not possible to create the file
if (!@touch (JIRAFEAU_CFG))
{
jirafeau_fatal_error(
t('The local configuration file could not be created. Create a ' .
'<code>lib/config.local.php</code> file and give the write ' .
'permission to the web server (preferred solution), or give the ' .
'write permission to the web server on the <code>lib</code> ' .
'directory.')
);
}
}
// is the local configuration writable?
if (!is_writable (JIRAFEAU_CFG) && !@chmod (JIRAFEAU_CFG, '0666'))
{
jirafeau_fatal_error(
t('The local configuration is not writable by the web server. ' .
'Give the write permission to the web server on the ' .
'<code>lib/config.local.php</code> file.')
);
}
/**
* Run trough each installation step
**/
if (isset ($_POST['step']) && isset ($_POST['next']))
{
switch ($_POST['step'])
@ -185,9 +210,6 @@ if (isset ($_POST['step']) && isset ($_POST['next']))
}
require (JIRAFEAU_ROOT . 'lib/settings.php');
require (JIRAFEAU_ROOT . 'lib/template/header.php');
$current = 1;
if (isset ($_POST['next']))
$current = $_POST['step'] + 1;
@ -367,4 +389,3 @@ break;
}
require (JIRAFEAU_ROOT . 'lib/template/footer.php');
?>

View File

@ -2,9 +2,17 @@
<div id="copyright">
<p>
<br />
<!-- Project links -->
<a href="https://www.gnu.org/licenses/agpl.html"><abbr title="Affero General Public License">AGPL</abbr>v3</a> |
<a href="https://gitlab.com/mojo42/Jirafeau"><?php echo t('Jirafeau Project') ?></a> |
<a href="<?php echo rtrim($cfg['web_root'], '/') . '/tos.php'; ?>"><?php echo t('Term Of Service') ?></a>
<a href="https://gitlab.com/mojo42/Jirafeau"><?php echo t('Jirafeau Project') ?></a>
<!-- Installation dependend links -->
<?php
if (false === empty($cfg['web_root']))
{
echo ' | ';
echo '<a href="' . $cfg['web_root'] . '/tos.php">' . t('Term Of Service') . '</a>';
}
?>
</p>
</div>
</div>