*
* 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/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);
}
fwrite($handle, '?>'); // no newline at the end of the file to be able to send headers
fclose($handle);
}
function jirafeau_mkdir($path) {
if(!file_exists($path)) {
if(!@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) {
return is_writable($path) || @chmod($path, 0777); // "@" gets rid of error messages.
}
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)) {
return array(
'has_error' => true,
'why' => $mkdir_str1 . '
' . $path . '
' . $solution_str . '
' . $mkdir_str2
);
}
if(!jirafeau_is_writable($path)) {
return array(
'has_error' => true,
'why' => $write_str1 . '
' . $path . '
' . $solution_str . '
' . $write_str2
);
}
foreach(array('files', 'links') as $subdir) {
$subpath = $path . $subdir;
if(!jirafeau_mkdir($subpath)) {
return array(
'has_error' => true,
'why' => $mkdir_str1 . '
' . $subpath . '
' . $solution_str . '
' . $mkdir_str2
);
}
if(!jirafeau_is_writable($subpath)) {
return array(
'has_error' => true,
'why' => $write_str1 . '
' . $subpath . '
' . $solution_str . '
' . $write_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:
// nothing to do
}
}
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:
?>
'English',
'fr_FR.UTF-8' => 'Français'
);
?>