*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
define ('JIRAFEAU_ROOT', dirname (__FILE__) . '/');
define ('NL', "\n");
define ('QUOTE', "'");
define ('JIRAFEAU_CFG', JIRAFEAU_ROOT.'lib/config.local.php');
define ('JIRAFEAU_VAR_RAND_LENGTH', 15);
require (JIRAFEAU_ROOT . 'lib/lang.php');
require (JIRAFEAU_ROOT . 'lib/config.php');
function
jirafeau_quoted ($str)
{
return QUOTE . str_replace (QUOTE, "\'", $str) . QUOTE;
}
function
jirafeau_export_cfg ($cfg)
{
$handle = fopen (JIRAFEAU_CFG, 'w');
fwrite ($handle, ' $item)
{
fwrite ($handle, '$cfg[' . jirafeau_quoted ($key) . '] = ');
if (is_bool ($item))
fwrite ($handle, ($item ? 'true' : 'false'));
else if (is_string ($item))
fwrite ($handle, jirafeau_quoted ($item));
else
fwrite ($handle, 'null');
fwrite ($handle, ';'.NL);
}
/* No newline at the end of the file to be able to send headers. */
fwrite ($handle, '?>');
fclose ($handle);
}
function
jirafeau_mkdir ($path)
{
if (!file_exists ($path) && !@mkdir ($path, 0755))
return false;
return true;
}
/**
* Returns true whether the path is writable or we manage to make it
* so, which essentially is the same thing.
* @param $path is the file or directory to be tested.
* @return true if $path is writable.
*/
function
jirafeau_is_writable ($path)
{
/* "@" gets rid of error messages. */
return is_writable ($path) || @chmod ($path, 0777);
}
function
jirafeau_check_var_dir ($path)
{
$mkdir_str1 = _('The following directory could not be created:');
$mkdir_str2 = _('You should create this directory by hand.');
$write_str1 = _('The following directory is not writable:');
$write_str2 = _('You should give the write right to the web server on ' .
'this directory.');
$solution_str = _('Here is a solution:');
if (!jirafeau_mkdir ($path) || !jirafeau_is_writable ($path))
return array ('has_error' => true,
'why' => $mkdir_str1 . '
' .
$path . '
' . $solution_str .
'
' . $mkdir_str2);
foreach (array ('files', 'links') as $subdir)
{
$subpath = $path.$subdir;
if (!jirafeau_mkdir ($subpath) || !jirafeau_is_writable ($subpath))
return array ('has_error' => true,
'why' => $mkdir_str1 . '
' .
$subpath . '
' . $solution_str .
'
' . $mkdir_str2);
}
return array ('has_error' => false, 'why' => '');
}
function
jirafeau_add_ending_slash ($path)
{
return $path . ((substr ($path, -1) == '/') ? '' : '/');
}
if (!file_exists (JIRAFEAU_CFG))
{
/* We try to create an empty one. */
if (!@touch (JIRAFEAU_CFG))
{
require (JIRAFEAU_ROOT . 'lib/template/header.php');
echo '
' .
_('The local configuration file could not be created. Create a ' .
'lib/config.local.php
file and give the write ' .
'right to the web server (preferred solution), or give the ' .
'write right to the web server on the lib
' .
'directory.') .
'
';
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 '' .
_('The local configuration is not writable by the web server. ' .
'Give the write right to the web server on the ' .
'lib/config.local.php
file.') .
'
';
require (JIRAFEAU_ROOT . 'lib/template/footer.php');
exit;
}
if (isset ($_POST['step']) && isset ($_POST['next']))
{
switch ($_POST['step'])
{
case 1:
$cfg['lang'] = $_POST['lang'];
jirafeau_export_cfg ($cfg);
break;
case 2:
$cfg['web_root'] = jirafeau_add_ending_slash ($_POST['web_root']);
$cfg['var_root'] = jirafeau_add_ending_slash ($_POST['var_root']);
jirafeau_export_cfg ($cfg);
break;
default: break;
}
}
require (JIRAFEAU_ROOT . 'lib/settings.php');
require (JIRAFEAU_ROOT . 'lib/template/header.php');
$current = 1;
if (isset ($_POST['next']))
$current = $_POST['step'] + 1;
else if (isset ($_POST['previous']))
$current = $_POST['step'] - 1;
else if (isset ($_POST['retry']))
$current = $_POST['step'];
switch ($current)
{
case 3:
?>
'.$err['why'].'
'.NL;
?>
';
}
else
{
echo '';
}
break;
case 2:
?>